From 4c32aac8326b818be020de49aa9498ede23ebc68 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Sat, 7 Feb 2009 20:09:30 -0600 Subject: [PATCH] Fix update thread not successfully waking up with LWP Commit 08b945568 broke empth_sleep() for LWP: it returned zero even when woken up early. --- src/lib/lwp/sel.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/lwp/sel.c b/src/lib/lwp/sel.c index aa1e66a41..27b3d0c82 100644 --- a/src/lib/lwp/sel.c +++ b/src/lib/lwp/sel.c @@ -132,9 +132,9 @@ lwpWakeupFd(struct lwpProc *proc) return; lwpStatus(proc, "awakening; was sleeping on fd %d", proc->fd); - if (proc->runtime != (time_t)-1) { + if (proc->runtime != (time_t)-1 && proc->runtime != 0) { /* is in LwpDelayq; leave the job to lwpWakeupSleep() */ - proc->runtime = 0; + proc->runtime = (time_t)-1; return; } FD_CLR(proc->fd, &LwpReadfds); @@ -161,7 +161,8 @@ lwpWakeupSleep(void) while (NULL != (proc = lwpGetFirst(&LwpDelayq))) { if (now >= proc->runtime) { lwpStatus(proc, "sleep done"); - proc->runtime = (time_t)-1; + if (proc->runtime != 0) + proc->runtime = (time_t)-1; if (proc->fd >= 0) lwpWakeupFd(proc); else -- 2.43.0