lib*.h: wrap C headers in `extern "C"'
[c11tester.git] / libatomic.h
1 #ifndef __LIBATOMIC_H__
2 #define __LIBATOMIC_H__
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8         typedef enum memory_order {
9                 memory_order_relaxed,
10                 memory_order_consume,
11                 memory_order_acquire,
12                 memory_order_release,
13                 memory_order_acq_rel,
14                 memory_order_seq_cst
15         } memory_order;
16
17         typedef struct atomic_object {
18         } atomic_int;
19
20         void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order);
21 #define atomic_store(A, B) atomic_store_explicit((A), (B), memory_order_seq_cst)
22
23         int atomic_load_explicit(struct atomic_object *obj, memory_order order);
24 #define atomic_load(A) atomic_load_explicit((A), memory_order_seq_cst)
25
26 #ifdef __cplusplus
27 }
28 #endif
29
30 #endif /* __LIBATOMIC_H__ */