diff --git a/kernel/scheduler.h b/kernel/scheduler.h index d6b6515..80aaed2 100644 --- a/kernel/scheduler.h +++ b/kernel/scheduler.h @@ -4,18 +4,21 @@ #include #define MAX_TASKS 8 -#define STACK_SIZE 1024 +#define STACK_SIZE 1024 // in bytes typedef struct task { uint32_t id; - void (*entry)(void); - uint32_t *stack_ptr; + + // The most important field: + // Where was the stack pointer when we last left this task? + uint32_t *stack_ptr; + struct task *next; } task_t; void scheduler_init(); void scheduler_add_task(void (*entry)(void)); void scheduler_schedule(); -void scheduler_yield(); // Optional for cooperative scheduling +void scheduler_yield(); #endif // SCHEDULER_H