Page MenuHomeFreeBSD

D58443.id182640.diff
No OneTemporary

D58443.id182640.diff

diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -257,6 +257,14 @@
wakeup((kq)); \
} \
} while (0)
+#define KQ_FLUX_SLEEP_WMESG(kq, kn, flags, wmesg) do { \
+ KASSERT((kn)->kn_kq == (kq), \
+ ("%s: knote %p not on kqueue %p", __func__, kn, kq)); \
+ (kq)->kq_state |= KQ_FLUXWAIT; \
+ msleep((kq), &(kq)->kq_lock, PSOCK | (flags), (wmesg), 0); \
+} while (0)
+#define KQ_FLUX_SLEEP(kq, kn, flags) \
+ KQ_FLUX_SLEEP_WMESG(kq, kn, flags, "kqflux")
#define KQ_UNLOCK_FLUX(kq) do { \
KQ_FLUX_WAKEUP(kq); \
mtx_unlock(&(kq)->kq_lock); \
@@ -1786,8 +1794,7 @@
FILEDESC_XUNLOCK(td->td_proc->p_fd);
filedesc_unlock = 0;
}
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK | PDROP, "kqflxwt", 0);
+ KQ_FLUX_SLEEP(kq, kn, PDROP);
if (fp != NULL) {
fdrop(fp, td);
fp = NULL;
@@ -2184,9 +2191,7 @@
influx = 0;
KQ_FLUX_WAKEUP(kq);
}
- kq->kq_state |= KQ_FLUXWAIT;
- error = msleep(kq, &kq->kq_lock, PSOCK,
- "kqflxwt", 0);
+ KQ_FLUX_SLEEP(kq, kn, 0);
continue;
}
@@ -2420,8 +2425,7 @@
for (i = 0; i < kq->kq_knlistsize; i++) {
while ((kn = SLIST_FIRST(&kq->kq_knlist[i])) != NULL) {
if (kn_in_flux(kn)) {
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK, "kqclo1", 0);
+ KQ_FLUX_SLEEP_WMESG(kq, kn, 0, "kqclo0");
continue;
}
kn_enter_flux(kn);
@@ -2434,9 +2438,8 @@
for (i = 0; i <= kq->kq_knhashmask; i++) {
while ((kn = SLIST_FIRST(&kq->kq_knhash[i])) != NULL) {
if (kn_in_flux(kn)) {
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK,
- "kqclo2", 0);
+ KQ_FLUX_SLEEP_WMESG(kq, kn, 0,
+ "kqclo1");
continue;
}
kn_enter_flux(kn);
@@ -2831,8 +2834,7 @@
KQ_LOCK(kq);
KASSERT(kn_in_flux(kn), ("knote removed w/o list lock"));
knl->kl_unlock(knl->kl_lockarg);
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK | PDROP, "kqkclr", 0);
+ KQ_FLUX_SLEEP_WMESG(kq, kn, PDROP, "kqkclr");
kq = NULL;
knl->kl_lock(knl->kl_lockarg);
}
@@ -2878,8 +2880,7 @@
* the case that it's in the process of being
* dropped anyways.
*/
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK, "kqflxwt", 0);
+ KQ_FLUX_SLEEP(kq, kn, 0);
continue;
}
kn_enter_flux(kn);
@@ -2943,8 +2944,7 @@
kn, kn->kn_influx));
if (kn->kn_influx == 1)
break;
- kq->kq_state |= KQ_FLUXWAIT;
- msleep(kq, &kq->kq_lock, PSOCK, "kqflxwt", 0);
+ KQ_FLUX_SLEEP(kq, kn, 0);
}
MPASS(kn->kn_kq == kq);

File Metadata

Mime Type
text/plain
Expires
Wed, Aug 26, 2:33 PM (4 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35496841
Default Alt Text
D58443.id182640.diff (2 KB)

Event Timeline