xref: /freebsd/sys/ddb/ddb.h (revision 381fe1aaf4d3cb1ad62f758c15ace6cb07eea97a)
1381fe1aaSGarrett Wollman /*-
2381fe1aaSGarrett Wollman  * Copyright (c) 1993, Garrett A. Wollman.
3381fe1aaSGarrett Wollman  * Copyright (c) 1993, University of Vermont and State Agricultural College.
4381fe1aaSGarrett Wollman  * All rights reserved.
5381fe1aaSGarrett Wollman  *
6381fe1aaSGarrett Wollman  * Redistribution and use in source and binary forms, with or without
7381fe1aaSGarrett Wollman  * modification, are permitted provided that the following conditions
8381fe1aaSGarrett Wollman  * are met:
9381fe1aaSGarrett Wollman  * 1. Redistributions of source code must retain the above copyright
10381fe1aaSGarrett Wollman  *    notice, this list of conditions and the following disclaimer.
11381fe1aaSGarrett Wollman  * 2. Redistributions in binary form must reproduce the above copyright
12381fe1aaSGarrett Wollman  *    notice, this list of conditions and the following disclaimer in the
13381fe1aaSGarrett Wollman  *    documentation and/or other materials provided with the distribution.
14381fe1aaSGarrett Wollman  * 3. Neither the name of the University nor the names of its contributors
15381fe1aaSGarrett Wollman  *    may be used to endorse or promote products derived from this software
16381fe1aaSGarrett Wollman  *    without specific prior written permission.
17381fe1aaSGarrett Wollman  *
18381fe1aaSGarrett Wollman  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19381fe1aaSGarrett Wollman  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20381fe1aaSGarrett Wollman  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21381fe1aaSGarrett Wollman  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22381fe1aaSGarrett Wollman  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23381fe1aaSGarrett Wollman  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24381fe1aaSGarrett Wollman  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25381fe1aaSGarrett Wollman  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26381fe1aaSGarrett Wollman  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27381fe1aaSGarrett Wollman  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28381fe1aaSGarrett Wollman  * SUCH DAMAGE.
29381fe1aaSGarrett Wollman  *
30381fe1aaSGarrett Wollman  *	$Id$
31381fe1aaSGarrett Wollman  */
32381fe1aaSGarrett Wollman 
33381fe1aaSGarrett Wollman /*
34381fe1aaSGarrett Wollman  * Necessary declarations for the `ddb' kernel debugger.
35381fe1aaSGarrett Wollman  */
36381fe1aaSGarrett Wollman 
37381fe1aaSGarrett Wollman #ifndef __h_ddb_ddb
38381fe1aaSGarrett Wollman #define __h_ddb_ddb 1
39381fe1aaSGarrett Wollman 
40381fe1aaSGarrett Wollman #include "machine/db_machdep.h"		/* type definitions */
41381fe1aaSGarrett Wollman 
42381fe1aaSGarrett Wollman /*
43381fe1aaSGarrett Wollman  * Global variables...
44381fe1aaSGarrett Wollman  */
45381fe1aaSGarrett Wollman extern char *esym;
46381fe1aaSGarrett Wollman extern unsigned int db_maxoff;
47381fe1aaSGarrett Wollman extern int db_inst_count;
48381fe1aaSGarrett Wollman extern int db_load_count;
49381fe1aaSGarrett Wollman extern int db_store_count;
50381fe1aaSGarrett Wollman extern int db_radix;
51381fe1aaSGarrett Wollman extern int db_max_width;
52381fe1aaSGarrett Wollman extern int db_tab_stop_width;
53381fe1aaSGarrett Wollman 
54381fe1aaSGarrett Wollman /*
55381fe1aaSGarrett Wollman  * Functions...
56381fe1aaSGarrett Wollman  */
57381fe1aaSGarrett Wollman extern void
58381fe1aaSGarrett Wollman db_read_bytes(vm_offset_t addr, register int size, register char *data);
59381fe1aaSGarrett Wollman 				/* machine-dependent */
60381fe1aaSGarrett Wollman 
61381fe1aaSGarrett Wollman extern void
62381fe1aaSGarrett Wollman db_write_bytes(vm_offset_t addr, register int size, register char *data);
63381fe1aaSGarrett Wollman 				/* machine-dependent */
64381fe1aaSGarrett Wollman 
65381fe1aaSGarrett Wollman struct vm_map;			/* forward declaration */
66381fe1aaSGarrett Wollman 
67381fe1aaSGarrett Wollman extern boolean_t db_map_equal(struct vm_map *, struct vm_map *);
68381fe1aaSGarrett Wollman extern boolean_t db_map_current(struct vm_map *);
69381fe1aaSGarrett Wollman extern struct vm_map *db_map_addr(vm_offset_t);
70381fe1aaSGarrett Wollman 
71381fe1aaSGarrett Wollman #define db_strcpy strcpy
72381fe1aaSGarrett Wollman extern int db_expression (db_expr_t *valuep);
73381fe1aaSGarrett Wollman 
74381fe1aaSGarrett Wollman typedef void db_cmd_fcn(db_expr_t, int, db_expr_t, char *);
75381fe1aaSGarrett Wollman 
76381fe1aaSGarrett Wollman extern db_cmd_fcn db_listbreak_cmd, db_listwatch_cmd, db_show_regs;
77381fe1aaSGarrett Wollman extern db_cmd_fcn db_print_cmd, db_examine_cmd, db_set_cmd, db_search_cmd;
78381fe1aaSGarrett Wollman extern db_cmd_fcn db_write_cmd, db_delete_cmd, db_breakpoint_cmd;
79381fe1aaSGarrett Wollman extern db_cmd_fcn db_deletewatch_cmd, db_watchpoint_cmd;
80381fe1aaSGarrett Wollman extern db_cmd_fcn db_single_step_cmd, db_trace_until_call_cmd;
81381fe1aaSGarrett Wollman extern db_cmd_fcn db_trace_until_matching_cmd, db_continue_cmd;
82381fe1aaSGarrett Wollman extern db_cmd_fcn db_stack_trace_cmd;
83381fe1aaSGarrett Wollman 
84381fe1aaSGarrett Wollman extern db_addr_t db_disasm(db_addr_t loc, boolean_t altfmt);
85381fe1aaSGarrett Wollman 			/* instruction disassembler */
86381fe1aaSGarrett Wollman 
87381fe1aaSGarrett Wollman extern int db_value_of_name (char *name, db_expr_t *valuep);
88381fe1aaSGarrett Wollman extern int db_get_variable (db_expr_t *valuep);
89381fe1aaSGarrett Wollman extern void db_putchar (int c);
90381fe1aaSGarrett Wollman extern void db_error (char *s);
91381fe1aaSGarrett Wollman extern int db_readline (char *lstart, int lsize);
92381fe1aaSGarrett Wollman extern void db_printf (const char *fmt, ...);
93381fe1aaSGarrett Wollman extern void db_check_interrupt(void);
94381fe1aaSGarrett Wollman extern void db_print_loc_and_inst (db_addr_t loc);
95381fe1aaSGarrett Wollman 
96381fe1aaSGarrett Wollman extern void db_clear_watchpoints (void);
97381fe1aaSGarrett Wollman extern void db_set_watchpoints (void);
98381fe1aaSGarrett Wollman 
99381fe1aaSGarrett Wollman extern void db_restart_at_pc(boolean_t watchpt);
100381fe1aaSGarrett Wollman extern boolean_t db_stop_at_pc(boolean_t *is_breakpoint);
101381fe1aaSGarrett Wollman 
102381fe1aaSGarrett Wollman extern void db_skip_to_eol (void);
103381fe1aaSGarrett Wollman extern void db_single_step (db_regs_t *regs);
104381fe1aaSGarrett Wollman 
105381fe1aaSGarrett Wollman extern void db_trap (int type, int code);
106381fe1aaSGarrett Wollman 
107381fe1aaSGarrett Wollman extern void kdbprinttrap(int, int);
108381fe1aaSGarrett Wollman 
109381fe1aaSGarrett Wollman #endif /* __h_ddb_ddb */
110