summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonb <simonb@NetBSD.org>2002-02-15 07:33:48 +0000
committersimonb <simonb@NetBSD.org>2002-02-15 07:33:48 +0000
commit4eaa4d66a825d3a320df04057b60d4290e726694 (patch)
tree96f4dad8e24388f1ea53a2747c08be1fb1273654
parent4a188395df8e1fe5f0ef08aa49fa7de4a1b6119b (diff)
ANSIfy, KNF.
Make some variables and functions static when not used outside of a module. Make variables in headers extern. Delete the unused db_find_watchpoint() function.
-rw-r--r--sys/ddb/TODO6
-rw-r--r--sys/ddb/db_access.c28
-rw-r--r--sys/ddb/db_access.h22
-rw-r--r--sys/ddb/db_aout.c350
-rw-r--r--sys/ddb/db_break.c204
-rw-r--r--sys/ddb/db_break.h38
-rw-r--r--sys/ddb/db_command.c811
-rw-r--r--sys/ddb/db_command.h49
-rw-r--r--sys/ddb/db_elf.c97
-rw-r--r--sys/ddb/db_examine.c67
-rw-r--r--sys/ddb/db_expr.c261
-rw-r--r--sys/ddb/db_extern.h43
-rw-r--r--sys/ddb/db_input.c265
-rw-r--r--sys/ddb/db_interface.h18
-rw-r--r--sys/ddb/db_lex.c286
-rw-r--r--sys/ddb/db_lex.h38
-rw-r--r--sys/ddb/db_output.c161
-rw-r--r--sys/ddb/db_output.h35
-rw-r--r--sys/ddb/db_print.c53
-rw-r--r--sys/ddb/db_run.c261
-rw-r--r--sys/ddb/db_run.h38
-rw-r--r--sys/ddb/db_sym.c221
-rw-r--r--sys/ddb/db_sym.h69
-rw-r--r--sys/ddb/db_trap.c63
-rw-r--r--sys/ddb/db_variables.c119
-rw-r--r--sys/ddb/db_variables.h29
-rw-r--r--sys/ddb/db_watch.c202
-rw-r--r--sys/ddb/db_watch.h30
-rw-r--r--sys/ddb/db_write_cmd.c52
-rw-r--r--sys/ddb/db_xxx.c43
-rw-r--r--sys/ddb/ddbvar.h8
31 files changed, 1809 insertions, 2158 deletions
diff --git a/sys/ddb/TODO b/sys/ddb/TODO
index b89dbc3c6c9..92f884fb860 100644
--- a/sys/ddb/TODO
+++ b/sys/ddb/TODO
@@ -1,4 +1,4 @@
-$NetBSD: TODO,v 1.9 2002/01/05 01:48:10 jhawk Exp $
+$NetBSD: TODO,v 1.10 2002/02/15 07:33:48 simonb Exp $
In rough order.
@@ -31,7 +31,7 @@ done "set" should display the old value as "write" does.
4. Note only some radixes are supported.
5. Allow a mechanism for DDB to not fail under X (on the i386).
- Probably just skip DDB in such cases.
+ Probably just skip DDB in such cases.
6. Enable DDB in GENERIC on all architectures not starved for
space.
@@ -79,7 +79,7 @@ done Numbers starting with [a-f] should work, but symbols
and ] in kadb (but not in adb):
[ Like :e in adb(1), but requires only one keys-
troke and no RETURN character.
-
+
] Like :s in adb(1), but requires only one keys-
troke and no RETURN character.
Does this make people queasy?
diff --git a/sys/ddb/db_access.c b/sys/ddb/db_access.c
index 41d0d5ffc45..808de0b5c89 100644
--- a/sys/ddb/db_access.c
+++ b/sys/ddb/db_access.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_access.c,v 1.16 2001/11/12 22:54:03 lukem Exp $ */
+/* $NetBSD: db_access.c,v 1.17 2002/02/15 07:33:49 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_access.c,v 1.16 2001/11/12 22:54:03 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_access.c,v 1.17 2002/02/15 07:33:49 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -53,10 +53,7 @@ const int db_extend[] = { /* table for sign-extending */
};
db_expr_t
-db_get_value(addr, size, is_signed)
- db_addr_t addr;
- size_t size;
- boolean_t is_signed;
+db_get_value(db_addr_t addr, size_t size, boolean_t is_signed)
{
char data[sizeof(db_expr_t)];
db_expr_t value;
@@ -71,17 +68,14 @@ db_get_value(addr, size, is_signed)
for (i = 0; i < size; i++)
#endif /* BYTE_ORDER */
value = (value << 8) + (data[i] & 0xFF);
-
+
if (size < 4 && is_signed && (value & db_extend[size]) != 0)
value |= db_extend[size];
return (value);
}
void
-db_put_value(addr, size, value)
- db_addr_t addr;
- size_t size;
- db_expr_t value;
+db_put_value(db_addr_t addr, size_t size, db_expr_t value)
{
char data[sizeof(db_expr_t)];
size_t i;
diff --git a/sys/ddb/db_access.h b/sys/ddb/db_access.h
index caad7b08d22..0df0229ba8e 100644
--- a/sys/ddb/db_access.h
+++ b/sys/ddb/db_access.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_access.h,v 1.8 1999/04/12 20:38:20 pk Exp $ */
+/* $NetBSD: db_access.h,v 1.9 2002/02/15 07:33:49 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -32,8 +32,8 @@
/*
* Data access functions for debugger.
*/
-db_expr_t db_get_value __P((db_addr_t, size_t, boolean_t));
-void db_put_value __P((db_addr_t, size_t, db_expr_t));
+db_expr_t db_get_value(db_addr_t, size_t, boolean_t);
+void db_put_value(db_addr_t, size_t, db_expr_t);
-void db_read_bytes __P((db_addr_t, size_t, char *));
-void db_write_bytes __P((db_addr_t, size_t, char *));
+void db_read_bytes(db_addr_t, size_t, char *);
+void db_write_bytes(db_addr_t, size_t, char *);
diff --git a/sys/ddb/db_aout.c b/sys/ddb/db_aout.c
index f4b2c807a10..60bc732784f 100644
--- a/sys/ddb/db_aout.c
+++ b/sys/ddb/db_aout.c
@@ -1,39 +1,39 @@
-/* $NetBSD: db_aout.c,v 1.32 2001/11/15 09:48:02 lukem Exp $ */
+/* $NetBSD: db_aout.c,v 1.33 2002/02/15 07:33:49 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_aout.c,v 1.32 2001/11/15 09:48:02 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_aout.c,v 1.33 2002/02/15 07:33:49 simonb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
-#include <machine/db_machdep.h> /* data types */
+#include <machine/db_machdep.h>
#include <ddb/db_sym.h>
#include <ddb/db_output.h>
@@ -43,18 +43,17 @@ __KERNEL_RCSID(0, "$NetBSD: db_aout.c,v 1.32 2001/11/15 09:48:02 lukem Exp $");
#include <ddb/db_aout.h>
-boolean_t db_aout_sym_init __P((int, void *, void *, const char *));
-db_sym_t db_aout_lookup __P((db_symtab_t *, char *));
-db_sym_t db_aout_search_symbol __P((db_symtab_t *, db_addr_t,
- db_strategy_t, db_expr_t *));
-void db_aout_symbol_values __P((db_symtab_t *, db_sym_t,
- char **, db_expr_t *));
-boolean_t db_aout_line_at_pc __P((db_symtab_t *, db_sym_t,
- char **, int *, db_expr_t));
-boolean_t db_aout_sym_numargs __P((db_symtab_t *, db_sym_t, int *,
- char **));
-void db_aout_forall __P((db_symtab_t *,
- db_forall_func_t db_forall_func, void *));
+static boolean_t db_aout_sym_init(int, void *, void *, const char *);
+static db_sym_t db_aout_lookup(db_symtab_t *, char *);
+static db_sym_t db_aout_search_symbol(db_symtab_t *, db_addr_t, db_strategy_t,
+ db_expr_t *);
+static void db_aout_symbol_values(db_symtab_t *, db_sym_t, char **,
+ db_expr_t *);
+static boolean_t db_aout_line_at_pc(db_symtab_t *, db_sym_t, char **, int *,
+ db_expr_t);
+static boolean_t db_aout_sym_numargs(db_symtab_t *, db_sym_t, int *, char **);
+static void db_aout_forall(db_symtab_t *, db_forall_func_t db_forall_func,
+ void *);
const db_symformat_t db_symformat_aout = {
"a.out",
@@ -83,14 +82,15 @@ const db_symformat_t db_symformat_aout = {
/*
* Find the symbol table and strings; tell ddb about them.
*/
-boolean_t
-db_aout_sym_init(symsize, vsymtab, vesymtab, name)
- int symsize; /* size of symbol table */
- void *vsymtab; /* pointer to start of symbol table */
- void *vesymtab; /* pointer to end of string table,
+static boolean_t
+db_aout_sym_init(
+ int symsize, /* size of symbol table */
+ void *vsymtab, /* pointer to start of symbol table */
+ void *vesymtab, /* pointer to end of string table,
for checking - rounded up to integer
boundary */
- const char *name;
+ const char *name
+)
{
struct nlist *sym_start, *sym_end;
struct nlist *sp;
@@ -125,24 +125,24 @@ db_aout_sym_init(symsize, vsymtab, vesymtab, name)
(((vaddr_t)(x) + sizeof(vsize_t) - 1) & ~(sizeof(vsize_t) - 1))
if (round_to_size(estrtab) != round_to_size(vesymtab)) {
- printf("[ %s a.out symbol table not valid ]\n", name);
- return (FALSE);
- }
+ printf("[ %s a.out symbol table not valid ]\n", name);
+ return (FALSE);
+ }
#undef round_to_size
-
+
for (sp = sym_start; sp < sym_end; sp++) {
- int strx;
- strx = sp->n_un.n_strx;
- if (strx != 0) {
- if (strx > slen) {
- printf("[ %s has bad a.out string table index (0x%x) ]\n",
- name, strx);
- sp->n_un.n_name = 0;
- bad = 1;
- continue;
+ int strx;
+ strx = sp->n_un.n_strx;
+ if (strx != 0) {
+ if (strx > slen) {
+ printf("[ %s has bad a.out string table "
+ "index (0x%x) ]\n", name, strx);
+ sp->n_un.n_name = 0;
+ bad = 1;
+ continue;
+ }
+ sp->n_un.n_name = strtab + strx;
}
- sp->n_un.n_name = strtab + strx;
- }
}
if (bad)
@@ -150,18 +150,16 @@ db_aout_sym_init(symsize, vsymtab, vesymtab, name)
if (db_add_symbol_table((char *)sym_start, (char *)sym_end, name,
NULL) != -1) {
- printf("[ using %ld bytes of %s a.out symbol table ]\n",
- (long)vesymtab - (long)vsymtab, name);
+ printf("[ using %ld bytes of %s a.out symbol table ]\n",
+ (long)vesymtab - (long)vsymtab, name);
return (TRUE);
- }
-
+ }
+
return (FALSE);
}
-db_sym_t
-db_aout_lookup(stab, symstr)
- db_symtab_t *stab;
- char * symstr;
+static db_sym_t
+db_aout_lookup(db_symtab_t *stab, char *symstr)
{
struct nlist *sp, *ep;
@@ -169,24 +167,19 @@ db_aout_lookup(stab, symstr)
ep = (struct nlist *)stab->end;
for (; sp < ep; sp++) {
- if (sp->n_un.n_name == 0)
- continue;
- if ((sp->n_type & N_STAB) == 0 &&
- sp->n_un.n_name != 0 &&
- db_eqname(sp->n_un.n_name, symstr, '_'))
- {
- return ((db_sym_t)sp);
- }
+ if (sp->n_un.n_name == 0)
+ continue;
+ if ((sp->n_type & N_STAB) == 0 &&
+ sp->n_un.n_name != 0 &&
+ db_eqname(sp->n_un.n_name, symstr, '_'))
+ return ((db_sym_t)sp);
}
return ((db_sym_t)0);
}
-db_sym_t
-db_aout_search_symbol(symtab, off, strategy, diffp)
- db_symtab_t * symtab;
- db_addr_t off;
- db_strategy_t strategy;
- db_expr_t *diffp; /* in/out */
+static db_sym_t
+db_aout_search_symbol(db_symtab_t *symtab, db_addr_t off,
+ db_strategy_t strategy, db_expr_t *diffp)
{
unsigned int diff = *diffp;
struct nlist *symp = 0;
@@ -196,66 +189,58 @@ db_aout_search_symbol(symtab, off, strategy, diffp)
ep = (struct nlist *)symtab->end;
for (; sp < ep; sp++) {
- if (sp->n_un.n_name == 0)
- continue;
- if ((sp->n_type & N_STAB) != 0 || (sp->n_type & N_TYPE) == N_FN)
- continue;
- if (off >= sp->n_value) {
- if (off - sp->n_value < diff) {
- diff = off - sp->n_value;
- symp = sp;
- if (diff == 0 &&
- ((strategy == DB_STGY_PROC &&
- sp->n_type == (N_TEXT|N_EXT)) ||
- (strategy == DB_STGY_ANY &&
- (sp->n_type & N_EXT))))
- break;
- }
- else if (off - sp->n_value == diff) {
- if (symp == 0)
- symp = sp;
- else if ((symp->n_type & N_EXT) == 0 &&
- (sp->n_type & N_EXT) != 0)
- symp = sp; /* pick the external symbol */
+ if (sp->n_un.n_name == 0)
+ continue;
+ if ((sp->n_type & N_STAB) != 0 || (sp->n_type & N_TYPE) == N_FN)
+ continue;
+ if (off >= sp->n_value) {
+ if (off - sp->n_value < diff) {
+ diff = off - sp->n_value;
+ symp = sp;
+ if (diff == 0 &&
+ ((strategy == DB_STGY_PROC &&
+ sp->n_type == (N_TEXT|N_EXT)) ||
+ (strategy == DB_STGY_ANY &&
+ (sp->n_type & N_EXT))))
+ break;
+ }
+ else if (off - sp->n_value == diff) {
+ if (symp == 0)
+ symp = sp;
+ else if ((symp->n_type & N_EXT) == 0 &&
+ (sp->n_type & N_EXT) != 0)
+ /* pick the external symbol */
+ symp = sp;
+ }
}
- }
- }
- if (symp == 0) {
- *diffp = off;
- }
- else {
- *diffp = diff;
}
+ if (symp == 0)
+ *diffp = off;
+ else
+ *diffp = diff;
return ((db_sym_t)symp);
}
/*
* Return the name and value for a symbol.
*/
-void
-db_aout_symbol_values(symtab, sym, namep, valuep)
- db_symtab_t *symtab;
- db_sym_t sym;
- char **namep;
- db_expr_t *valuep;
+static void
+db_aout_symbol_values(db_symtab_t *symtab, db_sym_t sym, char **namep,
+ db_expr_t *valuep)
{
struct nlist *sp;
sp = (struct nlist *)sym;
if (namep)
- *namep = sp->n_un.n_name;
+ *namep = sp->n_un.n_name;
if (valuep)
- *valuep = sp->n_value;
+ *valuep = sp->n_value;
}
-boolean_t
-db_aout_line_at_pc(symtab, cursym, filename, linenum, off)
- db_symtab_t * symtab;
- db_sym_t cursym;
- char **filename;
- int *linenum;
- db_expr_t off;
+static boolean_t
+db_aout_line_at_pc(db_symtab_t *symtab, db_sym_t cursym, char **filename,
+ int *linenum, db_expr_t off)
{
struct nlist *sp, *ep;
unsigned long sodiff = -1UL, lndiff = -1UL, ln = 0;
@@ -270,38 +255,38 @@ db_aout_line_at_pc(symtab, cursym, filename, linenum, off)
for (; sp < ep; sp++) {
- /*
- * Prevent bogus linenumbers in case module not compiled
- * with debugging options
- */
+ /*
+ * Prevent bogus linenumbers in case module not compiled
+ * with debugging options
+ */
#if 0
- if (sp->n_value <= off && (off - sp->n_value) <= sodiff &&
- NEWSRC(sp->n_un.n_name)) {
+ if (sp->n_value <= off && (off - sp->n_value) <= sodiff &&
+ NEWSRC(sp->n_un.n_name)) {
#endif
- if ((sp->n_type & N_TYPE) == N_FN || NEWSRC(sp->n_un.n_name)) {
- sodiff = lndiff = -1UL;
- ln = 0;
- fname = NULL;
- }
-
- if (sp->n_type == N_SO) {
- if (sp->n_value <= off && (off - sp->n_value) < sodiff) {
- sodiff = off - sp->n_value;
- fname = sp->n_un.n_name;
+ if ((sp->n_type & N_TYPE) == N_FN || NEWSRC(sp->n_un.n_name)) {
+ sodiff = lndiff = -1UL;
+ ln = 0;
+ fname = NULL;
+ }
+
+ if (sp->n_type == N_SO) {
+ if (sp->n_value <= off && (off - sp->n_value) < sodiff) {
+ sodiff = off - sp->n_value;
+ fname = sp->n_un.n_name;
+ }
+ continue;
}
- continue;
- }
- if (sp->n_type != N_SLINE)
- continue;
+ if (sp->n_type != N_SLINE)
+ continue;
- if (sp->n_value > off)
- break;
+ if (sp->n_value > off)
+ break;
- if (off - sp->n_value < lndiff) {
- lndiff = off - sp->n_value;
- ln = sp->n_desc;
- }
+ if (off - sp->n_value < lndiff) {
+ lndiff = off - sp->n_value;
+ ln = sp->n_desc;
+ }
}
if (fname != NULL && ln != 0) {
@@ -313,12 +298,9 @@ db_aout_line_at_pc(symtab, cursym, filename, linenum, off)
return (FALSE);
}
-boolean_t
-db_aout_sym_numargs(symtab, cursym, nargp, argnamep)
- db_symtab_t * symtab;
- db_sym_t cursym;
- int *nargp;
- char **argnamep;
+static boolean_t
+db_aout_sym_numargs(db_symtab_t *symtab, db_sym_t cursym, int *nargp,
+ char **argnamep)
{
struct nlist *sp, *ep;
u_long addr;
@@ -332,31 +314,29 @@ db_aout_sym_numargs(symtab, cursym, nargp, argnamep)
ep = (struct nlist *)symtab->end;
for (; sp < ep; sp++) {
- if (sp->n_type == N_FUN && sp->n_value == addr) {
- while (++sp < ep && sp->n_type == N_PSYM) {
- if (nargs >= maxnarg)
- break;
- nargs++;
- *argnamep++ = sp->n_un.n_name?sp->n_un.n_name:"???";
- {
- /* XXX - remove trailers */
- char *cp = *(argnamep-1);
- while (*cp != '\0' && *cp != ':') cp++;
- if (*cp == ':') *cp = '\0';
+ if (sp->n_type == N_FUN && sp->n_value == addr) {
+ while (++sp < ep && sp->n_type == N_PSYM) {
+ if (nargs >= maxnarg)
+ break;
+ nargs++;
+ *argnamep++ = sp->n_un.n_name ?
+ sp->n_un.n_name : "???";
+ {
+ /* XXX - remove trailers */
+ char *cp = *(argnamep-1);
+ while (*cp != '\0' && *cp != ':') cp++;
+ if (*cp == ':') *cp = '\0';
+ }
}
+ *nargp = nargs;
+ return TRUE;
}
- *nargp = nargs;
- return TRUE;
- }
}
return FALSE;
}
-void
-db_aout_forall(stab, db_forall_func, arg)
- db_symtab_t *stab;
- db_forall_func_t db_forall_func;
- void *arg;
+static void
+db_aout_forall(db_symtab_t *stab, db_forall_func_t db_forall_func, void *arg)
{
static char suffix[2];
struct nlist *sp, *ep;
@@ -365,35 +345,33 @@ db_aout_forall(stab, db_forall_func, arg)
ep = (struct nlist *)stab->end;
for (; sp < ep; sp++) {
- if (sp->n_un.n_name == 0)
- continue;
- if ((sp->n_type & N_STAB) == 0 && sp->n_un.n_name != 0) {
- suffix[1] = '\0';
- switch(sp->n_type & N_TYPE) {
- case N_ABS:
- suffix[0] = '@';
- break;
- case N_TEXT:
- suffix[0] = '*';
- break;
- case N_DATA:
- suffix[0] = '+';
- break;
- case N_BSS:
- suffix[0] = '-';
- break;
- case N_FN:
- suffix[0] = '/';
- break;
- default:
- suffix[0] = '\0';
- }
- (*db_forall_func)(stab, (db_sym_t)sp, sp->n_un.n_name,
- suffix, '_', arg);
- }
+ if (sp->n_un.n_name == 0)
+ continue;
+ if ((sp->n_type & N_STAB) == 0 && sp->n_un.n_name != 0) {
+ suffix[1] = '\0';
+ switch(sp->n_type & N_TYPE) {
+ case N_ABS:
+ suffix[0] = '@';
+ break;
+ case N_TEXT:
+ suffix[0] = '*';
+ break;
+ case N_DATA:
+ suffix[0] = '+';
+ break;
+ case N_BSS:
+ suffix[0] = '-';
+ break;
+ case N_FN:
+ suffix[0] = '/';
+ break;
+ default:
+ suffix[0] = '\0';
+ }
+ (*db_forall_func)(stab, (db_sym_t)sp, sp->n_un.n_name,
+ suffix, '_', arg);
+ }
}
return;
}
-
-
#endif /* DB_AOUT_SYMBOLS */
diff --git a/sys/ddb/db_break.c b/sys/ddb/db_break.c
index 5802c070f36..ae69038bd08 100644
--- a/sys/ddb/db_break.c
+++ b/sys/ddb/db_break.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_break.c,v 1.16 2001/11/12 22:54:04 lukem Exp $ */
+/* $NetBSD: db_break.c,v 1.17 2002/02/15 07:33:49 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_break.c,v 1.16 2001/11/12 22:54:04 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_break.c,v 1.17 2002/02/15 07:33:49 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -48,23 +48,30 @@ __KERNEL_RCSID(0, "$NetBSD: db_break.c,v 1.16 2001/11/12 22:54:04 lukem Exp $");
#include <ddb/db_output.h>
#define NBREAKPOINTS 100
-struct db_breakpoint db_break_table[NBREAKPOINTS];
-db_breakpoint_t db_next_free_breakpoint = &db_break_table[0];
-db_breakpoint_t db_free_breakpoints = 0;
-db_breakpoint_t db_breakpoint_list = 0;
-
-db_breakpoint_t
-db_breakpoint_alloc()
+static struct db_breakpoint db_break_table[NBREAKPOINTS];
+static db_breakpoint_t db_next_free_breakpoint = &db_break_table[0];
+static db_breakpoint_t db_free_breakpoints = 0;
+static db_breakpoint_t db_breakpoint_list = 0;
+
+static db_breakpoint_t db_breakpoint_alloc(void);
+static void db_breakpoint_free(db_breakpoint_t);
+static void db_delete_breakpoint(struct vm_map *, db_addr_t);
+static db_breakpoint_t db_find_breakpoint(struct vm_map *, db_addr_t);
+static void db_list_breakpoints(void);
+static void db_set_breakpoint(struct vm_map *, db_addr_t, int);
+
+static db_breakpoint_t
+db_breakpoint_alloc(void)
{
db_breakpoint_t bkpt;
if ((bkpt = db_free_breakpoints) != 0) {
- db_free_breakpoints = bkpt->link;
- return (bkpt);
+ db_free_breakpoints = bkpt->link;
+ return (bkpt);
}
if (db_next_free_breakpoint == &db_break_table[NBREAKPOINTS]) {
- db_printf("All breakpoints used.\n");
- return (0);
+ db_printf("All breakpoints used.\n");
+ return (0);
}
bkpt = db_next_free_breakpoint;
db_next_free_breakpoint++;
@@ -72,31 +79,27 @@ db_breakpoint_alloc()
return (bkpt);
}
-void
-db_breakpoint_free(bkpt)
- db_breakpoint_t bkpt;
+static void
+db_breakpoint_free(db_breakpoint_t bkpt)
{
bkpt->link = db_free_breakpoints;
db_free_breakpoints = bkpt;
}
void
-db_set_breakpoint(map, addr, count)
- struct vm_map *map;
- db_addr_t addr;
- int count;
+db_set_breakpoint(struct vm_map *map, db_addr_t addr, int count)
{
db_breakpoint_t bkpt;
if (db_find_breakpoint(map, addr)) {
- db_printf("Already set.\n");
- return;
+ db_printf("Already set.\n");
+ return;
}
bkpt = db_breakpoint_alloc();
if (bkpt == 0) {
- db_printf("Too many breakpoints.\n");
- return;
+ db_printf("Too many breakpoints.\n");
+ return;
}
bkpt->map = map;
@@ -109,10 +112,8 @@ db_set_breakpoint(map, addr, count)
db_breakpoint_list = bkpt;
}
-void
-db_delete_breakpoint(map, addr)
- struct vm_map *map;
- db_addr_t addr;
+static void
+db_delete_breakpoint(struct vm_map *map, db_addr_t addr)
{
db_breakpoint_t bkpt;
db_breakpoint_t *prev;
@@ -120,83 +121,77 @@ db_delete_breakpoint(map, addr)
for (prev = &db_breakpoint_list;
(bkpt = *prev) != 0;
prev = &bkpt->link) {
- if (db_map_equal(bkpt->map, map) &&
- (bkpt->address == addr)) {
- *prev = bkpt->link;
- break;
- }
+ if (db_map_equal(bkpt->map, map) &&
+ (bkpt->address == addr)) {
+ *prev = bkpt->link;
+ break;
+ }
}
if (bkpt == 0) {
- db_printf("Not set.\n");
- return;
+ db_printf("Not set.\n");
+ return;
}
db_breakpoint_free(bkpt);
}
db_breakpoint_t
-db_find_breakpoint(map, addr)
- struct vm_map *map;
- db_addr_t addr;
+db_find_breakpoint(struct vm_map *map, db_addr_t addr)
{
db_breakpoint_t bkpt;
for (bkpt = db_breakpoint_list;
bkpt != 0;
bkpt = bkpt->link)
- {
- if (db_map_equal(bkpt->map, map) &&
- (bkpt->address == addr))
- return (bkpt);
- }
+ if (db_map_equal(bkpt->map, map) &&
+ (bkpt->address == addr))
+ return (bkpt);
+
return (0);
}
db_breakpoint_t
-db_find_breakpoint_here(addr)
- db_addr_t addr;
+db_find_breakpoint_here(db_addr_t addr)
{
- return db_find_breakpoint(db_map_addr(addr), addr);
+ return db_find_breakpoint(db_map_addr(addr), addr);
}
-boolean_t db_breakpoints_inserted = TRUE;
+static boolean_t db_breakpoints_inserted = TRUE;
void
-db_set_breakpoints()
+db_set_breakpoints(void)
{
db_breakpoint_t bkpt;
if (!db_breakpoints_inserted) {
- for (bkpt = db_breakpoint_list;
- bkpt != 0;
- bkpt = bkpt->link)
- if (db_map_current(bkpt->map)) {
- bkpt->bkpt_inst = db_get_value(bkpt->address,
- BKPT_SIZE,
- FALSE);
- db_put_value(bkpt->address,
- BKPT_SIZE,
- BKPT_SET(bkpt->bkpt_inst));
- }
- db_breakpoints_inserted = TRUE;
+ for (bkpt = db_breakpoint_list;
+ bkpt != 0;
+ bkpt = bkpt->link)
+ if (db_map_current(bkpt->map)) {
+ bkpt->bkpt_inst = db_get_value(bkpt->address,
+ BKPT_SIZE, FALSE);
+ db_put_value(bkpt->address,
+ BKPT_SIZE, BKPT_SET(bkpt->bkpt_inst));
+ }
+ db_breakpoints_inserted = TRUE;
}
}
void
-db_clear_breakpoints()
+db_clear_breakpoints(void)
{
db_breakpoint_t bkpt;
if (db_breakpoints_inserted) {
- for (bkpt = db_breakpoint_list;
- bkpt != 0;
- bkpt = bkpt->link)
- if (db_map_current(bkpt->map)) {
- db_put_value(bkpt->address, BKPT_SIZE, bkpt->bkpt_inst);
- }
- db_breakpoints_inserted = FALSE;
+ for (bkpt = db_breakpoint_list;
+ bkpt != 0;
+ bkpt = bkpt->link)
+ if (db_map_current(bkpt->map))
+ db_put_value(bkpt->address, BKPT_SIZE,
+ bkpt->bkpt_inst);
+ db_breakpoints_inserted = FALSE;
}
}
@@ -204,51 +199,44 @@ db_clear_breakpoints()
* List breakpoints.
*/
void
-db_list_breakpoints()
+db_list_breakpoints(void)
{
db_breakpoint_t bkpt;
if (db_breakpoint_list == 0) {
- db_printf("No breakpoints set\n");
- return;
+ db_printf("No breakpoints set\n");
+ return;
}
db_printf(" Map Count Address\n");
for (bkpt = db_breakpoint_list;
bkpt != 0;
- bkpt = bkpt->link)
- {
- db_printf("%s%p %5d ",
- db_map_current(bkpt->map) ? "*" : " ",
- bkpt->map, bkpt->init_count);
- db_printsym(bkpt->address, DB_STGY_PROC, db_printf);
- db_printf("\n");
+ bkpt = bkpt->link) {
+ db_printf("%s%p %5d ",
+ db_map_current(bkpt->map) ? "*" : " ",
+ bkpt->map, bkpt->init_count);
+ db_printsym(bkpt->address, DB_STGY_PROC, db_printf);
+ db_printf("\n");
}
}
/* Delete breakpoint */
/*ARGSUSED*/
void
-db_delete_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_delete_cmd(db_expr_t addr, int have_addr, db_expr_t count, char * modif)
{
+
db_delete_breakpoint(db_map_addr(addr), (db_addr_t)addr);
}
/* Set breakpoint with skip count */
/*ARGSUSED*/
void
-db_breakpoint_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_breakpoint_cmd(db_expr_t addr, int have_addr, db_expr_t count, char * modif)
{
+
if (count == -1)
- count = 1;
+ count = 1;
db_set_breakpoint(db_map_addr(addr), (db_addr_t)addr, count);
}
@@ -256,12 +244,9 @@ db_breakpoint_cmd(addr, have_addr, count, modif)
/* list breakpoints */
/*ARGSUSED*/
void
-db_listbreak_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_listbreak_cmd(db_expr_t addr, int have_addr, db_expr_t count, char * modif)
{
+
db_list_breakpoints();
}
@@ -274,18 +259,16 @@ db_listbreak_cmd(addr, have_addr, count, modif)
*/
boolean_t
-db_map_equal(map1, map2)
- struct vm_map *map1;
- struct vm_map *map2;
+db_map_equal(struct vm_map *map1, struct vm_map *map2)
{
+
return ((map1 == map2) ||
((map1 == NULL) && (map2 == kernel_map)) ||
((map1 == kernel_map) && (map2 == NULL)));
}
boolean_t
-db_map_current(map)
- struct vm_map *map;
+db_map_current(struct vm_map *map)
{
#if 0
thread_t thread;
@@ -295,13 +278,13 @@ db_map_current(map)
(((thread = current_thread()) != NULL) &&
(map == thread->task->map)));
#else
+
return (1);
#endif
}
struct vm_map *
-db_map_addr(addr)
- vaddr_t addr;
+db_map_addr(vaddr_t addr)
{
#if 0
thread_t thread;
@@ -312,11 +295,10 @@ db_map_addr(addr)
* kernel tasks with their own maps.
*/
- if ((VM_MIN_ADDRESS <= addr) &&
- (addr < VM_MAX_ADDRESS) &&
+ if ((VM_MIN_ADDRESS <= addr) && (addr < VM_MAX_ADDRESS) &&
((thread = current_thread()) != NULL))
- return thread->task->map;
+ return thread->task->map;
else
#endif
- return kernel_map;
+ return kernel_map;
}
diff --git a/sys/ddb/db_break.h b/sys/ddb/db_break.h
index fe97e09f3cd..106f5b07d41 100644
--- a/sys/ddb/db_break.h
+++ b/sys/ddb/db_break.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_break.h,v 1.15 2001/06/02 18:09:25 chs Exp $ */
+/* $NetBSD: db_break.h,v 1.16 2002/02/15 07:33:49 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -49,20 +49,14 @@ typedef struct db_breakpoint {
struct db_breakpoint *link; /* link in in-use or free chain */
} *db_breakpoint_t;
-db_breakpoint_t db_breakpoint_alloc __P((void));
-void db_breakpoint_free __P((db_breakpoint_t));
-void db_set_breakpoint __P((struct vm_map *, db_addr_t, int));
-void db_delete_breakpoint __P((struct vm_map *, db_addr_t));
-db_breakpoint_t db_find_breakpoint __P((struct vm_map *, db_addr_t));
-db_breakpoint_t db_find_breakpoint_here __P((db_addr_t));
-void db_set_breakpoints __P((void));
-void db_clear_breakpoints __P((void));
-void db_list_breakpoints __P((void));
-void db_delete_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_breakpoint_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_listbreak_cmd __P((db_expr_t, int, db_expr_t, char *));
-boolean_t db_map_equal __P((struct vm_map *, struct vm_map *));
-boolean_t db_map_current __P((struct vm_map *));
-struct vm_map *db_map_addr __P((vaddr_t));
+db_breakpoint_t db_find_breakpoint_here(db_addr_t);
+void db_set_breakpoints(void);
+void db_clear_breakpoints(void);
+void db_delete_cmd(db_expr_t, int, db_expr_t, char *);
+void db_breakpoint_cmd(db_expr_t, int, db_expr_t, char *);
+void db_listbreak_cmd(db_expr_t, int, db_expr_t, char *);
+boolean_t db_map_equal(struct vm_map *, struct vm_map *);
+boolean_t db_map_current(struct vm_map *);
+struct vm_map *db_map_addr(vaddr_t);
#endif /* _DDB_DB_BREAK_H_ */
diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c
index 77f039beab8..43a3cb9fa90 100644
--- a/sys/ddb/db_command.c
+++ b/sys/ddb/db_command.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_command.c,v 1.63 2001/11/12 22:54:04 lukem Exp $ */
+/* $NetBSD: db_command.c,v 1.64 2002/02/15 07:33:50 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.63 2001/11/12 22:54:04 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.64 2002/02/15 07:33:50 simonb Exp $");
#include "opt_ddb.h"
#include "opt_inet.h"
@@ -71,83 +71,222 @@ __KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.63 2001/11/12 22:54:04 lukem Exp $"
#include "arp.h"
/*
+ * Results of command search.
+ */
+#define CMD_UNIQUE 0
+#define CMD_FOUND 1
+#define CMD_NONE 2
+#define CMD_AMBIGUOUS 3
+#define CMD_HELP 4
+
+/*
* Exported global variables
*/
boolean_t db_cmd_loop_done;
label_t *db_recover;
+db_addr_t db_dot;
+db_addr_t db_last_addr;
+db_addr_t db_prev;
+db_addr_t db_next;
/*
* if 'ed' style: 'dot' is set at start of last item printed,
* and '+' points to next line.
* Otherwise: 'dot' points to next item, '..' points to last.
*/
-boolean_t db_ed_style = TRUE;
+static boolean_t db_ed_style = TRUE;
+
+static int db_cmd_search(const char *, const struct db_command *,
+ const struct db_command **);
+static void db_cmd_list(const struct db_command *);
+static void db_command(const struct db_command **,
+ const struct db_command *);
+static void db_map_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_malloc_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_object_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_page_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_buf_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_vnode_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_pool_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_namecache_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_uvmexp_print_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_fncall(db_expr_t, int, db_expr_t, char *);
+static void db_reboot_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_sifting_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_stack_trace_cmd(db_expr_t, int, db_expr_t, char *);
+static void db_sync_cmd(db_expr_t, int, db_expr_t, char *);
+
+/*
+ * 'show' commands
+ */
+
+static const struct db_command db_show_all_cmds[] = {
+ { "callout", db_show_callout, 0, NULL },
+ { "procs", db_show_all_procs, 0, NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+static const struct db_command db_show_cmds[] = {
+ { "all", NULL, 0, db_show_all_cmds },
+#if defined(INET) && (NARP > 0)
+ { "arptab", db_show_arptab, 0, NULL },
+#endif
+ { "breaks", db_listbreak_cmd, 0, NULL },
+ { "buf", db_buf_print_cmd, 0, NULL },
+ { "map", db_map_print_cmd, 0, NULL },
+ { "ncache", db_namecache_print_cmd, 0, NULL },
+ { "object", db_object_print_cmd, 0, NULL },
+ { "page", db_page_print_cmd, 0, NULL },
+ { "pool", db_pool_print_cmd, 0, NULL },
+ { "registers", db_show_regs, 0, NULL },
+ { "uvmexp", db_uvmexp_print_cmd, 0, NULL },
+ { "vnode", db_vnode_print_cmd, 0, NULL },
+ { "watches", db_listwatch_cmd, 0, NULL },
+ { "malloc", db_malloc_print_cmd, 0, NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+static const struct db_command db_command_table[] = {
+ { "break", db_breakpoint_cmd, 0, NULL },
+ { "c", db_continue_cmd, 0, NULL },
+ { "call", db_fncall, CS_OWN, NULL },
+ { "callout", db_show_callout, 0, NULL },
+ { "continue", db_continue_cmd, 0, NULL },
+ { "d", db_delete_cmd, 0, NULL },
+ { "delete", db_delete_cmd, 0, NULL },
+ { "dmesg", db_dmesg, 0, NULL },
+ { "dwatch", db_deletewatch_cmd, 0, NULL },
+ { "examine", db_examine_cmd, CS_SET_DOT, NULL },
+ { "kill", db_kill_proc, CS_OWN, NULL },
+#ifdef DB_MACHINE_COMMANDS
+ { "machine", NULL, 0, db_machine_command_table },
+#endif
+ { "match", db_trace_until_matching_cmd,0, NULL },
+ { "next", db_trace_until_matching_cmd,0, NULL },
+ { "p", db_print_cmd, 0, NULL },
+ { "print", db_print_cmd, 0, NULL },
+ { "ps", db_show_all_procs, 0, NULL },
+ { "reboot", db_reboot_cmd, CS_OWN, NULL },
+ { "s", db_single_step_cmd, 0, NULL },
+ { "search", db_search_cmd, CS_OWN|CS_SET_DOT, NULL },
+ { "set", db_set_cmd, CS_OWN, NULL },
+ { "show", NULL, 0, db_show_cmds },
+ { "sifting", db_sifting_cmd, CS_OWN, NULL },
+ { "step", db_single_step_cmd, 0, NULL },
+ { "sync", db_sync_cmd, CS_OWN, NULL },
+ { "trace", db_stack_trace_cmd, 0, NULL },
+ { "until", db_trace_until_call_cmd,0, NULL },
+ { "w", db_write_cmd, CS_MORE|CS_SET_DOT, NULL },
+ { "watch", db_watchpoint_cmd, CS_MORE, NULL },
+ { "write", db_write_cmd, CS_MORE|CS_SET_DOT, NULL },
+ { "x", db_examine_cmd, CS_SET_DOT, NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+static const struct db_command *db_last_command = NULL;
/*
* Utility routine - discard tokens through end-of-line.
*/
void
-db_skip_to_eol()
+db_skip_to_eol(void)
{
- int t;
+ int t;
+
do {
- t = db_read_token();
+ t = db_read_token();
} while (t != tEOL);
}
-/*
- * Results of command search.
- */
-#define CMD_UNIQUE 0
-#define CMD_FOUND 1
-#define CMD_NONE 2
-#define CMD_AMBIGUOUS 3
-#define CMD_HELP 4
+void
+db_error(s)
+ char *s;
+{
+
+ if (s)
+ db_printf("%s", s);
+ db_flush_lex();
+ longjmp(db_recover);
+}
+
+void
+db_command_loop(void)
+{
+ label_t db_jmpbuf;
+ label_t *savejmp;
+
+ /*
+ * Initialize 'prev' and 'next' to dot.
+ */
+ db_prev = db_dot;
+ db_next = db_dot;
+
+ db_cmd_loop_done = 0;
+
+ savejmp = db_recover;
+ db_recover = &db_jmpbuf;
+ (void) setjmp(&db_jmpbuf);
+
+ while (!db_cmd_loop_done) {
+ if (db_print_position() != 0)
+ db_printf("\n");
+ db_output_line = 0;
+
+
+#ifdef MULTIPROCESSOR
+ db_printf("db{%ld}> ", (long)cpu_number());
+#else
+ db_printf("db> ");
+#endif
+ (void) db_read_line();
+
+ db_command(&db_last_command, db_command_table);
+ }
+
+ db_recover = savejmp;
+}
/*
* Search for command prefix.
*/
-int
-db_cmd_search(name, table, cmdp)
- const char *name;
- const struct db_command *table;
- const struct db_command **cmdp; /* out */
+static int
+db_cmd_search(const char *name, const struct db_command *table,
+ const struct db_command **cmdp)
{
const struct db_command *cmd;
int result = CMD_NONE;
for (cmd = table; cmd->name != 0; cmd++) {
- const char *lp;
- const char *rp;
- int c;
-
- lp = name;
- rp = cmd->name;
- while ((c = *lp) == *rp) {
- if (c == 0) {
- /* complete match */
- *cmdp = cmd;
- return (CMD_UNIQUE);
- }
- lp++;
- rp++;
- }
- if (c == 0) {
- /* end of name, not end of command -
- partial match */
- if (result == CMD_FOUND) {
- result = CMD_AMBIGUOUS;
- /* but keep looking for a full match -
- this lets us match single letters */
+ const char *lp;
+ const char *rp;
+ int c;
+
+ lp = name;
+ rp = cmd->name;
+ while ((c = *lp) == *rp) {
+ if (c == 0) {
+ /* complete match */
+ *cmdp = cmd;
+ return (CMD_UNIQUE);
+ }
+ lp++;
+ rp++;
}
- else {
- *cmdp = cmd;
- result = CMD_FOUND;
+ if (c == 0) {
+ /* end of name, not end of command -
+ partial match */
+ if (result == CMD_FOUND) {
+ result = CMD_AMBIGUOUS;
+ /* but keep looking for a full match -
+ this lets us match single letters */
+ } else {
+ *cmdp = cmd;
+ result = CMD_FOUND;
+ }
}
- }
}
if (result == CMD_NONE) {
- /* check for 'help' */
+ /* check for 'help' */
if (name[0] == 'h' && name[1] == 'e'
&& name[2] == 'l' && name[3] == 'p')
result = CMD_HELP;
@@ -155,9 +294,8 @@ db_cmd_search(name, table, cmdp)
return (result);
}
-void
-db_cmd_list(table)
- const struct db_command *table;
+static void
+db_cmd_list(const struct db_command *table)
{
int i, j, w, columns, lines, width=0, items, numcmds;
const char *p;
@@ -192,10 +330,9 @@ db_cmd_list(table)
}
}
-void
-db_command(last_cmdp, cmd_table)
- const struct db_command **last_cmdp; /* IN_OUT */
- const struct db_command *cmd_table;
+static void
+db_command(const struct db_command **last_cmdp,
+ const struct db_command *cmd_table)
{
const struct db_command *cmd;
int t;
@@ -204,174 +341,156 @@ db_command(last_cmdp, cmd_table)
boolean_t have_addr = FALSE;
int result;
- static db_expr_t last_count = 0;
+ static db_expr_t last_count = 0;
t = db_read_token();
if ((t == tEOL) || (t == tCOMMA)) {
- /*
- * An empty line repeats last command, at 'next'.
- * Only a count repeats the last command with the new count.
- */
- cmd = *last_cmdp;
- addr = (db_expr_t)db_next;
- if (t == tCOMMA) {
- if (!db_expression(&count)) {
- db_printf("Count missing\n");
- db_flush_lex();
- return;
- }
- } else
- count = last_count;
- have_addr = FALSE;
- modif[0] = '\0';
- db_skip_to_eol();
- }
- else if (t == tEXCL) {
- db_fncall(0, 0, 0, NULL);
- return;
- }
- else if (t != tIDENT) {
- db_printf("?\n");
- db_flush_lex();
- return;
- }
- else {
- /*
- * Search for command
- */
- while (cmd_table) {
- result = db_cmd_search(db_tok_string,
- cmd_table,
- &cmd);
- switch (result) {
- case CMD_NONE:
- db_printf("No such command\n");
- db_flush_lex();
- return;
- case CMD_AMBIGUOUS:
- db_printf("Ambiguous\n");
- db_flush_lex();
- return;
- case CMD_HELP:
- db_cmd_list(cmd_table);
- db_flush_lex();
- return;
- default:
- break;
- }
- if ((cmd_table = cmd->more) != 0) {
- t = db_read_token();
- if (t != tIDENT) {
- db_cmd_list(cmd_table);
- db_flush_lex();
- return;
- }
- }
- }
-
- if ((cmd->flag & CS_OWN) == 0) {
/*
- * Standard syntax:
- * command [/modifier] [addr] [,count]
+ * An empty line repeats last command, at 'next'.
+ * Only a count repeats the last command with the new count.
*/
- t = db_read_token();
- if (t == tSLASH) {
- t = db_read_token();
- if (t != tIDENT) {
- db_printf("Bad modifier\n");
- db_flush_lex();
- return;
- }
- db_strcpy(modif, db_tok_string);
- }
- else {
- db_unread_token(t);
- modif[0] = '\0';
- }
-
- if (db_expression(&addr)) {
- db_dot = (db_addr_t) addr;
- db_last_addr = db_dot;
- have_addr = TRUE;
- }
- else {
- addr = (db_expr_t) db_dot;
- have_addr = FALSE;
- }
- t = db_read_token();
+ cmd = *last_cmdp;
+ addr = (db_expr_t)db_next;
if (t == tCOMMA) {
- if (!db_expression(&count)) {
- db_printf("Count missing\n");
- db_flush_lex();
- return;
- }
- }
- else {
- db_unread_token(t);
- count = -1;
+ if (!db_expression(&count)) {
+ db_printf("Count missing\n");
+ db_flush_lex();
+ return;
+ }
+ } else
+ count = last_count;
+ have_addr = FALSE;
+ modif[0] = '\0';
+ db_skip_to_eol();
+ } else if (t == tEXCL) {
+ db_fncall(0, 0, 0, NULL);
+ return;
+ } else if (t != tIDENT) {
+ db_printf("?\n");
+ db_flush_lex();
+ return;
+ } else {
+ /*
+ * Search for command
+ */
+ while (cmd_table) {
+ result = db_cmd_search(db_tok_string, cmd_table, &cmd);
+ switch (result) {
+ case CMD_NONE:
+ db_printf("No such command\n");
+ db_flush_lex();
+ return;
+ case CMD_AMBIGUOUS:
+ db_printf("Ambiguous\n");
+ db_flush_lex();
+ return;
+ case CMD_HELP:
+ db_cmd_list(cmd_table);
+ db_flush_lex();
+ return;
+ default:
+ break;
+ }
+ if ((cmd_table = cmd->more) != 0) {
+ t = db_read_token();
+ if (t != tIDENT) {
+ db_cmd_list(cmd_table);
+ db_flush_lex();
+ return;
+ }
+ }
}
- if ((cmd->flag & CS_MORE) == 0) {
- db_skip_to_eol();
+
+ if ((cmd->flag & CS_OWN) == 0) {
+ /*
+ * Standard syntax:
+ * command [/modifier] [addr] [,count]
+ */
+ t = db_read_token();
+ if (t == tSLASH) {
+ t = db_read_token();
+ if (t != tIDENT) {
+ db_printf("Bad modifier\n");
+ db_flush_lex();
+ return;
+ }
+ db_strcpy(modif, db_tok_string);
+ } else {
+ db_unread_token(t);
+ modif[0] = '\0';
+ }
+
+ if (db_expression(&addr)) {
+ db_dot = (db_addr_t) addr;
+ db_last_addr = db_dot;
+ have_addr = TRUE;
+ } else {
+ addr = (db_expr_t) db_dot;
+ have_addr = FALSE;
+ }
+ t = db_read_token();
+ if (t == tCOMMA) {
+ if (!db_expression(&count)) {
+ db_printf("Count missing\n");
+ db_flush_lex();
+ return;
+ }
+ } else {
+ db_unread_token(t);
+ count = -1;
+ }
+ if ((cmd->flag & CS_MORE) == 0) {
+ db_skip_to_eol();
+ }
}
- }
}
*last_cmdp = cmd;
last_count = count;
if (cmd != 0) {
- /*
- * Execute the command.
- */
- (*cmd->fcn)(addr, have_addr, count, modif);
-
- if (cmd->flag & CS_SET_DOT) {
/*
- * If command changes dot, set dot to
- * previous address displayed (if 'ed' style).
+ * Execute the command.
*/
- if (db_ed_style) {
- db_dot = db_prev;
- }
- else {
- db_dot = db_next;
+ (*cmd->fcn)(addr, have_addr, count, modif);
+
+ if (cmd->flag & CS_SET_DOT) {
+ /*
+ * If command changes dot, set dot to
+ * previous address displayed (if 'ed' style).
+ */
+ if (db_ed_style)
+ db_dot = db_prev;
+ else
+ db_dot = db_next;
+ } else {
+ /*
+ * If command does not change dot,
+ * set 'next' location to be the same.
+ */
+ db_next = db_dot;
}
- }
- else {
- /*
- * If command does not change dot,
- * set 'next' location to be the same.
- */
- db_next = db_dot;
- }
}
}
/*ARGSUSED*/
-void
-db_map_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_map_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- boolean_t full = FALSE;
-
- if (modif[0] == 'f')
- full = TRUE;
+ boolean_t full = FALSE;
+
+ if (modif[0] == 'f')
+ full = TRUE;
if (have_addr == FALSE)
addr = (db_expr_t) kernel_map;
- uvm_map_printit((struct vm_map *) addr, full, db_printf);
+ uvm_map_printit((struct vm_map *) addr, full, db_printf);
}
/*ARGSUSED*/
-void
-db_malloc_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_malloc_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
#ifdef MALLOC_DEBUG
if (!have_addr)
addr = 0;
@@ -383,47 +502,35 @@ db_malloc_print_cmd(addr, have_addr, count, modif)
}
/*ARGSUSED*/
-void
-db_object_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_object_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- boolean_t full = FALSE;
-
- if (modif[0] == 'f')
- full = TRUE;
+ boolean_t full = FALSE;
+
+ if (modif[0] == 'f')
+ full = TRUE;
uvm_object_printit((struct uvm_object *) addr, full, db_printf);
}
/*ARGSUSED*/
-void
-db_page_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_page_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- boolean_t full = FALSE;
-
- if (modif[0] == 'f')
- full = TRUE;
+ boolean_t full = FALSE;
+
+ if (modif[0] == 'f')
+ full = TRUE;
uvm_page_printit((struct vm_page *) addr, full, db_printf);
}
/*ARGSUSED*/
-void
-db_buf_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_buf_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
boolean_t full = FALSE;
-
+
if (modif[0] == 'f')
full = TRUE;
@@ -431,15 +538,11 @@ db_buf_print_cmd(addr, have_addr, count, modif)
}
/*ARGSUSED*/
-void
-db_vnode_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_vnode_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
boolean_t full = FALSE;
-
+
if (modif[0] == 'f')
full = TRUE;
@@ -447,212 +550,82 @@ db_vnode_print_cmd(addr, have_addr, count, modif)
}
/*ARGSUSED*/
-void
-db_pool_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_pool_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
pool_printit((struct pool *)addr, modif, db_printf);
}
/*ARGSUSED*/
-void
-db_namecache_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_namecache_print_cmd(db_expr_t addr, int have_addr, db_expr_t count,
+ char *modif)
{
+
namecache_print((struct vnode *)addr, db_printf);
}
/*ARGSUSED*/
-void
-db_uvmexp_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
-{
- uvmexp_print(db_printf);
-}
-
-/*
- * 'show' commands
- */
-
-static const struct db_command db_show_all_cmds[] = {
- { "callout", db_show_callout, 0, NULL },
- { "procs", db_show_all_procs, 0, NULL },
- { NULL, NULL, 0, NULL }
-};
-
-static const struct db_command db_show_cmds[] = {
- { "all", NULL, 0, db_show_all_cmds },
-#if defined(INET) && (NARP > 0)
- { "arptab", db_show_arptab, 0, NULL },
-#endif
- { "breaks", db_listbreak_cmd, 0, NULL },
- { "buf", db_buf_print_cmd, 0, NULL },
- { "map", db_map_print_cmd, 0, NULL },
- { "ncache", db_namecache_print_cmd, 0, NULL },
- { "object", db_object_print_cmd, 0, NULL },
- { "page", db_page_print_cmd, 0, NULL },
- { "pool", db_pool_print_cmd, 0, NULL },
- { "registers", db_show_regs, 0, NULL },
- { "uvmexp", db_uvmexp_print_cmd, 0, NULL },
- { "vnode", db_vnode_print_cmd, 0, NULL },
- { "watches", db_listwatch_cmd, 0, NULL },
- { "malloc", db_malloc_print_cmd, 0, NULL },
- { NULL, NULL, 0, NULL }
-};
-
-static const struct db_command db_command_table[] = {
- { "break", db_breakpoint_cmd, 0, NULL },
- { "c", db_continue_cmd, 0, NULL },
- { "call", db_fncall, CS_OWN, NULL },
- { "callout", db_show_callout, 0, NULL },
- { "continue", db_continue_cmd, 0, NULL },
- { "d", db_delete_cmd, 0, NULL },
- { "delete", db_delete_cmd, 0, NULL },
- { "dmesg", db_dmesg, 0, NULL },
- { "dwatch", db_deletewatch_cmd, 0, NULL },
- { "examine", db_examine_cmd, CS_SET_DOT, NULL },
- { "kill", db_kill_proc, CS_OWN, NULL },
-#ifdef DB_MACHINE_COMMANDS
- { "machine", NULL, 0, db_machine_command_table },
-#endif
- { "match", db_trace_until_matching_cmd,0, NULL },
- { "next", db_trace_until_matching_cmd,0, NULL },
- { "p", db_print_cmd, 0, NULL },
- { "print", db_print_cmd, 0, NULL },
- { "ps", db_show_all_procs, 0, NULL },
- { "reboot", db_reboot_cmd, CS_OWN, NULL },
- { "s", db_single_step_cmd, 0, NULL },
- { "search", db_search_cmd, CS_OWN|CS_SET_DOT, NULL },
- { "set", db_set_cmd, CS_OWN, NULL },
- { "show", NULL, 0, db_show_cmds },
- { "sifting", db_sifting_cmd, CS_OWN, NULL },
- { "step", db_single_step_cmd, 0, NULL },
- { "sync", db_sync_cmd, CS_OWN, NULL },
- { "trace", db_stack_trace_cmd, 0, NULL },
- { "until", db_trace_until_call_cmd,0, NULL },
- { "w", db_write_cmd, CS_MORE|CS_SET_DOT, NULL },
- { "watch", db_watchpoint_cmd, CS_MORE, NULL },
- { "write", db_write_cmd, CS_MORE|CS_SET_DOT, NULL },
- { "x", db_examine_cmd, CS_SET_DOT, NULL },
- { NULL, NULL, 0, NULL }
-};
-
-const struct db_command *db_last_command = NULL;
-
-void
-db_command_loop()
+static void
+db_uvmexp_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- label_t db_jmpbuf;
- label_t *savejmp;
- extern int db_output_line;
-
- /*
- * Initialize 'prev' and 'next' to dot.
- */
- db_prev = db_dot;
- db_next = db_dot;
-
- db_cmd_loop_done = 0;
-
- savejmp = db_recover;
- db_recover = &db_jmpbuf;
- (void) setjmp(&db_jmpbuf);
-
- while (!db_cmd_loop_done) {
- if (db_print_position() != 0)
- db_printf("\n");
- db_output_line = 0;
-
-
-#ifdef MULTIPROCESSOR
- db_printf("db{%ld}> ", (long)cpu_number());
-#else
- db_printf("db> ");
-#endif
- (void) db_read_line();
- db_command(&db_last_command, db_command_table);
- }
-
- db_recover = savejmp;
-}
-
-void
-db_error(s)
- char *s;
-{
- if (s)
- db_printf("%s", s);
- db_flush_lex();
- longjmp(db_recover);
+ uvmexp_print(db_printf);
}
-
/*
* Call random function:
* !expr(arg,arg,arg)
*/
/*ARGSUSED*/
-void
-db_fncall(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_fncall(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
db_expr_t fn_addr;
#define MAXARGS 11
db_expr_t args[MAXARGS];
int nargs = 0;
db_expr_t retval;
- db_expr_t (*func) __P((db_expr_t, ...));
+ db_expr_t (*func)(db_expr_t, ...);
int t;
if (!db_expression(&fn_addr)) {
- db_printf("Bad function\n");
- db_flush_lex();
- return;
+ db_printf("Bad function\n");
+ db_flush_lex();
+ return;
}
- func = (db_expr_t (*) __P((db_expr_t, ...))) fn_addr;
+ func = (db_expr_t (*)(db_expr_t, ...)) fn_addr;
t = db_read_token();
if (t == tLPAREN) {
- if (db_expression(&args[0])) {
- nargs++;
- while ((t = db_read_token()) == tCOMMA) {
- if (nargs == MAXARGS) {
- db_printf("Too many arguments\n");
- db_flush_lex();
- return;
- }
- if (!db_expression(&args[nargs])) {
- db_printf("Argument missing\n");
+ if (db_expression(&args[0])) {
+ nargs++;
+ while ((t = db_read_token()) == tCOMMA) {
+ if (nargs == MAXARGS) {
+ db_printf("Too many arguments\n");
+ db_flush_lex();
+ return;
+ }
+ if (!db_expression(&args[nargs])) {
+ db_printf("Argument missing\n");
+ db_flush_lex();
+ return;
+ }
+ nargs++;
+ }
+ db_unread_token(t);
+ }
+ if (db_read_token() != tRPAREN) {
+ db_printf("?\n");
db_flush_lex();
return;
- }
- nargs++;
}
- db_unread_token(t);
- }
- if (db_read_token() != tRPAREN) {
- db_printf("?\n");
- db_flush_lex();
- return;
- }
}
db_skip_to_eol();
while (nargs < MAXARGS) {
- args[nargs++] = 0;
+ args[nargs++] = 0;
}
retval = (*func)(args[0], args[1], args[2], args[3], args[4],
@@ -660,12 +633,8 @@ db_fncall(addr, have_addr, count, modif)
db_printf("%s\n", db_num_to_str(retval));
}
-void
-db_reboot_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_reboot_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
db_expr_t bootflags;
@@ -673,8 +642,8 @@ db_reboot_cmd(addr, have_addr, count, modif)
if (!db_expression(&bootflags))
bootflags = (db_expr_t)RB_AUTOBOOT;
if (db_read_token() != tEOL) {
- db_error("?\n");
- /*NOTREACHED*/
+ db_error("?\n");
+ /*NOTREACHED*/
}
/*
* We are leaving DDB, never to return upward.
@@ -685,12 +654,8 @@ db_reboot_cmd(addr, have_addr, count, modif)
cpu_reboot((int)bootflags, NULL);
}
-void
-db_sifting_cmd(addr, have_addr, count, omodif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * omodif;
+static void
+db_sifting_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
int mode, t;
@@ -719,26 +684,20 @@ db_sifting_cmd(addr, have_addr, count, omodif)
}
}
-void
-db_stack_trace_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- boolean_t have_addr;
- db_expr_t count;
- char *modif;
+static void
+db_stack_trace_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
if (count == -1)
count = 65535;
db_stack_trace_print(addr, have_addr, count, modif, db_printf);
}
-void
-db_sync_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+static void
+db_sync_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
/*
* We are leaving DDB, never to return upward.
* Clear db_recover so that we can debug faults in functions
diff --git a/sys/ddb/db_command.h b/sys/ddb/db_command.h
index 6170ca9ef61..3d97af90494 100644
--- a/sys/ddb/db_command.h
+++ b/sys/ddb/db_command.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_command.h,v 1.21 2001/08/17 01:00:10 thorpej Exp $ */
+/* $NetBSD: db_command.h,v 1.22 2002/02/15 07:33:50 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -32,34 +32,17 @@
/*
* Command loop declarations.
*/
-void db_skip_to_eol __P((void));
struct db_command;
-int db_cmd_search __P((const char *, const struct db_command *,
- const struct db_command **));
-void db_cmd_list __P((const struct db_command *));
-void db_command __P((const struct db_command **, const struct db_command *));
-void db_map_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_malloc_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_object_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_page_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_buf_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_vnode_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_pool_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_namecache_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_uvmexp_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_command_loop __P((void));
-void db_error __P((char *));
-void db_fncall __P((db_expr_t, int, db_expr_t, char *));
-void db_reboot_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_sifting_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_stack_trace_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_sync_cmd __P((db_expr_t, int, db_expr_t, char *));
-db_addr_t db_dot; /* current location */
-db_addr_t db_last_addr; /* last explicit address typed */
-db_addr_t db_prev; /* last address examined
+void db_skip_to_eol(void);
+void db_command_loop(void);
+void db_error(char *);
+
+extern db_addr_t db_dot; /* current location */
+extern db_addr_t db_last_addr; /* last explicit address typed */
+extern db_addr_t db_prev; /* last address examined
or written */
-db_addr_t db_next; /* next address to be examined
+extern db_addr_t db_next; /* next address to be examined
or written */
/*
@@ -68,7 +51,7 @@ db_addr_t db_next; /* next address to be examined
struct db_command {
const char *name; /* command name */
/* function to call */
- void (*fcn) __P((db_expr_t, int, db_expr_t, char *));
+ void (*fcn)(db_expr_t, int, db_expr_t, char *);
int flag; /* extra info: */
#define CS_OWN 0x1 /* non-standard syntax */
#define CS_MORE 0x2 /* standard syntax, but may have other
diff --git a/sys/ddb/db_elf.c b/sys/ddb/db_elf.c
index 8703943a8c8..101e804c40f 100644
--- a/sys/ddb/db_elf.c
+++ b/sys/ddb/db_elf.c
@@ -1,4 +1,4 @@
-/* $NetBSD: db_elf.c,v 1.19 2001/11/15 09:48:02 lukem Exp $ */
+/* $NetBSD: db_elf.c,v 1.20 2002/02/15 07:33:50 simonb Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -38,10 +38,10 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_elf.c,v 1.19 2001/11/15 09:48:02 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_elf.c,v 1.20 2002/02/15 07:33:50 simonb Exp $");
#include <sys/param.h>
-#include <sys/systm.h>
+#include <sys/systm.h>
#include <sys/proc.h>
#include <machine/db_machdep.h>
@@ -60,25 +60,24 @@ __KERNEL_RCSID(0, "$NetBSD: db_elf.c,v 1.19 2001/11/15 09:48:02 lukem Exp $");
#include <sys/exec_elf.h>
-static char *db_elf_find_strtab __P((db_symtab_t *));
+static char *db_elf_find_strtab(db_symtab_t *);
#define STAB_TO_SYMSTART(stab) ((Elf_Sym *)((stab)->start))
#define STAB_TO_SYMEND(stab) ((Elf_Sym *)((stab)->end))
#define STAB_TO_EHDR(stab) ((Elf_Ehdr *)((stab)->private))
#define STAB_TO_SHDR(stab, e) ((Elf_Shdr *)((stab)->private + (e)->e_shoff))
-boolean_t db_elf_sym_init __P((int, void *, void *, const char *));
-db_sym_t db_elf_lookup __P((db_symtab_t *, char *));
-db_sym_t db_elf_search_symbol __P((db_symtab_t *, db_addr_t,
- db_strategy_t, db_expr_t *));
-void db_elf_symbol_values __P((db_symtab_t *, db_sym_t,
- char **, db_expr_t *));
-boolean_t db_elf_line_at_pc __P((db_symtab_t *, db_sym_t,
- char **, int *, db_expr_t));
-boolean_t db_elf_sym_numargs __P((db_symtab_t *, db_sym_t, int *,
- char **));
-void db_elf_forall __P((db_symtab_t *,
- db_forall_func_t db_forall_func, void *));
+static boolean_t db_elf_sym_init(int, void *, void *, const char *);
+static db_sym_t db_elf_lookup(db_symtab_t *, char *);
+static db_sym_t db_elf_search_symbol(db_symtab_t *, db_addr_t, db_strategy_t,
+ db_expr_t *);
+static void db_elf_symbol_values(db_symtab_t *, db_sym_t, char **,
+ db_expr_t *);
+static boolean_t db_elf_line_at_pc(db_symtab_t *, db_sym_t, char **, int *,
+ db_expr_t);
+static boolean_t db_elf_sym_numargs(db_symtab_t *, db_sym_t, int *, char **);
+static void db_elf_forall(db_symtab_t *, db_forall_func_t db_forall_func,
+ void *);
const db_symformat_t db_symformat_elf = {
"ELF",
@@ -94,14 +93,15 @@ const db_symformat_t db_symformat_elf = {
/*
* Find the symbol table and strings; tell ddb about them.
*/
-boolean_t
-db_elf_sym_init(symsize, symtab, esymtab, name)
- int symsize; /* size of symbol table */
- void *symtab; /* pointer to start of symbol table */
- void *esymtab; /* pointer to end of string table,
+static boolean_t
+db_elf_sym_init(
+ int symsize, /* size of symbol table */
+ void *symtab, /* pointer to start of symbol table */
+ void *esymtab, /* pointer to end of string table,
for checking - rounded up to integer
boundary */
- const char *name;
+ const char *name
+)
{
Elf_Ehdr *elf;
Elf_Shdr *shp;
@@ -160,9 +160,9 @@ db_elf_sym_init(symsize, symtab, esymtab, name)
if (shp[i].sh_offset == 0)
continue;
/* Got the symbol table. */
- symtab_start = (Elf_Sym *)((char *)symtab +
+ symtab_start = (Elf_Sym *)((char *)symtab +
shp[i].sh_offset);
- symtab_end = (Elf_Sym *)((char *)symtab +
+ symtab_end = (Elf_Sym *)((char *)symtab +
shp[i].sh_offset + shp[i].sh_size);
/* Find the string table to go with it. */
j = shp[i].sh_link;
@@ -193,8 +193,8 @@ db_elf_sym_init(symsize, symtab, esymtab, name)
if (db_add_symbol_table((char *)symtab_start,
(char *)symtab_end, name, (char *)symtab) != -1) {
printf("[ using %lu bytes of %s ELF symbol table ]\n",
- (u_long)roundup(((char *)esymtab - (char *)symtab),
- sizeof(u_long)), name);
+ (u_long)roundup(((char *)esymtab - (char *)symtab),
+ sizeof(u_long)), name);
return (TRUE);
}
@@ -210,8 +210,7 @@ db_elf_sym_init(symsize, symtab, esymtab, name)
* for the current symbol table.
*/
static char *
-db_elf_find_strtab(stab)
- db_symtab_t *stab;
+db_elf_find_strtab(db_symtab_t *stab)
{
Elf_Ehdr *elf = STAB_TO_EHDR(stab);
Elf_Shdr *shp = STAB_TO_SHDR(stab, elf);
@@ -236,10 +235,8 @@ db_elf_find_strtab(stab)
/*
* Lookup the symbol with the given name.
*/
-db_sym_t
-db_elf_lookup(stab, symstr)
- db_symtab_t *stab;
- char *symstr;
+static db_sym_t
+db_elf_lookup(db_symtab_t *stab, char *symstr)
{
Elf_Sym *symp, *symtab_start, *symtab_end;
char *strtab;
@@ -264,12 +261,9 @@ db_elf_lookup(stab, symstr)
* Search for the symbol with the given address (matching within the
* provided threshold).
*/
-db_sym_t
-db_elf_search_symbol(symtab, off, strategy, diffp)
- db_symtab_t *symtab;
- db_addr_t off;
- db_strategy_t strategy;
- db_expr_t *diffp; /* in/out */
+static db_sym_t
+db_elf_search_symbol(db_symtab_t *symtab, db_addr_t off, db_strategy_t strategy,
+ db_expr_t *diffp)
{
Elf_Sym *rsymp, *symp, *symtab_start, *symtab_end;
db_expr_t diff = *diffp;
@@ -330,12 +324,9 @@ db_elf_search_symbol(symtab, off, strategy, diffp)
/*
* Return the name and value for a symbol.
*/
-void
-db_elf_symbol_values(symtab, sym, namep, valuep)
- db_symtab_t *symtab;
- db_sym_t sym;
- char **namep;
- db_expr_t *valuep;
+static void
+db_elf_symbol_values(db_symtab_t *symtab, db_sym_t sym, char **namep,
+ db_expr_t *valuep)
{
Elf_Sym *symp = (Elf_Sym *)sym;
char *strtab;
@@ -356,7 +347,7 @@ db_elf_symbol_values(symtab, sym, namep, valuep)
* Return the file and line number of the current program counter
* if we can find the appropriate debugging symbol.
*/
-boolean_t
+static boolean_t
db_elf_line_at_pc(symtab, cursym, filename, linenum, off)
db_symtab_t *symtab;
db_sym_t cursym;
@@ -375,12 +366,9 @@ db_elf_line_at_pc(symtab, cursym, filename, linenum, off)
* Returns the number of arguments to a function and their
* names if we can find the appropriate debugging symbol.
*/
-boolean_t
-db_elf_sym_numargs(symtab, cursym, nargp, argnamep)
- db_symtab_t *symtab;
- db_sym_t cursym;
- int *nargp;
- char **argnamep;
+static boolean_t
+db_elf_sym_numargs(db_symtab_t *symtab, db_sym_t cursym, int *nargp,
+ char **argnamep)
{
/*
@@ -389,11 +377,8 @@ db_elf_sym_numargs(symtab, cursym, nargp, argnamep)
return (FALSE);
}
-void
-db_elf_forall(stab, db_forall_func, arg)
- db_symtab_t *stab;
- db_forall_func_t db_forall_func;
- void *arg;
+static void
+db_elf_forall(db_symtab_t *stab, db_forall_func_t db_forall_func, void *arg)
{
char *strtab;
static char suffix[2];
diff --git a/sys/ddb/db_examine.c b/sys/ddb/db_examine.c
index 8ed37675c55..1825e3d99fa 100644
--- a/sys/ddb/db_examine.c
+++ b/sys/ddb/db_examine.c
@@ -1,4 +1,4 @@
-/* $NetBSD: db_examine.c,v 1.22 2001/11/12 22:54:04 lukem Exp $ */
+/* $NetBSD: db_examine.c,v 1.23 2002/02/15 07:33:50 simonb Exp $ */
/*
* Mach Operating System
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_examine.c,v 1.22 2001/11/12 22:54:04 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_examine.c,v 1.23 2002/02/15 07:33:50 simonb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -46,7 +46,10 @@ __KERNEL_RCSID(0, "$NetBSD: db_examine.c,v 1.22 2001/11/12 22:54:04 lukem Exp $"
#include <ddb/db_extern.h>
#include <ddb/db_interface.h>
-char db_examine_format[TOK_STRING_SIZE] = "x";
+static char db_examine_format[TOK_STRING_SIZE] = "x";
+
+static void db_examine(db_addr_t, char *, int);
+static void db_search(db_addr_t, int, db_expr_t, db_expr_t, unsigned int);
/*
* Examine (print) data. Syntax is:
@@ -58,11 +61,7 @@ char db_examine_format[TOK_STRING_SIZE] = "x";
*/
/*ARGSUSED*/
void
-db_examine_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_examine_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
if (modif[0] != '\0')
db_strcpy(db_examine_format, modif);
@@ -73,11 +72,8 @@ db_examine_cmd(addr, have_addr, count, modif)
db_examine((db_addr_t) addr, db_examine_format, count);
}
-void
-db_examine(addr, fmt, count)
- db_addr_t addr;
- char * fmt; /* format string */
- int count; /* repeat count */
+static void
+db_examine(db_addr_t addr, char *fmt, int count)
{
int i, c;
db_expr_t value;
@@ -130,19 +126,19 @@ db_examine(addr, fmt, count)
db_printf("%-*lx", width, value);
break;
case 'm': /* hex dump */
- /*
+ /*
* Print off in chunks of size. Try to print 16
- * bytes at a time into 4 columns. This
+ * bytes at a time into 4 columns. This
* loops modify's count extra times in order
* to get the nicely formatted lines.
*/
-
+
bytes = 0;
do {
for (i = 0; i < size; i++) {
- value =
+ value =
db_get_value(addr+bytes, 1,
- FALSE);
+ FALSE);
db_printf("%02lx", value);
bytes++;
if (!(bytes % 4))
@@ -160,7 +156,7 @@ db_examine(addr, fmt, count)
db_printf("%c", (char)value);
else
db_printf(".");
- }
+ }
db_printf("\n");
break;
case 'z': /* signed hex */
@@ -223,15 +219,11 @@ db_examine(addr, fmt, count)
/*
* Print value.
*/
-char db_print_format = 'x';
+static char db_print_format = 'x';
/*ARGSUSED*/
void
-db_print_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
db_expr_t value;
@@ -282,19 +274,18 @@ db_print_cmd(addr, have_addr, count, modif)
}
void
-db_print_loc_and_inst(loc)
- db_addr_t loc;
+db_print_loc_and_inst(db_addr_t loc)
{
+
db_printsym(loc, DB_STGY_PROC, db_printf);
db_printf(":\t");
(void) db_disasm(loc, FALSE);
}
void
-db_strcpy(dst, src)
- char *dst;
- char *src;
+db_strcpy(char *dst, char *src)
{
+
while ((*dst++ = *src++) != '\0')
;
}
@@ -305,11 +296,7 @@ db_strcpy(dst, src)
*/
/*ARGSUSED*/
void
-db_search_cmd(daddr, have_addr, dcount, modif)
- db_expr_t daddr;
- int have_addr;
- db_expr_t dcount;
- char * modif;
+db_search_cmd(db_expr_t daddr, int have_addr, db_expr_t dcount, char *modif)
{
int t;
db_addr_t addr;
@@ -373,13 +360,9 @@ db_search_cmd(daddr, have_addr, dcount, modif)
db_search(addr, size, value, mask, count);
}
-void
-db_search(addr, size, value, mask, count)
- db_addr_t addr;
- int size;
- db_expr_t value;
- db_expr_t mask;
- unsigned int count;
+static void
+db_search(db_addr_t addr, int size, db_expr_t value, db_expr_t mask,
+ unsigned int count)
{
while (count-- != 0) {
db_prev = addr;
diff --git a/sys/ddb/db_expr.c b/sys/ddb/db_expr.c
index 2f01244ffa3..2e694f3f0fe 100644
--- a/sys/ddb/db_expr.c
+++ b/sys/ddb/db_expr.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_expr.c,v 1.12 2001/11/12 22:54:05 lukem Exp $ */
+/* $NetBSD: db_expr.c,v 1.13 2002/02/15 07:33:50 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -30,212 +30,213 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_expr.c,v 1.12 2001/11/12 22:54:05 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_expr.c,v 1.13 2002/02/15 07:33:50 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
#include <machine/db_machdep.h>
-#include <ddb/db_lex.h>
#include <ddb/db_access.h>
#include <ddb/db_command.h>
-#include <ddb/db_sym.h>
#include <ddb/db_extern.h>
+#include <ddb/db_lex.h>
+#include <ddb/db_output.h>
+#include <ddb/db_sym.h>
#include <ddb/db_variables.h>
-boolean_t
-db_term(valuep)
- db_expr_t *valuep;
+static boolean_t db_term(db_expr_t *);
+static boolean_t db_unary(db_expr_t *);
+static boolean_t db_mult_expr(db_expr_t *);
+static boolean_t db_add_expr(db_expr_t *);
+static boolean_t db_shift_expr(db_expr_t *);
+
+static boolean_t
+db_term(db_expr_t *valuep)
{
int t;
t = db_read_token();
if (t == tIDENT) {
- if (!db_value_of_name(db_tok_string, valuep)) {
- extern int db_radix;
- db_expr_t v = 0;
- int i, c, byte;
-
- /* See if we can make a number out of all of it */
- for (i = 0; (c = db_tok_string[i]) != '\0'; i++) {
- byte = 0;
- if (c >= '0' && c <= '9')
- byte = c - '0';
- else if (db_radix == 16 && c >= 'a' && c <= 'f')
- byte = c - 'a' + 10;
- else if (db_radix == 16 && c >= 'A' && c <= 'F')
- byte = c - 'A' + 10;
- else
- db_error("Symbol not found\n");
- /*NOTREACHED*/
- v = v * db_radix + byte;
+ if (!db_value_of_name(db_tok_string, valuep)) {
+ db_expr_t v = 0;
+ int i, c, byte;
+
+ /* See if we can make a number out of all of it */
+ for (i = 0; (c = db_tok_string[i]) != '\0'; i++) {
+ byte = 0;
+ if (c >= '0' && c <= '9')
+ byte = c - '0';
+ else if (db_radix == 16 && c >= 'a' && c <= 'f')
+ byte = c - 'a' + 10;
+ else if (db_radix == 16 && c >= 'A' && c <= 'F')
+ byte = c - 'A' + 10;
+ else
+ db_error("Symbol not found\n");
+ /*NOTREACHED*/
+ v = v * db_radix + byte;
+ }
+ *valuep = (db_expr_t)v;
}
- *valuep = (db_expr_t)v;
- }
- return (TRUE);
+ return (TRUE);
}
if (t == tNUMBER) {
- *valuep = (db_expr_t)db_tok_number;
- return (TRUE);
+ *valuep = (db_expr_t)db_tok_number;
+ return (TRUE);
}
if (t == tDOT) {
- *valuep = (db_expr_t)db_dot;
- return (TRUE);
+ *valuep = (db_expr_t)db_dot;
+ return (TRUE);
}
if (t == tDOTDOT) {
- *valuep = (db_expr_t)db_prev;
- return (TRUE);
+ *valuep = (db_expr_t)db_prev;
+ return (TRUE);
}
if (t == tPLUS) {
- *valuep = (db_expr_t) db_next;
- return (TRUE);
+ *valuep = (db_expr_t) db_next;
+ return (TRUE);
}
if (t == tDITTO) {
- *valuep = (db_expr_t)db_last_addr;
- return (TRUE);
+ *valuep = (db_expr_t)db_last_addr;
+ return (TRUE);
}
if (t == tDOLLAR) {
- if (!db_get_variable(valuep))
- return (FALSE);
- return (TRUE);
+ if (!db_get_variable(valuep))
+ return (FALSE);
+ return (TRUE);
}
if (t == tLPAREN) {
- if (!db_expression(valuep)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- t = db_read_token();
- if (t != tRPAREN) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- return (TRUE);
+ if (!db_expression(valuep)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ t = db_read_token();
+ if (t != tRPAREN) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ return (TRUE);
}
db_unread_token(t);
return (FALSE);
}
-boolean_t
-db_unary(valuep)
- db_expr_t *valuep;
+static boolean_t
+db_unary(db_expr_t *valuep)
{
int t;
t = db_read_token();
if (t == tMINUS) {
- if (!db_unary(valuep)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- *valuep = -*valuep;
- return (TRUE);
+ if (!db_unary(valuep)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ *valuep = -*valuep;
+ return (TRUE);
}
if (t == tSTAR) {
- /* indirection */
- if (!db_unary(valuep)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- *valuep = db_get_value((db_addr_t)*valuep, sizeof(db_expr_t),
- FALSE);
- return (TRUE);
+ /* indirection */
+ if (!db_unary(valuep)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ *valuep = db_get_value((db_addr_t)*valuep, sizeof(db_expr_t),
+ FALSE);
+ return (TRUE);
}
db_unread_token(t);
return (db_term(valuep));
}
-boolean_t
-db_mult_expr(valuep)
- db_expr_t *valuep;
+static boolean_t
+db_mult_expr(db_expr_t *valuep)
{
db_expr_t lhs, rhs;
int t;
if (!db_unary(&lhs))
- return (FALSE);
+ return (FALSE);
t = db_read_token();
while (t == tSTAR || t == tSLASH || t == tPCT || t == tHASH) {
- if (!db_term(&rhs)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- if (t == tSTAR)
- lhs *= rhs;
- else {
- if (rhs == 0) {
- db_error("Divide by 0\n");
- /*NOTREACHED*/
+ if (!db_term(&rhs)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
}
- if (t == tSLASH)
- lhs /= rhs;
- else if (t == tPCT)
- lhs %= rhs;
- else
- lhs = ((lhs+rhs-1)/rhs)*rhs;
- }
- t = db_read_token();
+ if (t == tSTAR)
+ lhs *= rhs;
+ else {
+ if (rhs == 0) {
+ db_error("Divide by 0\n");
+ /*NOTREACHED*/
+ }
+ if (t == tSLASH)
+ lhs /= rhs;
+ else if (t == tPCT)
+ lhs %= rhs;
+ else
+ lhs = ((lhs+rhs-1)/rhs)*rhs;
+ }
+ t = db_read_token();
}
db_unread_token(t);
*valuep = lhs;
return (TRUE);
}
-boolean_t
-db_add_expr(valuep)
- db_expr_t *valuep;
+static boolean_t
+db_add_expr(db_expr_t *valuep)
{
db_expr_t lhs, rhs;
int t;
if (!db_mult_expr(&lhs))
- return (FALSE);
+ return (FALSE);
t = db_read_token();
while (t == tPLUS || t == tMINUS) {
- if (!db_mult_expr(&rhs)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- if (t == tPLUS)
- lhs += rhs;
- else
- lhs -= rhs;
- t = db_read_token();
+ if (!db_mult_expr(&rhs)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ if (t == tPLUS)
+ lhs += rhs;
+ else
+ lhs -= rhs;
+ t = db_read_token();
}
db_unread_token(t);
*valuep = lhs;
return (TRUE);
}
-boolean_t
-db_shift_expr(valuep)
- db_expr_t *valuep;
+static boolean_t
+db_shift_expr(db_expr_t *valuep)
{
db_expr_t lhs, rhs;
int t;
if (!db_add_expr(&lhs))
- return (FALSE);
+ return (FALSE);
t = db_read_token();
while (t == tSHIFT_L || t == tSHIFT_R) {
- if (!db_add_expr(&rhs)) {
- db_error("Syntax error\n");
- /*NOTREACHED*/
- }
- if (rhs < 0) {
- db_error("Negative shift amount\n");
- /*NOTREACHED*/
- }
- if (t == tSHIFT_L)
- lhs <<= rhs;
- else {
- /* Shift right is unsigned */
- lhs = (unsigned long) lhs >> rhs;
- }
- t = db_read_token();
+ if (!db_add_expr(&rhs)) {
+ db_error("Syntax error\n");
+ /*NOTREACHED*/
+ }
+ if (rhs < 0) {
+ db_error("Negative shift amount\n");
+ /*NOTREACHED*/
+ }
+ if (t == tSHIFT_L)
+ lhs <<= rhs;
+ else {
+ /* Shift right is unsigned */
+ lhs = (unsigned long) lhs >> rhs;
+ }
+ t = db_read_token();
}
db_unread_token(t);
*valuep = lhs;
@@ -243,8 +244,8 @@ db_shift_expr(valuep)
}
int
-db_expression(valuep)
- db_expr_t *valuep;
+db_expression(db_expr_t *valuep)
{
+
return (db_shift_expr(valuep));
}
diff --git a/sys/ddb/db_extern.h b/sys/ddb/db_extern.h
index 35fbb7192f8..022c1a90c45 100644
--- a/sys/ddb/db_extern.h
+++ b/sys/ddb/db_extern.h
@@ -1,4 +1,4 @@
-/* $NetBSD: db_extern.h,v 1.7 2000/07/17 19:57:50 jeffs Exp $ */
+/* $NetBSD: db_extern.h,v 1.8 2002/02/15 07:33:50 simonb Exp $ */
/*-
* Copyright (c) 1995 The NetBSD Foundation, Inc.
@@ -40,44 +40,35 @@
#define _DDB_DB_EXTERN_H_
/* db_sym.c */
-void ddb_init __P((int, void *, void *));
+void ddb_init(int, void *, void *);
+
+/* db_command.c */
+extern int db_cmd_loop_done;
/* db_examine.c */
-void db_examine_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_examine __P((db_addr_t, char *, int));
-void db_print_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_print_loc_and_inst __P((db_addr_t));
-void db_strcpy __P((char *, char *));
-void db_search_cmd __P((db_expr_t, boolean_t, db_expr_t, char *));
-void db_search __P((db_addr_t, int, db_expr_t, db_expr_t, unsigned int));
+void db_examine_cmd(db_expr_t, int, db_expr_t, char *);
+void db_print_cmd(db_expr_t, int, db_expr_t, char *);
+void db_print_loc_and_inst(db_addr_t);
+void db_strcpy(char *, char *);
+void db_search_cmd(db_expr_t, boolean_t, db_expr_t, char *);
/* db_expr.c */
-boolean_t db_term __P((db_expr_t *));
-boolean_t db_unary __P((db_expr_t *));
-boolean_t db_mult_expr __P((db_expr_t *));
-boolean_t db_add_expr __P((db_expr_t *));
-boolean_t db_shift_expr __P((db_expr_t *));
-int db_expression __P((db_expr_t *));
+int db_expression(db_expr_t *);
/* db_input.c */
-void db_putstring __P((char *, int));
-void db_putnchars __P((int, int));
-void db_delete __P((int, int));
-void db_delete_line __P((void));
-int db_inputchar __P((int));
-int db_readline __P((char *, int));
-void db_check_interrupt __P((void));
+int db_readline(char *, int);
+void db_check_interrupt(void);
/* db_print.c */
-void db_show_regs __P((db_expr_t, boolean_t, db_expr_t, char *));
+void db_show_regs(db_expr_t, boolean_t, db_expr_t, char *);
/* db_trap.c */
-void db_trap(int, int);
+void db_trap(int, int);
/* db_write_cmd.c */
-void db_write_cmd __P((db_expr_t, boolean_t, db_expr_t, char *));
+void db_write_cmd(db_expr_t, boolean_t, db_expr_t, char *);
/* Callback for MD platform code to manage watchdogs, etc. */
-void (*db_trap_callback)(int);
+extern void (*db_trap_callback)(int);
#endif /* _DDB_DB_EXTERN_H_ */
diff --git a/sys/ddb/db_input.c b/sys/ddb/db_input.c
index c979df3383e..251ce25038c 100644
--- a/sys/ddb/db_input.c
+++ b/sys/ddb/db_input.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_input.c,v 1.16 2001/11/20 08:43:44 lukem Exp $ */
+/* $NetBSD: db_input.c,v 1.17 2002/02/15 07:33:51 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_input.c,v 1.16 2001/11/20 08:43:44 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_input.c,v 1.17 2002/02/15 07:33:51 simonb Exp $");
#include "opt_ddb.h"
@@ -59,42 +59,45 @@ __KERNEL_RCSID(0, "$NetBSD: db_input.c,v 1.16 2001/11/20 08:43:44 lukem Exp $");
* since input always ends with a new-line. We just
* reset the line position at the end.
*/
-char * db_lbuf_start; /* start of input line buffer */
-char * db_lbuf_end; /* end of input line buffer */
-char * db_lc; /* current character */
-char * db_le; /* one past last character */
+static char *db_lbuf_start; /* start of input line buffer */
+static char *db_lbuf_end; /* end of input line buffer */
+static char *db_lc; /* current character */
+static char *db_le; /* one past last character */
#if DDB_HISTORY_SIZE != 0
-char db_history[DDB_HISTORY_SIZE]; /* start of history buffer */
-int db_history_size = DDB_HISTORY_SIZE;/* size of history buffer */
-char * db_history_curr = db_history; /* start of current line */
-char * db_history_last = db_history; /* start of last line */
-char * db_history_prev = (char *) 0; /* start of previous line */
+static char db_history[DDB_HISTORY_SIZE]; /* start of history buffer */
+static int db_history_size = DDB_HISTORY_SIZE;/* size of history buffer */
+static char *db_history_curr = db_history; /* start of current line */
+static char *db_history_last = db_history; /* start of last line */
+static char *db_history_prev = (char *) 0; /* start of previous line */
#endif
-
+
#define CTRL(c) ((c) & 0x1f)
#define isspace(c) ((c) == ' ' || (c) == '\t')
#define BLANK ' '
#define BACKUP '\b'
-static int cnmaygetc __P((void));
+static int cnmaygetc(void);
+static void db_putstring(char *, int);
+static void db_putnchars(int, int);
+static void db_delete(int, int);
+static void db_delete_line(void);
+static int db_inputchar(int);
-void
-db_putstring(s, count)
- char *s;
- int count;
+static void
+db_putstring(char *s, int count)
{
+
while (--count >= 0)
- cnputc(*s++);
+ cnputc(*s++);
}
-void
-db_putnchars(c, count)
- int c;
- int count;
+static void
+db_putnchars(int c, int count)
{
+
while (--count >= 0)
- cnputc(c);
+ cnputc(c);
}
/*
@@ -102,29 +105,28 @@ db_putnchars(c, count)
*/
#define DEL_FWD 0
#define DEL_BWD 1
-void
-db_delete(n, bwd)
- int n;
- int bwd;
+static void
+db_delete(int n, int bwd)
{
char *p;
if (bwd) {
- db_lc -= n;
- db_putnchars(BACKUP, n);
+ db_lc -= n;
+ db_putnchars(BACKUP, n);
}
for (p = db_lc; p < db_le-n; p++) {
- *p = *(p+n);
- cnputc(*p);
+ *p = *(p+n);
+ cnputc(*p);
}
db_putnchars(BLANK, n);
db_putnchars(BACKUP, db_le - db_lc);
db_le -= n;
}
-void
-db_delete_line()
+static void
+db_delete_line(void)
{
+
db_delete(db_le - db_lc, DEL_FWD);
db_delete(db_lc - db_lbuf_start, DEL_BWD);
db_le = db_lc = db_lbuf_start;
@@ -132,104 +134,102 @@ db_delete_line()
#if DDB_HISTORY_SIZE != 0
#define INC_DB_CURR() \
- do { \
- db_history_curr++; \
- if (db_history_curr > \
- db_history + db_history_size - 1) \
- db_history_curr = db_history; \
- } while (0)
+ do { \
+ db_history_curr++; \
+ if (db_history_curr > db_history + db_history_size - 1) \
+ db_history_curr = db_history; \
+ } while (0)
#define DEC_DB_CURR() \
- do { \
- db_history_curr--; \
- if (db_history_curr < db_history) \
- db_history_curr = db_history + \
- db_history_size - 1; \
- } while (0)
+ do { \
+ db_history_curr--; \
+ if (db_history_curr < db_history) \
+ db_history_curr = db_history + \
+ db_history_size - 1; \
+ } while (0)
#endif
-
+
/* returns TRUE at end-of-line */
-int
-db_inputchar(c)
- int c;
+static int
+db_inputchar(int c)
{
switch (c) {
- case CTRL('b'):
+ case CTRL('b'):
/* back up one character */
if (db_lc > db_lbuf_start) {
- cnputc(BACKUP);
- db_lc--;
+ cnputc(BACKUP);
+ db_lc--;
}
break;
- case CTRL('f'):
+ case CTRL('f'):
/* forward one character */
if (db_lc < db_le) {
- cnputc(*db_lc);
- db_lc++;
+ cnputc(*db_lc);
+ db_lc++;
}
break;
- case CTRL('a'):
+ case CTRL('a'):
/* beginning of line */
while (db_lc > db_lbuf_start) {
- cnputc(BACKUP);
- db_lc--;
+ cnputc(BACKUP);
+ db_lc--;
}
break;
- case CTRL('e'):
+ case CTRL('e'):
/* end of line */
while (db_lc < db_le) {
- cnputc(*db_lc);
- db_lc++;
+ cnputc(*db_lc);
+ db_lc++;
}
break;
- case CTRL('h'):
- case 0177:
+ case CTRL('h'):
+ case 0177:
/* erase previous character */
if (db_lc > db_lbuf_start)
- db_delete(1, DEL_BWD);
+ db_delete(1, DEL_BWD);
break;
- case CTRL('d'):
+ case CTRL('d'):
/* erase next character */
if (db_lc < db_le)
- db_delete(1, DEL_FWD);
+ db_delete(1, DEL_FWD);
break;
- case CTRL('k'):
+ case CTRL('k'):
/* delete to end of line */
if (db_lc < db_le)
- db_delete(db_le - db_lc, DEL_FWD);
+ db_delete(db_le - db_lc, DEL_FWD);
break;
- case CTRL('u'):
+ case CTRL('u'):
/* delete line */
- db_delete_line();
+ db_delete_line();
break;
- case CTRL('t'):
+ case CTRL('t'):
/* twiddle last 2 characters */
if (db_lc >= db_lbuf_start + 1) {
- if (db_lc < db_le) {
- c = db_lc[-1];
- db_lc[-1] = db_lc[0];
- db_lc[0] = c;
- cnputc(BACKUP);
- cnputc(db_lc[-1]);
- cnputc(db_lc[0]);
- db_lc++;
- } else if (db_lc >= db_lbuf_start + 2) {
- c = db_lc[-2];
- db_lc[-2] = db_lc[-1];
- db_lc[-1] = c;
- cnputc(BACKUP);
- cnputc(BACKUP);
- cnputc(db_lc[-2]);
- cnputc(db_lc[-1]);
- }
+ if (db_lc < db_le) {
+ c = db_lc[-1];
+ db_lc[-1] = db_lc[0];
+ db_lc[0] = c;
+ cnputc(BACKUP);
+ cnputc(db_lc[-1]);
+ cnputc(db_lc[0]);
+ db_lc++;
+ } else if (db_lc >= db_lbuf_start + 2) {
+ c = db_lc[-2];
+ db_lc[-2] = db_lc[-1];
+ db_lc[-1] = c;
+ cnputc(BACKUP);
+ cnputc(BACKUP);
+ cnputc(db_lc[-2]);
+ cnputc(db_lc[-1]);
+ }
}
break;
#if DDB_HISTORY_SIZE != 0
- case CTRL('p'):
- DEC_DB_CURR();
- while (db_history_curr != db_history_last) {
+ case CTRL('p'):
+ DEC_DB_CURR();
+ while (db_history_curr != db_history_last) {
DEC_DB_CURR();
if (*db_history_curr == '\0')
- break;
+ break;
}
db_delete_line();
if (db_history_curr == db_history_last) {
@@ -249,10 +249,10 @@ db_inputchar(c)
}
db_putstring(db_lbuf_start, db_le - db_lbuf_start);
break;
- case CTRL('n'):
- while (db_history_curr != db_history_last) {
+ case CTRL('n'):
+ while (db_history_curr != db_history_last) {
if (*db_history_curr == '\0')
- break;
+ break;
INC_DB_CURR();
}
if (db_history_curr != db_history_last) {
@@ -274,15 +274,15 @@ db_inputchar(c)
}
break;
#endif
- case CTRL('r'):
+ case CTRL('r'):
db_putstring("^R\n", 3);
if (db_le > db_lbuf_start) {
- db_putstring(db_lbuf_start, db_le - db_lbuf_start);
- db_putnchars(BACKUP, db_le - db_lc);
+ db_putstring(db_lbuf_start, db_le - db_lbuf_start);
+ db_putnchars(BACKUP, db_le - db_lc);
}
break;
- case '\n':
- case '\r':
+ case '\n':
+ case '\r':
#if DDB_HISTORY_SIZE != 0
/* Check if it same than previous line */
if (db_history_curr == db_history_prev) {
@@ -292,7 +292,7 @@ db_inputchar(c)
for (pp = db_history_prev, pc = db_lbuf_start;
pc != db_le && *pp; pp++, pc++) {
if (*pp != *pc)
- break;
+ break;
if (++pp == db_history + db_history_size) {
pp = db_history;
}
@@ -323,20 +323,20 @@ db_inputchar(c)
#endif
*db_le++ = c;
return (1);
- default:
+ default:
if (db_le == db_lbuf_end) {
- cnputc('\007');
+ cnputc('\007');
}
else if (c >= ' ' && c <= '~') {
- char *p;
-
- for (p = db_le; p > db_lc; p--)
- *p = *(p-1);
- *db_lc++ = c;
- db_le++;
- cnputc(c);
- db_putstring(db_lc, db_le - db_lc);
- db_putnchars(BACKUP, db_le - db_lc);
+ char *p;
+
+ for (p = db_le; p > db_lc; p--)
+ *p = *(p-1);
+ *db_lc++ = c;
+ db_le++;
+ cnputc(c);
+ db_putstring(db_lc, db_le - db_lc);
+ db_putnchars(BACKUP, db_le - db_lc);
}
break;
}
@@ -344,9 +344,7 @@ db_inputchar(c)
}
int
-db_readline(lstart, lsize)
- char * lstart;
- int lsize;
+db_readline(char *lstart, int lsize)
{
db_force_whitespace(); /* synch output position */
@@ -356,7 +354,7 @@ db_readline(lstart, lsize)
db_le = lstart;
while (!db_inputchar(cngetc()))
- continue;
+ continue;
db_putchar('\n'); /* synch output position */
@@ -365,37 +363,38 @@ db_readline(lstart, lsize)
}
void
-db_check_interrupt()
+db_check_interrupt(void)
{
int c;
c = cnmaygetc();
switch (c) {
- case -1: /* no character */
+ case -1: /* no character */
return;
- case CTRL('c'):
+ case CTRL('c'):
db_error((char *)0);
/*NOTREACHED*/
- case CTRL('s'):
+ case CTRL('s'):
do {
- c = cnmaygetc();
- if (c == CTRL('c')) {
- db_error((char *)0);
- /*NOTREACHED*/
- }
+ c = cnmaygetc();
+ if (c == CTRL('c')) {
+ db_error((char *)0);
+ /*NOTREACHED*/
+ }
} while (c != CTRL('q'));
break;
- default:
+ default:
/* drop on floor */
break;
}
}
static int
-cnmaygetc ()
+cnmaygetc(void)
{
+
return (-1);
}
diff --git a/sys/ddb/db_interface.h b/sys/ddb/db_interface.h
index c4381bd20ad..581852ace93 100644
--- a/sys/ddb/db_interface.h
+++ b/sys/ddb/db_interface.h
@@ -1,4 +1,4 @@
-/* $NetBSD: db_interface.h,v 1.8 2001/11/09 06:52:23 thorpej Exp $ */
+/* $NetBSD: db_interface.h,v 1.9 2002/02/15 07:33:51 simonb Exp $ */
/*-
* Copyright (c) 1995 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
#define _DDB_DB_INTERFACE_H_
/* arch/<arch>/<arch>/db_disasm.c */
-db_addr_t db_disasm __P((db_addr_t, boolean_t));
+db_addr_t db_disasm(db_addr_t, boolean_t);
/* arch/<arch>/<arch>/db_interface.c */
#ifdef DB_MACHINE_COMMANDS
@@ -49,20 +49,20 @@ extern const struct db_command db_machine_command_table[];
/* arch/<arch>/<arch>/db_trace.c */
/* arch/vax/vax/db_machdep.c */
-void db_stack_trace_print __P((db_expr_t, int, db_expr_t, char *,
- void (*)(const char *, ...)));
+void db_stack_trace_print(db_expr_t, int, db_expr_t, char *,
+ void (*)(const char *, ...));
/* kern/kern_proc.c */
-void db_kill_proc __P((db_expr_t, int, db_expr_t, char *));
-void db_show_all_procs __P((db_expr_t, int, db_expr_t, char *));
+void db_kill_proc(db_expr_t, int, db_expr_t, char *);
+void db_show_all_procs(db_expr_t, int, db_expr_t, char *);
/* kern/kern_clock.c */
-void db_show_callout __P((db_expr_t, int, db_expr_t, char *));
+void db_show_callout(db_expr_t, int, db_expr_t, char *);
/* kern/subr_log.c */
-void db_dmesg __P((db_expr_t, int, db_expr_t, char *));
+void db_dmesg(db_expr_t, int, db_expr_t, char *);
/* netinet/if_arp.c */
-void db_show_arptab __P((db_expr_t, int, db_expr_t, char *));
+void db_show_arptab(db_expr_t, int, db_expr_t, char *);
#endif /* _DDB_DB_INTERFACE_H_ */
diff --git a/sys/ddb/db_lex.c b/sys/ddb/db_lex.c
index 884039626d4..e180cbf89e7 100644
--- a/sys/ddb/db_lex.c
+++ b/sys/ddb/db_lex.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_lex.c,v 1.15 2001/11/12 22:54:05 lukem Exp $ */
+/* $NetBSD: db_lex.c,v 1.16 2002/02/15 07:33:51 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_lex.c,v 1.15 2001/11/12 22:54:05 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_lex.c,v 1.16 2002/02/15 07:33:51 simonb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -47,74 +47,82 @@ __KERNEL_RCSID(0, "$NetBSD: db_lex.c,v 1.15 2001/11/12 22:54:05 lukem Exp $");
#include <ddb/db_sym.h>
#include <ddb/db_extern.h>
-char db_line[120];
-char * db_lp, *db_endlp;
+db_expr_t db_tok_number;
+char db_tok_string[TOK_STRING_SIZE];
+
+static char db_line[120];
+static char *db_lp, *db_endlp;
+
+static int db_look_char = 0;
+static int db_look_token = 0;
+
+static void db_flush_line(void);
+static int db_read_char(void);
+static void db_unread_char(int);
+static int db_lex(void);
int
-db_read_line()
+db_read_line(void)
{
int i;
i = db_readline(db_line, sizeof(db_line));
if (i == 0)
- return (0); /* EOI */
+ return (0); /* EOI */
db_lp = db_line;
db_endlp = db_lp + i;
return (i);
}
-void
-db_flush_line()
+static void
+db_flush_line(void)
{
+
db_lp = db_line;
db_endlp = db_line;
}
-int db_look_char = 0;
-
-int
-db_read_char()
+static int
+db_read_char(void)
{
int c;
if (db_look_char != 0) {
- c = db_look_char;
- db_look_char = 0;
+ c = db_look_char;
+ db_look_char = 0;
}
else if (db_lp >= db_endlp)
- c = -1;
- else
- c = *db_lp++;
+ c = -1;
+ else
+ c = *db_lp++;
return (c);
}
-void
-db_unread_char(c)
- int c;
+static void
+db_unread_char(int c)
{
+
db_look_char = c;
}
-int db_look_token = 0;
-
void
-db_unread_token(t)
- int t;
+db_unread_token(int t)
{
+
db_look_token = t;
}
int
-db_read_token()
+db_read_token(void)
{
int t;
if (db_look_token) {
- t = db_look_token;
- db_look_token = 0;
+ t = db_look_token;
+ db_look_token = 0;
}
else
- t = db_lex();
+ t = db_lex();
return (t);
}
@@ -124,12 +132,11 @@ int db_radix = 16;
* Convert the number to a string in the current radix.
* This replaces the non-standard %n printf() format.
*/
-
+
char *
-db_num_to_str(val)
-db_expr_t val;
+db_num_to_str(db_expr_t val)
{
- /*
+ /*
* 2 chars for "0x", 1 for a sign ("-")
* up to 21 chars for a 64-bit number:
* % echo 2^64 | bc | wc -c
@@ -149,164 +156,161 @@ db_expr_t val;
}
void
-db_flush_lex()
+db_flush_lex(void)
{
+
db_flush_line();
db_look_char = 0;
db_look_token = 0;
}
-int
-db_lex()
+static int
+db_lex(void)
{
int c;
c = db_read_char();
while (c <= ' ' || c > '~') {
- if (c == '\n' || c == -1)
- return (tEOL);
- c = db_read_char();
+ if (c == '\n' || c == -1)
+ return (tEOL);
+ c = db_read_char();
}
if (c >= '0' && c <= '9') {
- /* number */
- db_expr_t r, digit = 0;
+ /* number */
+ db_expr_t r, digit = 0;
- if (c > '0')
- r = db_radix;
- else {
- c = db_read_char();
- if (c == 'O' || c == 'o')
- r = 8;
- else if (c == 'T' || c == 't')
- r = 10;
- else if (c == 'X' || c == 'x')
- r = 16;
+ if (c > '0')
+ r = db_radix;
else {
- r = db_radix;
- db_unread_char(c);
+ c = db_read_char();
+ if (c == 'O' || c == 'o')
+ r = 8;
+ else if (c == 'T' || c == 't')
+ r = 10;
+ else if (c == 'X' || c == 'x')
+ r = 16;
+ else {
+ r = db_radix;
+ db_unread_char(c);
+ }
+ c = db_read_char();
}
- c = db_read_char();
- }
- db_tok_number = 0;
- for (;;) {
- if (c >= '0' && c <= ((r == 8) ? '7' : '9'))
- digit = c - '0';
- else if (r == 16 && ((c >= 'A' && c <= 'F') ||
- (c >= 'a' && c <= 'f'))) {
- if (c >= 'a')
- digit = c - 'a' + 10;
- else if (c >= 'A')
- digit = c - 'A' + 10;
+ db_tok_number = 0;
+ for (;;) {
+ if (c >= '0' && c <= ((r == 8) ? '7' : '9'))
+ digit = c - '0';
+ else if (r == 16 && ((c >= 'A' && c <= 'F') ||
+ (c >= 'a' && c <= 'f'))) {
+ if (c >= 'a')
+ digit = c - 'a' + 10;
+ else if (c >= 'A')
+ digit = c - 'A' + 10;
+ }
+ else
+ break;
+ db_tok_number = db_tok_number * r + digit;
+ c = db_read_char();
}
- else
- break;
- db_tok_number = db_tok_number * r + digit;
- c = db_read_char();
- }
- if ((c >= '0' && c <= '9') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= 'a' && c <= 'z') ||
- (c == '_'))
- {
- db_error("Bad character in number\n");
- /*NOTREACHED*/
- }
- db_unread_char(c);
- return (tNUMBER);
+ if ((c >= '0' && c <= '9') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= 'a' && c <= 'z') ||
+ (c == '_')) {
+ db_error("Bad character in number\n");
+ /*NOTREACHED*/
+ }
+ db_unread_char(c);
+ return (tNUMBER);
}
if ((c >= 'A' && c <= 'Z') ||
(c >= 'a' && c <= 'z') ||
- c == '_' || c == '\\')
- {
- /* string */
- char *cp;
+ c == '_' || c == '\\') {
+ /* string */
+ char *cp;
- cp = db_tok_string;
- if (c == '\\') {
- c = db_read_char();
- if (c == '\n' || c == -1) {
- db_error("Bad escape\n");
- /*NOTREACHED*/
- }
- }
- *cp++ = c;
- while (1) {
- c = db_read_char();
- if ((c >= 'A' && c <= 'Z') ||
- (c >= 'a' && c <= 'z') ||
- (c >= '0' && c <= '9') ||
- c == '_' || c == '\\' || c == ':')
- {
- if (c == '\\') {
+ cp = db_tok_string;
+ if (c == '\\') {
c = db_read_char();
if (c == '\n' || c == -1) {
- db_error("Bad escape\n");
- /*NOTREACHED*/
+ db_error("Bad escape\n");
+ /*NOTREACHED*/
}
- }
- *cp++ = c;
- if (cp == db_tok_string+sizeof(db_tok_string)) {
- db_error("String too long\n");
- /*NOTREACHED*/
- }
- continue;
}
- else {
- *cp = '\0';
- break;
+ *cp++ = c;
+ while (1) {
+ c = db_read_char();
+ if ((c >= 'A' && c <= 'Z') ||
+ (c >= 'a' && c <= 'z') ||
+ (c >= '0' && c <= '9') ||
+ c == '_' || c == '\\' || c == ':') {
+ if (c == '\\') {
+ c = db_read_char();
+ if (c == '\n' || c == -1) {
+ db_error("Bad escape\n");
+ /*NOTREACHED*/
+ }
+ }
+ *cp++ = c;
+ if (cp == db_tok_string+sizeof(db_tok_string)) {
+ db_error("String too long\n");
+ /*NOTREACHED*/
+ }
+ continue;
+ } else {
+ *cp = '\0';
+ break;
+ }
}
- }
- db_unread_char(c);
- return (tIDENT);
+ db_unread_char(c);
+ return (tIDENT);
}
switch (c) {
- case '+':
+ case '+':
return (tPLUS);
- case '-':
+ case '-':
return (tMINUS);
- case '.':
+ case '.':
c = db_read_char();
if (c == '.')
- return (tDOTDOT);
+ return (tDOTDOT);
db_unread_char(c);
return (tDOT);
- case '*':
+ case '*':
return (tSTAR);
- case '/':
+ case '/':
return (tSLASH);
- case '=':
+ case '=':
return (tEQ);
- case '%':
+ case '%':
return (tPCT);
- case '#':
+ case '#':
return (tHASH);
- case '(':
+ case '(':
return (tLPAREN);
- case ')':
+ case ')':
return (tRPAREN);
- case ',':
+ case ',':
return (tCOMMA);
- case '"':
+ case '"':
return (tDITTO);
- case '$':
+ case '$':
return (tDOLLAR);
- case '!':
+ case '!':
return (tEXCL);
- case '<':
+ case '<':
c = db_read_char();
if (c == '<')
- return (tSHIFT_L);
+ return (tSHIFT_L);
db_unread_char(c);
break;
- case '>':
+ case '>':
c = db_read_char();
if (c == '>')
- return (tSHIFT_R);
+ return (tSHIFT_R);
db_unread_char(c);
break;
- case -1:
+ case -1:
return (tEOF);
}
db_printf("Bad character\n");
diff --git a/sys/ddb/db_lex.h b/sys/ddb/db_lex.h
index 0a39a98becc..d8e535aad22 100644
--- a/sys/ddb/db_lex.h
+++ b/sys/ddb/db_lex.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_lex.h,v 1.12 2000/06/06 05:06:25 jhawk Exp $ */
+/* $NetBSD: db_lex.h,v 1.13 2002/02/15 07:33:51 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -32,19 +32,15 @@
/*
* Lexical analyzer.
*/
-int db_read_line __P((void));
-void db_flush_line __P((void));
-int db_read_char __P((void));
-void db_unread_char __P((int));
-void db_unread_token __P((int));
-int db_read_token __P((void));
-char *db_num_to_str __P((db_expr_t));
-void db_flush_lex __P((void));
-int db_lex __P((void));
+void db_flush_lex(void);
+char *db_num_to_str(db_expr_t);
+int db_read_line(void);
+int db_read_token(void);
+void db_unread_token(int);
-db_expr_t db_tok_number;
-#define TOK_STRING_SIZE 120
-char db_tok_string[TOK_STRING_SIZE];
+extern db_expr_t db_tok_number;
+#define TOK_STRING_SIZE 120
+extern char db_tok_string[];
#define tEOF (-1)
#define tEOL 1
@@ -67,7 +63,3 @@ char db_tok_string[TOK_STRING_SIZE];
#define tSHIFT_L 18
#define tSHIFT_R 19
#define tDOTDOT 20
-
-
-
-
diff --git a/sys/ddb/db_output.c b/sys/ddb/db_output.c
index 92c84433f5d..4c1a00b467d 100644
--- a/sys/ddb/db_output.c
+++ b/sys/ddb/db_output.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_output.c,v 1.26 2001/11/12 22:54:05 lukem Exp $ */
+/* $NetBSD: db_output.c,v 1.27 2002/02/15 07:33:51 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_output.c,v 1.26 2001/11/12 22:54:05 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_output.c,v 1.27 2002/02/15 07:33:51 simonb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -72,67 +72,67 @@ __KERNEL_RCSID(0, "$NetBSD: db_output.c,v 1.26 2001/11/12 22:54:05 lukem Exp $")
#define DB_MIN_MAX_LINE 3 /* minimum max line */
#define CTRL(c) ((c) & 0xff)
-int db_output_position = 0; /* output column */
-int db_output_line = 0; /* output line number */
-int db_last_non_space = 0; /* last non-space character */
-int db_tab_stop_width = 8; /* how wide are tab stops? */
-int db_max_line = DB_MAX_LINE; /* output max lines */
-int db_max_width = DB_MAX_WIDTH; /* output line width */
+int db_output_line = 0; /* output line number */
+int db_tab_stop_width = 8; /* how wide are tab stops? */
+int db_max_line = DB_MAX_LINE; /* output max lines */
+int db_max_width = DB_MAX_WIDTH; /* output line width */
+
+static int db_output_position = 0; /* output column */
+static int db_last_non_space = 0; /* last non-space character */
-static void db_more __P((void));
+static void db_more(void);
/*
* Force pending whitespace.
*/
void
-db_force_whitespace()
+db_force_whitespace(void)
{
int last_print, next_tab;
last_print = db_last_non_space;
while (last_print < db_output_position) {
- next_tab = DB_NEXT_TAB(last_print);
- if (next_tab <= db_output_position) {
- while (last_print < next_tab) { /* DON'T send a tab!!! */
+ next_tab = DB_NEXT_TAB(last_print);
+ if (next_tab <= db_output_position) {
+ while (last_print < next_tab) { /* DON'T send a tab!! */
+ cnputc(' ');
+ last_print++;
+ }
+ } else {
cnputc(' ');
last_print++;
}
- }
- else {
- cnputc(' ');
- last_print++;
- }
}
db_last_non_space = db_output_position;
}
static void
-db_more()
+db_more(void)
{
char *p;
int quit_output = 0;
for (p = "--db_more--"; *p; p++)
- cnputc(*p);
+ cnputc(*p);
switch(cngetc()) {
case ' ':
- db_output_line = 0;
- break;
+ db_output_line = 0;
+ break;
case 'q':
case CTRL('c'):
- db_output_line = 0;
- quit_output = 1;
- break;
+ db_output_line = 0;
+ quit_output = 1;
+ break;
default:
- db_output_line--;
- break;
+ db_output_line--;
+ break;
}
p = "\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b\b\b\b\b\b";
while (*p)
- cnputc(*p++);
+ cnputc(*p++);
if (quit_output) {
- db_error(0);
- /* NOTREACHED */
+ db_error(0);
+ /* NOTREACHED */
}
}
@@ -140,49 +140,44 @@ db_more()
* Output character. Buffer whitespace.
*/
void
-db_putchar(c)
- int c; /* character to output */
+db_putchar(int c)
{
if (db_max_line >= DB_MIN_MAX_LINE && db_output_line >= db_max_line-1)
- db_more();
+ db_more();
if (c > ' ' && c <= '~') {
- /*
- * Printing character.
- * If we have spaces to print, print them first.
- * Use tabs if possible.
- */
- db_force_whitespace();
- cnputc(c);
- db_output_position++;
- if (db_max_width >= DB_MIN_MAX_WIDTH
- && db_output_position >= db_max_width) {
- /* auto new line */
- cnputc('\n');
+ /*
+ * Printing character.
+ * If we have spaces to print, print them first.
+ * Use tabs if possible.
+ */
+ db_force_whitespace();
+ cnputc(c);
+ db_output_position++;
+ if (db_max_width >= DB_MIN_MAX_WIDTH
+ && db_output_position >= db_max_width) {
+ /* auto new line */
+ cnputc('\n');
+ db_output_position = 0;
+ db_last_non_space = 0;
+ db_output_line++;
+ }
+ db_last_non_space = db_output_position;
+ } else if (c == '\n') {
+ /* Return */
+ cnputc(c);
db_output_position = 0;
db_last_non_space = 0;
db_output_line++;
- }
- db_last_non_space = db_output_position;
- }
- else if (c == '\n') {
- /* Return */
- cnputc(c);
- db_output_position = 0;
- db_last_non_space = 0;
- db_output_line++;
- db_check_interrupt();
- }
- else if (c == '\t') {
- /* assume tabs every 8 positions */
- db_output_position = DB_NEXT_TAB(db_output_position);
- }
- else if (c == ' ') {
- /* space */
- db_output_position++;
- }
- else if (c == '\007') {
- /* bell */
- cnputc(c);
+ db_check_interrupt();
+ } else if (c == '\t') {
+ /* assume tabs every 8 positions */
+ db_output_position = DB_NEXT_TAB(db_output_position);
+ } else if (c == ' ') {
+ /* space */
+ db_output_position++;
+ } else if (c == '\007') {
+ /* bell */
+ cnputc(c);
}
/* other characters are assumed non-printing */
}
@@ -191,8 +186,9 @@ db_putchar(c)
* Return output position
*/
int
-db_print_position()
+db_print_position(void)
{
+
return (db_output_position);
}
@@ -200,21 +196,18 @@ db_print_position()
* End line if too long.
*/
void
-db_end_line()
+db_end_line(void)
{
+
if (db_output_position >= db_max_width)
- db_printf("\n");
+ db_printf("\n");
}
/*
* Replacement for old '%r' kprintf format.
*/
void
-db_format_radix(buf, bufsiz, val, altflag)
- char *buf;
- size_t bufsiz;
- quad_t val;
- int altflag;
+db_format_radix(char *buf, size_t bufsiz, quad_t val, int altflag)
{
const char *fmt;
@@ -240,11 +233,7 @@ db_format_radix(buf, bufsiz, val, altflag)
* Replacement for old '%z' kprintf format.
*/
void
-db_format_hex(buf, bufsiz, val, altflag)
- char *buf;
- size_t bufsiz;
- quad_t val;
- int altflag;
+db_format_hex(char *buf, size_t bufsiz, quad_t val, int altflag)
{
/* Only use alternate form if val is nonzero. */
const char *fmt = (altflag && val) ? "-%#qx" : "-%qx";
diff --git a/sys/ddb/db_output.h b/sys/ddb/db_output.h
index 5904cb887e7..a50fa6d60a9 100644
--- a/sys/ddb/db_output.h
+++ b/sys/ddb/db_output.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_output.h,v 1.15 2000/08/09 19:51:46 tv Exp $ */
+/* $NetBSD: db_output.h,v 1.16 2002/02/15 07:33:51 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -32,19 +32,20 @@
/*
* Printing routines for kernel debugger.
*/
-void db_force_whitespace __P((void));
-void db_putchar __P((int));
-int db_print_position __P((void));
-void db_printf __P((const char *, ...))
- __attribute__((__format__(__printf__,1,2)));
-void db_format_radix __P((char *, size_t, quad_t, int));
-void db_format_hex __P((char *, size_t, quad_t, int));
-void db_end_line __P((void));
+void db_force_whitespace(void);
+void db_putchar(int);
+int db_print_position(void);
+void db_printf(const char *, ...)
+ __attribute__((__format__(__printf__,1,2)));
+void db_format_radix(char *, size_t, quad_t, int);
+void db_format_hex(char *, size_t, quad_t, int);
+void db_end_line(void);
-extern int db_radix;
+extern int db_max_line;
extern int db_max_width;
+extern int db_output_line;
+extern int db_radix;
extern int db_tab_stop_width;
-extern int db_max_line;
#define DB_NEXT_TAB(i) \
((((i) + db_tab_stop_width) / db_tab_stop_width) * db_tab_stop_width)
diff --git a/sys/ddb/db_print.c b/sys/ddb/db_print.c
index 24340bd9209..a624b15b030 100644
--- a/sys/ddb/db_print.c
+++ b/sys/ddb/db_print.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_print.c,v 1.17 2001/11/12 22:54:06 lukem Exp $ */
+/* $NetBSD: db_print.c,v 1.18 2002/02/15 07:33:52 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_print.c,v 1.17 2001/11/12 22:54:06 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_print.c,v 1.18 2002/02/15 07:33:52 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -49,34 +49,29 @@ __KERNEL_RCSID(0, "$NetBSD: db_print.c,v 1.17 2001/11/12 22:54:06 lukem Exp $");
/*ARGSUSED*/
void
-db_show_regs(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_show_regs(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
const struct db_variable *regp;
struct db_variable vs;
- db_expr_t value, offset;
- char * name;
+ db_expr_t value, offset;
+ char *name;
for (regp = db_regs; regp < db_eregs; regp++) {
- vs = *regp;
- vs.modif = modif;
- db_read_variable(&vs, &value);
- db_printf("%-12s%s", vs.name, db_num_to_str(value));
- db_find_xtrn_sym_and_offset((db_addr_t)value, &name, &offset);
- if (name != 0 && offset <= db_maxoff && offset != value) {
- db_printf("\t%s", name);
- if (offset != 0) {
- char tbuf[24];
+ vs = *regp;
+ vs.modif = modif;
+ db_read_variable(&vs, &value);
+ db_printf("%-12s%s", vs.name, db_num_to_str(value));
+ db_find_xtrn_sym_and_offset((db_addr_t)value, &name, &offset);
+ if (name != 0 && offset <= db_maxoff && offset != value) {
+ db_printf("\t%s", name);
+ if (offset != 0) {
+ char tbuf[24];
- db_format_radix(tbuf, 24, offset, TRUE);
- db_printf("+%s", tbuf);
+ db_format_radix(tbuf, 24, offset, TRUE);
+ db_printf("+%s", tbuf);
+ }
}
- }
- db_printf("\n");
+ db_printf("\n");
}
db_print_loc_and_inst(PC_REGS(DDB_REGS));
}
-
diff --git a/sys/ddb/db_run.c b/sys/ddb/db_run.c
index 66ac050e25e..1d8f939cf18 100644
--- a/sys/ddb/db_run.c
+++ b/sys/ddb/db_run.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_run.c,v 1.21 2001/11/12 22:54:06 lukem Exp $ */
+/* $NetBSD: db_run.c,v 1.22 2002/02/15 07:33:52 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1993-1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_run.c,v 1.21 2001/11/12 22:54:06 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_run.c,v 1.22 2002/02/15 07:33:52 simonb Exp $");
#include "opt_ddb.h"
@@ -47,9 +47,13 @@ __KERNEL_RCSID(0, "$NetBSD: db_run.c,v 1.21 2001/11/12 22:54:06 lukem Exp $");
#include <ddb/db_access.h>
#include <ddb/db_break.h>
+int db_inst_count;
+int db_load_count;
+int db_store_count;
+
#ifdef SOFTWARE_SSTEP
-static void db_set_temp_breakpoint __P((db_breakpoint_t, db_addr_t));
-static void db_delete_temp_breakpoint __P((db_breakpoint_t));
+static void db_set_temp_breakpoint(db_breakpoint_t, db_addr_t);
+static void db_delete_temp_breakpoint(db_breakpoint_t);
static struct db_breakpoint db_not_taken_bkpt;
static struct db_breakpoint db_taken_bkpt;
#endif
@@ -61,7 +65,7 @@ static struct db_breakpoint db_taken_bkpt;
#include <ddb/db_sym.h>
#include <ddb/db_extern.h>
-int db_run_mode;
+static int db_run_mode;
#define STEP_NONE 0
#define STEP_ONCE 1
#define STEP_RETURN 2
@@ -70,14 +74,12 @@ int db_run_mode;
#define STEP_INVISIBLE 5
#define STEP_COUNT 6
-boolean_t db_sstep_print;
-int db_loop_count;
-int db_call_depth;
+static boolean_t db_sstep_print;
+static int db_loop_count;
+static int db_call_depth;
boolean_t
-db_stop_at_pc(regs, is_breakpoint)
- db_regs_t *regs;
- boolean_t *is_breakpoint;
+db_stop_at_pc(db_regs_t *regs, boolean_t *is_breakpoint)
{
db_addr_t pc;
db_breakpoint_t bkpt;
@@ -113,11 +115,11 @@ db_stop_at_pc(regs, is_breakpoint)
*/
bkpt = db_find_breakpoint_here(pc);
if (bkpt) {
- if (--bkpt->count == 0) {
- bkpt->count = bkpt->init_count;
- *is_breakpoint = TRUE;
- return (TRUE); /* stop here */
- }
+ if (--bkpt->count == 0) {
+ bkpt->count = bkpt->init_count;
+ *is_breakpoint = TRUE;
+ return (TRUE); /* stop here */
+ }
} else if (*is_breakpoint) {
#ifdef PC_ADVANCE
PC_ADVANCE(regs);
@@ -125,149 +127,140 @@ db_stop_at_pc(regs, is_breakpoint)
PC_REGS(regs) += BKPT_SIZE;
#endif
}
-
+
*is_breakpoint = FALSE;
if (db_run_mode == STEP_INVISIBLE) {
- db_run_mode = STEP_CONTINUE;
- return (FALSE); /* continue */
+ db_run_mode = STEP_CONTINUE;
+ return (FALSE); /* continue */
}
if (db_run_mode == STEP_COUNT) {
- return (FALSE); /* continue */
+ return (FALSE); /* continue */
}
if (db_run_mode == STEP_ONCE) {
- if (--db_loop_count > 0) {
- if (db_sstep_print) {
- db_printf("\t\t");
- db_print_loc_and_inst(pc);
- db_printf("\n");
+ if (--db_loop_count > 0) {
+ if (db_sstep_print) {
+ db_printf("\t\t");
+ db_print_loc_and_inst(pc);
+ db_printf("\n");
+ }
+ return (FALSE); /* continue */
}
- return (FALSE); /* continue */
- }
}
if (db_run_mode == STEP_RETURN) {
- db_expr_t ins = db_get_value(pc, sizeof(int), FALSE);
-
- /* continue until matching return */
-
- if (!inst_trap_return(ins) &&
- (!inst_return(ins) || --db_call_depth != 0)) {
- if (db_sstep_print) {
- if (inst_call(ins) || inst_return(ins)) {
- int i;
-
- db_printf("[after %6d] ", db_inst_count);
- for (i = db_call_depth; --i > 0; )
- db_printf(" ");
- db_print_loc_and_inst(pc);
- db_printf("\n");
- }
+ db_expr_t ins = db_get_value(pc, sizeof(int), FALSE);
+
+ /* continue until matching return */
+
+ if (!inst_trap_return(ins) &&
+ (!inst_return(ins) || --db_call_depth != 0)) {
+ if (db_sstep_print) {
+ if (inst_call(ins) || inst_return(ins)) {
+ int i;
+
+ db_printf("[after %6d] ",
+ db_inst_count);
+ for (i = db_call_depth; --i > 0; )
+ db_printf(" ");
+ db_print_loc_and_inst(pc);
+ db_printf("\n");
+ }
+ }
+ if (inst_call(ins))
+ db_call_depth++;
+ return (FALSE); /* continue */
}
- if (inst_call(ins))
- db_call_depth++;
- return (FALSE); /* continue */
- }
}
if (db_run_mode == STEP_CALLT) {
- db_expr_t ins = db_get_value(pc, sizeof(int), FALSE);
+ db_expr_t ins = db_get_value(pc, sizeof(int), FALSE);
- /* continue until call or return */
+ /* continue until call or return */
- if (!inst_call(ins) &&
- !inst_return(ins) &&
- !inst_trap_return(ins)) {
- return (FALSE); /* continue */
- }
+ if (!inst_call(ins) &&
+ !inst_return(ins) &&
+ !inst_trap_return(ins)) {
+ return (FALSE); /* continue */
+ }
}
db_run_mode = STEP_NONE;
return (TRUE);
}
void
-db_restart_at_pc(regs, watchpt)
- db_regs_t *regs;
- boolean_t watchpt;
+db_restart_at_pc(db_regs_t *regs, boolean_t watchpt)
{
db_addr_t pc = PC_REGS(regs);
+#ifdef SOFTWARE_SSTEP
+ db_addr_t brpc;
+#endif
if ((db_run_mode == STEP_COUNT) ||
(db_run_mode == STEP_RETURN) ||
(db_run_mode == STEP_CALLT)) {
- db_expr_t ins;
+ db_expr_t ins;
- /*
- * We are about to execute this instruction,
- * so count it now.
- */
- ins = db_get_value(pc, sizeof(int), FALSE);
- db_inst_count++;
- db_load_count += inst_load(ins);
- db_store_count += inst_store(ins);
+ /*
+ * We are about to execute this instruction,
+ * so count it now.
+ */
+ ins = db_get_value(pc, sizeof(int), FALSE);
+ db_inst_count++;
+ db_load_count += inst_load(ins);
+ db_store_count += inst_store(ins);
#ifdef SOFTWARE_SSTEP
- /*
- * Account for instructions in delay slots.
- */
- {
- db_addr_t brpc;
-
+ /*
+ * Account for instructions in delay slots.
+ */
brpc = next_instr_address(pc, TRUE);
if ((brpc != pc) &&
(inst_branch(ins) || inst_call(ins) || inst_return(ins))) {
- ins = db_get_value(brpc, sizeof(int), FALSE);
- db_inst_count++;
- db_load_count += inst_load(ins);
- db_store_count += inst_store(ins);
+ ins = db_get_value(brpc, sizeof(int), FALSE);
+ db_inst_count++;
+ db_load_count += inst_load(ins);
+ db_store_count += inst_store(ins);
}
- }
#endif
}
if (db_run_mode == STEP_CONTINUE) {
- if (watchpt || db_find_breakpoint_here(pc)) {
- /*
- * Step over breakpoint/watchpoint.
- */
- db_run_mode = STEP_INVISIBLE;
- db_set_single_step(regs);
- } else {
- db_set_breakpoints();
- db_set_watchpoints();
- }
+ if (watchpt || db_find_breakpoint_here(pc)) {
+ /*
+ * Step over breakpoint/watchpoint.
+ */
+ db_run_mode = STEP_INVISIBLE;
+ db_set_single_step(regs);
+ } else {
+ db_set_breakpoints();
+ db_set_watchpoints();
+ }
} else {
- db_set_single_step(regs);
+ db_set_single_step(regs);
}
}
void
-db_single_step(regs)
- db_regs_t *regs;
+db_single_step(db_regs_t *regs)
{
+
if (db_run_mode == STEP_CONTINUE) {
- db_run_mode = STEP_INVISIBLE;
- db_set_single_step(regs);
+ db_run_mode = STEP_INVISIBLE;
+ db_set_single_step(regs);
}
}
-
-extern int db_cmd_loop_done;
-
/* single-step */
/*ARGSUSED*/
void
-db_single_step_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_single_step_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- boolean_t print = FALSE;
+ boolean_t print = FALSE;
if (count == -1)
- count = 1;
+ count = 1;
if (modif[0] == 'p')
- print = TRUE;
+ print = TRUE;
db_run_mode = STEP_ONCE;
db_loop_count = count;
@@ -282,16 +275,13 @@ db_single_step_cmd(addr, have_addr, count, modif)
/* trace and print until call/return */
/*ARGSUSED*/
void
-db_trace_until_call_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_trace_until_call_cmd(db_expr_t addr, int have_addr, db_expr_t count,
+ char *modif)
{
- boolean_t print = FALSE;
+ boolean_t print = FALSE;
if (modif[0] == 'p')
- print = TRUE;
+ print = TRUE;
db_run_mode = STEP_CALLT;
db_sstep_print = print;
@@ -304,16 +294,13 @@ db_trace_until_call_cmd(addr, have_addr, count, modif)
/*ARGSUSED*/
void
-db_trace_until_matching_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_trace_until_matching_cmd(db_expr_t addr, int have_addr, db_expr_t count,
+ char *modif)
{
- boolean_t print = FALSE;
+ boolean_t print = FALSE;
if (modif[0] == 'p')
- print = TRUE;
+ print = TRUE;
db_run_mode = STEP_RETURN;
db_call_depth = 1;
@@ -328,16 +315,13 @@ db_trace_until_matching_cmd(addr, have_addr, count, modif)
/* continue */
/*ARGSUSED*/
void
-db_continue_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_continue_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
if (modif[0] == 'c')
- db_run_mode = STEP_COUNT;
+ db_run_mode = STEP_COUNT;
else
- db_run_mode = STEP_CONTINUE;
+ db_run_mode = STEP_CONTINUE;
db_inst_count = 0;
db_load_count = 0;
db_store_count = 0;
@@ -377,7 +361,7 @@ db_continue_cmd(addr, have_addr, count, modif)
* If one of these addresses does not already have a breakpoint,
* we allocate a breakpoint and save it here.
* These breakpoints are deleted on return.
- */
+ */
#if !defined(DDB)
/* XXX - don't check for existing breakpoints in KGDB-only case */
@@ -385,8 +369,7 @@ db_continue_cmd(addr, have_addr, count, modif)
#endif
void
-db_set_single_step(regs)
- db_regs_t *regs;
+db_set_single_step(db_regs_t *regs)
{
db_addr_t pc = PC_REGS(regs), brpc = pc;
boolean_t unconditional;
@@ -439,8 +422,7 @@ db_set_single_step(regs)
}
void
-db_clear_single_step(regs)
- db_regs_t *regs;
+db_clear_single_step(db_regs_t *regs)
{
if (db_taken_bkpt.address != 0)
@@ -451,9 +433,7 @@ db_clear_single_step(regs)
}
void
-db_set_temp_breakpoint(bkpt, addr)
- db_breakpoint_t bkpt;
- db_addr_t addr;
+db_set_temp_breakpoint(db_breakpoint_t bkpt, db_addr_t addr)
{
bkpt->map = NULL;
@@ -467,11 +447,10 @@ db_set_temp_breakpoint(bkpt, addr)
}
void
-db_delete_temp_breakpoint(bkpt)
- db_breakpoint_t bkpt;
+db_delete_temp_breakpoint(db_breakpoint_t bkpt)
{
+
db_put_value(bkpt->address, BKPT_SIZE, bkpt->bkpt_inst);
bkpt->address = 0;
}
-
#endif /* SOFTWARE_SSTEP */
diff --git a/sys/ddb/db_run.h b/sys/ddb/db_run.h
index bf94c35c1e8..ff739eaac5a 100644
--- a/sys/ddb/db_run.h
+++ b/sys/ddb/db_run.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_run.h,v 1.6 2001/02/15 21:59:38 cgd Exp $ */
+/* $NetBSD: db_run.h,v 1.7 2002/02/15 07:33:52 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -35,22 +35,22 @@
/*
* Commands to run process.
*/
-int db_inst_count;
-int db_load_count;
-int db_store_count;
+extern int db_inst_count;
+extern int db_load_count;
+extern int db_store_count;
-boolean_t db_stop_at_pc __P((db_regs_t *, boolean_t *));
-void db_restart_at_pc __P((db_regs_t *, boolean_t));
-void db_single_step __P((db_regs_t *));
+boolean_t db_stop_at_pc(db_regs_t *, boolean_t *);
+void db_restart_at_pc(db_regs_t *, boolean_t);
+void db_single_step(db_regs_t *);
#ifndef db_set_single_step
-void db_set_single_step __P((db_regs_t *));
+void db_set_single_step(db_regs_t *);
#endif
#ifndef db_clear_single_step
-void db_clear_single_step __P((db_regs_t *));
+void db_clear_single_step(db_regs_t *);
#endif
-void db_single_step_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_trace_until_call_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_trace_until_matching_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_continue_cmd __P((db_expr_t, int, db_expr_t, char *));
+void db_single_step_cmd(db_expr_t, int, db_expr_t, char *);
+void db_trace_until_call_cmd(db_expr_t, int, db_expr_t, char *);
+void db_trace_until_matching_cmd(db_expr_t, int, db_expr_t, char *);
+void db_continue_cmd(db_expr_t, int, db_expr_t, char *);
#endif /* _DDB_DB_RUN_ */
diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c
index a1d6a2c25b5..19426caa216 100644
--- a/sys/ddb/db_sym.c
+++ b/sys/ddb/db_sym.c
@@ -1,33 +1,33 @@
-/* $NetBSD: db_sym.c,v 1.30 2002/01/05 20:09:52 jhawk Exp $ */
+/* $NetBSD: db_sym.c,v 1.31 2002/02/15 07:33:52 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_sym.c,v 1.30 2002/01/05 20:09:52 jhawk Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_sym.c,v 1.31 2002/02/15 07:33:52 simonb Exp $");
#include "opt_ddb.h"
@@ -54,7 +54,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_sym.c,v 1.30 2002/01/05 20:09:52 jhawk Exp $");
#define MAXNOSYMTABS MAXLKMS+1 /* Room for kernel + LKM's */
#endif
-db_symtab_t db_symtabs[MAXNOSYMTABS] = {{0,},};
+static db_symtab_t db_symtabs[MAXNOSYMTABS] = {{0,},};
db_symtab_t *db_last_symtab;
@@ -65,13 +65,16 @@ char db_symtab[SYMTAB_SPACE] = SYMTAB_FILLER;
int db_symtabsize = SYMTAB_SPACE;
#endif
-static char *db_qualify __P((db_sym_t, const char *));
+static char *db_qualify(db_sym_t, const char *);
+static boolean_t db_line_at_pc(db_sym_t, char **, int *, db_expr_t);
+static db_sym_t db_lookup(char *);
+
static db_forall_func_t db_sift;
/*
* Put the most picky symbol table formats at the top!
*/
-const db_symformat_t * const db_symformats[] = {
+static const db_symformat_t * const db_symformats[] = {
#ifdef DB_ELF_SYMBOLS
&db_symformat_elf,
#endif
@@ -83,18 +86,17 @@ const db_symformat_t * const db_symformats[] = {
const db_symformat_t *db_symformat;
-boolean_t X_db_sym_init __P((int, void *, void *, const char *));
-db_sym_t X_db_lookup __P((db_symtab_t *, char *));
-db_sym_t X_db_search_symbol __P((db_symtab_t *, db_addr_t,
- db_strategy_t, db_expr_t *));
-void X_db_symbol_values __P((db_symtab_t *, db_sym_t, char **,
- db_expr_t *));
-boolean_t X_db_line_at_pc __P((db_symtab_t *, db_sym_t, char **,
- int *, db_expr_t));
-int X_db_sym_numargs __P((db_symtab_t *, db_sym_t, int *,
- char **));
-void X_db_forall __P((db_symtab_t *,
- db_forall_func_t db_forall_func, void *));
+static boolean_t X_db_sym_init(int, void *, void *, const char *);
+static db_sym_t X_db_lookup(db_symtab_t *, char *);
+static db_sym_t X_db_search_symbol(db_symtab_t *, db_addr_t, db_strategy_t,
+ db_expr_t *);
+static void X_db_symbol_values(db_symtab_t *, db_sym_t, char **,
+ db_expr_t *);
+static boolean_t X_db_line_at_pc(db_symtab_t *, db_sym_t, char **, int *,
+ db_expr_t);
+static int X_db_sym_numargs(db_symtab_t *, db_sym_t, int *, char **);
+static void X_db_forall(db_symtab_t *, db_forall_func_t db_forall_func,
+ void *);
/*
* Initialize the kernel debugger by initializing the master symbol
@@ -102,9 +104,7 @@ void X_db_forall __P((db_symtab_t *,
* no other symbol tables can be loaded.
*/
void
-ddb_init(symsize, vss, vse)
- int symsize;
- void *vss, *vse;
+ddb_init(int symsize, void *vss, void *vse)
{
const db_symformat_t * const *symf;
const char *name = "netbsd";
@@ -150,11 +150,7 @@ ddb_init(symsize, vss, vse)
* Add symbol table, with given name, to list of symbol tables.
*/
int
-db_add_symbol_table(start, end, name, ref)
- char *start;
- char *end;
- const char *name;
- char *ref;
+db_add_symbol_table(char *start, char *end, const char *name, char *ref)
{
int slot;
@@ -179,8 +175,7 @@ db_add_symbol_table(start, end, name, ref)
* Delete a symbol table. Caller is responsible for freeing storage.
*/
void
-db_del_symbol_table(name)
- char *name;
+db_del_symbol_table(char *name)
{
int slot;
@@ -207,12 +202,10 @@ db_del_symbol_table(name)
* overwritten by each call... but in practice this seems okay.
*/
static char *
-db_qualify(sym, symtabname)
- db_sym_t sym;
- const char *symtabname;
+db_qualify(db_sym_t sym, const char *symtabname)
{
char *symname;
- static char tmp[256];
+ static char tmp[256];
char *s;
db_symbol_values(sym, &symname, 0);
@@ -227,28 +220,24 @@ db_qualify(sym, symtabname)
boolean_t
-db_eqname(src, dst, c)
- char *src;
- char *dst;
- int c;
+db_eqname(char *src, char *dst, int c)
{
+
if (!strcmp(src, dst))
- return (TRUE);
+ return (TRUE);
if (src[0] == c)
- return (!strcmp(src+1,dst));
+ return (!strcmp(src+1,dst));
return (FALSE);
}
boolean_t
-db_value_of_name(name, valuep)
- char *name;
- db_expr_t *valuep;
+db_value_of_name(char *name, db_expr_t *valuep)
{
db_sym_t sym;
sym = db_lookup(name);
if (sym == DB_SYM_NULL)
- return (FALSE);
+ return (FALSE);
db_symbol_values(sym, &name, valuep);
return (TRUE);
}
@@ -260,9 +249,8 @@ db_value_of_name(name, valuep)
* then only the specified symbol table will be searched;
* otherwise, all symbol tables will be searched.
*/
-db_sym_t
-db_lookup(symstr)
- char *symstr;
+static db_sym_t
+db_lookup(char *symstr)
{
db_sym_t sp;
int i;
@@ -298,7 +286,7 @@ db_lookup(symstr)
* Return on first match.
*/
for (i = symtab_start; i < symtab_end; i++) {
- if (db_symtabs[i].name &&
+ if (db_symtabs[i].name &&
(sp = X_db_lookup(&db_symtabs[i], symstr))) {
db_last_symtab = &db_symtabs[i];
return sp;
@@ -319,13 +307,8 @@ struct db_sift_args {
* criteria.
*/
static void
-db_sift(stab, sym, name, suffix, prefix, arg)
- db_symtab_t *stab;
- db_sym_t sym;
- char *name;
- char *suffix;
- int prefix;
- void *arg;
+db_sift(db_symtab_t *stab, db_sym_t sym, char *name, char *suffix, int prefix,
+ void *arg)
{
char c, sc;
char *find, *p;
@@ -336,7 +319,7 @@ db_sift(stab, sym, name, suffix, prefix, arg)
find = dsa->symstr; /* String we're looking for. */
p = name; /* String we're searching within. */
-
+
/* Matching algorithm cribbed from strstr(), which is not
in the kernel. */
if ((c = *find++) != 0) {
@@ -364,9 +347,7 @@ db_sift(stab, sym, name, suffix, prefix, arg)
* "mode" is how-to-display, set from modifiers.
*/
void
-db_sifting(symstr, mode)
- char *symstr;
- int mode;
+db_sifting(char *symstr, int mode)
{
char *cp;
int i;
@@ -422,8 +403,7 @@ db_sifting(symstr, mode)
boolean_t db_qualify_ambiguous_names = FALSE;
boolean_t
-db_symbol_is_ambiguous(sym)
- db_sym_t sym;
+db_symbol_is_ambiguous(db_sym_t sym)
{
char *sym_name;
int i;
@@ -449,10 +429,7 @@ db_symbol_is_ambiguous(sym)
* and the difference between val and the symbol found.
*/
db_sym_t
-db_search_symbol( val, strategy, offp)
- db_addr_t val;
- db_strategy_t strategy;
- db_expr_t *offp;
+db_search_symbol(db_addr_t val, db_strategy_t strategy, db_expr_t *offp)
{
unsigned int diff;
db_expr_t newdiff;
@@ -462,14 +439,15 @@ db_search_symbol( val, strategy, offp)
newdiff = diff = ~0;
db_last_symtab = 0;
for (i = 0; i < MAXNOSYMTABS; i++) {
- if (!db_symtabs[i].name)
- continue;
- sym = X_db_search_symbol(&db_symtabs[i], val, strategy, &newdiff);
- if (newdiff < diff) {
- db_last_symtab = &db_symtabs[i];
- diff = newdiff;
- ret = sym;
- }
+ if (!db_symtabs[i].name)
+ continue;
+ sym = X_db_search_symbol(&db_symtabs[i], val, strategy,
+ &newdiff);
+ if (newdiff < diff) {
+ db_last_symtab = &db_symtabs[i];
+ diff = newdiff;
+ ret = sym;
+ }
}
*offp = diff;
return ret;
@@ -479,10 +457,7 @@ db_search_symbol( val, strategy, offp)
* Return name and value of a symbol
*/
void
-db_symbol_values(sym, namep, valuep)
- db_sym_t sym;
- char **namep;
- db_expr_t *valuep;
+db_symbol_values(db_sym_t sym, char **namep, db_expr_t *valuep)
{
db_expr_t value;
@@ -523,10 +498,7 @@ unsigned long db_lastsym = (unsigned long)end;
unsigned int db_maxoff = 0x10000000;
void
-db_symstr(buf, off, strategy)
- char *buf;
- db_expr_t off;
- db_strategy_t strategy;
+db_symstr(char *buf, db_expr_t off, db_strategy_t strategy)
{
db_expr_t d;
char *filename;
@@ -558,10 +530,8 @@ db_symstr(buf, off, strategy)
}
void
-db_printsym(off, strategy, pr)
- db_expr_t off;
- db_strategy_t strategy;
- void (*pr) __P((const char *, ...));
+db_printsym(db_expr_t off, db_strategy_t strategy,
+ void (*pr)(const char *, ...))
{
db_expr_t d;
char *filename;
@@ -593,30 +563,22 @@ db_printsym(off, strategy, pr)
}
-boolean_t
-db_line_at_pc( sym, filename, linenum, pc)
- db_sym_t sym;
- char **filename;
- int *linenum;
- db_expr_t pc;
+static boolean_t
+db_line_at_pc(db_sym_t sym, char **filename, int *linenum, db_expr_t pc)
{
+
return X_db_line_at_pc( db_last_symtab, sym, filename, linenum, pc);
}
int
-db_sym_numargs(sym, nargp, argnames)
- db_sym_t sym;
- int *nargp;
- char **argnames;
+db_sym_numargs(db_sym_t sym, int *nargp, char **argnames)
{
+
return X_db_sym_numargs(db_last_symtab, sym, nargp, argnames);
}
-boolean_t
-X_db_sym_init(symsize, vss, vse, name)
- int symsize;
- void *vss, *vse;
- const char *name;
+static boolean_t
+X_db_sym_init(int symsize, void *vss, void *vse, const char *name)
{
if (db_symformat != NULL)
@@ -624,10 +586,8 @@ X_db_sym_init(symsize, vss, vse, name)
return (FALSE);
}
-db_sym_t
-X_db_lookup(stab, symstr)
- db_symtab_t *stab;
- char *symstr;
+static db_sym_t
+X_db_lookup(db_symtab_t *stab, char *symstr)
{
if (db_symformat != NULL)
@@ -635,12 +595,9 @@ X_db_lookup(stab, symstr)
return ((db_sym_t)0);
}
-db_sym_t
-X_db_search_symbol(stab, off, strategy, diffp)
- db_symtab_t *stab;
- db_addr_t off;
- db_strategy_t strategy;
- db_expr_t *diffp;
+static db_sym_t
+X_db_search_symbol(db_symtab_t *stab, db_addr_t off, db_strategy_t strategy,
+ db_expr_t *diffp)
{
if (db_symformat != NULL)
@@ -649,25 +606,18 @@ X_db_search_symbol(stab, off, strategy, diffp)
return ((db_sym_t)0);
}
-void
-X_db_symbol_values(stab, sym, namep, valuep)
- db_symtab_t *stab;
- db_sym_t sym;
- char **namep;
- db_expr_t *valuep;
+static void
+X_db_symbol_values(db_symtab_t *stab, db_sym_t sym, char **namep,
+ db_expr_t *valuep)
{
- if (db_symformat != NULL)
+ if (db_symformat != NULL)
(*db_symformat->sym_value)(stab, sym, namep, valuep);
}
-boolean_t
-X_db_line_at_pc(stab, cursym, filename, linenum, off)
- db_symtab_t *stab;
- db_sym_t cursym;
- char **filename;
- int *linenum;
- db_expr_t off;
+static boolean_t
+X_db_line_at_pc(db_symtab_t *stab, db_sym_t cursym, char **filename,
+ int *linenum, db_expr_t off)
{
if (db_symformat != NULL)
@@ -676,12 +626,9 @@ X_db_line_at_pc(stab, cursym, filename, linenum, off)
return (FALSE);
}
-boolean_t
-X_db_sym_numargs(stab, cursym, nargp, argnamep)
- db_symtab_t *stab;
- db_sym_t cursym;
- int *nargp;
- char **argnamep;
+static boolean_t
+X_db_sym_numargs(db_symtab_t *stab, db_sym_t cursym, int *nargp,
+ char **argnamep)
{
if (db_symformat != NULL)
@@ -690,12 +637,10 @@ X_db_sym_numargs(stab, cursym, nargp, argnamep)
return (FALSE);
}
-void
-X_db_forall(stab, db_forall_func, arg)
- db_symtab_t *stab;
- db_forall_func_t db_forall_func;
- void *arg;
+static void
+X_db_forall(db_symtab_t *stab, db_forall_func_t db_forall_func, void *arg)
{
+
if (db_symformat != NULL)
(*db_symformat->sym_forall)(stab, db_forall_func, arg);
}
diff --git a/sys/ddb/db_sym.h b/sys/ddb/db_sym.h
index 85ae8a72b9e..e1e1db19b3b 100644
--- a/sys/ddb/db_sym.h
+++ b/sys/ddb/db_sym.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_sym.h,v 1.15 2002/01/05 20:09:52 jhawk Exp $ */
+/* $NetBSD: db_sym.h,v 1.16 2002/02/15 07:33:53 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -73,26 +73,25 @@ typedef int db_strategy_t; /* search strategy */
* in a.out), and arg an opaque argument to be passed in.
*/
typedef void (db_forall_func_t)
- __P((db_symtab_t *, db_sym_t, char *, char *, int, void *));
+ (db_symtab_t *, db_sym_t, char *, char *, int, void *);
/*
* A symbol table may be in one of many formats. All symbol tables
* must be of the same format as the master kernel symbol table.
*/
typedef struct {
- const char *sym_format;
- boolean_t (*sym_init) __P((int, void *, void *, const char *));
- db_sym_t (*sym_lookup) __P((db_symtab_t *, char *));
- db_sym_t (*sym_search) __P((db_symtab_t *, db_addr_t, db_strategy_t,
- db_expr_t *));
- void (*sym_value) __P((db_symtab_t *, db_sym_t, char **,
- db_expr_t *));
- boolean_t (*sym_line_at_pc) __P((db_symtab_t *, db_sym_t,
- char **, int *, db_expr_t));
- boolean_t (*sym_numargs) __P((db_symtab_t *, db_sym_t, int *,
- char **));
- void (*sym_forall) __P((db_symtab_t *,
- db_forall_func_t *db_forall_func, void *));
+ const char *sym_format;
+ boolean_t (*sym_init)(int, void *, void *, const char *);
+ db_sym_t (*sym_lookup)(db_symtab_t *, char *);
+ db_sym_t (*sym_search)(db_symtab_t *, db_addr_t, db_strategy_t,
+ db_expr_t *);
+ void (*sym_value)(db_symtab_t *, db_sym_t, char **,
+ db_expr_t *);
+ boolean_t (*sym_line_at_pc)(db_symtab_t *, db_sym_t, char **,
+ int *, db_expr_t);
+ boolean_t (*sym_numargs)(db_symtab_t *, db_sym_t, int *, char **);
+ void (*sym_forall)(db_symtab_t *,
+ db_forall_func_t *db_forall_func, void *);
} db_symformat_t;
extern boolean_t db_qualify_ambiguous_names;
@@ -101,32 +100,31 @@ extern boolean_t db_qualify_ambiguous_names;
* Might slow down quite a bit */
extern unsigned int db_maxoff; /* like gdb's "max-symbolic-offset" */
+
/*
* Functions exported by the symtable module
*/
-int db_add_symbol_table __P((char *, char *, const char *, char *));
+int db_add_symbol_table(char *, char *, const char *, char *);
/* extend the list of symbol tables */
-void db_del_symbol_table __P((char *));
+void db_del_symbol_table(char *);
/* remove a symbol table from list */
-boolean_t db_eqname __P((char *, char *, int));
+boolean_t db_eqname(char *, char *, int);
/* strcmp, modulo leading char */
-int db_value_of_name __P((char *, db_expr_t *));
+int db_value_of_name(char *, db_expr_t *);
/* find symbol value given name */
-db_sym_t db_lookup __P((char *));
-
-void db_sifting __P((char *, int));
+void db_sifting(char *, int);
/* print partially matching symbol names */
-boolean_t db_symbol_is_ambiguous __P((db_sym_t));
+boolean_t db_symbol_is_ambiguous(db_sym_t);
-db_sym_t db_search_symbol __P((db_addr_t, db_strategy_t, db_expr_t *));
+db_sym_t db_search_symbol(db_addr_t, db_strategy_t, db_expr_t *);
/* find symbol given value */
-void db_symbol_values __P((db_sym_t, char **, db_expr_t *));
+void db_symbol_values(db_sym_t, char **, db_expr_t *);
/* return name and value of symbol */
#define db_find_sym_and_offset(val,namep,offp) \
@@ -137,13 +135,12 @@ void db_symbol_values __P((db_sym_t, char **, db_expr_t *));
db_symbol_values(db_search_symbol(val,DB_STGY_XTRN,offp),namep,0)
/* ditto, but no locals */
-void db_symstr(char *, db_expr_t, db_strategy_t);
-void db_printsym __P((db_expr_t, db_strategy_t, void(*)(const char *, ...)));
+void db_symstr(char *, db_expr_t, db_strategy_t);
+void db_printsym(db_expr_t, db_strategy_t,
+ void(*)(const char *, ...));
/* print closest symbol to a value */
-boolean_t db_line_at_pc __P((db_sym_t, char **, int *, db_expr_t));
-
-int db_sym_numargs __P((db_sym_t, int *, char **));
+int db_sym_numargs(db_sym_t, int *, char **);
#ifdef DB_AOUT_SYMBOLS
extern const db_symformat_t db_symformat_aout;
diff --git a/sys/ddb/db_trap.c b/sys/ddb/db_trap.c
index c2ba22e0ad3..05b9737765b 100644
--- a/sys/ddb/db_trap.c
+++ b/sys/ddb/db_trap.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_trap.c,v 1.18 2001/11/12 22:54:07 lukem Exp $ */
+/* $NetBSD: db_trap.c,v 1.19 2002/02/15 07:33:53 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trap.c,v 1.18 2001/11/12 22:54:07 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trap.c,v 1.19 2002/02/15 07:33:53 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -55,8 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_trap.c,v 1.18 2001/11/12 22:54:07 lukem Exp $");
void (*db_trap_callback)(int);
void
-db_trap(type, code)
- int type, code;
+db_trap(int type, int code)
{
boolean_t bkpt;
boolean_t watchpt;
@@ -67,32 +66,34 @@ db_trap(type, code)
if (db_trap_callback) db_trap_callback(1);
if (db_stop_at_pc(DDB_REGS, &bkpt)) {
- if (db_inst_count) {
- db_printf("After %d instructions (%d loads, %d stores),\n",
- db_inst_count, db_load_count, db_store_count);
- }
- if (curproc != NULL) {
- if (bkpt)
- db_printf("Breakpoint");
+ if (db_inst_count) {
+ db_printf("After %d instructions "
+ "(%d loads, %d stores),\n",
+ db_inst_count, db_load_count, db_store_count);
+ }
+ if (curproc != NULL) {
+ if (bkpt)
+ db_printf("Breakpoint");
+ else if (watchpt)
+ db_printf("Watchpoint");
+ else
+ db_printf("Stopped");
+ db_printf(" in pid %d (%s) at\t", curproc->p_pid,
+ curproc->p_comm);
+ } else if (bkpt)
+ db_printf("Breakpoint at\t");
else if (watchpt)
- db_printf("Watchpoint");
+ db_printf("Watchpoint at\t");
else
- db_printf("Stopped");
- db_printf(" in pid %d (%s) at\t", curproc->p_pid,
- curproc->p_comm);
- } else if (bkpt)
- db_printf("Breakpoint at\t");
- else if (watchpt)
- db_printf("Watchpoint at\t");
- else
- db_printf("Stopped at\t");
- db_dot = PC_REGS(DDB_REGS);
- db_print_loc_and_inst(db_dot);
+ db_printf("Stopped at\t");
+ db_dot = PC_REGS(DDB_REGS);
+ db_print_loc_and_inst(db_dot);
- db_command_loop();
+ db_command_loop();
}
db_restart_at_pc(DDB_REGS, watchpt);
- if (db_trap_callback) db_trap_callback(0);
+ if (db_trap_callback)
+ db_trap_callback(0);
}
diff --git a/sys/ddb/db_variables.c b/sys/ddb/db_variables.c
index 344ce54c96b..ae87a3001f6 100644
--- a/sys/ddb/db_variables.c
+++ b/sys/ddb/db_variables.c
@@ -1,33 +1,33 @@
-/* $NetBSD: db_variables.c,v 1.23 2001/11/20 08:43:44 lukem Exp $ */
+/* $NetBSD: db_variables.c,v 1.24 2002/02/15 07:33:53 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_variables.c,v 1.23 2001/11/20 08:43:44 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_variables.c,v 1.24 2002/02/15 07:33:53 simonb Exp $");
#include "opt_ddb.h"
@@ -65,9 +65,9 @@ int db_onpanic = DDB_ONPANIC;
#endif
int db_fromconsole = DDB_FROMCONSOLE;
-
-static int db_rw_internal_variable __P((const struct db_variable *,
- db_expr_t *, int));
+static int db_rw_internal_variable(const struct db_variable *, db_expr_t *,
+ int);
+static int db_find_variable(const struct db_variable **);
/* XXX must all be ints for sysctl. */
const struct db_variable db_vars[] = {
@@ -85,17 +85,13 @@ const struct db_variable * const db_evars = db_vars + sizeof(db_vars)/sizeof(db_
* ddb command line access to the DDB variables defined above.
*/
static int
-db_rw_internal_variable(vp, valp, rw)
- const struct db_variable *vp;
- db_expr_t *valp;
- int rw;
+db_rw_internal_variable(const struct db_variable *vp, db_expr_t *valp, int rw)
{
- if (rw == DB_VAR_GET) {
+ if (rw == DB_VAR_GET)
*valp = *(int *)vp->valuep;
- } else {
+ else
*(int *)vp->valuep = *valp;
- }
return (0);
}
@@ -103,14 +99,8 @@ db_rw_internal_variable(vp, valp, rw)
* sysctl(3) access to the DDB variables defined above.
*/
int
-ddb_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p)
- int *name;
- u_int namelen;
- void *oldp;
- size_t *oldlenp;
- void *newp;
- size_t newlen;
- struct proc *p;
+ddb_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
+ size_t newlen, struct proc *p)
{
/* All sysctl names at this level are terminal. */
@@ -146,26 +136,25 @@ ddb_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p)
}
int
-db_find_variable(varp)
- const struct db_variable **varp;
+db_find_variable(const struct db_variable **varp)
{
int t;
const struct db_variable *vp;
t = db_read_token();
if (t == tIDENT) {
- for (vp = db_vars; vp < db_evars; vp++) {
- if (!strcmp(db_tok_string, vp->name)) {
- *varp = vp;
- return (1);
+ for (vp = db_vars; vp < db_evars; vp++) {
+ if (!strcmp(db_tok_string, vp->name)) {
+ *varp = vp;
+ return (1);
+ }
}
- }
- for (vp = db_regs; vp < db_eregs; vp++) {
- if (!strcmp(db_tok_string, vp->name)) {
- *varp = vp;
- return (1);
+ for (vp = db_regs; vp < db_eregs; vp++) {
+ if (!strcmp(db_tok_string, vp->name)) {
+ *varp = vp;
+ return (1);
+ }
}
- }
}
db_error("Unknown variable\n");
/*NOTREACHED*/
@@ -173,13 +162,12 @@ db_find_variable(varp)
}
int
-db_get_variable(valuep)
- db_expr_t *valuep;
+db_get_variable(db_expr_t *valuep)
{
const struct db_variable *vp;
if (!db_find_variable(&vp))
- return (0);
+ return (0);
db_read_variable(vp, valuep);
@@ -187,13 +175,12 @@ db_get_variable(valuep)
}
int
-db_set_variable(value)
- db_expr_t value;
+db_set_variable(db_expr_t value)
{
const struct db_variable *vp;
if (!db_find_variable(&vp))
- return (0);
+ return (0);
db_write_variable(vp, &value);
@@ -202,38 +189,30 @@ db_set_variable(value)
void
-db_read_variable(vp, valuep)
- const struct db_variable *vp;
- db_expr_t *valuep;
+db_read_variable(const struct db_variable *vp, db_expr_t *valuep)
{
- int (*func) __P((const struct db_variable *, db_expr_t *, int)) = vp->fcn;
+ int (*func)(const struct db_variable *, db_expr_t *, int) = vp->fcn;
if (func == FCN_NULL)
- *valuep = *(vp->valuep);
+ *valuep = *(vp->valuep);
else
- (*func)(vp, valuep, DB_VAR_GET);
+ (*func)(vp, valuep, DB_VAR_GET);
}
void
-db_write_variable(vp, valuep)
- const struct db_variable *vp;
- db_expr_t *valuep;
+db_write_variable(const struct db_variable *vp, db_expr_t *valuep)
{
- int (*func) __P((const struct db_variable *, db_expr_t *, int)) = vp->fcn;
+ int (*func)(const struct db_variable *, db_expr_t *, int) = vp->fcn;
if (func == FCN_NULL)
- *(vp->valuep) = *valuep;
+ *(vp->valuep) = *valuep;
else
- (*func)(vp, valuep, DB_VAR_SET);
+ (*func)(vp, valuep, DB_VAR_SET);
}
/*ARGSUSED*/
void
-db_set_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_set_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
db_expr_t value;
db_expr_t old_value;
@@ -242,25 +221,25 @@ db_set_cmd(addr, have_addr, count, modif)
t = db_read_token();
if (t != tDOLLAR) {
- db_error("Unknown variable\n");
- /*NOTREACHED*/
+ db_error("Unknown variable\n");
+ /*NOTREACHED*/
}
if (!db_find_variable(&vp)) {
- db_error("Unknown variable\n");
- /*NOTREACHED*/
+ db_error("Unknown variable\n");
+ /*NOTREACHED*/
}
t = db_read_token();
if (t != tEQ)
- db_unread_token(t);
+ db_unread_token(t);
if (!db_expression(&value)) {
- db_error("No value\n");
- /*NOTREACHED*/
+ db_error("No value\n");
+ /*NOTREACHED*/
}
if (db_read_token() != tEOL) {
- db_error("?\n");
- /*NOTREACHED*/
+ db_error("?\n");
+ /*NOTREACHED*/
}
db_read_variable(vp, &old_value);
diff --git a/sys/ddb/db_variables.h b/sys/ddb/db_variables.h
index 8add893ea63..2c8028bb19b 100644
--- a/sys/ddb/db_variables.h
+++ b/sys/ddb/db_variables.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_variables.h,v 1.11 2001/05/13 01:38:53 ross Exp $ */
+/* $NetBSD: db_variables.h,v 1.12 2002/02/15 07:33:54 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -39,23 +39,22 @@ struct db_variable {
const char *name; /* Name of variable */
long *valuep; /* value of variable */
/* function to call when reading/writing */
- int (*fcn) __P((const struct db_variable *, db_expr_t *, int));
+ int (*fcn)(const struct db_variable *, db_expr_t *, int);
char *modif;
#define DB_VAR_GET 0
#define DB_VAR_SET 1
};
-#define FCN_NULL ((int (*) __P((const struct db_variable *, db_expr_t *, int)))0)
+#define FCN_NULL ((int (*)(const struct db_variable *, db_expr_t *, int))0)
extern const struct db_variable db_vars[]; /* debugger variables */
extern const struct db_variable * const db_evars;
extern const struct db_variable db_regs[]; /* machine registers */
extern const struct db_variable * const db_eregs;
-int db_find_variable __P((const struct db_variable **));
-int db_get_variable __P((db_expr_t *));
-int db_set_variable __P((db_expr_t));
-void db_read_variable __P((const struct db_variable *, db_expr_t *));
-void db_write_variable __P((const struct db_variable *, db_expr_t *));
-void db_set_cmd __P((db_expr_t, int, db_expr_t, char *));
+int db_get_variable(db_expr_t *);
+int db_set_variable(db_expr_t);
+void db_read_variable(const struct db_variable *, db_expr_t *);
+void db_write_variable(const struct db_variable *, db_expr_t *);
+void db_set_cmd(db_expr_t, int, db_expr_t, char *);
#endif /* _DB_VARIABLES_H_ */
diff --git a/sys/ddb/db_watch.c b/sys/ddb/db_watch.c
index 913677821d2..76d6beb6521 100644
--- a/sys/ddb/db_watch.c
+++ b/sys/ddb/db_watch.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_watch.c,v 1.18 2001/11/12 22:54:07 lukem Exp $ */
+/* $NetBSD: db_watch.c,v 1.19 2002/02/15 07:33:54 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_watch.c,v 1.18 2001/11/12 22:54:07 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_watch.c,v 1.19 2002/02/15 07:33:54 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -51,26 +51,32 @@ __KERNEL_RCSID(0, "$NetBSD: db_watch.c,v 1.18 2001/11/12 22:54:07 lukem Exp $");
* Watchpoints.
*/
-boolean_t db_watchpoints_inserted = TRUE;
+static boolean_t db_watchpoints_inserted = TRUE;
#define NWATCHPOINTS 100
-struct db_watchpoint db_watch_table[NWATCHPOINTS];
-db_watchpoint_t db_next_free_watchpoint = &db_watch_table[0];
-db_watchpoint_t db_free_watchpoints = 0;
-db_watchpoint_t db_watchpoint_list = 0;
+static struct db_watchpoint db_watch_table[NWATCHPOINTS];
+static db_watchpoint_t db_next_free_watchpoint = &db_watch_table[0];
+static db_watchpoint_t db_free_watchpoints = 0;
+static db_watchpoint_t db_watchpoint_list = 0;
+
+static void db_delete_watchpoint(struct vm_map *, db_addr_t);
+static void db_list_watchpoints(void);
+static void db_set_watchpoint(struct vm_map *, db_addr_t, vsize_t);
+static db_watchpoint_t db_watchpoint_alloc(void);
+static void db_watchpoint_free(db_watchpoint_t);
db_watchpoint_t
-db_watchpoint_alloc()
+db_watchpoint_alloc(void)
{
db_watchpoint_t watch;
if ((watch = db_free_watchpoints) != 0) {
- db_free_watchpoints = watch->link;
- return (watch);
+ db_free_watchpoints = watch->link;
+ return (watch);
}
if (db_next_free_watchpoint == &db_watch_table[NWATCHPOINTS]) {
- db_printf("All watchpoints used.\n");
- return (0);
+ db_printf("All watchpoints used.\n");
+ return (0);
}
watch = db_next_free_watchpoint;
db_next_free_watchpoint++;
@@ -79,44 +85,38 @@ db_watchpoint_alloc()
}
void
-db_watchpoint_free(watch)
- db_watchpoint_t watch;
+db_watchpoint_free(db_watchpoint_t watch)
{
watch->link = db_free_watchpoints;
db_free_watchpoints = watch;
}
void
-db_set_watchpoint(map, addr, size)
- struct vm_map *map;
- db_addr_t addr;
- vsize_t size;
+db_set_watchpoint(struct vm_map *map, db_addr_t addr, vsize_t size)
{
db_watchpoint_t watch;
if (map == NULL) {
- db_printf("No map.\n");
- return;
+ db_printf("No map.\n");
+ return;
}
/*
* Should we do anything fancy with overlapping regions?
*/
- for (watch = db_watchpoint_list;
- watch != 0;
- watch = watch->link)
- if (db_map_equal(watch->map, map) &&
- (watch->loaddr == addr) &&
- (watch->hiaddr == addr+size)) {
- db_printf("Already set.\n");
- return;
- }
+ for (watch = db_watchpoint_list; watch != 0; watch = watch->link)
+ if (db_map_equal(watch->map, map) &&
+ (watch->loaddr == addr) &&
+ (watch->hiaddr == addr+size)) {
+ db_printf("Already set.\n");
+ return;
+ }
watch = db_watchpoint_alloc();
if (watch == 0) {
- db_printf("Too many watchpoints.\n");
- return;
+ db_printf("Too many watchpoints.\n");
+ return;
}
watch->map = map;
@@ -129,10 +129,8 @@ db_set_watchpoint(map, addr, size)
db_watchpoints_inserted = FALSE;
}
-void
-db_delete_watchpoint(map, addr)
- struct vm_map *map;
- db_addr_t addr;
+static void
+db_delete_watchpoint(struct vm_map *map, db_addr_t addr)
{
db_watchpoint_t watch;
db_watchpoint_t *prev;
@@ -140,65 +138,56 @@ db_delete_watchpoint(map, addr)
for (prev = &db_watchpoint_list;
(watch = *prev) != 0;
prev = &watch->link)
- if (db_map_equal(watch->map, map) &&
- (watch->loaddr <= addr) &&
- (addr < watch->hiaddr)) {
- *prev = watch->link;
- db_watchpoint_free(watch);
- return;
- }
+ if (db_map_equal(watch->map, map) &&
+ (watch->loaddr <= addr) &&
+ (addr < watch->hiaddr)) {
+ *prev = watch->link;
+ db_watchpoint_free(watch);
+ return;
+ }
db_printf("Not set.\n");
}
void
-db_list_watchpoints()
+db_list_watchpoints(void)
{
db_watchpoint_t watch;
if (db_watchpoint_list == 0) {
- db_printf("No watchpoints set\n");
- return;
+ db_printf("No watchpoints set\n");
+ return;
}
db_printf(" Map Address Size\n");
- for (watch = db_watchpoint_list;
- watch != 0;
- watch = watch->link)
- db_printf("%s%p %8lx %lx\n",
- db_map_current(watch->map) ? "*" : " ",
- watch->map, watch->loaddr,
- watch->hiaddr - watch->loaddr);
+ for (watch = db_watchpoint_list; watch != 0; watch = watch->link)
+ db_printf("%s%p %8lx %lx\n",
+ db_map_current(watch->map) ? "*" : " ",
+ watch->map, watch->loaddr,
+ watch->hiaddr - watch->loaddr);
}
/* Delete watchpoint */
/*ARGSUSED*/
void
-db_deletewatch_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_deletewatch_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
db_delete_watchpoint(db_map_addr(addr), addr);
}
/* Set watchpoint */
/*ARGSUSED*/
void
-db_watchpoint_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_watchpoint_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
- vsize_t size;
- db_expr_t value;
+ vsize_t size;
+ db_expr_t value;
if (db_expression(&value))
- size = (vsize_t) value;
+ size = (vsize_t) value;
else
- size = 4;
+ size = 4;
db_skip_to_eol();
db_set_watchpoint(db_map_addr(addr), addr, size);
@@ -207,72 +196,35 @@ db_watchpoint_cmd(addr, have_addr, count, modif)
/* list watchpoints */
/*ARGSUSED*/
void
-db_listwatch_cmd(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char * modif;
+db_listwatch_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
+
db_list_watchpoints();
}
void
-db_set_watchpoints()
+db_set_watchpoints(void)
{
db_watchpoint_t watch;
if (!db_watchpoints_inserted) {
- for (watch = db_watchpoint_list;
- watch != 0;
- watch = watch->link) {
- pmap_protect(watch->map->pmap,
- trunc_page(watch->loaddr),
- round_page(watch->hiaddr),
- VM_PROT_READ);
- pmap_update(watch->map->pmap);
- }
-
- db_watchpoints_inserted = TRUE;
+ for (watch = db_watchpoint_list;
+ watch != 0;
+ watch = watch->link) {
+ pmap_protect(watch->map->pmap,
+ trunc_page(watch->loaddr),
+ round_page(watch->hiaddr),
+ VM_PROT_READ);
+ pmap_update(watch->map->pmap);
+ }
+
+ db_watchpoints_inserted = TRUE;
}
}
void
-db_clear_watchpoints()
-{
- db_watchpoints_inserted = FALSE;
-}
-
-boolean_t
-db_find_watchpoint(map, addr, regs)
- struct vm_map *map;
- db_addr_t addr;
- db_regs_t *regs;
+db_clear_watchpoints(void)
{
- db_watchpoint_t watch;
- db_watchpoint_t found = 0;
-
- for (watch = db_watchpoint_list;
- watch != 0;
- watch = watch->link)
- if (db_map_equal(watch->map, map)) {
- if ((watch->loaddr <= addr) &&
- (addr < watch->hiaddr))
- return (TRUE);
- else if ((trunc_page(watch->loaddr) <= addr) &&
- (addr < round_page(watch->hiaddr)))
- found = watch;
- }
- /*
- * We didn't hit exactly on a watchpoint, but we are
- * in a protected region. We want to single-step
- * and then re-protect.
- */
-
- if (found) {
- db_watchpoints_inserted = FALSE;
- db_single_step(regs);
- }
-
- return (FALSE);
+ db_watchpoints_inserted = FALSE;
}
diff --git a/sys/ddb/db_watch.h b/sys/ddb/db_watch.h
index 93c083134bb..90ba23e2180 100644
--- a/sys/ddb/db_watch.h
+++ b/sys/ddb/db_watch.h
@@ -1,27 +1,27 @@
-/* $NetBSD: db_watch.h,v 1.14 2001/06/02 18:09:25 chs Exp $ */
+/* $NetBSD: db_watch.h,v 1.15 2002/02/15 07:33:54 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -42,16 +42,10 @@ typedef struct db_watchpoint {
struct db_watchpoint *link; /* link in in-use or free chain */
} *db_watchpoint_t;
-db_watchpoint_t db_watchpoint_alloc __P((void));
-void db_watchpoint_free __P((db_watchpoint_t));
-void db_set_watchpoint __P((struct vm_map *, db_addr_t, vsize_t));
-void db_delete_watchpoint __P((struct vm_map *, db_addr_t));
-void db_list_watchpoints __P((void));
-void db_deletewatch_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_watchpoint_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_listwatch_cmd __P((db_expr_t, int, db_expr_t, char *));
-void db_set_watchpoints __P((void));
-void db_clear_watchpoints __P((void));
-boolean_t db_find_watchpoint __P((struct vm_map *, db_addr_t, db_regs_t *));
+void db_deletewatch_cmd(db_expr_t, int, db_expr_t, char *);
+void db_watchpoint_cmd(db_expr_t, int, db_expr_t, char *);
+void db_listwatch_cmd(db_expr_t, int, db_expr_t, char *);
+void db_set_watchpoints(void);
+void db_clear_watchpoints(void);
#endif /* _DDB_DB_WATCH_ */
diff --git a/sys/ddb/db_write_cmd.c b/sys/ddb/db_write_cmd.c
index 4e5402b3288..f2d671ffa66 100644
--- a/sys/ddb/db_write_cmd.c
+++ b/sys/ddb/db_write_cmd.c
@@ -1,27 +1,27 @@
-/* $NetBSD: db_write_cmd.c,v 1.15 2001/11/12 22:54:07 lukem Exp $ */
+/* $NetBSD: db_write_cmd.c,v 1.16 2002/02/15 07:33:54 simonb Exp $ */
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990 Carnegie Mellon University
* All Rights Reserved.
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
- *
+ *
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
+ *
* Carnegie Mellon requests users of this software to return to
- *
+ *
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
- *
+ *
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_write_cmd.c,v 1.15 2001/11/12 22:54:07 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_write_cmd.c,v 1.16 2002/02/15 07:33:54 simonb Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -49,11 +49,8 @@ __KERNEL_RCSID(0, "$NetBSD: db_write_cmd.c,v 1.15 2001/11/12 22:54:07 lukem Exp
*/
/*ARGSUSED*/
void
-db_write_cmd(address, have_addr, count, modif)
- db_expr_t address;
- boolean_t have_addr;
- db_expr_t count;
- char * modif;
+db_write_cmd(db_expr_t address, boolean_t have_addr, db_expr_t count,
+ char *modif)
{
db_addr_t addr;
db_expr_t old_value;
@@ -64,36 +61,36 @@ db_write_cmd(address, have_addr, count, modif)
addr = (db_addr_t) address;
switch (modif[0]) {
- case 'b':
+ case 'b':
size = 1;
break;
- case 'h':
+ case 'h':
size = 2;
break;
- case 'l':
- case '\0':
+ case 'l':
+ case '\0':
size = 4;
break;
- default:
+ default:
size = -1;
db_error("Unknown size\n");
/*NOTREACHED*/
}
while (db_expression(&new_value)) {
- old_value = db_get_value(addr, size, FALSE);
- db_printsym(addr, DB_STGY_ANY, db_printf);
- db_printf("\t\t%s = ", db_num_to_str(old_value));
- db_printf("%s\n", db_num_to_str(new_value));
- db_put_value(addr, size, new_value);
- addr += size;
+ old_value = db_get_value(addr, size, FALSE);
+ db_printsym(addr, DB_STGY_ANY, db_printf);
+ db_printf("\t\t%s = ", db_num_to_str(old_value));
+ db_printf("%s\n", db_num_to_str(new_value));
+ db_put_value(addr, size, new_value);
+ addr += size;
- wrote_one = TRUE;
+ wrote_one = TRUE;
}
if (!wrote_one) {
- db_error("Nothing written.\n");
- /*NOTREACHED*/
+ db_error("Nothing written.\n");
+ /*NOTREACHED*/
}
db_next = addr;
@@ -101,4 +98,3 @@ db_write_cmd(address, have_addr, count, modif)
db_skip_to_eol();
}
-
diff --git a/sys/ddb/db_xxx.c b/sys/ddb/db_xxx.c
index 0706d0b09dd..be9c2581201 100644
--- a/sys/ddb/db_xxx.c
+++ b/sys/ddb/db_xxx.c
@@ -1,4 +1,4 @@
-/* $NetBSD: db_xxx.c,v 1.15 2001/11/12 22:54:07 lukem Exp $ */
+/* $NetBSD: db_xxx.c,v 1.16 2002/02/15 07:33:54 simonb Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991, 1993
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_xxx.c,v 1.15 2001/11/12 22:54:07 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_xxx.c,v 1.16 2002/02/15 07:33:54 simonb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -64,11 +64,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_xxx.c,v 1.15 2001/11/12 22:54:07 lukem Exp $");
#include <ddb/db_extern.h>
void
-db_kill_proc(addr, haddr, count, modif)
- db_expr_t addr;
- int haddr;
- db_expr_t count;
- char *modif;
+db_kill_proc(db_expr_t addr, int haddr, db_expr_t count, char *modif)
{
struct proc *p;
db_expr_t pid, sig;
@@ -77,7 +73,7 @@ db_kill_proc(addr, haddr, count, modif)
/* What pid? */
if (!db_expression(&pid)) {
db_error("pid?\n");
- /*NOTREACHED*/
+ /*NOTREACHED*/
}
/* What sig? */
t = db_read_token();
@@ -91,31 +87,27 @@ db_kill_proc(addr, haddr, count, modif)
sig = 15;
}
if (db_read_token() != tEOL) {
- db_error("?\n");
- /*NOTREACHED*/
+ db_error("?\n");
+ /*NOTREACHED*/
}
p = pfind((pid_t)pid);
if (p == NULL) {
db_error("no such proc\n");
- /*NOTREACHED*/
+ /*NOTREACHED*/
}
psignal(p, (int)sig);
}
void
-db_show_all_procs(addr, haddr, count, modif)
- db_expr_t addr;
- int haddr;
- db_expr_t count;
- char *modif;
+db_show_all_procs(db_expr_t addr, int haddr, db_expr_t count, char *modif)
{
int i;
char *mode;
struct proc *p, *pp;
struct timeval tv[2];
const struct proclist_desc *pd;
-
+
if (modif[0] == 0)
modif[0] = 'n'; /* default == normal mode */
@@ -127,9 +119,8 @@ db_show_all_procs(addr, haddr, count, modif)
db_printf("\t/w == show process wait/emul info\n");
return;
}
-
- switch (*mode) {
+ switch (*mode) {
case 'a':
db_printf(" PID %10s %18s %18s %18s\n",
"COMMAND", "STRUCT PROC *", "UAREA *", "VMSPACE/VM_MAP");
@@ -194,14 +185,8 @@ db_show_all_procs(addr, haddr, count, modif)
}
void
-db_show_callout(addr, haddr, count, modif)
- db_expr_t addr;
- int haddr;
- db_expr_t count;
- char *modif;
+db_show_callout(db_expr_t addr, int haddr, db_expr_t count, char *modif)
{
- extern struct callout_queue *callwheel;
- extern int callwheelsize;
uint64_t hint;
int i;
@@ -231,11 +216,7 @@ db_show_callout(addr, haddr, count, modif)
}
void
-db_dmesg(addr, haddr, count, modif)
- db_expr_t addr;
- int haddr;
- db_expr_t count;
- char *modif;
+db_dmesg(db_expr_t addr, int haddr, db_expr_t count, char *modif)
{
struct kern_msgbuf *mbp;
int ch, newl, skip, i;
diff --git a/sys/ddb/ddbvar.h b/sys/ddb/ddbvar.h
index 038133c9301..f75e6f9fd37 100644
--- a/sys/ddb/ddbvar.h
+++ b/sys/ddb/ddbvar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ddbvar.h,v 1.2 1998/10/29 21:22:33 jonathan Exp $ */
+/* $NetBSD: ddbvar.h,v 1.3 2002/02/15 07:33:55 simonb Exp $ */
/*-
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
@@ -46,9 +46,7 @@
extern int db_onpanic;
extern int db_fromconsole;
-int ddb_sysctl __P((int *, u_int, void *, size_t *, void *, size_t,
- struct proc *));
-
-int read_symtab_from_file __P((struct proc *,struct vnode *,const char *));
+int ddb_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
+int read_symtab_from_file(struct proc *,struct vnode *,const char *);
#endif /* !_DDBVAR_H_ */