Add threading, paging broken
diff --git a/src/kernel/task.h b/src/kernel/task.h
index e70fd6d..c31162e 100644
--- a/src/kernel/task.h
+++ b/src/kernel/task.h
@@ -6,10 +6,15 @@
 struct process
 {
 	bool exists;
-	int id;
+	int id; // kernel uses pid 0, which cannot exit
 	int ring;
 	int uid;
 	char name[32];
+	uint page_directory_p;
+	// most recent (bottom) stack used by a task, next
+	// stack should be under this one.
+	// NOTE: must be PAGE ALIGNED
+	uint last_stack_pos;
 };
 
 struct task
@@ -18,8 +23,6 @@
 	struct process *proc;
 	uint stack_top_p; // stack frame PHYSICAL address
 	uint esp, ebp, eip;
-	uint *page_directory;
-	bool kernel;
 };
 
 struct ll_task_i
@@ -31,7 +34,7 @@
 // extern struct process processes[1024];
 // extern struct ll_task_i *first_task, *current_task;
 
-void init_tasks(uint kernel_esp, uint kernel_ebp, uint kernel_eip);
+extern void init_tasks();
 struct process *get_process(uint pid);
 
 int get_process_id();
@@ -40,4 +43,5 @@
 // For compatibility I guess
 #define getpid get_process_id
 
-void spawn_thread(void (* function)(void *data), void *data);
+void spawn_thread(void (*function)());
+extern void switch_task();