aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2006-04-14 14:27:28 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2006-04-14 14:27:28 +0000
commita29b4f6eecf0d0325a3bd06afe148a147201297e (patch)
tree63f86e7f51f31342ce7d52b2a8530a76bbb5453e
parent62463f6768ad65fcc6355aa06e09de20c42aec7f (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 594c5f05935f0..e629bbcaf55c6 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1181,7 +1181,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);
@@ -1203,7 +1202,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);
@@ -1248,6 +1246,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--;
@@ -1256,6 +1255,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;
@@ -1266,7 +1266,6 @@ start:
kn->kn_status &= ~(KN_INFLUX);
KN_LIST_UNLOCK(kn);
-
}
/* we are returning a copy to the user */
@@ -1288,7 +1287,6 @@ start:
done:
KQ_OWNED(kq);
KQ_UNLOCK_FLUX(kq);
- KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal);
knote_free(marker);
done_nl:
KQ_NOTOWNED(kq);