aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-04-29 22:39:23 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-06-23 20:46:15 +0000
commit71faea93070e6df371bf73ed12e2a1da27dc8e2d (patch)
tree7d8bb4119c41778400e01d7cdf77ae5a21a8078b
parent62ea198e95f139e6b8041ec44f75d65aa26970d0 (diff)
seqc: add symbolic name for in-modify bit
Reviewed by: mckusick Discussed with: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D30041
-rw-r--r--sys/sys/seqc.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/sys/seqc.h b/sys/sys/seqc.h
index 3cfaaf3acbda..fd9f196aceca 100644
--- a/sys/sys/seqc.h
+++ b/sys/sys/seqc.h
@@ -45,13 +45,15 @@
#include <machine/cpu.h>
+#define SEQC_MOD 1
+
/*
* Predicts from inline functions are not honored by clang.
*/
#define seqc_in_modify(seqc) ({ \
seqc_t __seqc = (seqc); \
\
- __predict_false(__seqc & 1); \
+ __predict_false(__seqc & SEQC_MOD); \
})
static __inline void
@@ -60,7 +62,7 @@ seqc_write_begin(seqc_t *seqcp)
critical_enter();
MPASS(!seqc_in_modify(*seqcp));
- *seqcp += 1;
+ *seqcp += SEQC_MOD;
atomic_thread_fence_rel();
}
@@ -69,7 +71,7 @@ seqc_write_end(seqc_t *seqcp)
{
atomic_thread_fence_rel();
- *seqcp += 1;
+ *seqcp += SEQC_MOD;
MPASS(!seqc_in_modify(*seqcp));
critical_exit();
}
@@ -85,7 +87,7 @@ static __inline seqc_t
seqc_read_notmodify(const seqc_t *seqcp)
{
- return (atomic_load_acq_int(__DECONST(seqc_t *, seqcp)) & ~1);
+ return (atomic_load_acq_int(__DECONST(seqc_t *, seqcp)) & ~SEQC_MOD);
}
static __inline seqc_t
@@ -126,7 +128,7 @@ seqc_sleepable_write_begin(seqc_t *seqcp)
{
MPASS(!seqc_in_modify(*seqcp));
- *seqcp += 1;
+ *seqcp += SEQC_MOD;
atomic_thread_fence_rel();
}
@@ -135,7 +137,7 @@ seqc_sleepable_write_end(seqc_t *seqcp)
{
atomic_thread_fence_rel();
- *seqcp += 1;
+ *seqcp += SEQC_MOD;
MPASS(!seqc_in_modify(*seqcp));
}