summaryrefslogtreecommitdiff
path: root/kern/sleepq.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/sleepq.c')
-rw-r--r--kern/sleepq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kern/sleepq.c b/kern/sleepq.c
index bd0e363e..0d04c6ea 100644
--- a/kern/sleepq.c
+++ b/kern/sleepq.c
@@ -492,11 +492,13 @@ sleepq_signal(struct sleepq *sleepq)
{
struct sleepq_waiter *waiter;
- if (list_empty(&sleepq->waiters)) {
+ waiter = sleepq->oldest_waiter;
+
+ if (!waiter) {
return;
}
- waiter = list_last_entry(&sleepq->waiters, struct sleepq_waiter, node);
+ sleepq_shift_oldest_waiter(sleepq);
sleepq_waiter_set_pending_wakeup(waiter);
sleepq_waiter_wakeup(waiter);
}