aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/tasks/task.h
diff options
context:
space:
mode:
authorMarvin Borner2020-01-26 18:41:23 +0100
committerGitHub2020-01-26 18:41:23 +0100
commit43f501c74aa09f18c904ace902dc4cc5d241c218 (patch)
treeea30b53ac6043faddd1cdb2fdea17f37178b1cc7 /src/kernel/tasks/task.h
parentd5d1749257ff8b9aa6b5ace4b4720b484a2860f3 (diff)
parentbb2a6b4d93512e8afc1b1999eb58f1f506cc27ae (diff)
Merged task-based userspace switching and updated heap/paging code
Awesome!
Diffstat (limited to 'src/kernel/tasks/task.h')
-rw-r--r--src/kernel/tasks/task.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/kernel/tasks/task.h b/src/kernel/tasks/task.h
new file mode 100644
index 0000000..97aeb15
--- /dev/null
+++ b/src/kernel/tasks/task.h
@@ -0,0 +1,30 @@
+#ifndef MELVIX_TASK_H
+#define MELVIX_TASK_H
+
+#include <stdint.h>
+#include <kernel/memory/paging.h>
+
+#define KERNEL_STACK_SIZE 2048
+
+typedef struct task {
+ int id;
+ uint32_t esp, ebp;
+ uint32_t eip;
+ page_directory_t *page_directory;
+ uint32_t kernel_stack;
+ struct task *next;
+} task_t;
+
+void tasking_install();
+
+void switch_task();
+
+int fork();
+
+void move_stack(void *new_stack_start, uint32_t size);
+
+int getpid();
+
+void switch_to_usermode(uint32_t);
+
+#endif