Luna/kernel/src/thread/Scheduler.h

29 lines
584 B
C
Raw Normal View History

2022-12-07 15:03:34 +01:00
#pragma once
#include "thread/Thread.h"
namespace Scheduler
{
void init();
Thread* current();
2022-12-07 15:55:58 +01:00
Thread* idle();
2022-12-07 15:03:34 +01:00
Result<void> new_kernel_thread(u64 address);
Result<void> new_kernel_thread(void (*func)(void));
Result<void> new_kernel_thread(void (*func)(void*), void* arg);
Thread* pick_task();
2022-12-19 12:24:15 +01:00
void reap_thread(Thread* thread);
2022-12-07 15:03:34 +01:00
void switch_task(Registers* regs);
void invoke(Registers* regs);
2022-12-19 12:43:23 +01:00
LinkedList<Thread> check_for_dying_threads();
2022-12-07 15:55:58 +01:00
}
extern "C" void kernel_yield();
void kernel_sleep(u64 ms);
2023-01-02 13:07:29 +01:00
[[noreturn]] void kernel_exit();