summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2012-08-22 20:01:38 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2012-08-22 20:01:38 +0000
commitba96d2d81635b3ec6b7581eaa194d3e5bc0e08ed (patch)
tree7151d359ad426acc299ded840b3ca451ffe110b7
parente6bdd477fc2f1dfd2b753023b14acdfdda35b8b4 (diff)
Notes
-rw-r--r--sys/kern/sched_4bsd.c1
-rw-r--r--sys/kern/sched_ule.c1
-rw-r--r--sys/kern/subr_turnstile.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index f7fd347f1b92..7aaf37c45fc6 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -1598,6 +1598,7 @@ sched_idletd(void *dummy)
{
struct pcpuidlestat *stat;
+ THREAD_NO_SLEEPING();
stat = DPCPU_PTR(idlestat);
for (;;) {
mtx_assert(&Giant, MA_NOTOWNED);
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index 8ceda763348d..337477885fa5 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -2581,6 +2581,7 @@ sched_idletd(void *dummy)
mtx_assert(&Giant, MA_NOTOWNED);
td = curthread;
tdq = TDQ_SELF();
+ THREAD_NO_SLEEPING();
for (;;) {
#ifdef SMP
if (tdq_idled(tdq) == 0)
diff --git a/sys/kern/subr_turnstile.c b/sys/kern/subr_turnstile.c
index 76fb96400362..31d16fe29128 100644
--- a/sys/kern/subr_turnstile.c
+++ b/sys/kern/subr_turnstile.c
@@ -684,6 +684,7 @@ turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
if (owner)
MPASS(owner->td_proc->p_magic == P_MAGIC);
MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
+ KASSERT(!TD_IS_IDLETHREAD(td), ("idle threads cannot block on locks"));
/*
* If the lock does not already have a turnstile, use this thread's