summaryrefslogtreecommitdiff
path: root/sys/kern/kern_rwlock.c
diff options
context:
space:
mode:
authorMerlin Scholz <merlin@scholz.ruhr>2023-04-01 20:50:04 +0200
committerMerlin Scholz <merlin@scholz.ruhr>2023-04-01 20:50:04 +0200
commit9825a41fa486bda5faab691ca59c11895b13ee7f (patch)
tree1fe6c7e599f632c8d763146dfcb858f1ef357757 /sys/kern/kern_rwlock.c
parentb5199c348832b594f04882197f274ada024bc1f7 (diff)
Fix rwlock_exit logging order bug
Diffstat (limited to 'sys/kern/kern_rwlock.c')
-rw-r--r--sys/kern/kern_rwlock.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c
index 5b52af91e71..b000eb00c86 100644
--- a/sys/kern/kern_rwlock.c
+++ b/sys/kern/kern_rwlock.c
@@ -778,6 +778,25 @@ rw_lock_held(krwlock_t *rw)
return (rw->rw_owner & RW_THREAD) != 0;
}
+#ifdef LOCKDOC
+/*
+ * Helper function to get a lock type (backported from NetBSD 10.0-STABLE)
+ * the #ifdef is here just in case.
+ */
+
+ /*
+ * rw_lock_op:
+ *
+ * For a rwlock that is known to be held by the caller, return
+ * RW_READER or RW_WRITER to describe the hold type.
+ */
+krw_t
+rw_lock_op(krwlock_t *rw)
+{
+ return (rw->rw_owner & RW_WRITE_LOCKED) != 0 ? RW_WRITER : RW_READER;
+}
+#endif
+
/*
* rw_owner:
*