diff options
author | Alexis211 <alexis211@gmail.com> | 2010-02-03 15:22:30 +0100 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2010-02-03 15:22:30 +0100 |
commit | 9c4310651a91e64c10a17f3190c895a49096aeb1 (patch) | |
tree | af87d115512249458f80f184d53db403c3f0bb0f /src/stem/task/task.h | |
parent | 7f72a900c12ba62db12df0872cb66f79a27aa9d9 (diff) | |
download | TCE-9c4310651a91e64c10a17f3190c895a49096aeb1.tar.gz TCE-9c4310651a91e64c10a17f3190c895a49096aeb1.zip |
Reogranization
Diffstat (limited to 'src/stem/task/task.h')
-rw-r--r-- | src/stem/task/task.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/stem/task/task.h b/src/stem/task/task.h new file mode 100644 index 0000000..e91aa8b --- /dev/null +++ b/src/stem/task/task.h @@ -0,0 +1,41 @@ +#ifndef DEF_TASK_H +#define DEF_TASK_H + +#include <types.h> +#include <mem/paging.h> +#include "idt.h" + +struct process { + uint32_t pid, uid; + struct process *parent; + struct page_directory *pagedir; + + struct process *next; //Forms a linked list +}; + +#define TS_RUNNING 0 +#define TS_SLEEPING 1 //Sleeping for a defined amount of time +#define TS_WAIKWAIT 2 //Waiting to be waked up by something precise (thread currently blocked) + +typedef void (*thread_entry)(void*); + +struct thread { + struct process *process; + uint32_t esp, ebp, eip; + uint8_t state; + uint32_t timeWait; + void* kernelStack_addr; + uint32_t kernelStack_size; + + struct thread *next; //Forms a linked list +}; + +extern struct thread *current_thread; + +void tasking_init(thread_entry whereToGo, void *data); +void tasking_switch(); +uint32_t tasking_handleException(struct registers *regs); + +void thread_new(struct process *proc, thread_entry entry_point, void *data); + +#endif |