svn commit: r220606 - head/sys/kern
Gavin Atkinson
gavin at FreeBSD.org
Wed Apr 13 19:10:56 UTC 2011
Author: gavin
Date: Wed Apr 13 19:10:56 2011
New Revision: 220606
URL: http://svn.freebsd.org/changeset/base/220606
Log:
Add a new DDB command, "show rmans", which will show the address and brief
details of each rman header, but not the contents of all rman structures
in the system. This is especially useful on platforms where some rmans
have many thousands of entries in rmans, making scrolling through the
output of "show all rman" impractical. Individual rmans can then be viewed
including their contents with "show rman 0xaddr" as usual.
Reviewed by: jhb
Modified:
head/sys/kern/subr_rman.c
Modified: head/sys/kern/subr_rman.c
==============================================================================
--- head/sys/kern/subr_rman.c Wed Apr 13 18:19:41 2011 (r220605)
+++ head/sys/kern/subr_rman.c Wed Apr 13 19:10:56 2011 (r220606)
@@ -927,6 +927,16 @@ SYSCTL_NODE(_hw_bus, OID_AUTO, rman, CTL
#ifdef DDB
static void
+dump_rman_header(struct rman *rm)
+{
+
+ if (db_pager_quit)
+ return;
+ db_printf("rman %p: %s (0x%lx-0x%lx full range)\n",
+ rm, rm->rm_descr, rm->rm_start, rm->rm_end);
+}
+
+static void
dump_rman(struct rman *rm)
{
struct resource_i *r;
@@ -934,8 +944,6 @@ dump_rman(struct rman *rm)
if (db_pager_quit)
return;
- db_printf("rman: %s\n", rm->rm_descr);
- db_printf(" 0x%lx-0x%lx (full range)\n", rm->rm_start, rm->rm_end);
TAILQ_FOREACH(r, &rm->rm_list, r_link) {
if (r->r_dev != NULL) {
devname = device_get_nameunit(r->r_dev);
@@ -956,16 +964,29 @@ dump_rman(struct rman *rm)
DB_SHOW_COMMAND(rman, db_show_rman)
{
- if (have_addr)
+ if (have_addr) {
+ dump_rman_header((struct rman *)addr);
dump_rman((struct rman *)addr);
+ }
+}
+
+DB_SHOW_COMMAND(rmans, db_show_rmans)
+{
+ struct rman *rm;
+
+ TAILQ_FOREACH(rm, &rman_head, rm_link) {
+ dump_rman_header(rm);
+ }
}
DB_SHOW_ALL_COMMAND(rman, db_show_all_rman)
{
struct rman *rm;
- TAILQ_FOREACH(rm, &rman_head, rm_link)
+ TAILQ_FOREACH(rm, &rman_head, rm_link) {
+ dump_rman_header(rm);
dump_rman(rm);
+ }
}
DB_SHOW_ALIAS(allrman, db_show_all_rman);
#endif
More information about the svn-src-all
mailing list