From owner-svn-src-all@FreeBSD.ORG Wed Apr 13 19:10:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 85C7C106566C; Wed, 13 Apr 2011 19:10:56 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5AA318FC16; Wed, 13 Apr 2011 19:10:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p3DJAueZ008736; Wed, 13 Apr 2011 19:10:56 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p3DJAuIk008734; Wed, 13 Apr 2011 19:10:56 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201104131910.p3DJAuIk008734@svn.freebsd.org> From: Gavin Atkinson Date: Wed, 13 Apr 2011 19:10:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r220606 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Apr 2011 19:10:56 -0000 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