From 5d2d548b61f24f9bf5cabaf23b518bc98ece587e Mon Sep 17 00:00:00 2001 From: hselasky Date: Mon, 14 Aug 2017 13:15:13 +0000 Subject: [PATCH] MFC r292537 and r314878: Implement ACCESS_ONCE(), WRITE_ONCE() and READ_ONCE(). Sponsored by: Mellanox Technologies git-svn-id: svn://svn.freebsd.org/base/stable/9@322501 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/ofed/include/linux/compiler.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sys/ofed/include/linux/compiler.h b/sys/ofed/include/linux/compiler.h index 9b1a5ad47..194489c1b 100644 --- a/sys/ofed/include/linux/compiler.h +++ b/sys/ofed/include/linux/compiler.h @@ -63,4 +63,21 @@ #define uninitialized_var(x) x = x +#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x)) + +#define WRITE_ONCE(x,v) do { \ + barrier(); \ + ACCESS_ONCE(x) = (v); \ + barrier(); \ +} while (0) + +#define READ_ONCE(x) ({ \ + __typeof(x) __var = ({ \ + barrier(); \ + ACCESS_ONCE(x); \ + }); \ + barrier(); \ + __var; \ +}) + #endif /* _LINUX_COMPILER_H_ */ -- 2.42.0