Commit | Line | Data |
---|---|---|
984263bc MD |
1 | /*- |
2 | * Copyright (c) 1993, Garrett A. Wollman. | |
3 | * Copyright (c) 1993, University of Vermont and State Agricultural College. | |
4 | * All rights reserved. | |
5 | * | |
6 | * Redistribution and use in source and binary forms, with or without | |
7 | * modification, are permitted provided that the following conditions | |
8 | * are met: | |
9 | * 1. Redistributions of source code must retain the above copyright | |
10 | * notice, this list of conditions and the following disclaimer. | |
11 | * 2. Redistributions in binary form must reproduce the above copyright | |
12 | * notice, this list of conditions and the following disclaimer in the | |
13 | * documentation and/or other materials provided with the distribution. | |
14 | * 3. Neither the name of the University nor the names of its contributors | |
15 | * may be used to endorse or promote products derived from this software | |
16 | * without specific prior written permission. | |
17 | * | |
18 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
19 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
22 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
23 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
24 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
25 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
26 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
27 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
28 | * SUCH DAMAGE. | |
29 | * | |
30 | * $FreeBSD: src/sys/ddb/ddb.h,v 1.24.2.2 2002/08/30 22:27:49 gibbs Exp $ | |
31 | */ | |
32 | ||
33 | /* | |
34 | * Necessary declarations for the `ddb' kernel debugger. | |
35 | */ | |
36 | ||
37 | #ifndef _DDB_DDB_H_ | |
38 | #define _DDB_DDB_H_ | |
39 | ||
1bd40720 | 40 | #ifndef _SYS_QUEUE_H_ |
96728c05 | 41 | #include <sys/queue.h> |
1bd40720 MD |
42 | #endif |
43 | ||
984263bc | 44 | #include <machine/db_machdep.h> /* type definitions */ |
fed168dc | 45 | #include <machine/stdarg.h> |
984263bc | 46 | |
a9295349 MD |
47 | #ifndef _MACHINE_GLOBALDATA_H_ |
48 | #include <machine/globaldata.h> | |
49 | #endif | |
50 | ||
43c0ece6 RG |
51 | typedef void db_cmdfcn_t (db_expr_t addr, boolean_t have_addr, |
52 | db_expr_t count, char *modif); | |
984263bc | 53 | |
517620f5 SW |
54 | #define DB_COMMAND_FLAG(cmd_name, func_name, flag) \ |
55 | DB_SET(cmd_name, func_name, db_cmd_set, flag, NULL) | |
984263bc | 56 | #define DB_COMMAND(cmd_name, func_name) \ |
517620f5 | 57 | DB_COMMAND_FLAG(cmd_name, func_name, 0) |
984263bc MD |
58 | #define DB_SHOW_COMMAND(cmd_name, func_name) \ |
59 | DB_SET(cmd_name, func_name, db_show_cmd_set, 0, NULL) | |
60 | ||
61 | #define DB_SET(cmd_name, func_name, set, flag, more) \ | |
62 | static db_cmdfcn_t func_name; \ | |
63 | \ | |
64 | static const struct command __CONCAT(func_name,_cmd) = { \ | |
65 | __STRING(cmd_name), \ | |
66 | func_name, \ | |
67 | flag, \ | |
68 | more \ | |
69 | }; \ | |
70 | TEXT_SET(set, __CONCAT(func_name,_cmd)); \ | |
71 | \ | |
72 | static void \ | |
2c9702b2 SW |
73 | func_name(db_expr_t addr, boolean_t have_addr, db_expr_t count, \ |
74 | char *modif) | |
984263bc MD |
75 | |
76 | extern char *esym; | |
77 | extern db_expr_t db_maxoff; | |
78 | extern int db_active; | |
79 | extern int db_indent; | |
80 | extern int db_inst_count; | |
81 | extern int db_load_count; | |
82 | extern int debugger_on_panic; | |
83 | extern int db_store_count; | |
84 | extern db_expr_t db_radix; | |
85 | extern db_expr_t db_max_width; | |
86 | extern db_expr_t db_tab_stop_width; | |
87 | ||
88 | struct vm_map; | |
89 | ||
fcb52d8a | 90 | int db_more(int *nl); |
43c0ece6 RG |
91 | void db_check_interrupt (void); |
92 | void db_clear_watchpoints (void); | |
2729d8bd | 93 | db_addr_t db_disasm (db_addr_t loc, boolean_t altfmt, db_regs_t *regs); |
984263bc | 94 | /* instruction disassembler */ |
43c0ece6 RG |
95 | void db_error (char *s); |
96 | int db_expression (db_expr_t *valuep); | |
97 | int db_get_variable (db_expr_t *valuep); | |
98 | void db_iprintf (const char *,...) __printflike(1, 2); | |
99 | struct vm_map *db_map_addr (vm_offset_t); | |
100 | boolean_t db_map_current (struct vm_map *); | |
101 | boolean_t db_map_equal (struct vm_map *, struct vm_map *); | |
2729d8bd | 102 | void db_print_loc_and_inst (db_addr_t loc, db_regs_t *regs); |
f92fae3f | 103 | void db_printf (const char *fmt, ...) __printflike(1, 2); |
c6b20585 | 104 | void db_vprintf (const char *fmt, __va_list va) __printflike(1, 0); |
43c0ece6 | 105 | void db_read_bytes (vm_offset_t addr, size_t size, char *data); |
984263bc | 106 | /* machine-dependent */ |
43c0ece6 RG |
107 | int db_readline (char *lstart, int lsize); |
108 | void db_restart_at_pc (boolean_t watchpt); | |
109 | void db_set_watchpoints (void); | |
110 | void db_skip_to_eol (void); | |
111 | boolean_t db_stop_at_pc (boolean_t *is_breakpoint); | |
984263bc | 112 | #define db_strcpy strcpy |
43c0ece6 | 113 | void db_trap (int type, int code); |
99ebfb7c | 114 | boolean_t db_value_of_name (const char *name, db_expr_t *valuep); |
43c0ece6 | 115 | void db_write_bytes (vm_offset_t addr, size_t size, char *data); |
984263bc | 116 | /* machine-dependent */ |
43c0ece6 | 117 | void kdb_init (void); |
984263bc MD |
118 | |
119 | db_cmdfcn_t db_breakpoint_cmd; | |
120 | db_cmdfcn_t db_continue_cmd; | |
abfdbc2b | 121 | db_cmdfcn_t db_invltlb_cmd; |
984263bc MD |
122 | db_cmdfcn_t db_delete_cmd; |
123 | db_cmdfcn_t db_deletehwatch_cmd; | |
124 | db_cmdfcn_t db_deletewatch_cmd; | |
125 | db_cmdfcn_t db_examine_cmd; | |
126 | db_cmdfcn_t db_hwatchpoint_cmd; | |
127 | db_cmdfcn_t db_listbreak_cmd; | |
128 | db_cmdfcn_t db_print_cmd; | |
129 | db_cmdfcn_t db_ps; | |
130 | db_cmdfcn_t db_search_cmd; | |
131 | db_cmdfcn_t db_set_cmd; | |
132 | db_cmdfcn_t db_show_regs; | |
133 | db_cmdfcn_t db_single_step_cmd; | |
134 | db_cmdfcn_t db_stack_trace_cmd; | |
135 | db_cmdfcn_t db_trace_until_call_cmd; | |
136 | db_cmdfcn_t db_trace_until_matching_cmd; | |
137 | db_cmdfcn_t db_watchpoint_cmd; | |
138 | db_cmdfcn_t db_write_cmd; | |
139 | ||
140 | #if 0 | |
141 | db_cmdfcn_t db_help_cmd; | |
142 | db_cmdfcn_t db_show_all_threads; | |
143 | db_cmdfcn_t db_show_one_thread; | |
144 | db_cmdfcn_t ipc_port_print; | |
145 | db_cmdfcn_t vm_page_print; | |
146 | #endif | |
147 | ||
148 | /* | |
149 | * Command table. | |
150 | */ | |
151 | struct command { | |
152 | char * name; /* command name */ | |
153 | db_cmdfcn_t *fcn; /* function to call */ | |
154 | int flag; /* extra info: */ | |
155 | #define CS_OWN 0x1 /* non-standard syntax */ | |
156 | #define CS_MORE 0x2 /* standard syntax, but may have other words | |
157 | * at end */ | |
158 | #define CS_SET_DOT 0x100 /* set dot after command */ | |
159 | struct command *more; /* another level of command */ | |
160 | }; | |
161 | ||
984263bc | 162 | #endif /* !_DDB_DDB_H_ */ |