libatomic: add stub atomic lib header/source
authorBrian Norris <banorris@uci.edu>
Sat, 10 Mar 2012 03:00:50 +0000 (19:00 -0800)
committerBrian Norris <banorris@uci.edu>
Sat, 10 Mar 2012 03:21:30 +0000 (19:21 -0800)
Stub implementations, for testing.

(Temporary: need to find a better generic atomic_int, atomic_long, etc.
implementation)

Makefile
libatomic.c [new file with mode: 0644]
libatomic.h [new file with mode: 0644]

index 139e9540884e5210dde95aa785153ea68e4e07e7..073121e867eb926d30e3683bec67bd4d96e54342 100644 (file)
--- 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 (file)
index 0000000..a00838e
--- /dev/null
@@ -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 (file)
index 0000000..f861445
--- /dev/null
@@ -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__ */