|
1 /****************************************************************************** |
|
2 * |
|
3 * Name: acdebug.h - ACPI/AML debugger |
|
4 * |
|
5 *****************************************************************************/ |
|
6 |
|
7 /* |
|
8 * Copyright (C) 2000 - 2008, Intel Corp. |
|
9 * All rights reserved. |
|
10 * |
|
11 * Redistribution and use in source and binary forms, with or without |
|
12 * modification, are permitted provided that the following conditions |
|
13 * are met: |
|
14 * 1. Redistributions of source code must retain the above copyright |
|
15 * notice, this list of conditions, and the following disclaimer, |
|
16 * without modification. |
|
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer |
|
18 * substantially similar to the "NO WARRANTY" disclaimer below |
|
19 * ("Disclaimer") and any redistribution must be conditioned upon |
|
20 * including a substantially similar Disclaimer requirement for further |
|
21 * binary redistribution. |
|
22 * 3. Neither the names of the above-listed copyright holders nor the names |
|
23 * of any contributors may be used to endorse or promote products derived |
|
24 * from this software without specific prior written permission. |
|
25 * |
|
26 * Alternatively, this software may be distributed under the terms of the |
|
27 * GNU General Public License ("GPL") version 2 as published by the Free |
|
28 * Software Foundation. |
|
29 * |
|
30 * NO WARRANTY |
|
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR |
|
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
|
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
41 * POSSIBILITY OF SUCH DAMAGES. |
|
42 */ |
|
43 |
|
44 #ifndef __ACDEBUG_H__ |
|
45 #define __ACDEBUG_H__ |
|
46 |
|
47 #define ACPI_DEBUG_BUFFER_SIZE 4196 |
|
48 |
|
49 struct command_info { |
|
50 char *name; /* Command Name */ |
|
51 u8 min_args; /* Minimum arguments required */ |
|
52 }; |
|
53 |
|
54 struct argument_info { |
|
55 char *name; /* Argument Name */ |
|
56 }; |
|
57 |
|
58 #define PARAM_LIST(pl) pl |
|
59 #define DBTEST_OUTPUT_LEVEL(lvl) if (acpi_gbl_db_opt_verbose) |
|
60 #define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ |
|
61 acpi_os_printf PARAM_LIST(fp);} |
|
62 |
|
63 #define EX_NO_SINGLE_STEP 1 |
|
64 #define EX_SINGLE_STEP 2 |
|
65 |
|
66 /* |
|
67 * dbxface - external debugger interfaces |
|
68 */ |
|
69 acpi_status acpi_db_initialize(void); |
|
70 |
|
71 void acpi_db_terminate(void); |
|
72 |
|
73 acpi_status |
|
74 acpi_db_single_step(struct acpi_walk_state *walk_state, |
|
75 union acpi_parse_object *op, u32 op_type); |
|
76 |
|
77 /* |
|
78 * dbcmds - debug commands and output routines |
|
79 */ |
|
80 acpi_status acpi_db_disassemble_method(char *name); |
|
81 |
|
82 void acpi_db_display_table_info(char *table_arg); |
|
83 |
|
84 void acpi_db_unload_acpi_table(char *table_arg, char *instance_arg); |
|
85 |
|
86 void |
|
87 acpi_db_set_method_breakpoint(char *location, |
|
88 struct acpi_walk_state *walk_state, |
|
89 union acpi_parse_object *op); |
|
90 |
|
91 void acpi_db_set_method_call_breakpoint(union acpi_parse_object *op); |
|
92 |
|
93 void acpi_db_get_bus_info(void); |
|
94 |
|
95 void acpi_db_disassemble_aml(char *statements, union acpi_parse_object *op); |
|
96 |
|
97 void acpi_db_dump_namespace(char *start_arg, char *depth_arg); |
|
98 |
|
99 void acpi_db_dump_namespace_by_owner(char *owner_arg, char *depth_arg); |
|
100 |
|
101 void acpi_db_send_notify(char *name, u32 value); |
|
102 |
|
103 void acpi_db_set_method_data(char *type_arg, char *index_arg, char *value_arg); |
|
104 |
|
105 acpi_status |
|
106 acpi_db_display_objects(char *obj_type_arg, char *display_count_arg); |
|
107 |
|
108 acpi_status acpi_db_find_name_in_namespace(char *name_arg); |
|
109 |
|
110 void acpi_db_set_scope(char *name); |
|
111 |
|
112 acpi_status acpi_db_sleep(char *object_arg); |
|
113 |
|
114 void acpi_db_find_references(char *object_arg); |
|
115 |
|
116 void acpi_db_display_locks(void); |
|
117 |
|
118 void acpi_db_display_resources(char *object_arg); |
|
119 |
|
120 void acpi_db_display_gpes(void); |
|
121 |
|
122 void acpi_db_check_integrity(void); |
|
123 |
|
124 void acpi_db_generate_gpe(char *gpe_arg, char *block_arg); |
|
125 |
|
126 void acpi_db_check_predefined_names(void); |
|
127 |
|
128 void acpi_db_batch_execute(void); |
|
129 |
|
130 /* |
|
131 * dbdisply - debug display commands |
|
132 */ |
|
133 void acpi_db_display_method_info(union acpi_parse_object *op); |
|
134 |
|
135 void acpi_db_decode_and_display_object(char *target, char *output_type); |
|
136 |
|
137 void |
|
138 acpi_db_display_result_object(union acpi_operand_object *obj_desc, |
|
139 struct acpi_walk_state *walk_state); |
|
140 |
|
141 acpi_status acpi_db_display_all_methods(char *display_count_arg); |
|
142 |
|
143 void acpi_db_display_arguments(void); |
|
144 |
|
145 void acpi_db_display_locals(void); |
|
146 |
|
147 void acpi_db_display_results(void); |
|
148 |
|
149 void acpi_db_display_calling_tree(void); |
|
150 |
|
151 void acpi_db_display_object_type(char *object_arg); |
|
152 |
|
153 void |
|
154 acpi_db_display_argument_object(union acpi_operand_object *obj_desc, |
|
155 struct acpi_walk_state *walk_state); |
|
156 |
|
157 void acpi_db_check_predefined_names(void); |
|
158 |
|
159 void acpi_db_batch_execute(void); |
|
160 |
|
161 /* |
|
162 * dbexec - debugger control method execution |
|
163 */ |
|
164 void acpi_db_execute(char *name, char **args, u32 flags); |
|
165 |
|
166 void |
|
167 acpi_db_create_execution_threads(char *num_threads_arg, |
|
168 char *num_loops_arg, char *method_name_arg); |
|
169 |
|
170 #ifdef ACPI_DBG_TRACK_ALLOCATIONS |
|
171 u32 acpi_db_get_cache_info(struct acpi_memory_list *cache); |
|
172 #endif |
|
173 |
|
174 /* |
|
175 * dbfileio - Debugger file I/O commands |
|
176 */ |
|
177 acpi_object_type |
|
178 acpi_db_match_argument(char *user_argument, struct argument_info *arguments); |
|
179 |
|
180 void acpi_db_close_debug_file(void); |
|
181 |
|
182 void acpi_db_open_debug_file(char *name); |
|
183 |
|
184 acpi_status acpi_db_load_acpi_table(char *filename); |
|
185 |
|
186 acpi_status |
|
187 acpi_db_get_table_from_file(char *filename, struct acpi_table_header **table); |
|
188 |
|
189 acpi_status |
|
190 acpi_db_read_table_from_file(char *filename, struct acpi_table_header **table); |
|
191 |
|
192 /* |
|
193 * dbhistry - debugger HISTORY command |
|
194 */ |
|
195 void acpi_db_add_to_history(char *command_line); |
|
196 |
|
197 void acpi_db_display_history(void); |
|
198 |
|
199 char *acpi_db_get_from_history(char *command_num_arg); |
|
200 |
|
201 /* |
|
202 * dbinput - user front-end to the AML debugger |
|
203 */ |
|
204 acpi_status |
|
205 acpi_db_command_dispatch(char *input_buffer, |
|
206 struct acpi_walk_state *walk_state, |
|
207 union acpi_parse_object *op); |
|
208 |
|
209 void ACPI_SYSTEM_XFACE acpi_db_execute_thread(void *context); |
|
210 |
|
211 /* |
|
212 * dbstats - Generation and display of ACPI table statistics |
|
213 */ |
|
214 void acpi_db_generate_statistics(union acpi_parse_object *root, u8 is_method); |
|
215 |
|
216 acpi_status acpi_db_display_statistics(char *type_arg); |
|
217 |
|
218 /* |
|
219 * dbutils - AML debugger utilities |
|
220 */ |
|
221 void acpi_db_set_output_destination(u32 where); |
|
222 |
|
223 void acpi_db_dump_external_object(union acpi_object *obj_desc, u32 level); |
|
224 |
|
225 void acpi_db_prep_namestring(char *name); |
|
226 |
|
227 struct acpi_namespace_node *acpi_db_local_ns_lookup(char *name); |
|
228 |
|
229 void acpi_db_uint32_to_hex_string(u32 value, char *buffer); |
|
230 |
|
231 #endif /* __ACDEBUG_H__ */ |