summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_timeout.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-09-15 20:09:08 +0000
committerjhb <jhb@FreeBSD.org>2005-09-15 20:09:08 +0000
commit95df5b283f6e595ed7c3697ecc7eab0c14c47d0f (patch)
tree87e7b4235ec8239f6dd4d6c3ebb30a3b36835a45 /sys/kern/kern_timeout.c
parentfeeb07e6ae425b0f5c31972b670412b5917281ec (diff)
downloadFreeBSD-src-95df5b283f6e595ed7c3697ecc7eab0c14c47d0f.zip
FreeBSD-src-95df5b283f6e595ed7c3697ecc7eab0c14c47d0f.tar.gz
Replace the dont_sleep_in_callout mutex hack (similar to g_x{up,down})
with the disallow sleeping facility.
Diffstat (limited to 'sys/kern/kern_timeout.c')
-rw-r--r--sys/kern/kern_timeout.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c
index 8e6b183..de18fe0 100644
--- a/sys/kern/kern_timeout.c
+++ b/sys/kern/kern_timeout.c
@@ -71,9 +71,6 @@ int callwheelsize, callwheelbits, callwheelmask;
struct callout_tailq *callwheel;
int softticks; /* Like ticks, but for softclock(). */
struct mtx callout_lock;
-#ifdef DIAGNOSTIC
-struct mtx dont_sleep_in_callout;
-#endif
static struct callout *nextsoftcheck; /* Next callout to be checked. */
@@ -159,9 +156,6 @@ kern_timeout_callwheel_init(void)
TAILQ_INIT(&callwheel[i]);
}
mtx_init(&callout_lock, "callout", NULL, MTX_SPIN | MTX_RECURSE);
-#ifdef DIAGNOSTIC
- mtx_init(&dont_sleep_in_callout, "dont_sleep_in_callout", NULL, MTX_DEF);
-#endif
mtx_init(&callout_wait_lock, "callout_wait_lock", NULL, MTX_DEF);
cv_init(&callout_wait, "callout_wait");
}
@@ -290,11 +284,11 @@ softclock(void *dummy)
}
#ifdef DIAGNOSTIC
binuptime(&bt1);
- mtx_lock(&dont_sleep_in_callout);
#endif
+ THREAD_NO_SLEEPING();
c_func(c_arg);
+ THREAD_SLEEPING_OK();
#ifdef DIAGNOSTIC
- mtx_unlock(&dont_sleep_in_callout);
binuptime(&bt2);
bintime_sub(&bt2, &bt1);
if (bt2.frac > maxdt) {
OpenPOWER on IntegriCloud