From: Brian Norris Date: Mon, 29 Oct 2012 18:44:52 +0000 (-0700) Subject: tests: add thinair test X-Git-Tag: pldi2013~35 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=24edf5ea28ecd116c1faa76ed41de1cfbf6d6d1e;hp=dfce798347b60b1bff6df0cdb51b786f4ca02d7f tests: add thinair test --- diff --git a/test/thinair.c b/test/thinair.c new file mode 100644 index 0000000..dcd7615 --- /dev/null +++ b/test/thinair.c @@ -0,0 +1,41 @@ +#include +#include +#include + +#include "librace.h" + +atomic_int x; +atomic_int y; + +static void a(void *obj) +{ + int r1=atomic_load_explicit(&x, memory_order_relaxed); + atomic_store_explicit(&y, r1, memory_order_relaxed); + printf("r1=%d\n",r1); +} + +static void b(void *obj) +{ + int r2=atomic_load_explicit(&y, memory_order_relaxed); + atomic_store_explicit(&x, r2, memory_order_relaxed); + atomic_store_explicit(&x, r2 + 1, memory_order_relaxed); + printf("r2=%d\n",r2); +} + +int user_main(int argc, char **argv) +{ + thrd_t t1, t2; + + atomic_init(&x, -1); + atomic_init(&y, 0); + + printf("Thread %d: creating 2 threads\n", thrd_current()); + thrd_create(&t1, (thrd_start_t)&a, NULL); + thrd_create(&t2, (thrd_start_t)&b, NULL); + + thrd_join(t1); + thrd_join(t2); + printf("Thread %d is finished\n", thrd_current()); + + return 0; +}