From b27538ea39d8065eb26f36853fc5d1fa24a126b3 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 9 Jun 2025 01:51:53 -0400 Subject: kernel: sched: Skip sleeping threads and get next If a thread is sleeping, skip it and try the next thread. Signed-off-by: Ian Moffett --- sys/kern/kern_sched.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'sys') diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c index 8a2a40f..d656f94 100644 --- a/sys/kern/kern_sched.c +++ b/sys/kern/kern_sched.c @@ -113,11 +113,18 @@ sched_dequeue_td(void) continue; } - TAILQ_REMOVE(&queue->q, td, link); - if (ISSET(td->flags, PROC_SLEEP)) { + while (ISSET(td->flags, PROC_SLEEP)) { + td = TAILQ_NEXT(td, link); + if (td == NULL) { + break; + } + } + + if (td == NULL) { continue; } + TAILQ_REMOVE(&queue->q, td, link); spinlock_release(&tdq_lock); return td; } -- cgit v1.2.3