summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_witness.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-04-02 16:51:20 +0000
committerjhb <jhb@FreeBSD.org>2002-04-02 16:51:20 +0000
commit77dc513737a6b44f27588d8bf80ff46b0d70a7c6 (patch)
tree211db454fadbbb5d0e1d196aafbca4e5236082b0 /sys/kern/subr_witness.c
parent9bb1e67e7ef74a7957bea9b2f33be6f18b33c782 (diff)
downloadFreeBSD-src-77dc513737a6b44f27588d8bf80ff46b0d70a7c6.zip
FreeBSD-src-77dc513737a6b44f27588d8bf80ff46b0d70a7c6.tar.gz
Explicitly document how we implicitly enforce the lock order of sleep
locks before spin locks.
Diffstat (limited to 'sys/kern/subr_witness.c')
-rw-r--r--sys/kern/subr_witness.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index 53fbb96..ec98ba0 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -474,6 +474,11 @@ witness_lock(struct lock_object *lock, int flags, const char *file, int line)
td = curthread;
if (class->lc_flags & LC_SLEEPLOCK) {
+ /*
+ * Since spin locks include a critical section, this check
+ * impliclty enforces a lock order of all sleep locks before
+ * all spin locks.
+ */
if (td->td_critnest != 0 && (flags & LOP_TRYLOCK) == 0)
panic("blockable sleep lock (%s) %s @ %s:%d",
class->lc_name, lock->lo_name, file, line);
OpenPOWER on IntegriCloud