aboutsummaryrefslogtreecommitdiff
path: root/include/kernel/task.c
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-03-01 14:20:47 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-03-01 14:20:47 -0500
commitc7252588ebb95f97631e9470778c69afa00c35b5 (patch)
tree06d760878e18f6cddbe4305cddd4d5dfa74529f8 /include/kernel/task.c
parentb8f54e63d2b8f8007c580adf2a6034c98a0f2eaa (diff)
downloadkappa-c7252588ebb95f97631e9470778c69afa00c35b5.zip
kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.gz
kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.bz2
kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.xz
Huge restructure
Diffstat (limited to 'include/kernel/task.c')
-rw-r--r--include/kernel/task.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/kernel/task.c b/include/kernel/task.c
new file mode 100644
index 0000000..ecc0042
--- /dev/null
+++ b/include/kernel/task.c
@@ -0,0 +1,16 @@
+#include "task.h"
+
+void task_create(struct task_t *task, void (*func)(void), uint32_t flags, uint32_t *pagedir)
+{
+ task->regs.eax = 0;
+ task->regs.ebx = 0;
+ task->regs.ecx = 0;
+ task->regs.edx = 0;
+ task->regs.esi = 0;
+ task->regs.edi = 0;
+ task->regs.eflags = flags;
+ task->regs.eip = (uint32_t)main;
+ task->regs.cr3 = (uint32_t)pagedir;
+ task->regs.esp = kmalloc(0x1000) + 0x1000;
+ task->next = NULL;
+}