diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2022-08-16 12:22:31 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2022-08-23 19:15:48 +0000 |
commit | 9488262679d083ff0de97ff608f6a8a95291b13d (patch) | |
tree | 01b6109f1c1e46c8d4cb0b5e771364aa6d69ee52 | |
parent | 9e4e7bcaef3fcaab66cdecd08b1664ac92cc9a6b (diff) | |
download | src-9488262679d083ff0de97ff608f6a8a95291b13d.tar.gz src-9488262679d083ff0de97ff608f6a8a95291b13d.zip |
rms: add rms_assert_rlock_ok
So that callers which opportunistically elide the lock can still
assert that they can take it.
Reviewed by:
Differential Revision:
-rw-r--r-- | sys/kern/kern_rmlock.c | 2 | ||||
-rw-r--r-- | sys/sys/rmlock.h | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c index d7dea8efc40e..8a39c6b0d880 100644 --- a/sys/kern/kern_rmlock.c +++ b/sys/kern/kern_rmlock.c @@ -1025,7 +1025,7 @@ rms_rlock(struct rmslock *rms) { struct rmslock_pcpu *pcpu; - WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__); + rms_assert_rlock_ok(rms); MPASS(atomic_load_ptr(&rms->owner) != curthread); critical_enter(); diff --git a/sys/sys/rmlock.h b/sys/sys/rmlock.h index 5aaf8f039026..6ff561c5e4b0 100644 --- a/sys/sys/rmlock.h +++ b/sys/sys/rmlock.h @@ -151,6 +151,13 @@ rms_wowned(struct rmslock *rms) } #ifdef INVARIANTS +#define rms_assert_rlock_ok(x) \ + WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__); +#else +#define rms_assert_rlock_ok(x) +#endif + +#ifdef INVARIANTS /* * For assertion purposes. * |