1 /* $NetBSD: monitor.c,v 1.2 2008/04/28 20:23:26 martin Exp $ */
4 * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
7 * This code is derived from software contributed to The NetBSD Foundation
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
32 #if defined(DBMONITOR)
34 #include <lib/libsa/stand.h>
35 #include <lib/libkern/libkern.h>
40 #define NULL (void *)0
43 static void db_cmd_dump(int, char **);
44 static void db_cmd_get(int, char **);
45 static void db_cmd_put(int, char **);
46 static void db_cmd_help(int, char **);
48 static int db_atob(char *);
50 static const struct db_cmd
{
52 void (*fcn
)(int, char **);
54 { "dump", db_cmd_dump
},
55 { "get", db_cmd_get
},
56 { "put", db_cmd_put
},
57 { "help", db_cmd_help
},
75 for (p
= line
; *p
!= '\0'; p
++) {
76 if (*p
!= ' ' && *p
!= '\t') {
92 while (db_cmd
[tmp
].name
!= NULL
) {
93 if (strcmp("continue", argv
[0]) == 0)
95 if (strcmp(db_cmd
[tmp
].name
, argv
[0]) == 0) {
96 (db_cmd
[tmp
].fcn
)(argc
, argv
);
101 if (db_cmd
[tmp
].name
== NULL
)
102 db_cmd_help(argc
, argv
);
111 int b
= 0, width
, tmp
, exp
, x
= 0;
121 for (tmp
= 1; tmp
<= width
; tmp
++)
122 exp
*= (x
? 16 : 10);
123 if (*p
>= '0' && *p
<= '9') {
135 db_cmd_dump(int argc
, char **argv
)
138 int mode
, add
, size
, i
;
173 printf("\n0x%x:", add
);
178 puthex(*(unsigned char *)add
, 1);
186 puthex(*(unsigned short *)add
, 2);
194 puthex(*(unsigned int *)add
, 4);
206 printf("dump [-b][-h][-w] address size\n");
211 db_cmd_get(int argc
, char **argv
)
244 printf("0x%x: 0x", add
);
264 printf("get [-b][-h][-w] address\n");
269 db_cmd_put(int argc
, char **argv
)
304 printf("0x%x: 0x", add
);
311 *(short *)add
= data
;
321 printf("put [-b][-h][-w] address data\n");
326 db_cmd_help(int argc
, char **argv
)
330 while (db_cmd
[i
].name
!= NULL
)
331 printf("%s, ", db_cmd
[i
++].name
);
332 printf("continue\n");
335 #endif /* DBMONITOR */