From 63703a3d343af639d7e4c43e156e1eda34d9a421 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Wed, 18 Mar 2026 21:02:30 +0000 Subject: [PATCH] sched: don't reschedule a thread if its status is THREAD_STOPPED --- sched/core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sched/core.c b/sched/core.c index 70bbfc5..277b826 100644 --- a/sched/core.c +++ b/sched/core.c @@ -123,8 +123,16 @@ void __schedule(enum sched_mode mode) enum thread_state prev_state = READ_ONCE(prev->tr_state); - if ((mode == SCHED_IRQ || prev_state == THREAD_READY) - && prev != rq->rq_idle) { + bool reschedule = false; + 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); }