#ifndef TASK_H #define TASK_H #include #include #define TASK_NAME_LEN 15 enum wait_mode { NONE, PROCESS_END, }; struct task_state { uint32_t ret_addr; void *page_directory; uint32_t ebx; uint32_t ecx; uint32_t edx; uint32_t esi; uint32_t edi; uint32_t ebp; uint32_t esp; enum wait_mode wait_mode; uint32_t wait_arg; char name[TASK_NAME_LEN + 1]; } __attribute__ ((packed)); extern struct task_state *active_task; void init_tasks(); uint32_t new_task(struct task_state state); void advance_active_task(); void delete_task(struct task_state *state); #endif