diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2015-12-11 13:30:50 +0200 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2015-12-29 14:13:46 +0300 |
commit | 5c30c35b62c880f1807995c7a0b30a30cfdc8263 (patch) | |
tree | d80a8a4fb5e39211482e8e869e1f1d51ad18b20b /platform | |
parent | c6ced247726084d5711d0de7d382f645a9d94f18 (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.h | 28 |
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 |