diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2006-04-14 14:27:28 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2006-04-14 14:27:28 +0000 |
| commit | a29b4f6eecf0d0325a3bd06afe148a147201297e (patch) | |
| tree | 63f86e7f51f31342ce7d52b2a8530a76bbb5453e | |
| parent | 62463f6768ad65fcc6355aa06e09de20c42aec7f (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_event.c | 6 |
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); |
