Kernel: init2 is now launched as a process instead of thread

Also only process can now add threads to scheduler. Nobody should
have raw access to scheduler and everything should be through
Process::current() or irqs (reschedules)
This commit is contained in:
Bananymous 2023-04-19 00:39:06 +03:00
parent 7bd4593748
commit 59a682c720
2 changed files with 6 additions and 4 deletions

View File

@ -17,8 +17,6 @@ namespace Kernel
void reschedule();
void reschedule_if_idling();
BAN::ErrorOr<void> add_thread(Thread*);
void set_current_thread_sleeping(uint64_t);
[[noreturn]] void set_current_thread_done();
@ -38,6 +36,8 @@ namespace Kernel
void advance_current_thread();
[[noreturn]] void execute_current_thread();
BAN::ErrorOr<void> add_thread(Thread*);
private:
struct ActiveThread
{
@ -69,6 +69,8 @@ namespace Kernel
BAN::LinkedList<ActiveThread>::iterator m_current_thread;
uint64_t m_last_reschedule = 0;
friend class Process;
};
}

View File

@ -165,7 +165,7 @@ extern "C" void kernel_main()
MUST(Scheduler::initialize());
Scheduler& scheduler = Scheduler::get();
MUST(scheduler.add_thread(MUST(Thread::create(init2, tty1, nullptr))));
MUST(Process::create_kernel(init2, tty1));
scheduler.start();
ASSERT_NOT_REACHED();