sched: don't reschedule a thread if its status is THREAD_STOPPED
This commit is contained in:
12
sched/core.c
12
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user