mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 19:39:31 +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
|
||||
}
|
||||
|
||||
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_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user