summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/subr_bus.c16
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);
}
OpenPOWER on IntegriCloud