Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Oct 2004 22:09:17 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 63896 for review
Message-ID:  <200410282209.i9SM9HYx013304@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=63896

Change 63896 by jhb@jhb_slimer on 2004/10/28 22:08:28

	Change the DDB paging to use a variable rather than a constant for
	the default number of lines on a page and allow the variable to be
	tweaked via 'set $lines' while in ddb.  Setting it to zero should
	effectively turn off paging.
	
	Inspired by:	kris complaining about ddb(4)

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/db_trace.c#14 edit
.. //depot/projects/smpng/sys/amd64/amd64/db_trace.c#9 edit
.. //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#6 edit
.. //depot/projects/smpng/sys/arm/arm/db_trace.c#7 edit
.. //depot/projects/smpng/sys/ddb/db_output.c#11 edit
.. //depot/projects/smpng/sys/ddb/db_ps.c#28 edit
.. //depot/projects/smpng/sys/ddb/db_thread.c#2 edit
.. //depot/projects/smpng/sys/ddb/db_variables.c#5 edit
.. //depot/projects/smpng/sys/ddb/ddb.h#12 edit
.. //depot/projects/smpng/sys/dev/pci/pci.c#44 edit
.. //depot/projects/smpng/sys/i386/i386/db_trace.c#21 edit
.. //depot/projects/smpng/sys/i386/i386/intr_machdep.c#9 edit
.. //depot/projects/smpng/sys/i386/i386/machdep.c#80 edit
.. //depot/projects/smpng/sys/ia64/ia64/db_trace.c#18 edit
.. //depot/projects/smpng/sys/kern/kern_intr.c#56 edit
.. //depot/projects/smpng/sys/kern/kern_ktr.c#28 edit
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#71 edit
.. //depot/projects/smpng/sys/powerpc/powerpc/db_trace.c#8 edit
.. //depot/projects/smpng/sys/sparc64/sparc64/db_trace.c#21 edit

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/db_trace.c#14 (text+ko) ====

