Date: Thu, 1 Sep 2005 20:54:06 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 82984 for review Message-ID: <200509012054.j81Ks6DY062914@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=82984 Change 82984 by jhb@jhb_slimer on 2005/09/01 20:53:46 - Wrap test that depend on witness in #ifdef WITNESS. - Add two new tests to check witness changes in this branch. Affected files ... .. //depot/projects/smpng/sys/modules/crash/crash.c#16 edit Differences ... ==== //depot/projects/smpng/sys/modules/crash/crash.c#16 (text+ko) ==== @@ -82,6 +82,7 @@ /* Events. */ +#ifdef WITNESS static void foo_then_bar(void) { @@ -129,6 +130,7 @@ mtx_unlock(&Giant); } CRASH_EVENT("wakeup then foo then Giant", wakeup_then_foo_then_Giant); +#endif static void upgrade_foo(void) @@ -213,6 +215,7 @@ CRASH_EVENT("assert that foo is slocked while it is xlocked", test_sx_assert_slocked); +#ifdef WITNESS static void test_sx_and_mtx_order(void) { @@ -246,6 +249,7 @@ } CRASH_EVENT("use test1 and test2 mutexes to test witness removal", test_witness_removal); +#endif static void test_try_locks(void) @@ -277,7 +281,7 @@ } CRASH_EVENT("try lock tests including recursion test", test_try_locks); -#if 0 +#ifdef WITNESS static void test_witness_order_funcs(void) { @@ -351,6 +355,35 @@ } CRASH_EVENT("test deep stack backtraces", test_deep_stack_trace); +#ifdef WITNESS +static void +test_thread_exit(void) +{ + + bzero(&test1_mtx, sizeof(test1_mtx)); + mtx_init(&test1_mtx, "test1", NULL, MTX_DEF); + mtx_lock(&test1_mtx); + printf("Locking test1 and then exiting, should get a witness panic.\n"); + kthread_exit(0); +} +CRASH_EVENT("exit a thread while holding a mutex", test_thread_exit); + +static void +test_mtx_then_Giant(void) +{ + + bzero(&test1_mtx, sizeof(test1_mtx)); + mtx_init(&test1_mtx, "test1", NULL, MTX_DEF); + mtx_lock(&test1_mtx); + printf("Locking Giant after test1, should get a LOR.\n"); + mtx_lock(&Giant); + mtx_unlock(&Giant); + mtx_unlock(&test1_mtx); + mtx_destroy(&test1_mtx); +} +CRASH_EVENT("lock test1 mutex and then Giant", test_mtx_then_Giant); +#endif + /* Help event should be last so that it is always event 1. */ static void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509012054.j81Ks6DY062914>