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>