sched: don't reschedule a thread if its status is THREAD_STOPPED

This commit is contained in:
2026-03-18 21:02:30 +00:00
parent d801203f04
commit 63703a3d34

View File

@@ -123,8 +123,16 @@ void __schedule(enum sched_mode mode)
enum thread_state prev_state = READ_ONCE(prev->tr_state); enum thread_state prev_state = READ_ONCE(prev->tr_state);
if ((mode == SCHED_IRQ || prev_state == THREAD_READY) bool reschedule = false;
&& prev != rq->rq_idle) { if (prev_state == THREAD_READY || mode == SCHED_IRQ) {
reschedule = true;
}
if (prev == rq->rq_idle || prev_state == THREAD_STOPPED) {
reschedule = false;
}
if (reschedule) {
rq_enqueue(rq, prev); rq_enqueue(rq, prev);
} }