Commit
08b945568 broke empth_sleep() for LWP: it returned zero even
when woken up early.
return;
lwpStatus(proc, "awakening; was sleeping on fd %d", proc->fd);
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() */
/* is in LwpDelayq; leave the job to lwpWakeupSleep() */
+ proc->runtime = (time_t)-1;
return;
}
FD_CLR(proc->fd, &LwpReadfds);
return;
}
FD_CLR(proc->fd, &LwpReadfds);
while (NULL != (proc = lwpGetFirst(&LwpDelayq))) {
if (now >= proc->runtime) {
lwpStatus(proc, "sleep done");
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
if (proc->fd >= 0)
lwpWakeupFd(proc);
else