From 434a8856c67c22b2beadae561407d8d932e7c78e Mon Sep 17 00:00:00 2001 From: zsmoore Date: Thu, 16 Feb 2017 18:15:14 -0500 Subject: [PATCH] Added more functionality to lock test 4 to also make sure release functions properly --- kern/main/menu.c | 2 +- kern/test/synchtest.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/kern/main/menu.c b/kern/main/menu.c index 4d2feb6..3b8f2e0 100644 --- a/kern/main/menu.c +++ b/kern/main/menu.c @@ -593,7 +593,7 @@ static const char *testmenu[] = { "[lt1] Lock test 1 (1) ", "[lt2] Lock test 2 (1*) ", "[lt3] Lock test 3 (1*) ", - "[lt4] Lock test 4 (1) ", + "[lt4] Lock test 4 (1*) ", "[cvt1] CV test 1 (1) ", "[cvt2] CV test 2 (1) ", "[cvt3] CV test 3 (1*) ", diff --git a/kern/test/synchtest.c b/kern/test/synchtest.c index 94740c3..8db917c 100644 --- a/kern/test/synchtest.c +++ b/kern/test/synchtest.c @@ -243,14 +243,17 @@ void locktestthread2(void *junk, unsigned long num) { (void)junk; - + //first thread acquire lock if(num == 0){ lock_acquire(testlock); } else{ + //test lock do i hold if(lock_do_i_hold(testlock)){ goto fail; } + //make sure release panics based on thread matching + lock_release(testlock); } V(donesem); @@ -370,8 +373,7 @@ locktest4(int nargs, char **args) { (void) args; kprintf_n("Starting lt4...\n"); - - test_status = TEST161_SUCCESS; + kprintf_n("(This test panics on success!)\n"); testlock = lock_create("testlock"); if(testlock == NULL) { @@ -384,6 +386,7 @@ locktest4(int nargs, char **args) { panic("lt4: sem_create failed\n"); } + //Only 2 threads for simplification int i, result; for (i=0; i<2; i++) { kprintf_t("."); @@ -398,13 +401,17 @@ locktest4(int nargs, char **args) { P(donesem); } - lock_destroy(testlock); + + //no lock destroy in case a panic is triggered sem_destroy(donesem); testlock = NULL; donesem = NULL; + secprintf(SECRET, "Should panic...", "lt4"); + + /* Should not get here on success. */ kprintf_t("\n"); - success(test_status, SECRET, "lt4"); + success(TEST161_FAIL, SECRET, "lt4"); return 0; }