aboutsummaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2015-12-11 13:30:50 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-12-29 14:13:46 +0300
commit5c30c35b62c880f1807995c7a0b30a30cfdc8263 (patch)
treed80a8a4fb5e39211482e8e869e1f1d51ad18b20b /platform
parentc6ced247726084d5711d0de7d382f645a9d94f18 (diff)
api: barrier: added memory barriers
Added new memory barriers. These follow C11 release / acquire specification and replaces odp_sync_stores(). Used GCC __atomic_thread_fence to implement all three barriers. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform')
-rw-r--r--platform/linux-generic/include/odp/sync.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/platform/linux-generic/include/odp/sync.h b/platform/linux-generic/include/odp/sync.h
index bc7308301..bfe67eeb4 100644
--- a/platform/linux-generic/include/odp/sync.h
+++ b/platform/linux-generic/include/odp/sync.h
@@ -17,6 +17,34 @@
extern "C" {
#endif
+/** @ingroup odp_barrier
+ * @{
+ */
+
+static inline void odp_mb_release(void)
+{
+ __atomic_thread_fence(__ATOMIC_RELEASE);
+}
+
+static inline void odp_mb_acquire(void)
+{
+ __atomic_thread_fence(__ATOMIC_ACQUIRE);
+}
+
+static inline void odp_mb_full(void)
+{
+ __atomic_thread_fence(__ATOMIC_SEQ_CST);
+}
+
+static inline void odp_sync_stores(void)
+{
+ __atomic_thread_fence(__ATOMIC_RELEASE);
+}
+
+/**
+ * @}
+ */
+
#include <odp/api/sync.h>
#ifdef __cplusplus