+/** @file libatomic.h
+ * @brief Basic atomic operations to be exposed to user program.
+ */
+
#ifndef __LIBATOMIC_H__
#define __LIBATOMIC_H__
extern "C" {
#endif
+ /** @brief The memory orders specified by the C11/C++11 memory models */
typedef enum memory_order {
memory_order_relaxed,
memory_order_consume,
} memory_order;
typedef struct atomic_object {
+ int value;
} atomic_int;
void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order);
int atomic_load_explicit(struct atomic_object *obj, memory_order order);
#define atomic_load(A) atomic_load_explicit((A), memory_order_seq_cst)
+ void atomic_init(struct atomic_object *obj, int value);
+
#ifdef __cplusplus
}
#endif