From 060e439b9c99f4fd89060acd44913b103d983b45 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Fri, 9 Mar 2012 19:00:50 -0800 Subject: [PATCH] libatomic: add stub atomic lib header/source Stub implementations, for testing. (Temporary: need to find a better generic atomic_int, atomic_long, etc. implementation) --- Makefile | 4 ++-- libatomic.c | 13 +++++++++++++ libatomic.h | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 libatomic.c create mode 100644 libatomic.h diff --git a/Makefile b/Makefile index 139e954..073121e 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CC=gcc BIN=libthreads -SOURCE=libthreads.c schedule.c -HEADERS=libthreads.h schedule.h common.h +SOURCE=libthreads.c schedule.c libatomic.c +HEADERS=libthreads.h schedule.h common.h libatomic.h FLAGS=-Wall all: ${BIN} diff --git a/libatomic.c b/libatomic.c new file mode 100644 index 0000000..a00838e --- /dev/null +++ b/libatomic.c @@ -0,0 +1,13 @@ +#include "libatomic.h" +#include "libthreads.h" + +void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order) +{ + thread_yield(); +} + +int atomic_load_explicit(struct atomic_object *obj, memory_order order) +{ + thread_yield(); + return 0; +} diff --git a/libatomic.h b/libatomic.h new file mode 100644 index 0000000..f861445 --- /dev/null +++ b/libatomic.h @@ -0,0 +1,22 @@ +#ifndef __LIBATOMIC_H__ +#define __LIBATOMIC_H__ + +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst +} memory_order; + +typedef struct atomic_object { +} atomic_int; + +void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order); +#define atomic_store(A, B) atomic_store_explicit((A), (B), memory_order_seq_cst) + +int atomic_load_explicit(struct atomic_object *obj, memory_order order); +#define atomic_load(A) atomic_load_explicit((A), memory_order_seq_cst) + +#endif /* __LIBATOMIC_H__ */ -- 2.34.1