diff options
Diffstat (limited to 'sys/kern/kern_event.c')
-rw-r--r-- | sys/kern/kern_event.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 0fce41b..2db8524 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -557,9 +557,12 @@ start: kq->kq_state |= KQ_SLEEP; error = tsleep(kq, PSOCK | PCATCH, "kqread", timeout); splx(s); - if (error == 0 || error == ERESTART) + if (error == 0) goto retry; - if (error == EWOULDBLOCK) + /* don't restart after signals... */ + if (error == ERESTART) + error = EINTR; + else if (error == EWOULDBLOCK) error = 0; goto done; } |