p4-projects@freebsd.org
[Top] [All Lists]

PERFORCE change 121978 for review

Subject: PERFORCE change 121978 for review
From: John Baldwin
Date: Tue, 19 Jun 2007 15:16:20 GMT
http://perforce.freebsd.org/chv.cgi?CH=121978

Change 121978 by jhb@jhb_mutex on 2007/06/19 15:15:46

        Pullup additional tests from jhb_lock branch (such as a test for
        the various cases of the sx recursion stuff).

Affected files ...

.. //depot/projects/smpng/sys/modules/crash/crash.c#38 integrate

Differences ...

==== //depot/projects/smpng/sys/modules/crash/crash.c#38 (text+ko) ====

@@ -72,7 +72,7 @@
 static int event_max;
 static struct crash_event **event_start, **event_stop;
 static struct rwlock baz;
-static struct sx foo, bar, bar2;
+static struct sx foo, bar, bar2, qux;
 static struct cv event_cv;
 static struct mtx event_mtx, test_mtx, test1_mtx, test2_mtx;
 static struct proc *kthread;
@@ -87,6 +87,32 @@
 /* Events. */
 
 static void
+sx_recurse(void)
+{
+
+       sx_init_flags(&qux, "qux", SX_RECURSE);
+       sx_xlock(&qux);
+       sx_xlock(&qux);
+       kdb_enter("qux should be recursed");
+       sx_xunlock(&qux);
+       if (sx_try_xlock(&qux) == 0)
+               panic("try_xlock failed!");
+       sx_xunlock(&qux);
+       sx_xunlock(&qux);
+       sx_destroy(&qux);
+       sx_init(&qux, "qux");
+       sx_xlock(&qux);
+       if (sx_try_xlock(&qux))
+               panic("try_xlock worked!");
+       printf("nested xlock should go boom\n");
+       sx_xlock(&qux);
+       sx_xunlock(&qux);
+       sx_xunlock(&qux);
+       sx_destroy(&qux);
+}
+CRASH_EVENT("test sx xlock recurse", sx_recurse);
+
+static void
 cv_sx(void)
 {
        struct cv blah;
@@ -169,6 +195,30 @@
 CRASH_EVENT("test rw_sleep()", sleep_rw);
 
 static void
+lock_destroyed_sx(void)
+{
+
+       sx_init(&qux, "qux");
+       sx_destroy(&qux);
+       kdb_enter("examine qux");
+       sx_xlock(&qux);
+       kdb_enter("examine again");
+}
+CRASH_EVENT("lock destroyed sx", lock_destroyed_sx);
+
+static void
+lock_destroyed_rw(void)
+{
+
+       rw_init(&baz, "baz");
+       rw_destroy(&baz);
+       kdb_enter("examine baz");
+       rw_wlock(&baz);
+       kdb_enter("examine again");
+}
+CRASH_EVENT("lock destroyed rwlock", lock_destroyed_rw);
+
+static void
 lock_destroyed_mtx(void)
 {
 
_______________________________________________
p4-projects@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "p4-projects-unsubscribe@xxxxxxxxxxx"

<Prev in Thread] Current Thread [Next in Thread>
  • PERFORCE change 121978 for review, John Baldwin <=