Remove directory cloning, add spawn() based multitasking stub
diff --git a/src/kernel/task.h b/src/kernel/task.h
index 0905a5f..e70fd6d 100644
--- a/src/kernel/task.h
+++ b/src/kernel/task.h
@@ -1,11 +1,43 @@
 #pragma once
 
 #include "kint.h"
+#include "registers.h"
 
-// NOTE: uses kmalloc_a for now, this is bad because we will probably
-// run out of memory pretty quick, but malloc() doesn't support alignment
-// yet, so here we are.
-// dir is the VIRTUAL address, return is also virtual
-uint *clone_page_directory(uint *dir);
-// here, both return and argument are PHYSICAL
-uint clone_page_table(uint table);
+struct process
+{
+	bool exists;
+	int id;
+	int ring;
+	int uid;
+	char name[32];
+};
+
+struct task
+{
+	int id;
+	struct process *proc;
+	uint stack_top_p; // stack frame PHYSICAL address
+	uint esp, ebp, eip;
+	uint *page_directory;
+	bool kernel;
+};
+
+struct ll_task_i
+{
+	struct ll_task_i *next;
+	struct task task;
+};
+
+// 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);
+struct process *get_process(uint pid);
+
+int get_process_id();
+int get_task_id();
+
+// For compatibility I guess
+#define getpid get_process_id
+
+void spawn_thread(void (* function)(void *data), void *data);