diff options
Diffstat (limited to 'include/kernel/sched.h')
| -rw-r--r-- | include/kernel/sched.h | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/include/kernel/sched.h b/include/kernel/sched.h index afced68..a3d95e0 100644 --- a/include/kernel/sched.h +++ b/include/kernel/sched.h @@ -2,27 +2,44 @@ #define _SCHED_H #include <stdint.h> +#include <unistd.h> -struct task_state { - uint32_t ss; - uint32_t esp; - uint32_t eflags; - uint32_t cs; +struct tss_struct { + uint32_t prevt; + uint32_t esp0; + uint32_t ss0; + uint32_t esp1; + uint32_t ss1; + uint32_t esp2; + uint32_t ss2; + uint32_t cr3; uint32_t eip; + uint32_t eflags; uint32_t eax; uint32_t ecx; uint32_t edx; uint32_t ebx; - uint32_t esp_garbage; + uint32_t esp; uint32_t ebp; uint32_t esi; uint32_t edi; + uint32_t es; + uint32_t cs; + uint32_t ss; + uint32_t ds; + uint32_t fs; + uint32_t gs; + uint32_t ldt; + uint32_t io_map; } __attribute__((packed)); struct task_struct { - struct task_state state; + pid_t pid; + struct tss_struct state; } __attribute__((packed)); -void userspace_init(void); +extern struct task_struct *ctask; + +void sched_init(void); #endif |
