summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2006-04-19 15:47:36 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2006-04-19 15:47:36 +0000
commit8a9eeaab806c35b48e0df6eeae0bb4e63c3f4c39 (patch)
tree19d604e3de2766be2e31b8aea3e3a2a2ad1c1ab1
parent5f39e81a8b29090475dde59612624fa4e9795e3d (diff)
Notes
-rw-r--r--sys/kern/kern_event.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 23a756883364..86e566adfc25 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1178,7 +1178,6 @@ start:
if (timeout < 0) {
error = EWOULDBLOCK;
} else {
- KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
kq->kq_state |= KQ_SLEEP;
error = msleep(kq, &kq->kq_lock, PSOCK | PCATCH,
"kqread", timeout);
@@ -1200,7 +1199,6 @@ start:
if ((kn->kn_status == KN_MARKER && kn != marker) ||
(kn->kn_status & KN_INFLUX) == KN_INFLUX) {
- KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
kq->kq_state |= KQ_FLUXWAIT;
error = msleep(kq, &kq->kq_lock, PSOCK,
"kqflxwt", 0);
@@ -1245,6 +1243,7 @@ start:
KN_LIST_LOCK(kn);
if (kn->kn_fop->f_event(kn, 0) == 0) {
KQ_LOCK(kq);
+ KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
kn->kn_status &=
~(KN_QUEUED | KN_ACTIVE | KN_INFLUX);
kq->kq_count--;
@@ -1253,6 +1252,7 @@ start:
}
*kevp = kn->kn_kevent;
KQ_LOCK(kq);
+ KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
if (kn->kn_flags & EV_CLEAR) {
kn->kn_data = 0;
kn->kn_fflags = 0;
@@ -1263,7 +1263,6 @@ start:
kn->kn_status &= ~(KN_INFLUX);
KN_LIST_UNLOCK(kn);
-
}
/* we are returning a copy to the user */
@@ -1285,7 +1284,6 @@ start:
done:
KQ_OWNED(kq);
KQ_UNLOCK_FLUX(kq);
- KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
knote_free(marker);
done_nl:
KQ_NOTOWNED(kq);