diff options
Diffstat (limited to 'include/libtf/atomic.h')
-rw-r--r-- | include/libtf/atomic.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/libtf/atomic.h b/include/libtf/atomic.h index ec9f1e0..8ebe5f8 100644 --- a/include/libtf/atomic.h +++ b/include/libtf/atomic.h @@ -13,7 +13,14 @@ #ifndef TF_ATOMIC_H #define TF_ATOMIC_H -#define tf_atomic_inc(var) __sync_add_and_fetch(&(var), 1) -#define tf_atomic_dec(var) __sync_add_and_fetch(&(var), -1) +#define tf_atomic_inc(var) \ + __sync_add_and_fetch(&(var), 1) +#define tf_atomic_dec(var) \ + __sync_add_and_fetch(&(var), -1) + +#define tf_atomic_cmpxchg(ptr, old, new) \ + __sync_bool_compare_and_swap(ptr, old, new) +#define tf_atomic_xchg(ptr, new) \ + ((typeof(*(ptr)))__sync_lock_test_and_set(ptr, new)) #endif |