PERFORCE change 63896 for review
John Baldwin
jhb at FreeBSD.org
Thu Oct 28 15:09:18 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=63896
Change 63896 by jhb at 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);
More information about the p4-projects
mailing list