22 lines
1015 B
C
22 lines
1015 B
C
#pragma once
|
|
|
|
typedef enum memory_order {
|
|
ATOMIC_RELAXED = __ATOMIC_RELAXED,
|
|
ATOMIC_CONSUME = __ATOMIC_CONSUME,
|
|
ATOMIC_ACQUIRE = __ATOMIC_ACQUIRE,
|
|
ATOMIC_RELEASE = __ATOMIC_RELEASE,
|
|
ATOMIC_ACQ_REL = __ATOMIC_ACQ_REL,
|
|
ATOMIC_SEQ_CST = __ATOMIC_SEQ_CST
|
|
} memory_order;
|
|
|
|
#define atomic(T) _Atomic(T)
|
|
#define atomic_store(ptr, des, order) __atomic_store_n(ptr, des, order)
|
|
#define atomic_load(ptr, order) __atomic_load_n(ptr, order)
|
|
#define atomic_exchange(ptr, des, order) __atomic_exchange_n(ptr, des, order)
|
|
#define atomic_fetch_add(ptr, op, order) __atomic_fetch_add(ptr, op, order)
|
|
#define atomic_fetch_sub(ptr, op, order) __atomic_fetch_sub(ptr, op, order)
|
|
#define atomic_fetch_or(ptr, op, order) __atomic_fetch_or(ptr, op, order)
|
|
#define atomic_fetch_xor(ptr, op, order) __atomic_fetch_xor(ptr, op, order)
|
|
#define atomic_fetch_and(ptr, op, order) __atomic_fetch_and(ptr, op, order)
|
|
#define atomic_thread_fence(order) __atomic_thread_fence(order)
|