From 0c8ec8cc34f3ed7ab5398c65d58129e604b73920 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Tue, 10 Apr 2012 15:19:29 -0700 Subject: [PATCH] userprog: use both atomic loads and stores (Meaningless change to 'user' program; just for testing purposes) --- userprog.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } -- 2.34.1