diff options
Diffstat (limited to 'libdrm')
-rw-r--r-- | libdrm/intel/intel_atomic.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libdrm/intel/intel_atomic.h b/libdrm/intel/intel_atomic.h index 9eb50a1e..e725c4a4 100644 --- a/libdrm/intel/intel_atomic.h +++ b/libdrm/intel/intel_atomic.h @@ -54,6 +54,23 @@ typedef struct { #endif +#if HAVE_LIB_ATOMIC_OPS +#include <atomic_ops.h> + +#define HAS_ATOMIC_OPS 1 + +typedef struct { + AO_t atomic; +} atomic_t; + +# define atomic_read(x) AO_load_full(&(x)->atomic) +# define atomic_set(x, val) AO_store_full(&(x)->atomic, (val)) +# define atomic_inc(x) ((void) AO_fetch_and_add1_full(&(x)->atomic)) +# define atomic_dec_and_test(x) (AO_fetch_and_sub1_full(&(x)->atomic) == 1) +# define atomic_cmpxchg(x, oldv, newv) AO_compare_and_swap_full(&(x)->atomic, oldv, newv) + +#endif + #if ! HAS_ATOMIC_OPS #error libdrm-intel requires atomic operations, please define them for your CPU/compiler. #endif |