Commit e0222812 authored by Ondřej Surý's avatar Ondřej Surý

Merge branch 'ondrej/add-all-isc-atomic-defines' into 'master'

Add most useful relaxed and acquire-relase stdatomic convenience macros

See merge request !1935
parents 976d62aa ab389695
Pipeline #14502 passed with stages
in 1 minute and 8 seconds
......@@ -21,7 +21,36 @@
* We define a few additional macros to make things easier
*/
#define atomic_store_relaxed(o, v) atomic_store_explicit((o), \
(v), \
memory_order_relaxed)
#define atomic_load_relaxed(o) atomic_load_explicit((o), memory_order_relaxed)
/* Relaxed Memory Ordering */
#define atomic_store_relaxed(o, v) \
atomic_store_explicit((o), (v), memory_order_relaxed)
#define atomic_load_relaxed(o) \
atomic_load_explicit((o), memory_order_relaxed)
#define atomic_fetch_add_relaxed(o, v) \
atomic_fetch_add_explicit((o), (v), memory_order_relaxed)
#define atomic_fetch_sub_relaxed(o, v) \
atomic_fetch_sub_explicit((o), (v), memory_order_relaxed)
#define atomic_exchange_relaxed(o, v) \
atomic_exchange_explicit((o), (v), memory_order_relaxed)
#define atomic_compare_exchange_weak_relaxed(o, e, d) \
atomic_compare_exchange_weak_explicit((o), (e), (d), \
memory_order_relaxed, \
memory_order_relaxed)
/* Acquire-Release Memory Ordering */
#define atomic_store_release(o, v) \
atomic_store_explicit((o), (v), memory_order_release)
#define atomic_load_acquire(o) \
atomic_load_explicit((o), memory_order_acquire)
#define atomic_fetch_add_acquire(o, v) \
atomic_fetch_add_explicit((o), (v), memory_order_acquire)
#define atomic_fetch_sub_release(o, v) \
atomic_fetch_sub_explicit((o), (v), memory_order_release)
#define atomic_exchange_acq_rel(o, v) \
atomic_exchange_explicit((o), (v), memory_order_acq_rel)
#define atomic_compare_exchange_weak_acq_rel(o, e, d) \
atomic_compare_exchange_weak_explicit((o), (e), (d), \
memory_order_acq_rel, \
memory_order_acquire)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment