21 static inline long os_atomic_inc_long(
volatile long *val)
23 return _InterlockedIncrement(val);
26 static inline long os_atomic_dec_long(
volatile long *val)
28 return _InterlockedDecrement(val);
31 static inline long os_atomic_set_long(
volatile long *ptr,
long val)
33 return (
long)_InterlockedExchange((
volatile long*)ptr, (
long)val);
36 static inline long os_atomic_load_long(
const volatile long *ptr)
38 return (
long)_InterlockedOr((
volatile long*)ptr, 0);
41 static inline bool os_atomic_compare_swap_long(
volatile long *val,
42 long old_val,
long new_val)
44 return _InterlockedCompareExchange(val, new_val, old_val) == old_val;
47 static inline bool os_atomic_set_bool(
volatile bool *ptr,
bool val)
49 return !!_InterlockedExchange8((
volatile char*)ptr, (
char)val);
52 static inline bool os_atomic_load_bool(
const volatile bool *ptr)
54 return !!_InterlockedOr8((
volatile char*)ptr, 0);