diff options
-rw-r--r-- | sys/kern/subr_bus.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index 6c59558..ecb1c7a 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -353,21 +353,15 @@ devpoll(dev_t dev, int events, d_thread_t *td) { int revents = 0; - if (events & (POLLIN | POLLRDNORM)) - revents |= events & (POLLIN | POLLRDNORM); - - if (events & (POLLOUT | POLLWRNORM)) - revents |= events & (POLLOUT | POLLWRNORM); - mtx_lock(&devsoftc.mtx); - if (events & POLLRDBAND) + if (events & (POLLIN | POLLRDNORM)) { if (!TAILQ_EMPTY(&devsoftc.devq)) - revents |= POLLRDBAND; + revents = events & (POLLIN | POLLRDNORM); + else + selrecord(td, &devsoftc.sel); + } mtx_unlock(&devsoftc.mtx); - if (revents == 0) - selrecord(td, &devsoftc.sel); - return (revents); } |