diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 5e73a722..9724442e 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -62,7 +62,7 @@ void oom_thread() auto init = mark_critical(VFS::resolve_path("/bin/preinit", Credentials {}), "Can't find init in the initial ramfs!"); - auto init_thread = mark_critical(Scheduler::new_userspace_thread(init, "/bin/preinit"), + auto init_thread = mark_critical(Scheduler::create_init_process(init, "/bin/preinit"), "Failed to create PID 1 process for init"); auto reap = mark_critical(Scheduler::new_kernel_thread(reap_thread, "[reap]"), diff --git a/kernel/src/thread/Scheduler.cpp b/kernel/src/thread/Scheduler.cpp index bc4ea632..af866997 100644 --- a/kernel/src/thread/Scheduler.cpp +++ b/kernel/src/thread/Scheduler.cpp @@ -140,8 +140,10 @@ namespace Scheduler return new_kernel_thread_impl(thread, name); } - Result new_userspace_thread(SharedPtr inode, const char* name) + Result create_init_process(SharedPtr inode, const char* name) { + check(!g_init); + Thread* const thread = TRY(make()); thread->state = ThreadState::None; diff --git a/kernel/src/thread/Scheduler.h b/kernel/src/thread/Scheduler.h index 0d357825..5c9ec66d 100644 --- a/kernel/src/thread/Scheduler.h +++ b/kernel/src/thread/Scheduler.h @@ -20,7 +20,7 @@ namespace Scheduler Result new_kernel_thread(void (*func)(void), const char* name); Result new_kernel_thread(void (*func)(void*), void* arg, const char* name); - Result new_userspace_thread(SharedPtr inode, const char* name); + Result create_init_process(SharedPtr inode, const char* name); void add_thread(Thread* thread);