projects
/
c11tester.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merging stuff...made need to clean up some stuff...but need to push it somewhere...
[c11tester.git]
/
userprog.c
diff --git
a/userprog.c
b/userprog.c
index 2847c1af8e55d69acfe4d7cffc65924bd0b96f46..0948f0bc395a5d103963e99d81592ac6e2307072 100644
(file)
--- a/
userprog.c
+++ b/
userprog.c
@@
-2,22
+2,26
@@
#include "libthreads.h"
#include "libatomic.h"
#include "libthreads.h"
#include "libatomic.h"
+#include "librace.h"
static void a(atomic_int *obj)
{
int i;
int ret;
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);
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 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;
}
}
break;
}
}
@@
-30,11
+34,11
@@
void user_main()
atomic_init(&obj, 0);
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);
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()
);
}
}