From: Brian Norris Date: Tue, 10 Apr 2012 22:19:29 +0000 (-0700) Subject: userprog: use both atomic loads and stores X-Git-Tag: pldi2013~560 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0c8ec8cc34f3ed7ab5398c65d58129e604b73920;p=model-checker.git userprog: use both atomic loads and stores (Meaningless change to 'user' program; just for testing purposes) --- diff --git a/userprog.c b/userprog.c index 1837fc9..d24af11 100644 --- a/userprog.c +++ b/userprog.c @@ -9,8 +9,14 @@ static void a(atomic_int *obj) for (i = 0; i < 10; i++) { printf("Thread %d, loop %d\n", thread_current()->id, i); - if (i % 2) + switch (i % 4) { + case 1: atomic_load(obj); + break; + case 3: + atomic_store(obj, i); + break; + } } } @@ -19,11 +25,11 @@ void user_main() struct thread t1, t2; atomic_int obj; - printf("%s() creating 2 threads\n", __func__); + printf("Thread %d creating 2 threads\n", thread_current()->id); thread_create(&t1, (void (*)())&a, &obj); thread_create(&t2, (void (*)())&a, &obj); thread_join(&t1); thread_join(&t2); - printf("%s() is finished\n", __func__); + printf("Thread %d is finished\n", thread_current()->id); }