#pragma once #include enum kc_thread_status { AVAILABLE, CREATED, READY, RUNNING, SLEEPING, BLOCKED, TERMINATED }; union kc_thread_result { uint64_t scalar; void *pointer; }; struct kc_thread { void *kernel_stack_head; void *kernel_stack_pointer; uint64_t time_elapsed; union kc_thread_result result; enum kc_thread_status status; struct kc_thread *next; uint64_t sleep_expiration; }; void task_init(void); void kct_terminate(union kc_thread_result result);