@@ -221,7 +221,7 @@
 	last_ipl = ~0L;
 	tf = NULL;
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (count-- && !quit) {
 		sym = db_search_symbol(pc, DB_STGY_ANY, &diff);
 		if (sym == DB_SYM_NULL)

==== //depot/projects/smpng/sys/amd64/amd64/db_trace.c#9 (text+ko) ====

@@ -381,7 +381,7 @@
 
 	first = TRUE;
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (count-- && !quit) {
 		sym = db_search_symbol(pc, DB_STGY_ANY, &offset);
 		db_symbol_values(sym, &name, NULL);

==== //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#6 (text+ko) ====

@@ -313,7 +313,7 @@
 	else
 		verbose = 0;
 	isrc = interrupt_sources;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (i = 0; i < NUM_IO_INTS && !quit; i++, isrc++)
 		if (*isrc != NULL)
 			db_dump_ithread((*isrc)->is_ithread, verbose);

==== //depot/projects/smpng/sys/arm/arm/db_trace.c#7 (text+ko) ====

@@ -138,7 +138,7 @@
 	scp_offset = -(get_pc_str_offset() >> 2);
 
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (count-- && frame != NULL && !quit) {
 		db_addr_t	scp;
 		u_int32_t	savecode;

==== //depot/projects/smpng/sys/ddb/db_output.c#11 (text+ko) ====

@@ -65,8 +65,9 @@
 #define	NEXT_TAB(i) \
 	((((i) + db_tab_stop_width) / db_tab_stop_width) * db_tab_stop_width)
 db_expr_t	db_max_width = 79;		/* output line width */
+db_expr_t	db_lines_per_page = 20;		/* lines per page */
 static int	db_newlines;			/* # lines this page */
-static int	db_maxlines = -1;		/* max lines per page */
+static int	db_maxlines = -1;		/* max lines/page when paging */
 static db_page_calloutfcn_t *db_page_callout = NULL;
 static void	*db_page_callout_arg = NULL;
 static int	ddb_use_printf = 0;
@@ -203,14 +204,22 @@
 	for (;;) {
 		c = cngetc();
 		switch (c) {
+		case 'e':
+		case 'j':
 		case '\n':
 			/* Just one more line. */
 			db_setup_paging(db_simple_pager, arg, 1);
 			return;
+		case 'd':
+			/* Half a page. */
+			db_setup_paging(db_simple_pager, arg,
+			    db_lines_per_page / 2);
+			return;
+		case 'f':
 		case ' ':
 			/* Another page. */
 			db_setup_paging(db_simple_pager, arg,
-			    DB_LINES_PER_PAGE);
+			    db_lines_per_page);
 			return;
 		case 'q':
 		case 'Q':

==== //depot/projects/smpng/sys/ddb/db_ps.c#28 (text+ko) ====

@@ -65,7 +65,7 @@
 	else
 		p = &proc0;
 
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	db_printf("  pid   proc     uarea   uid  ppid  pgrp  flag   stat  wmesg    wchan  cmd\n");
 	while (--np >= 0 && !quit) {
 		if (p == NULL) {

==== //depot/projects/smpng/sys/ddb/db_thread.c#2 (text+ko) ====

@@ -88,7 +88,7 @@
 	struct thread *thr;
 	int pager_quit;
 
-	db_setup_paging(db_simple_pager, &pager_quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &pager_quit, db_lines_per_page);
 
 	pager_quit = 0;
 	thr = kdb_thr_first();

==== //depot/projects/smpng/sys/ddb/db_variables.c#5 (text+ko) ====

@@ -45,6 +45,7 @@
 	{ "maxoff",	&db_maxoff, FCN_NULL },
 	{ "maxwidth",	&db_max_width, FCN_NULL },
 	{ "tabstops",	&db_tab_stop_width, FCN_NULL },
+	{ "lines",	&db_lines_per_page, FCN_NULL },
 };
 static struct db_variable *db_evars =
 	db_vars + sizeof(db_vars)/sizeof(db_vars[0]);

==== //depot/projects/smpng/sys/ddb/ddb.h#12 (text+ko) ====

@@ -39,8 +39,6 @@
 
 #include <machine/db_machdep.h>		/* type definitions */
 
-#define	DB_LINES_PER_PAGE	20
-
 typedef void db_cmdfcn_t(db_expr_t addr, boolean_t have_addr, db_expr_t count,
 	    char *modif);
 
@@ -78,6 +76,7 @@
 extern db_expr_t db_radix;
 extern db_expr_t db_max_width;
 extern db_expr_t db_tab_stop_width;
+extern db_expr_t db_lines_per_page;
 
 struct thread;
 struct vm_map;

==== //depot/projects/smpng/sys/dev/pci/pci.c#44 (text+ko) ====

@@ -1484,7 +1484,7 @@
 	/*
 	 * Go through the list of devices and print out devices
 	 */
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (error = 0, i = 0, quit = 0,
 	     dinfo = STAILQ_FIRST(devlist_head);
 	     (dinfo != NULL) && (error == 0) && (i < pci_numdevs) && !quit;

==== //depot/projects/smpng/sys/i386/i386/db_trace.c#21 (text+ko) ====

@@ -387,7 +387,7 @@
 
 	first = TRUE;
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (count-- && !quit) {
 		sym = db_search_symbol(pc, DB_STGY_ANY, &offset);
 		db_symbol_values(sym, &name, NULL);

==== //depot/projects/smpng/sys/i386/i386/intr_machdep.c#9 (text+ko) ====

@@ -313,7 +313,7 @@
 	else
 		verbose = 0;
 	isrc = interrupt_sources;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (i = 0; i < NUM_IO_INTS && !quit; i++, isrc++)
 		if (*isrc != NULL)
 			db_dump_ithread((*isrc)->is_ithread, verbose);

==== //depot/projects/smpng/sys/i386/i386/machdep.c#80 (text+ko) ====

@@ -1482,7 +1482,7 @@
 	uintptr_t func;
 
 	ip = idt;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (idx = 0, quit = 0; idx < NIDT; idx++) {
 		func = (ip->gd_hioffset << 16 | ip->gd_looffset);
 		if (func != (uintptr_t)&IDTVEC(rsvd)) {

==== //depot/projects/smpng/sys/ia64/ia64/db_trace.c#18 (text+ko) ====

@@ -60,7 +60,7 @@
 	int args, error, i, quit;
 
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	error = unw_create_from_pcb(&rs, pcb);
 	while (!error && count-- && !quit) {
 		error = unw_get_cfm(&rs, &cfm);

==== //depot/projects/smpng/sys/kern/kern_intr.c#56 (text+ko) ====

@@ -785,7 +785,7 @@
 	int quit;
 
 	cp = intrnames;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (i = intrcnt, quit = 0; i != eintrcnt && !quit; i++) {
 		if (*cp == '\0')
 			break;

==== //depot/projects/smpng/sys/kern/kern_ktr.c#28 (text+ko) ====

@@ -282,7 +282,7 @@
 			if (db_mach_vtrace() == 0)
 				break;
 	} else {
-		db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+		db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 		while (!quit)
 			if (db_mach_vtrace() == 0)
 				break;

==== //depot/projects/smpng/sys/pc98/i386/machdep.c#71 (text+ko) ====

@@ -1496,7 +1496,7 @@
 	uintptr_t func;
 
 	ip = idt;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	for (idx = 0, quit = 0; idx < NIDT; idx++) {
 		func = (ip->gd_hioffset << 16 | ip->gd_looffset);
 		if (func != (uintptr_t)&IDTVEC(rsvd)) {

==== //depot/projects/smpng/sys/powerpc/powerpc/db_trace.c#8 (text+ko) ====

@@ -150,7 +150,7 @@
 	stackframe = fp;
 
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (!quit) {
 		if (stackframe < PAGE_SIZE)
 			break;

==== //depot/projects/smpng/sys/sparc64/sparc64/db_trace.c#21 (text+ko) ====

@@ -238,7 +238,7 @@
 	user = 0;
 	npc = 0;
 	quit = 0;
-	db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
+	db_setup_paging(db_simple_pager, &quit, db_lines_per_page);
 	while (count-- && !user && !quit) {
 		pc = (db_addr_t)db_get_value((db_addr_t)&fp->fr_pc,
 		    sizeof(fp->fr_pc), FALSE);



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