diff --git a/src/system/kernel/scheduler/scheduler_affine.cpp b/src/system/kernel/scheduler/scheduler_affine.cpp index b50480390f..6045e15f7a 100644 --- a/src/system/kernel/scheduler/scheduler_affine.cpp +++ b/src/system/kernel/scheduler/scheduler_affine.cpp @@ -500,9 +500,10 @@ affine_reschedule(void) && nextThread->priority < B_NORMAL_PRIORITY) quantum = kMaxThreadQuantum; - if (!thread_is_idle_thread(nextThread)) + if (!thread_is_idle_thread(nextThread)) { add_timer(quantumTimer, &reschedule_event, quantum, B_ONE_SHOT_RELATIVE_TIMER | B_TIMER_ACQUIRE_SCHEDULER_LOCK); + } if (nextThread != oldThread) scheduler_switch_thread(oldThread, nextThread); diff --git a/src/system/kernel/scheduler/scheduler_simple.cpp b/src/system/kernel/scheduler/scheduler_simple.cpp index 42e69199a1..4898781cdf 100644 --- a/src/system/kernel/scheduler/scheduler_simple.cpp +++ b/src/system/kernel/scheduler/scheduler_simple.cpp @@ -324,9 +324,10 @@ simple_reschedule(void) cancel_timer(quantumTimer); oldThread->cpu->preempted = 0; - if (!thread_is_idle_thread(nextThread)) + if (!thread_is_idle_thread(nextThread)) { add_timer(quantumTimer, &reschedule_event, quantum, B_ONE_SHOT_RELATIVE_TIMER | B_TIMER_ACQUIRE_SCHEDULER_LOCK); + } if (nextThread != oldThread) scheduler_switch_thread(oldThread, nextThread); diff --git a/src/system/kernel/scheduler/scheduler_simple_smp.cpp b/src/system/kernel/scheduler/scheduler_simple_smp.cpp index ff3e3d2ac1..32dd4e2d59 100644 --- a/src/system/kernel/scheduler/scheduler_simple_smp.cpp +++ b/src/system/kernel/scheduler/scheduler_simple_smp.cpp @@ -423,9 +423,10 @@ reschedule(void) cancel_timer(quantumTimer); oldThread->cpu->preempted = 0; - if (!thread_is_idle_thread(nextThread)) + if (!thread_is_idle_thread(nextThread)) { add_timer(quantumTimer, &reschedule_event, quantum, B_ONE_SHOT_RELATIVE_TIMER | B_TIMER_ACQUIRE_SCHEDULER_LOCK); + } if (nextThread != oldThread) scheduler_switch_thread(oldThread, nextThread);