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();