19 static inline long os_atomic_inc_long(
volatile long *val)
21 return __sync_add_and_fetch(val, 1);
24 static inline long os_atomic_dec_long(
volatile long *val)
26 return __sync_sub_and_fetch(val, 1);
29 static inline long os_atomic_set_long(
volatile long *ptr,
long val)
31 return __sync_lock_test_and_set(ptr, val);
34 static inline long os_atomic_load_long(
const volatile long *ptr)
36 return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
39 static inline bool os_atomic_compare_swap_long(
volatile long *val,
40 long old_val,
long new_val)
42 return __sync_bool_compare_and_swap(val, old_val, new_val);
45 static inline bool os_atomic_set_bool(
volatile bool *ptr,
bool val)
47 return __sync_lock_test_and_set(ptr, val);
50 static inline bool os_atomic_load_bool(
const volatile bool *ptr)
52 return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);