X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2Frmwprog.c;h=ebace1ec262966d5d367afefd5dbaaddef168a26;hb=a726f5f6e1e0731a0516be1e9e23397744734ef5;hp=a74ae426ca95df7e90f63424d4aaaa3a327e7292;hpb=b59d5f84ac4800cc144fc7c8837d96181423d9ae;p=model-checker.git diff --git a/test/rmwprog.c b/test/rmwprog.c index a74ae42..ebace1e 100644 --- a/test/rmwprog.c +++ b/test/rmwprog.c @@ -1,21 +1,28 @@ +#include #include +#include +#include -#include "libthreads.h" #include "librace.h" -#include "stdatomic.h" +#include "model-assert.h" atomic_int x; +static int N = 2; static void a(void *obj) { - atomic_fetch_add_explicit(&x, 1, memory_order_relaxed); - atomic_fetch_add_explicit(&x, 1, memory_order_relaxed); + int i; + for (i = 0; i < N; i++) + atomic_fetch_add_explicit(&x, 1, memory_order_relaxed); } int user_main(int argc, char **argv) { thrd_t t1, t2; + if (argc > 1) + N = atoi(argv[1]); + atomic_init(&x, 0); thrd_create(&t1, (thrd_start_t)&a, NULL); thrd_create(&t2, (thrd_start_t)&a, NULL); @@ -23,5 +30,7 @@ int user_main(int argc, char **argv) thrd_join(t1); thrd_join(t2); + MODEL_ASSERT(atomic_load(&x) == N * 2); + return 0; }