diff options
author | Ed Maste <emaste@FreeBSD.org> | 2008-06-24 03:26:41 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2008-06-24 03:26:41 +0000 |
commit | ef0b687ced545c149c34ec171574138cbefc6c1c (patch) | |
tree | b9e6fb8d8fbc28e65b55b72b769a9caab6600b55 | |
parent | 6a9748abc8abfb35d4e887bbd8bfa952a909a3a0 (diff) |
Notes
-rw-r--r-- | sys/dev/aac/aac.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index a26397a3594f..d6754ad4a473 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -2998,6 +2998,7 @@ static int aac_poll(struct cdev *dev, int poll_events, d_thread_t *td) { struct aac_softc *sc; + struct aac_fib_context *ctx; int revents; sc = dev->si_drv1; @@ -3005,8 +3006,12 @@ aac_poll(struct cdev *dev, int poll_events, d_thread_t *td) mtx_lock(&sc->aac_aifq_lock); if ((poll_events & (POLLRDNORM | POLLIN)) != 0) { - if (sc->aifq_idx != 0 || sc->aifq_filled) - revents |= poll_events & (POLLIN | POLLRDNORM); + for (ctx = sc->fibctx; ctx; ctx = ctx->next) { + if (ctx->ctx_idx != sc->aifq_idx || ctx->ctx_wrap) { + revents |= poll_events & (POLLIN | POLLRDNORM); + break; + } + } } mtx_unlock(&sc->aac_aifq_lock); |