1
- #define atomic_compare_exchange_weak (a , b , c ) 0
2
- #define atomic_compare_exchange_weak_explicit (a , b , c , d , e ) 0
3
- #define atomic_load (a ) 0
4
- #define atomic_load_explicit (a , b )
5
- #define atomic_store (a , b ) 0
6
- #define atomic_store_explicit (a , b , c ) 0
7
1
#define ATOMIC_VAR_INIT (value ) (value)
8
2
#define atomic_is_lock_free (obj ) __c11_atomic_is_lock_free(sizeof(*(obj)))
9
- typedef _Atomic (int ) atomic_int ;
3
+ typedef _Atomic (int ) atomic_int ;
4
+
5
+ #define __ATOMIC_RELAXED 0
6
+ #define __ATOMIC_CONSUME 1
7
+ #define __ATOMIC_ACQUIRE 2
8
+ #define __ATOMIC_RELEASE 3
9
+ #define __ATOMIC_ACQ_REL 4
10
+ #define __ATOMIC_SEQ_CST 5
11
+
12
+ typedef enum memory_order {
13
+ memory_order_relaxed = __ATOMIC_RELAXED ,
14
+ memory_order_consume = __ATOMIC_CONSUME ,
15
+ memory_order_acquire = __ATOMIC_ACQUIRE ,
16
+ memory_order_release = __ATOMIC_RELEASE ,
17
+ memory_order_acq_rel = __ATOMIC_ACQ_REL ,
18
+ memory_order_seq_cst = __ATOMIC_SEQ_CST
19
+ } memory_order ;
20
+
21
+ void atomic_thread_fence (memory_order );
22
+ void atomic_signal_fence (memory_order );
23
+
24
+ #define atomic_thread_fence (order ) __c11_atomic_thread_fence(order)
25
+ #define atomic_signal_fence (order ) __c11_atomic_signal_fence(order)
26
+
27
+ #define atomic_store (object , desired ) __c11_atomic_store(object, desired, __ATOMIC_SEQ_CST)
28
+ #define atomic_store_explicit __c11_atomic_store
29
+
30
+ #define atomic_load (object ) __c11_atomic_load(object, __ATOMIC_SEQ_CST)
31
+ #define atomic_load_explicit __c11_atomic_load
32
+
33
+ #define atomic_exchange (object , desired ) __c11_atomic_exchange(object, desired, __ATOMIC_SEQ_CST)
34
+ #define atomic_exchange_explicit __c11_atomic_exchange
35
+
36
+ #define atomic_compare_exchange_strong (object , expected , desired ) __c11_atomic_compare_exchange_strong(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
37
+ #define atomic_compare_exchange_strong_explicit __c11_atomic_compare_exchange_strong
38
+
39
+ #define atomic_compare_exchange_weak (object , expected , desired ) __c11_atomic_compare_exchange_weak(object, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
40
+ #define atomic_compare_exchange_weak_explicit __c11_atomic_compare_exchange_weak
41
+
42
+ #define atomic_fetch_add (object , operand ) __c11_atomic_fetch_add(object, operand, __ATOMIC_SEQ_CST)
43
+ #define atomic_fetch_add_explicit __c11_atomic_fetch_add
44
+
45
+ #define atomic_fetch_sub (object , operand ) __c11_atomic_fetch_sub(object, operand, __ATOMIC_SEQ_CST)
46
+ #define atomic_fetch_sub_explicit __c11_atomic_fetch_sub
47
+
48
+ #define atomic_fetch_or (object , operand ) __c11_atomic_fetch_or(object, operand, __ATOMIC_SEQ_CST)
49
+ #define atomic_fetch_or_explicit __c11_atomic_fetch_or
50
+
51
+ #define atomic_fetch_xor (object , operand ) __c11_atomic_fetch_xor(object, operand, __ATOMIC_SEQ_CST)
52
+ #define atomic_fetch_xor_explicit __c11_atomic_fetch_xor
53
+
54
+ #define atomic_fetch_and (object , operand ) __c11_atomic_fetch_and(object, operand, __ATOMIC_SEQ_CST)
55
+ #define atomic_fetch_and_explicit __c11_atomic_fetch_and
56
+
57
+ typedef struct atomic_flag { _Atomic (_Bool ) _Value ; } atomic_flag ;
58
+
59
+ _Bool atomic_flag_test_and_set (volatile atomic_flag * );
60
+ _Bool atomic_flag_test_and_set_explicit (volatile atomic_flag * , memory_order );
61
+
62
+ void atomic_flag_clear (volatile atomic_flag * );
63
+ void atomic_flag_clear_explicit (volatile atomic_flag * , memory_order );
64
+
65
+ #define atomic_flag_test_and_set (object ) __c11_atomic_exchange(&(object)->_Value, 1, __ATOMIC_SEQ_CST)
66
+ #define atomic_flag_test_and_set_explicit (object , order ) __c11_atomic_exchange(&(object)->_Value, 1, order)
67
+
68
+ #define atomic_flag_clear (object ) __c11_atomic_store(&(object)->_Value, 0, __ATOMIC_SEQ_CST)
69
+ #define atomic_flag_clear_explicit (object , order ) __c11_atomic_store(&(object)->_Value, 0, order)
0 commit comments