summaryrefslogtreecommitdiff
path: root/kern/macros.h
diff options
context:
space:
mode:
Diffstat (limited to 'kern/macros.h')
-rw-r--r--kern/macros.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/kern/macros.h b/kern/macros.h
index a5b7b032..f3eb1075 100644
--- a/kern/macros.h
+++ b/kern/macros.h
@@ -55,6 +55,9 @@
#define structof(ptr, type, member) \
((type *)((char *)(ptr) - offsetof(type, member)))
+#define read_once(x) (*(volatile typeof(x) *)&(x))
+#define write_once(x, v) (read_once(x) = (v))
+
#define alignof(x) __alignof__(x)
#define likely(expr) __builtin_expect(!!(expr), 1)