Kernel: Unlock the Process when exit()ing

If there are more threads in a process when exit()ing, we need to give
them a chance to unwind any kernel stacks. This means we have to unlock
the process lock before giving control to the scheduler.

Fixes #891 (together with all of the other "no more main thread" work.)
This commit is contained in:
Andreas Kling 2019-12-22 12:34:38 +01:00
parent f4978b2be1
commit 523fd6533e
Notes: sideshowbarker 2024-07-19 10:46:18 +09:00

View file

@ -178,8 +178,11 @@ void Thread::die_if_needed()
if (!m_should_die)
return;
m_process.big_lock().unlock_if_locked();
InterruptDisabler disabler;
set_state(Thread::State::Dying);
if (!Scheduler::is_active())
Scheduler::pick_next_and_switch_now();
}