X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=userprog.c;h=0948f0bc395a5d103963e99d81592ac6e2307072;hb=810306cb85accaaace9a50f174264f105991230b;hp=2847c1af8e55d69acfe4d7cffc65924bd0b96f46;hpb=fee76896120acbf7b5fa41fc99fca05c54b1f8da;p=c11tester.git diff --git a/userprog.c b/userprog.c index 2847c1af..0948f0bc 100644 --- a/userprog.c +++ b/userprog.c @@ -2,22 +2,26 @@ #include "libthreads.h" #include "libatomic.h" +#include "librace.h" static void a(atomic_int *obj) { int i; int ret; - for (i = 0; i < 10; i++) { + store_32(&i, 10); + printf("load 32 yields: %d\n", load_32(&i)); + + for (i = 0; i < 2; i++) { printf("Thread %d, loop %d\n", thrd_current(), i); - switch (i % 4) { + switch (i ) { case 1: ret = atomic_load(obj); printf("Read value: %d\n", ret); break; - case 3: - atomic_store(obj, i); - printf("Write value: %d\n", i); + case 0: + atomic_store(obj, i + 1); + printf("Write value: %d\n", i + 1); break; } } @@ -30,11 +34,11 @@ void user_main() atomic_init(&obj, 0); - printf("Creating 2 threads\n"); + printf("Thread %d: creating 2 threads\n", thrd_current()); thrd_create(&t1, (thrd_start_t)&a, &obj); thrd_create(&t2, (thrd_start_t)&a, &obj); thrd_join(t1); thrd_join(t2); - printf("Thread is finished\n"); + printf("Thread %d is finished\n", thrd_current()); }