diff --git a/AK/Atomic.h b/AK/Atomic.h index 9794c26ce0a..a41a9a8414d 100644 --- a/AK/Atomic.h +++ b/AK/Atomic.h @@ -31,11 +31,22 @@ namespace AK { +static inline void atomic_signal_fence(MemoryOrder order) noexcept +{ + return __atomic_signal_fence(order); +} + static inline void atomic_thread_fence(MemoryOrder order) noexcept { return __atomic_thread_fence(order); } +static inline void full_memory_barrier() noexcept +{ + atomic_signal_fence(AK::MemoryOrder::memory_order_acq_rel); + atomic_thread_fence(AK::MemoryOrder::memory_order_acq_rel); +} + template static inline T atomic_exchange(volatile T* var, T desired, MemoryOrder order = memory_order_seq_cst) noexcept { @@ -376,3 +387,4 @@ public: } using AK::Atomic; +using AK::full_memory_barrier;