summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-02-04 08:14:58 +0000
committerpjd <pjd@FreeBSD.org>2004-02-04 08:14:58 +0000
commita976b835f9d45fec88950a40b88cbc40a3396c3d (patch)
treefb16ab4364866d98bee657c2b36cec6000386ea4 /sys
parent35af001226a7c26bdef63bfb05ed4596ab82306e (diff)
downloadFreeBSD-src-a976b835f9d45fec88950a40b88cbc40a3396c3d.zip
FreeBSD-src-a976b835f9d45fec88950a40b88cbc40a3396c3d.tar.gz
Allow assert that the current thread does not hold the sx(9) lock.
Reviewed by: jhb In cooperation with: juli, jhb Approved by: jhb, scottl (mentor)
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_sx.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c
index fd723ed..e744f31 100644
--- a/sys/kern/kern_sx.c
+++ b/sys/kern/kern_sx.c
@@ -344,6 +344,17 @@ _sx_assert(struct sx *sx, int what, const char *file, int line)
sx->sx_object.lo_name, file, line);
mtx_unlock(sx->sx_lock);
break;
+ case SX_UNLOCKED:
+#ifdef WITNESS
+ witness_assert(&sx->sx_object, what, file, line);
+#else
+ mtx_lock(sx->sx_lock);
+ if (sx->sx_cnt != 0 && sx->sx_xholder == curthread)
+ printf("Lock %s locked @ %s:%d\n",
+ sx->sx_object.lo_name, file, line);
+ mtx_unlock(sx->sx_lock);
+#endif
+ break;
default:
panic("Unknown sx lock assertion: %d @ %s:%d", what, file,
line);
OpenPOWER on IntegriCloud