Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Aug 2012 20:00:41 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r239584 - head/sys/kern
Message-ID:  <201208222000.q7MK0ff6089027@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Wed Aug 22 20:00:41 2012
New Revision: 239584
URL: http://svn.freebsd.org/changeset/base/239584

Log:
  Fix the 'show witness' DDB command to honor db_pager_quit.

Modified:
  head/sys/kern/subr_witness.c

Modified: head/sys/kern/subr_witness.c
==============================================================================
--- head/sys/kern/subr_witness.c	Wed Aug 22 19:56:41 2012	(r239583)
+++ head/sys/kern/subr_witness.c	Wed Aug 22 20:00:41 2012	(r239584)
@@ -947,6 +947,8 @@ witness_ddb_display_descendants(int(*prn
 	indent++;
 	WITNESS_INDEX_ASSERT(w->w_index);
 	for (i = 1; i <= w_max_used_index; i++) {
+		if (db_pager_quit)
+			return;
 		if (w_rmatrix[w->w_index][i] & WITNESS_PARENT)
 			witness_ddb_display_descendants(prnt, &w_data[i],
 			    indent);
@@ -965,6 +967,8 @@ witness_ddb_display_list(int(*prnt)(cons
 
 		/* This lock has no anscestors - display its descendants. */
 		witness_ddb_display_descendants(prnt, w, 0);
+		if (db_pager_quit)
+			return;
 	}
 }
 	
@@ -986,12 +990,16 @@ witness_ddb_display(int(*prnt)(const cha
 	 */
 	prnt("Sleep locks:\n");
 	witness_ddb_display_list(prnt, &w_sleep);
+	if (db_pager_quit)
+		return;
 	
 	/*
 	 * Now do spin locks which have been acquired at least once.
 	 */
 	prnt("\nSpin locks:\n");
 	witness_ddb_display_list(prnt, &w_spin);
+	if (db_pager_quit)
+		return;
 	
 	/*
 	 * Finally, any locks which have not been acquired yet.
@@ -1002,6 +1010,8 @@ witness_ddb_display(int(*prnt)(const cha
 			continue;
 		prnt("%s (type: %s, depth: %d)\n", w->w_name,
 		    w->w_class->lc_name, w->w_ddb_level);
+		if (db_pager_quit)
+			return;
 	}
 }
 #endif /* DDB */
@@ -2398,6 +2408,8 @@ DB_SHOW_ALL_COMMAND(locks, db_witness_li
 			db_printf("Process %d (%s) thread %p (%d)\n", p->p_pid,
 			    p->p_comm, td, td->td_tid);
 			witness_ddb_list(td);
+			if (db_pager_quit)
+				return;
 		}
 	}
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208222000.q7MK0ff6089027>