summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2005-09-15 20:08:21 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2005-09-15 20:08:21 +0000
commit10f508d9a33b81c880e4bb18addcb818196ae324 (patch)
tree713cc0c0e6ae1f62348c3bcbd092e6f9d131c61d
parent5ae7c95cc3c752d538c97e628e92b0b1b6239a54 (diff)
Notes
-rw-r--r--sys/kern/kern_intr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index d3c876d6a5f9..ab189cfb4aa3 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -521,7 +521,8 @@ ithread_loop(void *arg)
* another pass.
*/
atomic_store_rel_int(&ithd->it_need, 0);
- THREAD_NO_SLEEPING();
+ if (!(ithd->it_flags & IT_SOFT))
+ THREAD_NO_SLEEPING();
restart:
TAILQ_FOREACH(ih, &ithd->it_handlers, ih_next) {
if (ithd->it_flags & IT_SOFT && !ih->ih_need)
@@ -547,7 +548,8 @@ restart:
if ((ih->ih_flags & IH_MPSAFE) == 0)
mtx_unlock(&Giant);
}
- THREAD_SLEEPING_OK();
+ if (!(ithd->it_flags & IT_SOFT))
+ THREAD_SLEEPING_OK();
/*
* Interrupt storm handling: