Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/ddb - change db_cmd_list() to list commands vertically r...



details:   https://anonhg.NetBSD.org/src/rev/c1093d243d15
branches:  trunk
changeset: 477702:c1093d243d15
user:      lukem <lukem%NetBSD.org@localhost>
date:      Thu Oct 28 06:37:32 1999 +0000

description:
- change db_cmd_list() to list commands vertically rather than horizontally
- sort entries in the various command tables, so that the `help' lists
  are easier to use. this included hacking db_machine_commands_install()
  to search for the "machine" entry to change the `more cmds' pointer,
  rather than assuming it was the first entry
- add a `sync' command, which is effectively `reboot 0x100'.
- remove db_help_cmd(); it was unused (and was almost a duplicate of
  db_cmd_list()).
- move some extern decls to db_output.h, since they're used in more than one
  place now
- rename NEXT_TAB to DB_NEXT_TAB and move to db_output.h

diffstat:

 sys/ddb/db_command.c   |  133 ++++++++++++++++++++++++++++++------------------
 sys/ddb/db_command.h   |    4 +-
 sys/ddb/db_output.c    |    8 +-
 sys/ddb/db_output.h    |   10 +++-
 sys/ddb/db_variables.c |    8 +--
 5 files changed, 99 insertions(+), 64 deletions(-)

diffs (truncated from 301 to 300 lines):

diff -r c522de21f765 -r c1093d243d15 sys/ddb/db_command.c
--- a/sys/ddb/db_command.c      Thu Oct 28 05:20:05 1999 +0000
+++ b/sys/ddb/db_command.c      Thu Oct 28 06:37:32 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_command.c,v 1.31 1999/05/10 21:13:05 thorpej Exp $  */
+/*     $NetBSD: db_command.c,v 1.32 1999/10/28 06:37:32 lukem Exp $    */
 
 /* 
  * Mach Operating System
@@ -144,11 +144,36 @@
 db_cmd_list(table)
        struct db_command *table;
 {
-       register struct db_command *cmd;
+       int      i, j, w, columns, lines, width, items, numcmds;
+       char    *p;
+
+       for (numcmds = 0; table[numcmds].name != NULL; numcmds++) {
+               w = strlen(table[numcmds].name);
+               if (w > width)
+                       width = w;
+       }
+       width = DB_NEXT_TAB(width);
+       items = 0;
 
-       for (cmd = table; cmd->name != 0; cmd++) {
-           db_printf("%-12s", cmd->name);
-           db_end_line();
+       columns = db_max_width / width;
+       if (columns == 0)
+               columns = 1;
+       lines = (numcmds + columns - 1) / columns;
+       for (i = 0; i < lines; i++) {
+               for (j = 0; j < columns; j++) {
+                       p = table[j * lines + i].name;
+                       if (p)
+                               db_printf("%s", p);
+                       if (j * lines + i + lines >= numcmds) {
+                               db_putchar('\n');
+                               break;
+                       }
+                       w = strlen(p);
+                       while (w < width) {
+                               w = DB_NEXT_TAB(w);
+                               db_putchar('\t');
+                       }
+               }
        }
 }
 
@@ -356,66 +381,75 @@
  */
 
 struct db_command db_show_all_cmds[] = {
+       { "callout",    db_show_callout,        0, NULL },
        { "procs",      db_show_all_procs,      0, NULL },
-       { "callout",    db_show_callout,        0, NULL },
        { NULL,         NULL,                   0, NULL }
 };
 
 struct db_command db_show_cmds[] = {
        { "all",        NULL,                   0,      db_show_all_cmds },
-       { "registers",  db_show_regs,           0,      NULL },
        { "breaks",     db_listbreak_cmd,       0,      NULL },
-       { "watches",    db_listwatch_cmd,       0,      NULL },
        { "map",        db_map_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 },
-       { NULL,         NULL,                   0,      NULL, }
+       { "registers",  db_show_regs,           0,      NULL },
+       { "watches",    db_listwatch_cmd,       0,      NULL },
+       { NULL,         NULL,                   0,      NULL }
 };
 
 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 },
+       { "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
-  /* this must be the first entry, if it exists */
-       { "machine",    NULL,                   0,              NULL},
+       { "machine",    NULL,                   0,              NULL },
 #endif
+       { "match",      db_trace_until_matching_cmd,0,          NULL },
+       { "next",       db_trace_until_matching_cmd,0,          NULL },
        { "print",      db_print_cmd,           0,              NULL },
-       { "examine",    db_examine_cmd,         CS_SET_DOT,     NULL },
-       { "x",          db_examine_cmd,         CS_SET_DOT,     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 },
-       { "write",      db_write_cmd,           CS_MORE|CS_SET_DOT, NULL },
-       { "w",          db_write_cmd,           CS_MORE|CS_SET_DOT, NULL },
-       { "delete",     db_delete_cmd,          0,              NULL },
-       { "d",          db_delete_cmd,          0,              NULL },
-       { "break",      db_breakpoint_cmd,      0,              NULL },
-       { "dwatch",     db_deletewatch_cmd,     0,              NULL },
-       { "watch",      db_watchpoint_cmd,      CS_MORE,        NULL },
+       { "show",       NULL,                   0,              db_show_cmds },
        { "step",       db_single_step_cmd,     0,              NULL },
-       { "s",          db_single_step_cmd,     0,              NULL },
-       { "continue",   db_continue_cmd,        0,              NULL },
-       { "c",          db_continue_cmd,        0,              NULL },
-       { "until",      db_trace_until_call_cmd,0,              NULL },
-       { "next",       db_trace_until_matching_cmd,0,          NULL },
-       { "match",      db_trace_until_matching_cmd,0,          NULL },
+       { "sync",       db_sync_cmd,            CS_OWN,         NULL },
        { "trace",      db_stack_trace_cmd,     0,              NULL },
-       { "call",       db_fncall,              CS_OWN,         NULL },
-       { "ps",         db_show_all_procs,      0,              NULL },
-       { "kill",       db_kill_proc,           CS_OWN,         NULL },
-       { "callout",    db_show_callout,        0,              NULL },
-       { "reboot",     db_reboot_cmd,          CS_OWN,         NULL },
-       { "show",       NULL,                   0,              db_show_cmds },
+       { "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 }
 };
 
 #ifdef DB_MACHINE_COMMANDS
 
-/* this function should be called to install the machine dependent
-   commands. It should be called before the debugger is enabled  */
-void db_machine_commands_install(ptr)
-struct db_command *ptr;
+/*
+ * this function should be called to install the machine dependent
+ * commands. It should be called before the debugger is enabled
+ */
+void
+db_machine_commands_install(ptr)
+       struct db_command *ptr;
 {
-  db_command_table[0].more = ptr;
-  return;
+       struct db_command *cmd;
+
+       for (cmd = db_command_table; cmd != 0; cmd++) {
+               if (strcmp(cmd->name, "machine") == 0) {
+                       cmd->more = ptr;
+                       break;
+               }
+       }
 }
 
 #endif
@@ -423,18 +457,6 @@
 struct db_command      *db_last_command = 0;
 
 void
-db_help_cmd()
-{
-       struct db_command *cmd = db_command_table;
-
-       while (cmd->name != 0) {
-           db_printf("%-12s", cmd->name);
-           db_end_line();
-           cmd++;
-       }
-}
-
-void
 db_command_loop()
 {
        label_t         db_jmpbuf;
@@ -559,3 +581,14 @@
        }
        cpu_reboot((int)bootflags, NULL);
 }
+
+void
+db_sync_cmd(addr, have_addr, count, modif)
+       db_expr_t       addr;
+       int             have_addr;
+       db_expr_t       count;
+       char *          modif;
+{
+
+       cpu_reboot(RB_DUMP, NULL);
+}
diff -r c522de21f765 -r c1093d243d15 sys/ddb/db_command.h
--- a/sys/ddb/db_command.h      Thu Oct 28 05:20:05 1999 +0000
+++ b/sys/ddb/db_command.h      Thu Oct 28 06:37:32 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_command.h,v 1.13 1999/05/10 21:13:05 thorpej Exp $  */
+/*     $NetBSD: db_command.h,v 1.14 1999/10/28 06:37:32 lukem Exp $    */
 
 /* 
  * Mach Operating System
@@ -42,11 +42,11 @@
 void db_page_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_machine_commands_install __P((struct db_command *));
-void db_help_cmd __P((void));
 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_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 */
diff -r c522de21f765 -r c1093d243d15 sys/ddb/db_output.c
--- a/sys/ddb/db_output.c       Thu Oct 28 05:20:05 1999 +0000
+++ b/sys/ddb/db_output.c       Thu Oct 28 06:37:32 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_output.c,v 1.19 1999/04/12 20:38:21 pk Exp $        */
+/*     $NetBSD: db_output.c,v 1.20 1999/10/28 06:37:32 lukem Exp $     */
 
 /* 
  * Mach Operating System
@@ -70,8 +70,6 @@
 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? */
-#define        NEXT_TAB(i) \
-       ((((i) + db_tab_stop_width) / db_tab_stop_width) * db_tab_stop_width)
 int    db_max_line = DB_MAX_LINE;      /* output max lines */
 int    db_max_width = DB_MAX_WIDTH;    /* output line width */
 
@@ -87,7 +85,7 @@
 
        last_print = db_last_non_space;
        while (last_print < db_output_position) {
-           next_tab = NEXT_TAB(last_print);
+           next_tab = DB_NEXT_TAB(last_print);
            if (next_tab <= db_output_position) {
                while (last_print < next_tab) { /* DON'T send a tab!!! */
                        cnputc(' ');
@@ -170,7 +168,7 @@
        }
        else if (c == '\t') {
            /* assume tabs every 8 positions */
-           db_output_position = NEXT_TAB(db_output_position);
+           db_output_position = DB_NEXT_TAB(db_output_position);
        }
        else if (c == ' ') {
            /* space */
diff -r c522de21f765 -r c1093d243d15 sys/ddb/db_output.h
--- a/sys/ddb/db_output.h       Thu Oct 28 05:20:05 1999 +0000
+++ b/sys/ddb/db_output.h       Thu Oct 28 06:37:32 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_output.h,v 1.12 1999/04/12 20:38:21 pk Exp $        */
+/*     $NetBSD: db_output.h,v 1.13 1999/10/28 06:37:32 lukem Exp $     */
 
 /* 
  * Mach Operating System
@@ -38,3 +38,11 @@
 void db_printf __P((const char *, ...))
     __kprintf_attribute__((__format__(__kprintf__,1,2)));
 void db_end_line __P((void));
+
+extern int     db_radix;
+extern int     db_max_width;
+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 -r c522de21f765 -r c1093d243d15 sys/ddb/db_variables.c
--- a/sys/ddb/db_variables.c    Thu Oct 28 05:20:05 1999 +0000
+++ b/sys/ddb/db_variables.c    Thu Oct 28 06:37:32 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: db_variables.c,v 1.16 1999/04/12 20:38:21 pk Exp $     */
+/*     $NetBSD: db_variables.c,v 1.17 1999/10/28 06:37:32 lukem Exp $  */
 
 /* 
  * Mach Operating System
@@ -43,6 +43,7 @@
 #include <ddb/db_command.h>
 #include <ddb/db_sym.h>
 #include <ddb/db_extern.h>
+#include <ddb/db_output.h>
 
 
 /*
@@ -63,11 +64,6 @@
 int            db_fromconsole = DDB_FROMCONSOLE;
 
 
-extern int     db_radix;
-extern int     db_max_width;
-extern int     db_tab_stop_width;
-extern int     db_max_line;
-
 static int     db_rw_internal_variable __P((struct db_variable *, db_expr_t *,
                    int));



Home | Main Index | Thread Index | Old Index