mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 02:12:09 -05:00
Kernel: Make sure we never put the colonel thread in the runnable list.
This would cause it to get scheduled unnecessarily.
This commit is contained in:
parent
64a4f3df69
commit
7900da9667
2 changed files with 6 additions and 1 deletions
|
@ -232,6 +232,9 @@ bool Scheduler::pick_next()
|
|||
}
|
||||
#endif
|
||||
|
||||
if (g_runnable_threads->is_empty())
|
||||
return context_switch(s_colonel_process->main_thread());
|
||||
|
||||
auto* previous_head = g_runnable_threads->head();
|
||||
for (;;) {
|
||||
// Move head to tail.
|
||||
|
|
|
@ -546,6 +546,7 @@ bool Thread::is_thread(void* ptr)
|
|||
|
||||
void Thread::set_thread_list(InlineLinkedList<Thread>* thread_list)
|
||||
{
|
||||
ASSERT(pid() != 0);
|
||||
if (m_thread_list == thread_list)
|
||||
return;
|
||||
if (m_thread_list)
|
||||
|
@ -558,5 +559,6 @@ void Thread::set_thread_list(InlineLinkedList<Thread>* thread_list)
|
|||
void Thread::set_state(State new_state)
|
||||
{
|
||||
m_state = new_state;
|
||||
set_thread_list(thread_list_for_state(new_state));
|
||||
if (m_process.pid() != 0)
|
||||
set_thread_list(thread_list_for_state(new_state));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue