barrier: add test driver, Makefile
authorBrian Norris <banorris@uci.edu>
Tue, 9 Oct 2012 23:23:40 +0000 (16:23 -0700)
committerBrian Norris <banorris@uci.edu>
Tue, 9 Oct 2012 23:27:20 +0000 (16:27 -0700)
My own additions to test barrier.h

barrier/Makefile [new file with mode: 0644]
barrier/barrier.cc [new file with mode: 0644]

diff --git a/barrier/Makefile b/barrier/Makefile
new file mode 100644 (file)
index 0000000..34dd9df
--- /dev/null
@@ -0,0 +1,11 @@
+include ../benchmarks.mk
+
+BIN = barrier
+
+all: barrier
+
+barrier: barrier.cc barrier.h
+       $(CXX) -o $@ $< $(CPPFLAGS) $(LDFLAGS)
+
+clean:
+       rm -f $(BIN) *.o
diff --git a/barrier/barrier.cc b/barrier/barrier.cc
new file mode 100644 (file)
index 0000000..093da10
--- /dev/null
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <threads.h>
+
+#include "barrier.h"
+
+#include "librace.h"
+
+spinning_barrier *barr;
+int var = 0;
+
+void threadA(void *arg)
+{
+       store_32(&var, 1);
+       barr->wait();
+}
+
+void threadB(void *arg)
+{
+       barr->wait();
+       printf("var = %d\n", load_32(&var));
+}
+
+int user_main(int argc, char **argv)
+{
+       thrd_t t2, t3;
+
+       barr = new spinning_barrier(2);
+
+       thrd_create(&t2, &threadA, NULL);
+       thrd_create(&t3, &threadB, NULL);
+       thrd_join(t2);
+       thrd_join(t3);
+
+       return 0;
+}