[rtems-libbsd commit] Add thread fences to <machine/atomic.h>
Sebastian Huber
sebh at rtems.org
Wed Nov 9 09:05:07 UTC 2016
Module: rtems-libbsd
Branch: master
Commit: 71a0436d149858e78377e9dada180dfb28620adc
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=71a0436d149858e78377e9dada180dfb28620adc
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Mon Oct 24 13:29:03 2016 +0200
Add thread fences to <machine/atomic.h>
---
rtemsbsd/include/machine/atomic.h | 52 +++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/rtemsbsd/include/machine/atomic.h b/rtemsbsd/include/machine/atomic.h
index fa2b005..b95a4b5 100644
--- a/rtemsbsd/include/machine/atomic.h
+++ b/rtemsbsd/include/machine/atomic.h
@@ -1399,4 +1399,56 @@ atomic_store_rel_long(volatile long *p, long v)
#endif
}
+static inline void
+atomic_thread_fence_acq(void)
+{
+
+#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC)
+ std::atomic_thread_fence(std::memory_order_acquire);
+#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
+ atomic_thread_fence(memory_order_acquire);
+#else
+ RTEMS_COMPILER_MEMORY_BARRIER();
+#endif
+}
+
+static inline void
+atomic_thread_fence_rel(void)
+{
+
+#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC)
+ std::atomic_thread_fence(std::memory_order_release);
+#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
+ atomic_thread_fence(memory_order_release);
+#else
+ RTEMS_COMPILER_MEMORY_BARRIER();
+#endif
+}
+
+static inline void
+atomic_thread_fence_acq_rel(void)
+{
+
+#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC)
+ std::atomic_thread_fence(std::memory_order_acq_rel);
+#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
+ atomic_thread_fence(memory_order_acq_rel);
+#else
+ RTEMS_COMPILER_MEMORY_BARRIER();
+#endif
+}
+
+static inline void
+atomic_thread_fence_seq_cst(void)
+{
+
+#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC)
+ std::atomic_thread_fence(std::memory_order_seq_cst);
+#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
+ atomic_thread_fence(memory_order_seq_cst);
+#else
+ RTEMS_COMPILER_MEMORY_BARRIER();
+#endif
+}
+
#endif /* _RTEMS_BSD_MACHINE_ATOMIC_H_ */
More information about the vc
mailing list