summaryrefslogtreecommitdiff
path: root/include/al
diff options
context:
space:
mode:
Diffstat (limited to 'include/al')
-rw-r--r--include/al/atomic.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/al/atomic.h b/include/al/atomic.h
index 7d070ab..594413c 100644
--- a/include/al/atomic.h
+++ b/include/al/atomic.h
@@ -18,6 +18,7 @@
#define al_atomic_store(T) _al_atomic_store_##T
#define al_atomic_add(T) _al_atomic_add_##T
#define al_atomic_sub(T) _al_atomic_sub_##T
+#define al_atomic_compare_and_swap(T) _al_atomic_compare_and_swap_##T
// Special case for pointers.
#define _al_atomic_load_void(p, order) c89atomic_load_explicit_ptr((volatile void **)p, order)
@@ -44,6 +45,10 @@ typedef f32 c89atomic_f32;
static inline T al_atomic_sub(T)(atomic(T) *a, T value, int order) \
{ \
return c89atomic_fetch_sub_explicit_##S(a, value, order); \
+ } \
+ static inline T al_atomic_compare_and_swap(T)(atomic(T) *a, T expected, T desired) \
+ { \
+ return c89atomic_compare_and_swap_##S(a, expected, desired); \
}
#if defined C89ATOMIC_64BIT