#ifndef THREAD_H #define THREAD_H #include #include typedef enum { THREAD_READY, THREAD_RUNNING, THREAD_ZOMBIE } thread_state_t; // То, что пушится на стек при переключении typedef struct { uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax; uint32_t eip; uint32_t cs; uint32_t eflags; } cpu_context_t; typedef struct thread { uint32_t id; uint32_t* esp; // Указатель на текущий топ стека void* stack_limit; // Чтобы потом делать kfree thread_state_t state; struct thread* next; } thread_t; void kthread_init(void); thread_t* kthread_create(void (*entry_point)(void)); void kthread_yield(void); #endif