#pragma once #include "fs/VFS.h" #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); Result new_userspace_thread(SharedPtr inode); void add_thread(Thread* thread); Thread* pick_task(); void reap_thread(Thread* thread); void switch_task(Registers* regs); void invoke(Registers* regs); LinkedList check_for_dying_threads(); } extern "C" void kernel_yield(); void kernel_sleep(u64 ms); [[noreturn]] void kernel_exit();