fix one segfault bug...something is still strange, but has to do with stack
[model-checker.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                 int value;
19         } atomic_int;
20
21         void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order);
22 #define atomic_store(A, B) atomic_store_explicit((A), (B), memory_order_seq_cst)
23
24         int atomic_load_explicit(struct atomic_object *obj, memory_order order);
25 #define atomic_load(A) atomic_load_explicit((A), memory_order_seq_cst)
26
27         void atomic_init(struct atomic_object *obj, int value);
28
29 #ifdef __cplusplus
30 }
31 #endif
32
33 #endif /* __LIBATOMIC_H__ */