diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2006-04-19 15:47:36 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2006-04-19 15:47:36 +0000 |
| commit | 8a9eeaab806c35b48e0df6eeae0bb4e63c3f4c39 (patch) | |
| tree | 19d604e3de2766be2e31b8aea3e3a2a2ad1c1ab1 | |
| parent | 5f39e81a8b29090475dde59612624fa4e9795e3d (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 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); |
