|
@@ -112,6 +112,7 @@ void Thread::snooze_until(Alarm& alarm)
|
|
|
|
|
|
void Thread::block(Thread::State new_state)
|
|
|
{
|
|
|
+ bool did_unlock = process().big_lock().unlock_if_locked();
|
|
|
if (state() != Thread::Running) {
|
|
|
kprintf("Thread::block: %s(%u) block(%u/%s) with state=%u/%s\n", process().name().characters(), process().pid(), new_state, to_string(new_state), state(), to_string(state()));
|
|
|
}
|
|
@@ -120,6 +121,8 @@ void Thread::block(Thread::State new_state)
|
|
|
m_was_interrupted_while_blocked = false;
|
|
|
set_state(new_state);
|
|
|
Scheduler::yield();
|
|
|
+ if (did_unlock)
|
|
|
+ process().big_lock().lock();
|
|
|
}
|
|
|
|
|
|
void Thread::sleep(dword ticks)
|