#pragma once #include "thread/Thread.h" namespace Scheduler { void init(); Thread* current(); Thread* idle(); Result new_kernel_thread(u64 address); Result new_kernel_thread(void (*func)(void)); Result new_kernel_thread(void (*func)(void*), void* arg); Thread* pick_task(); void switch_task(Registers* regs); void invoke(Registers* regs); DoublyLinkedList check_for_dying_threads(); } extern "C" void kernel_yield(); void kernel_sleep(u64 ms); [[noreturn]] void kernel_exit();