summaryrefslogtreecommitdiff
path: root/src/kernel/task/task.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/task/task.h')
-rw-r--r--src/kernel/task/task.h29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/kernel/task/task.h b/src/kernel/task/task.h
index 63cb35a..47d7632 100644
--- a/src/kernel/task/task.h
+++ b/src/kernel/task/task.h
@@ -20,16 +20,17 @@
typedef void (*thread_entry)(void*);
+struct thread;
struct process {
uint32_t pid, uid, privilege, thread_count;
- struct process *parent;
- struct page_directory *pagedir;
+ process *parent;
+ page_directory *pagedir;
size_t stack, data;
- struct segment_map *dataseg;
+ segment_map *dataseg;
- struct process *next; //Forms a linked list
- struct thread *threads;
+ process *next; //Forms a linked list
+ thread *threads;
};
struct thread {
@@ -40,21 +41,25 @@ struct thread {
void* kernelStack_addr;
uint32_t kernelStack_size;
- struct thread *next, *queue_next; //queue_next is used in sched.c
+ thread *next, *queue_next; //queue_next is used in sched.c
};
-extern struct thread *current_thread;
+extern thread *current_thread;
void tasking_init();
+#ifdef __cplusplus
+extern "C" void schedule();
+#else
void schedule();
-void tasking_updateKernelPagetable(uint32_t idx, struct page_table *table, uint32_t tablePhysical);
-uint32_t tasking_handleException(struct registers *regs);
+#endif
+void tasking_updateKernelPagetable(uint32_t idx, page_table *table, uint32_t tablePhysical);
+uint32_t tasking_handleException(registers *regs);
void thread_goInactive(); //Blocks the current thread. it is then waked up by another thread or a system event.
-void thread_wakeUp(struct thread *t);
+void thread_wakeUp(thread *t);
int proc_priv(); //Returns current privilege level
-struct thread * thread_new(struct process *proc, thread_entry entry_point, void *data, void *u_esp);
-struct process* process_new(struct process *parent, uint32_t uid, uint32_t privilege);
+thread * thread_new(process *proc, thread_entry entry_point, void *data, void *u_esp);
+process* process_new(process *parent, uint32_t uid, uint32_t privilege);
void thread_exit(); //syscall
void process_exit(size_t retval); //syscall