diff options
-rw-r--r-- | sys/amd64/amd64/db_trace.c | 6 | ||||
-rw-r--r-- | sys/amd64/amd64/intr_machdep.c | 6 | ||||
-rw-r--r-- | sys/amd64/amd64/local_apic.c | 6 | ||||
-rw-r--r-- | sys/arm/arm/db_trace.c | 6 | ||||
-rw-r--r-- | sys/ddb/db_command.c | 8 | ||||
-rw-r--r-- | sys/ddb/db_output.c | 69 | ||||
-rw-r--r-- | sys/ddb/db_output.h | 2 | ||||
-rw-r--r-- | sys/ddb/db_ps.c | 14 | ||||
-rw-r--r-- | sys/ddb/db_thread.c | 6 | ||||
-rw-r--r-- | sys/ddb/ddb.h | 7 | ||||
-rw-r--r-- | sys/dev/pci/pci.c | 7 | ||||
-rw-r--r-- | sys/i386/i386/db_trace.c | 6 | ||||
-rw-r--r-- | sys/i386/i386/intr_machdep.c | 6 | ||||
-rw-r--r-- | sys/i386/i386/local_apic.c | 6 | ||||
-rw-r--r-- | sys/i386/i386/machdep.c | 5 | ||||
-rw-r--r-- | sys/ia64/ia64/db_machdep.c | 6 | ||||
-rw-r--r-- | sys/kern/kern_intr.c | 10 | ||||
-rw-r--r-- | sys/kern/kern_ktr.c | 17 | ||||
-rw-r--r-- | sys/kern/subr_prf.c | 7 | ||||
-rw-r--r-- | sys/pc98/pc98/machdep.c | 5 | ||||
-rw-r--r-- | sys/powerpc/powerpc/db_trace.c | 5 | ||||
-rw-r--r-- | sys/sparc64/sparc64/db_trace.c | 15 |
22 files changed, 90 insertions, 135 deletions
diff --git a/sys/amd64/amd64/db_trace.c b/sys/amd64/amd64/db_trace.c index d050787..101ff39 100644 --- a/sys/amd64/amd64/db_trace.c +++ b/sys/amd64/amd64/db_trace.c @@ -390,16 +390,14 @@ db_backtrace(struct thread *td, struct trapframe *tf, long *argp; db_expr_t offset; c_db_sym_t sym; - int narg, quit; + int narg; boolean_t first; if (count == -1) count = 1024; first = TRUE; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (count-- && !quit) { + while (count-- && !db_pager_quit) { sym = db_search_symbol(pc, DB_STGY_ANY, &offset); db_symbol_values(sym, &name, NULL); diff --git a/sys/amd64/amd64/intr_machdep.c b/sys/amd64/amd64/intr_machdep.c index 9d70d06..9a4eaca 100644 --- a/sys/amd64/amd64/intr_machdep.c +++ b/sys/amd64/amd64/intr_machdep.c @@ -338,16 +338,14 @@ SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) DB_SHOW_COMMAND(irqs, db_show_irqs) { struct intsrc **isrc; - int i, quit, verbose; + int i, verbose; - quit = 0; if (strcmp(modif, "v") == 0) verbose = 1; else verbose = 0; isrc = interrupt_sources; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (i = 0; i < NUM_IO_INTS && !quit; i++, isrc++) + for (i = 0; i < NUM_IO_INTS && !db_pager_quit; i++, isrc++) if (*isrc != NULL) db_dump_intr_event((*isrc)->is_event, verbose); } diff --git a/sys/amd64/amd64/local_apic.c b/sys/amd64/amd64/local_apic.c index 384de39..eaf65b4 100644 --- a/sys/amd64/amd64/local_apic.c +++ b/sys/amd64/amd64/local_apic.c @@ -755,18 +755,16 @@ apic_idt_to_irq(u_int vector) DB_SHOW_COMMAND(apic, db_show_apic) { struct intsrc *isrc; - int quit, i, verbose; + int i, verbose; u_int irq; - quit = 0; if (strcmp(modif, "vv") == 0) verbose = 2; else if (strcmp(modif, "v") == 0) verbose = 1; else verbose = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (i = 0; i < APIC_NUM_IOINTS + 1 && !quit; i++) { + for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { irq = ioint_irqs[i]; if (irq != 0 && irq != IRQ_SYSCALL) { db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); diff --git a/sys/arm/arm/db_trace.c b/sys/arm/arm/db_trace.c index 7d6685b..e9ce328 100644 --- a/sys/arm/arm/db_trace.c +++ b/sys/arm/arm/db_trace.c @@ -93,15 +93,13 @@ db_stack_trace_cmd(db_expr_t addr, db_expr_t count) db_expr_t value; db_expr_t offset; boolean_t kernel_only = TRUE; - int scp_offset, quit; + int scp_offset; frame = (u_int32_t *)addr; lastframe = NULL; scp_offset = -(get_pc_str_offset() >> 2); - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (count-- && frame != NULL && !quit) { + while (count-- && frame != NULL && !db_pager_quit) { db_addr_t scp; u_int32_t savecode; int r; diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c index c15edaa..c92d52f 100644 --- a/sys/ddb/db_command.c +++ b/sys/ddb/db_command.c @@ -392,8 +392,9 @@ db_command(last_cmdp, cmd_table) /* * Execute the command. */ + db_enable_pager(); (*cmd->fcn)(addr, have_addr, count, modif); - db_setup_paging(NULL, NULL, -1); + db_disable_pager(); if (cmd->flag & CS_SET_DOT) { /* @@ -675,16 +676,13 @@ db_stack_trace_all(db_expr_t dummy, boolean_t dummy2, db_expr_t dummy3, { struct proc *p; struct thread *td; - int quit; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); LIST_FOREACH(p, &allproc, p_list) { FOREACH_THREAD_IN_PROC(p, td) { db_printf("\nTracing command %s pid %d tid %ld td %p\n", p->p_comm, p->p_pid, (long)td->td_tid, td); db_trace_thread(td, -1); - if (quit) + if (db_pager_quit) return; } } diff --git a/sys/ddb/db_output.c b/sys/ddb/db_output.c index fccae29..e9f0c82 100644 --- a/sys/ddb/db_output.c +++ b/sys/ddb/db_output.c @@ -66,15 +66,15 @@ db_expr_t db_tab_stop_width = 8; /* how wide are tab stops? */ ((((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 */ +volatile int db_pager_quit; /* user requested quit */ static int db_newlines; /* # lines this 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 db_maxlines; /* max lines/page when paging */ static int ddb_use_printf = 0; SYSCTL_INT(_debug, OID_AUTO, ddb_use_printf, CTLFLAG_RW, &ddb_use_printf, 0, "use printf for all ddb output"); static void db_putchar(int c, void *arg); +static void db_pager(void); /* * Force pending whitespace. @@ -120,12 +120,10 @@ db_putchar(c, arg) return; if (c == '\r' || c == '\n') db_check_interrupt(); - if (c == '\n' && db_maxlines > 0 && db_page_callout != NULL) { + if (c == '\n' && db_maxlines > 0) { db_newlines++; - if (db_newlines >= db_maxlines) { - db_maxlines = -1; - db_page_callout(db_page_callout_arg); - } + if (db_newlines >= db_maxlines) + db_pager(); } return; } @@ -149,12 +147,10 @@ db_putchar(c, arg) db_output_position = 0; db_last_non_space = 0; db_check_interrupt(); - if (db_maxlines > 0 && db_page_callout != NULL) { + if (db_maxlines > 0) { db_newlines++; - if (db_newlines >= db_maxlines) { - db_maxlines = -1; - db_page_callout(db_page_callout_arg); - } + if (db_newlines >= db_maxlines) + db_pager(); } } else if (c == '\r') { @@ -181,27 +177,34 @@ db_putchar(c, arg) } /* - * Register callout for providing a pager for output. + * Turn on the pager. */ void -db_setup_paging(db_page_calloutfcn_t *callout, void *arg, int maxlines) +db_enable_pager(void) { - - if (db_page_callout == NULL || callout == NULL || arg == - db_page_callout_arg) { - db_page_callout = callout; - db_page_callout_arg = arg; - db_maxlines = maxlines; + if (db_maxlines == 0) { + db_maxlines = db_lines_per_page; db_newlines = 0; + db_pager_quit = 0; } } /* - * A simple paging callout function. If the argument is not null, it - * points to an integer that will be set to 1 if the user asks to quit. + * Turn off the pager. */ void -db_simple_pager(void *arg) +db_disable_pager(void) +{ + db_maxlines = 0; +} + +/* + * A simple paging callout function. It supports several simple more(1)-like + * commands as well as a quit command that sets db_pager_quit which db + * commands can poll to see if they should terminate early. + */ +void +db_pager(void) { int c, done; @@ -214,20 +217,18 @@ db_simple_pager(void *arg) case 'j': case '\n': /* Just one more line. */ - db_setup_paging(db_simple_pager, arg, 1); + db_maxlines = 1; done++; break; case 'd': /* Half a page. */ - db_setup_paging(db_simple_pager, arg, - db_lines_per_page / 2); + db_maxlines = db_lines_per_page / 2; done++; break; case 'f': case ' ': /* Another page. */ - db_setup_paging(db_simple_pager, arg, - db_lines_per_page); + db_maxlines = db_lines_per_page; done++; break; case 'q': @@ -235,11 +236,10 @@ db_simple_pager(void *arg) case 'x': case 'X': /* Quit */ - if (arg != NULL) { - *(int *)arg = 1; - done++; - break; - } + db_maxlines = 0; + db_pager_quit = 1; + done++; + break; #if 0 /* FALLTHROUGH */ default: @@ -248,6 +248,7 @@ db_simple_pager(void *arg) } } db_printf(" \r"); + db_newlines = 0; } /* diff --git a/sys/ddb/db_output.h b/sys/ddb/db_output.h index 7615ea6..480c40d 100644 --- a/sys/ddb/db_output.h +++ b/sys/ddb/db_output.h @@ -38,6 +38,8 @@ * Printing routines for kernel debugger. */ +void db_disable_pager(void); +void db_enable_pager(void); void db_end_line(void); void db_force_whitespace(void); int db_print_position(void); diff --git a/sys/ddb/db_ps.c b/sys/ddb/db_ps.c index 39dff4c..f220de0 100644 --- a/sys/ddb/db_ps.c +++ b/sys/ddb/db_ps.c @@ -73,23 +73,21 @@ db_ps(db_expr_t addr, boolean_t hasaddr, db_expr_t count, char *modif) struct ucred *cred; struct pgrp *pgrp; char state[9]; - int np, quit, rflag, sflag, dflag, lflag, wflag; + int np, rflag, sflag, dflag, lflag, wflag; np = nprocs; - quit = 0; if (!LIST_EMPTY(&allproc)) p = LIST_FIRST(&allproc); else p = &proc0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); #ifdef __LP64__ db_printf(" pid uid ppid pgrp state wmesg wchan cmd\n"); #else db_printf(" pid uid ppid pgrp state wmesg wchan cmd\n"); #endif - while (--np >= 0 && !quit) { + while (--np >= 0 && !db_pager_quit) { if (p == NULL) { db_printf("oops, ran out of processes early!\n"); break; @@ -191,7 +189,7 @@ db_ps(db_expr_t addr, boolean_t hasaddr, db_expr_t count, char *modif) #endif FOREACH_THREAD_IN_PROC(p, td) { dumpthread(p, td, p->p_flag & P_HADTHREADS); - if (quit) + if (db_pager_quit) break; } @@ -363,7 +361,7 @@ DB_SHOW_COMMAND(proc, db_show_proc) { struct thread *td; struct proc *p; - int i, quit; + int i; /* Determine which process to examine. */ if (have_addr) @@ -371,8 +369,6 @@ DB_SHOW_COMMAND(proc, db_show_proc) else p = kdb_thread->td_proc; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); db_printf("Process %d (%s) at %p:\n", p->p_pid, p->p_comm, p); db_printf(" state: "); switch (p->p_state) { @@ -411,7 +407,7 @@ DB_SHOW_COMMAND(proc, db_show_proc) db_printf(" threads: %d\n", p->p_numthreads); FOREACH_THREAD_IN_PROC(p, td) { dumpthread(p, td, 1); - if (quit) + if (db_pager_quit) break; } } diff --git a/sys/ddb/db_thread.c b/sys/ddb/db_thread.c index a946dd8..13c3878 100644 --- a/sys/ddb/db_thread.c +++ b/sys/ddb/db_thread.c @@ -93,13 +93,9 @@ db_show_threads(db_expr_t addr, boolean_t hasaddr, db_expr_t cnt, char *mod) jmp_buf jb; void *prev_jb; struct thread *thr; - int pager_quit; - db_setup_paging(db_simple_pager, &pager_quit, db_lines_per_page); - - pager_quit = 0; thr = kdb_thr_first(); - while (!pager_quit && thr != NULL) { + while (!db_pager_quit && thr != NULL) { db_printf(" %6ld (%p) ", (long)thr->td_tid, thr); prev_jb = kdb_jmpbuf(jb); if (setjmp(jb) == 0) { diff --git a/sys/ddb/ddb.h b/sys/ddb/ddb.h index 549e24e..716740b 100644 --- a/sys/ddb/ddb.h +++ b/sys/ddb/ddb.h @@ -52,8 +52,6 @@ int DB_CALL(db_expr_t, db_expr_t *, int, db_expr_t[]); typedef void db_cmdfcn_t(db_expr_t addr, boolean_t have_addr, db_expr_t count, char *modif); -typedef void db_page_calloutfcn_t(void *arg); - #define DB_COMMAND(cmd_name, func_name) \ DB_FUNC(cmd_name, func_name, db_cmd_set, 0, NULL) #define DB_SHOW_COMMAND(cmd_name, func_name) \ @@ -85,6 +83,7 @@ extern int db_indent; extern int db_inst_count; extern int db_load_count; extern int db_store_count; +extern volatile int db_pager_quit; extern db_expr_t db_radix; extern db_expr_t db_max_width; extern db_expr_t db_tab_stop_width; @@ -118,8 +117,6 @@ int db_readline(char *lstart, int lsize); void db_restart_at_pc(boolean_t watchpt); int db_set_variable(db_expr_t value); void db_set_watchpoints(void); -void db_setup_paging(db_page_calloutfcn_t *callout, void *arg, - int maxlines); void db_skip_to_eol(void); boolean_t db_stop_at_pc(boolean_t *is_breakpoint); #define db_strcpy strcpy @@ -149,8 +146,6 @@ db_cmdfcn_t db_trace_until_matching_cmd; db_cmdfcn_t db_watchpoint_cmd; db_cmdfcn_t db_write_cmd; -db_page_calloutfcn_t db_simple_pager; - /* * Command table. */ diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 554e6f2..674a661 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1716,7 +1716,7 @@ DB_SHOW_COMMAND(pciregs, db_pci_dump) struct devlist *devlist_head; struct pci_conf *p; const char *name; - int i, error, none_count, quit; + int i, error, none_count; none_count = 0; /* get the head of the device queue */ @@ -1725,10 +1725,9 @@ DB_SHOW_COMMAND(pciregs, db_pci_dump) /* * Go through the list of devices and print out devices */ - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (error = 0, i = 0, quit = 0, + for (error = 0, i = 0, dinfo = STAILQ_FIRST(devlist_head); - (dinfo != NULL) && (error == 0) && (i < pci_numdevs) && !quit; + (dinfo != NULL) && (error == 0) && (i < pci_numdevs) && !db_pager_quit; dinfo = STAILQ_NEXT(dinfo, pci_links), i++) { /* Populate pd_name and pd_unit */ diff --git a/sys/i386/i386/db_trace.c b/sys/i386/i386/db_trace.c index ea2c208..c3ea8ac 100644 --- a/sys/i386/i386/db_trace.c +++ b/sys/i386/i386/db_trace.c @@ -401,7 +401,7 @@ db_backtrace(struct thread *td, struct trapframe *tf, struct i386_frame *frame, int *argp; db_expr_t offset; c_db_sym_t sym; - int instr, narg, quit; + int instr, narg; boolean_t first; /* @@ -432,9 +432,7 @@ db_backtrace(struct thread *td, struct trapframe *tf, struct i386_frame *frame, count = 1024; first = TRUE; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (count-- && !quit) { + while (count-- && !db_pager_quit) { sym = db_search_symbol(pc, DB_STGY_ANY, &offset); db_symbol_values(sym, &name, NULL); diff --git a/sys/i386/i386/intr_machdep.c b/sys/i386/i386/intr_machdep.c index f163ff9..fe41cc6 100644 --- a/sys/i386/i386/intr_machdep.c +++ b/sys/i386/i386/intr_machdep.c @@ -338,16 +338,14 @@ SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) DB_SHOW_COMMAND(irqs, db_show_irqs) { struct intsrc **isrc; - int i, quit, verbose; + int i, verbose; - quit = 0; if (strcmp(modif, "v") == 0) verbose = 1; else verbose = 0; isrc = interrupt_sources; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (i = 0; i < NUM_IO_INTS && !quit; i++, isrc++) + for (i = 0; i < NUM_IO_INTS && !db_pager_quit; i++, isrc++) if (*isrc != NULL) db_dump_intr_event((*isrc)->is_event, verbose); } diff --git a/sys/i386/i386/local_apic.c b/sys/i386/i386/local_apic.c index c26eeab..456eaff 100644 --- a/sys/i386/i386/local_apic.c +++ b/sys/i386/i386/local_apic.c @@ -758,18 +758,16 @@ apic_idt_to_irq(u_int vector) DB_SHOW_COMMAND(apic, db_show_apic) { struct intsrc *isrc; - int quit, i, verbose; + int i, verbose; u_int irq; - quit = 0; if (strcmp(modif, "vv") == 0) verbose = 2; else if (strcmp(modif, "v") == 0) verbose = 1; else verbose = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (i = 0; i < APIC_NUM_IOINTS + 1 && !quit; i++) { + for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { irq = ioint_irqs[i]; if (irq != 0 && irq != IRQ_SYSCALL) { db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index e3d7e86..f3c21da 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -1584,12 +1584,11 @@ extern inthand_t DB_SHOW_COMMAND(idt, db_show_idt) { struct gate_descriptor *ip; - int idx, quit; + int idx; uintptr_t func; ip = idt; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (idx = 0, quit = 0; idx < NIDT; idx++) { + for (idx = 0; idx < NIDT && !db_pager_quit; idx++) { func = (ip->gd_hioffset << 16 | ip->gd_looffset); if (func != (uintptr_t)&IDTVEC(rsvd)) { db_printf("%3d\t", idx); diff --git a/sys/ia64/ia64/db_machdep.c b/sys/ia64/ia64/db_machdep.c index 9e965f0..00f3205 100644 --- a/sys/ia64/ia64/db_machdep.c +++ b/sys/ia64/ia64/db_machdep.c @@ -228,12 +228,10 @@ db_backtrace(struct thread *td, struct pcb *pcb, int count) db_expr_t offset; uint64_t bsp, cfm, ip, pfs, reg, sp; c_db_sym_t sym; - int args, error, i, quit; + int args, error, i; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); error = unw_create_from_pcb(&rs, pcb); - while (!error && count-- && !quit) { + while (!error && count-- && !db_pager_quit) { error = unw_get_cfm(&rs, &cfm); if (!error) error = unw_get_bsp(&rs, &bsp); diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 042a0ec..7693954 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -905,16 +905,16 @@ db_dump_intr_event(struct intr_event *ie, int handlers) DB_SHOW_COMMAND(intr, db_show_intr) { struct intr_event *ie; - int quit, all, verbose; + int all, verbose; - quit = 0; verbose = index(modif, 'v') != NULL; all = index(modif, 'a') != NULL; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); TAILQ_FOREACH(ie, &event_list, ie_list) { if (!all && TAILQ_EMPTY(&ie->ie_handlers)) continue; db_dump_intr_event(ie, verbose); + if (db_pager_quit) + break; } } #endif /* DDB */ @@ -976,11 +976,9 @@ DB_SHOW_COMMAND(intrcnt, db_show_intrcnt) { u_long *i; char *cp; - int quit; cp = intrnames; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (i = intrcnt, quit = 0; i != eintrcnt && !quit; i++) { + for (i = intrcnt; i != eintrcnt && !db_pager_quit; i++) { if (*cp == '\0') break; if (*i != 0) diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c index 7ae5582..f12f971 100644 --- a/sys/kern/kern_ktr.c +++ b/sys/kern/kern_ktr.c @@ -55,8 +55,10 @@ __FBSDID("$FreeBSD$"); #include <machine/ktr.h> #endif - +#ifdef DDB #include <ddb/ddb.h> +#include <ddb/db_output.h> +#endif #ifndef KTR_ENTRIES #define KTR_ENTRIES 1024 @@ -288,22 +290,17 @@ static int db_mach_vtrace(void); DB_SHOW_COMMAND(ktr, db_ktr_all) { - int quit; - quit = 0; tstate.cur = (ktr_idx - 1) & (KTR_ENTRIES - 1); tstate.first = -1; - if (strcmp(modif, "v") == 0) - db_ktr_verbose = 1; - else - db_ktr_verbose = 0; - if (strcmp(modif, "a") == 0) { + db_ktr_verbose = index(modif, 'v') != NULL; + if (index(modif, 'a') != NULL) { + db_disable_pager(); while (cncheckc() != -1) if (db_mach_vtrace() == 0) break; } else { - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (!quit) + while (!db_pager_quit) if (db_mach_vtrace() == 0) break; } diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index f003bad..12f29b6 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -912,20 +912,17 @@ SYSCTL_PROC(_kern, OID_AUTO, msgbuf_clear, DB_SHOW_COMMAND(msgbuf, db_show_msgbuf) { - int i, j, quit; - - quit = 0; + int i, j; if (!msgbufmapped) { db_printf("msgbuf not mapped yet\n"); return; } - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); db_printf("msgbufp = %p\n", msgbufp); db_printf("magic = %x, size = %d, r= %u, w = %u, ptr = %p, cksum= %u\n", msgbufp->msg_magic, msgbufp->msg_size, msgbufp->msg_rseq, msgbufp->msg_wseq, msgbufp->msg_ptr, msgbufp->msg_cksum); - for (i = 0; i < msgbufp->msg_size && !quit; i++) { + for (i = 0; i < msgbufp->msg_size && !db_pager_quit; i++) { j = MSGBUF_SEQ_TO_POS(msgbufp, i + msgbufp->msg_rseq); db_printf("%c", msgbufp->msg_ptr[j]); } diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c index 5a686ad..d61970a 100644 --- a/sys/pc98/pc98/machdep.c +++ b/sys/pc98/pc98/machdep.c @@ -1581,12 +1581,11 @@ extern inthand_t DB_SHOW_COMMAND(idt, db_show_idt) { struct gate_descriptor *ip; - int idx, quit; + int idx; uintptr_t func; ip = idt; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - for (idx = 0, quit = 0; idx < NIDT; idx++) { + for (idx = 0; idx < NIDT && !db_pager_quit; idx++) { func = (ip->gd_hioffset << 16 | ip->gd_looffset); if (func != (uintptr_t)&IDTVEC(rsvd)) { db_printf("%3d\t", idx); diff --git a/sys/powerpc/powerpc/db_trace.c b/sys/powerpc/powerpc/db_trace.c index e70f5e1..188e028 100644 --- a/sys/powerpc/powerpc/db_trace.c +++ b/sys/powerpc/powerpc/db_trace.c @@ -131,7 +131,6 @@ db_backtrace(struct thread *td, db_addr_t fp, int count) const char *symname; boolean_t kernel_only = TRUE; boolean_t full = FALSE; - int quit; #if 0 { @@ -151,9 +150,7 @@ db_backtrace(struct thread *td, db_addr_t fp, int count) stackframe = fp; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (!quit) { + while (!db_pager_quit) { if (stackframe < PAGE_SIZE) break; diff --git a/sys/sparc64/sparc64/db_trace.c b/sys/sparc64/sparc64/db_trace.c index bb5f60c..73d3b31 100644 --- a/sys/sparc64/sparc64/db_trace.c +++ b/sys/sparc64/sparc64/db_trace.c @@ -103,7 +103,7 @@ db_frame(struct db_variable *vp, db_expr_t *valuep, int op) * User stack trace (debugging aid). */ static void -db_utrace(struct thread *td, struct trapframe *tf, int count, int *quitp) +db_utrace(struct thread *td, struct trapframe *tf, int count) { struct pcb *pcb; db_addr_t sp, rsp, o7, pc; @@ -115,7 +115,7 @@ db_utrace(struct thread *td, struct trapframe *tf, int count, int *quitp) FALSE); pc = db_get_value((db_addr_t)&tf->tf_tpc, sizeof(tf->tf_tpc), FALSE); db_printf("user trace: trap %%o7=%#lx\n", o7); - while (count-- && sp != 0 && !*quitp) { + while (count-- && sp != 0 && !db_pager_quit) { db_printf("pc %#lx, sp %#lx\n", pc, sp); /* First, check whether the frame is in the pcb. */ found = 0; @@ -141,7 +141,7 @@ db_utrace(struct thread *td, struct trapframe *tf, int count, int *quitp) } static int -db_print_trap(struct thread *td, struct trapframe *tf, int count, int *quitp) +db_print_trap(struct thread *td, struct trapframe *tf, int count) { struct proc *p; const char *symname; @@ -219,7 +219,7 @@ db_print_trap(struct thread *td, struct trapframe *tf, int count, int *quitp) db_printf("userland() at "); db_printsym(tpc, DB_STGY_PROC); db_printf("\n"); - db_utrace(td, tf, count, quitp); + db_utrace(td, tf, count); } return (user); } @@ -236,7 +236,6 @@ db_backtrace(struct thread *td, struct frame *fp, int count) db_addr_t pc; int trap; int user; - int quit; if (count == -1) count = 1024; @@ -244,9 +243,7 @@ db_backtrace(struct thread *td, struct frame *fp, int count) trap = 0; user = 0; npc = 0; - quit = 0; - db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - while (count-- && !user && !quit) { + while (count-- && !user && !db_pager_quit) { pc = (db_addr_t)db_get_value((db_addr_t)&fp->fr_pc, sizeof(fp->fr_pc), FALSE); if (trap) { @@ -272,7 +269,7 @@ db_backtrace(struct thread *td, struct frame *fp, int count) tf = (struct trapframe *)(fp + 1); npc = db_get_value((db_addr_t)&tf->tf_tpc, sizeof(tf->tf_tpc), FALSE); - user = db_print_trap(td, tf, count, &quit); + user = db_print_trap(td, tf, count); trap = 1; } else { db_printf("%s() at ", name); |