mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 22:49:36 +08:00
Add thread fences to <machine/atomic.h>
This commit is contained in:
parent
cc8f00d614
commit
71a0436d14
@ -1399,4 +1399,56 @@ atomic_store_rel_long(volatile long *p, long v)
|
|||||||
#endif
|
#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_ */
|
#endif /* _RTEMS_BSD_MACHINE_ATOMIC_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user