diff --git a/kern/include/test.h b/kern/include/test.h index 998d25e..b2ef4d7 100644 --- a/kern/include/test.h +++ b/kern/include/test.h @@ -59,6 +59,7 @@ int threadtest2(int, char **); int threadtest3(int, char **); int semtest(int, char **); int locktest(int, char **); +int locktest2(int, char **); int cvtest(int, char **); int cvtest2(int, char **); int rwtest(int, char **); diff --git a/kern/main/menu.c b/kern/main/menu.c index 6f69a14..4c823d0 100644 --- a/kern/main/menu.c +++ b/kern/main/menu.c @@ -480,6 +480,7 @@ static const char *testmenu[] = { "[sy3] CV test (1) ", "[sy4] CV test #2 (1) ", "[sy5] RW lock test (1) ", + "[sy6] Lock test #2 (1) ", #if OPT_SYNCHPROBS "[sp1] Whalemating test (1) ", "[sp2] Stoplight test (1) ", @@ -614,6 +615,7 @@ static struct { { "sy3", cvtest }, { "sy4", cvtest2 }, { "sy5", rwtest }, + { "sy6", locktest2 }, #if OPT_SYNCHPROBS { "sp1", whalemating }, { "sp2", stoplight }, diff --git a/kern/test/synchtest.c b/kern/test/synchtest.c index 6290921..4367ce8 100644 --- a/kern/test/synchtest.c +++ b/kern/test/synchtest.c @@ -228,6 +228,26 @@ locktestthread(void *junk, unsigned long num) V(donesem); } +static +void +locktestthread2(void *junk, unsigned long num) +{ + int i; + (void)junk; + (void)num; + for (i=0; i