Begin task refactor

Store state using interrupt stack instead. Looks like `int 0x80` doesn't
work though, which is odd.
diff --git a/src/kernel/task.h b/src/kernel/task.h
index ce5b04c..487c143 100644
--- a/src/kernel/task.h
+++ b/src/kernel/task.h
@@ -3,6 +3,10 @@
 #include "kint.h"
 #include "registers.h"
 
+#define INIT_TASKS_INTERRUPT 0x81
+
+extern bool tasks_initialized;
+
 struct process
 {
 	bool exists;
@@ -34,7 +38,8 @@
 // extern struct process processes[1024];
 // extern struct ll_task_i *first_task, *current_task;
 
-extern void init_tasks();
+// Note: interrupts must be enabled BEFORE this for it to work.
+void init_tasks();
 struct process *get_process(uint pid);
 
 int get_process_id();
@@ -47,3 +52,4 @@
 void kill_this_thread();
 extern void switch_task();
 void switch_to_task(struct task *task);
+void _sys_init_tasks_h(struct registers *regs);