svn commit: r239584 - head/sys/kern
John Baldwin
jhb at FreeBSD.org
Wed Aug 22 20:00:41 UTC 2012
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;
}
}
}
More information about the svn-src-all
mailing list