31#define ATOMIC_ORDER __ATOMIC_SEQ_CST
46 return __atomic_exchange_n((
void*
volatile*)target, value,
ATOMIC_ORDER);
51 int8_t expected = comparand;
56 int16_t expected = comparand;
61 int32_t expected = comparand;
66 int64_t expected = comparand;
72 uint8_t expected = comparand;
77 uint16_t expected = comparand;
82 uint32_t expected = comparand;
87 uint64_t expected = comparand;
94 void* expected = comparand;
150 return __atomic_exchange_n(target, value,
ATOMIC_ORDER);
153 uintptr_t expected = comparand;
166 return __atomic_exchange_n(target, value, __ATOMIC_SEQ_CST);
FORCEINLINE int8_t InterlockedOr8(volatile int8_t *target, int8_t value)
FORCEINLINE int64_t InterlockedCompareExchange64(volatile int64_t *target, int64_t value, int64_t comparand)
FORCEINLINE uint8_t InterlockedAndU8(volatile uint8_t *target, uint8_t value)
FORCEINLINE int64_t InterlockedAdd64(volatile int64_t *target, int64_t value)
FORCEINLINE uint8_t InterlockedExchangeU8(volatile uint8_t *target, uint8_t value)
FORCEINLINE int32_t InterlockedAnd32(volatile int32_t *target, int32_t value)
FORCEINLINE int64_t InterlockedIncrement64(volatile int64_t *target)
FORCEINLINE int64_t InterlockedOr64(volatile int64_t *target, int64_t value)
FORCEINLINE uint8_t InterlockedFetchU8(volatile uint8_t *target)
FORCEINLINE void AtomicStoreU32(volatile uint32_t *target, uint32_t v)
FORCEINLINE uintptr_t InterlockedCompareExchangeUintptr(volatile uintptr_t *target, uintptr_t value, uintptr_t comparand)
FORCEINLINE int64_t InterlockedFetch64(volatile int64_t *target)
FORCEINLINE uint32_t InterlockedIncrementU32(volatile uint32_t *target)
FORCEINLINE int16_t InterlockedFetch16(volatile int16_t *target)
FORCEINLINE int32_t InterlockedDecrement32(volatile int32_t *target)
FORCEINLINE uint64_t InterlockedAndU64(volatile uint64_t *target, uint64_t value)
FORCEINLINE int32_t InterlockedOr32(volatile int32_t *target, int32_t value)
FORCEINLINE int8_t InterlockedCompareExchange8(volatile int8_t *target, int8_t value, int8_t comparand)
FORCEINLINE uint16_t InterlockedFetchU16(volatile uint16_t *target)
FORCEINLINE int16_t InterlockedAnd16(volatile int16_t *target, int16_t value)
FORCEINLINE uint64_t InterlockedCompareExchangeU64(volatile uint64_t *target, uint64_t value, uint64_t comparand)
FORCEINLINE int32_t AtomicLoad32(volatile int32_t *target)
FORCEINLINE uint8_t InterlockedOrU8(volatile uint8_t *target, uint8_t value)
FORCEINLINE void * InterlockedExchangePtr(volatile void *volatile *target, void *value)
FORCEINLINE uint64_t InterlockedIncrementU64(volatile uint64_t *target)
FORCEINLINE int32_t InterlockedCompareExchange32(volatile int32_t *target, int32_t value, int32_t comparand)
FORCEINLINE uint8_t InterlockedCompareExchangeU8(volatile uint8_t *target, uint8_t value, uint8_t comparand)
FORCEINLINE uint16_t InterlockedAndU16(volatile uint16_t *target, uint16_t value)
FORCEINLINE void AtomicStore32(volatile int32_t *target, int32_t v)
FORCEINLINE int8_t InterlockedFetch8(volatile int8_t *target)
FORCEINLINE int32_t InterlockedAdd32(volatile int32_t *target, int32_t value)
FORCEINLINE uint32_t InterlockedAddU32(volatile uint32_t *target, uint32_t value)
FORCEINLINE uint32_t InterlockedSetMaskU32(volatile uint32_t *target, uint32_t mask)
FORCEINLINE void * InterlockedCompareExchangePointer(volatile void *volatile *target, void *value, void *comparand)
FORCEINLINE uint16_t InterlockedExchangeU16(volatile uint16_t *target, uint16_t value)
FORCEINLINE uint32_t InterlockedFetchU32(volatile uint32_t *target)
FORCEINLINE int16_t InterlockedAdd16(volatile int16_t *target, int16_t value)
FORCEINLINE uint16_t InterlockedOrU16(volatile uint16_t *target, uint16_t value)
FORCEINLINE uint32_t InterlockedClearMaskU32(volatile uint32_t *target, uint32_t mask)
FORCEINLINE uint32_t AtomicLoadU32(volatile uint32_t *target)
FORCEINLINE uint64_t InterlockedFetchU64(volatile uint64_t *target)
FORCEINLINE int32_t InterlockedIncrement32(volatile int32_t *target)
FORCEINLINE uint64_t InterlockedExchangeU64(volatile uint64_t *target, uint64_t value)
FORCEINLINE uint16_t InterlockedCompareExchangeU16(volatile uint16_t *target, uint16_t value, uint16_t comparand)
FORCEINLINE int8_t InterlockedAdd8(volatile int8_t *target, int8_t value)
FORCEINLINE void * InterlockedExchangePointer(volatile void *volatile *target, void *value)
FORCEINLINE int64_t InterlockedDecrement64(volatile int64_t *target)
FORCEINLINE uint32_t InterlockedDecrementU32(volatile uint32_t *target)
FORCEINLINE uint64_t InterlockedDecrementU64(volatile uint64_t *target)
FORCEINLINE int64_t InterlockedAnd64(volatile int64_t *target, int64_t value)
FORCEINLINE uint8_t InterlockedAddU8(volatile uint8_t *target, uint8_t value)
FORCEINLINE uintptr_t InterlockedFetchAndUintptr(volatile uintptr_t *target, uintptr_t value)
FORCEINLINE int16_t InterlockedCompareExchange16(volatile int16_t *target, int16_t value, int16_t comparand)
FORCEINLINE int32_t InterlockedExchange32(volatile int32_t *target, int32_t value)
FORCEINLINE uint32_t InterlockedExchangeU32(volatile uint32_t *target, uint32_t value)
FORCEINLINE uintptr_t InterlockedExchangeUintptr(volatile uintptr_t *target, uintptr_t value)
FORCEINLINE bool InterlockedExchangeBool(volatile bool *target, bool value)
FORCEINLINE uint32_t InterlockedOrU32(volatile uint32_t *target, uint32_t value)
FORCEINLINE void * InterlockedFetchPointer(volatile void *volatile *target)
FORCEINLINE int32_t InterlockedFetch32(volatile int32_t *target)
FORCEINLINE uint32_t InterlockedCompareExchangeU32(volatile uint32_t *target, uint32_t value, uint32_t comparand)
FORCEINLINE int8_t InterlockedExchange8(volatile int8_t *target, int8_t value)
FORCEINLINE void * InterlockedCompareExchangePtr(volatile void *volatile *target, void *value, void *comparand)
FORCEINLINE uint64_t InterlockedAddU64(volatile uint64_t *target, uint64_t value)
FORCEINLINE uint16_t InterlockedAddU16(volatile uint16_t *target, uint16_t value)
FORCEINLINE uint32_t InterlockedAndU32(volatile uint32_t *target, uint32_t value)
FORCEINLINE uintptr_t InterlockedFetchOrUintptr(volatile uintptr_t *target, uintptr_t value)
FORCEINLINE int16_t InterlockedOr16(volatile int16_t *target, int16_t value)
FORCEINLINE int8_t InterlockedAnd8(volatile int8_t *target, int8_t value)
FORCEINLINE int64_t InterlockedExchange64(volatile int64_t *target, int64_t value)
FORCEINLINE int16_t InterlockedExchange16(volatile int16_t *target, int16_t value)
FORCEINLINE uint64_t InterlockedOrU64(volatile uint64_t *target, uint64_t value)