diff options
Diffstat (limited to 'src/kernel/task/task.h')
-rw-r--r-- | src/kernel/task/task.h | 29 |
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 |