2 * @brief Basic atomic operations to be exposed to user program.
5 #ifndef __LIBATOMIC_H__
6 #define __LIBATOMIC_H__
12 /** @brief The memory orders specified by the C11/C++11 memory models */
13 typedef enum memory_order {
22 typedef struct atomic_object {
26 void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order);
27 #define atomic_store(A, B) atomic_store_explicit((A), (B), memory_order_seq_cst)
29 int atomic_load_explicit(struct atomic_object *obj, memory_order order);
30 #define atomic_load(A) atomic_load_explicit((A), memory_order_seq_cst)
32 void atomic_init(struct atomic_object *obj, int value);
38 #endif /* __LIBATOMIC_H__ */