Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
434 giacomo 1
/******************************************************************************
2
 *
3
 * Name: acdebug.h - ACPI/AML debugger
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2003, R. Byron Moore
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
 
48
#define ACPI_DEBUG_BUFFER_SIZE  4196
49
 
50
struct command_info
51
{
52
        char                            *name;          /* Command Name */
53
        u8                              min_args;       /* Minimum arguments required */
54
};
55
 
56
 
57
struct argument_info
58
{
59
        char                            *name;          /* Argument Name */
60
};
61
 
62
 
63
#define PARAM_LIST(pl)                  pl
64
 
65
#define DBTEST_OUTPUT_LEVEL(lvl)        if (acpi_gbl_db_opt_verbose)
66
 
67
#define VERBOSE_PRINT(fp)               DBTEST_OUTPUT_LEVEL(lvl) {\
68
                          acpi_os_printf PARAM_LIST(fp);}
69
 
70
#define EX_NO_SINGLE_STEP               1
71
#define EX_SINGLE_STEP                  2
72
 
73
 
74
/* Prototypes */
75
 
76
 
77
/*
78
 * dbxface - external debugger interfaces
79
 */
80
 
81
acpi_status
82
acpi_db_initialize (
83
        void);
84
 
85
void
86
acpi_db_terminate (
87
        void);
88
 
89
acpi_status
90
acpi_db_single_step (
91
        struct acpi_walk_state          *walk_state,
92
        union acpi_parse_object         *op,
93
        u32                             op_type);
94
 
95
acpi_status
96
acpi_db_start_command (
97
        struct acpi_walk_state          *walk_state,
98
        union acpi_parse_object         *op);
99
 
100
void
101
acpi_db_method_end (
102
        struct acpi_walk_state          *walk_state);
103
 
104
 
105
/*
106
 * dbcmds - debug commands and output routines
107
 */
108
 
109
void
110
acpi_db_display_table_info (
111
        char                            *table_arg);
112
 
113
void
114
acpi_db_unload_acpi_table (
115
        char                            *table_arg,
116
        char                            *instance_arg);
117
 
118
void
119
acpi_db_set_method_breakpoint (
120
        char                            *location,
121
        struct acpi_walk_state          *walk_state,
122
        union acpi_parse_object         *op);
123
 
124
void
125
acpi_db_set_method_call_breakpoint (
126
        union acpi_parse_object         *op);
127
 
128
void
129
acpi_db_disassemble_aml (
130
        char                            *statements,
131
        union acpi_parse_object         *op);
132
 
133
void
134
acpi_db_dump_namespace (
135
        char                            *start_arg,
136
        char                            *depth_arg);
137
 
138
void
139
acpi_db_dump_namespace_by_owner (
140
        char                            *owner_arg,
141
        char                            *depth_arg);
142
 
143
void
144
acpi_db_send_notify (
145
        char                            *name,
146
        u32                             value);
147
 
148
void
149
acpi_db_set_method_data (
150
        char                            *type_arg,
151
        char                            *index_arg,
152
        char                            *value_arg);
153
 
154
acpi_status
155
acpi_db_display_objects (
156
        char                            *obj_type_arg,
157
        char                            *display_count_arg);
158
 
159
acpi_status
160
acpi_db_find_name_in_namespace (
161
        char                            *name_arg);
162
 
163
void
164
acpi_db_set_scope (
165
        char                            *name);
166
 
167
void
168
acpi_db_find_references (
169
        char                            *object_arg);
170
 
171
void
172
acpi_db_display_locks (void);
173
 
174
 
175
void
176
acpi_db_display_resources (
177
        char                            *object_arg);
178
 
179
void
180
acpi_db_display_gpes (void);
181
 
182
void
183
acpi_db_check_integrity (
184
        void);
185
 
186
acpi_status
187
acpi_db_integrity_walk (
188
        acpi_handle                     obj_handle,
189
        u32                             nesting_level,
190
        void                            *context,
191
        void                            **return_value);
192
 
193
acpi_status
194
acpi_db_walk_and_match_name (
195
        acpi_handle                     obj_handle,
196
        u32                             nesting_level,
197
        void                            *context,
198
        void                            **return_value);
199
 
200
acpi_status
201
acpi_db_walk_for_references (
202
        acpi_handle                     obj_handle,
203
        u32                             nesting_level,
204
        void                            *context,
205
        void                            **return_value);
206
 
207
acpi_status
208
acpi_db_walk_for_specific_objects (
209
        acpi_handle                     obj_handle,
210
        u32                             nesting_level,
211
        void                            *context,
212
        void                            **return_value);
213
 
214
void
215
acpi_db_generate_gpe (
216
        char                            *gpe_arg,
217
        char                            *block_arg);
218
 
219
/*
220
 * dbdisply - debug display commands
221
 */
222
 
223
void
224
acpi_db_display_method_info (
225
        union acpi_parse_object         *op);
226
 
227
void
228
acpi_db_decode_and_display_object (
229
        char                            *target,
230
        char                            *output_type);
231
 
232
void
233
acpi_db_display_result_object (
234
        union acpi_operand_object       *obj_desc,
235
        struct acpi_walk_state          *walk_state);
236
 
237
acpi_status
238
acpi_db_display_all_methods (
239
        char                            *display_count_arg);
240
 
241
void
242
acpi_db_display_arguments (
243
        void);
244
 
245
void
246
acpi_db_display_locals (
247
        void);
248
 
249
void
250
acpi_db_display_results (
251
        void);
252
 
253
void
254
acpi_db_display_calling_tree (
255
        void);
256
 
257
void
258
acpi_db_display_object_type (
259
        char                            *object_arg);
260
 
261
void
262
acpi_db_display_argument_object (
263
        union acpi_operand_object       *obj_desc,
264
        struct acpi_walk_state          *walk_state);
265
 
266
void
267
acpi_db_dump_parser_descriptor (
268
        union acpi_parse_object         *op);
269
 
270
void *
271
acpi_db_get_pointer (
272
        void                            *target);
273
 
274
 
275
/*
276
 * dbexec - debugger control method execution
277
 */
278
 
279
void
280
acpi_db_execute (
281
        char                            *name,
282
        char                            **args,
283
        u32                             flags);
284
 
285
void
286
acpi_db_create_execution_threads (
287
        char                            *num_threads_arg,
288
        char                            *num_loops_arg,
289
        char                            *method_name_arg);
290
 
291
acpi_status
292
acpi_db_execute_method (
293
        struct acpi_db_method_info      *info,
294
        struct acpi_buffer              *return_obj);
295
 
296
void
297
acpi_db_execute_setup (
298
        struct acpi_db_method_info      *info);
299
 
300
u32
301
acpi_db_get_outstanding_allocations (
302
        void);
303
 
304
void ACPI_SYSTEM_XFACE
305
acpi_db_method_thread (
306
        void                            *context);
307
 
308
acpi_status
309
acpi_db_execution_walk (
310
        acpi_handle                     obj_handle,
311
        u32                             nesting_level,
312
        void                            *context,
313
        void                            **return_value);
314
 
315
 
316
/*
317
 * dbfileio - Debugger file I/O commands
318
 */
319
 
320
acpi_object_type
321
acpi_db_match_argument (
322
        char                            *user_argument,
323
        struct argument_info            *arguments);
324
 
325
acpi_status
326
ae_local_load_table (
327
        struct acpi_table_header        *table_ptr);
328
 
329
void
330
acpi_db_close_debug_file (
331
        void);
332
 
333
void
334
acpi_db_open_debug_file (
335
        char                            *name);
336
 
337
acpi_status
338
acpi_db_load_acpi_table (
339
        char                            *filename);
340
 
341
acpi_status
342
acpi_db_get_table_from_file (
343
        char                            *filename,
344
        struct acpi_table_header        **table);
345
 
346
acpi_status
347
acpi_db_read_table_from_file (
348
        char                            *filename,
349
        struct acpi_table_header        **table);
350
 
351
/*
352
 * dbhistry - debugger HISTORY command
353
 */
354
 
355
void
356
acpi_db_add_to_history (
357
        char                            *command_line);
358
 
359
void
360
acpi_db_display_history (void);
361
 
362
char *
363
acpi_db_get_from_history (
364
        char                            *command_num_arg);
365
 
366
 
367
/*
368
 * dbinput - user front-end to the AML debugger
369
 */
370
 
371
acpi_status
372
acpi_db_command_dispatch (
373
        char                            *input_buffer,
374
        struct acpi_walk_state          *walk_state,
375
        union acpi_parse_object         *op);
376
 
377
void ACPI_SYSTEM_XFACE
378
acpi_db_execute_thread (
379
        void                            *context);
380
 
381
acpi_status
382
acpi_db_user_commands (
383
        char                            prompt,
384
        union acpi_parse_object         *op);
385
 
386
void
387
acpi_db_display_help (
388
        char                            *help_type);
389
 
390
char *
391
acpi_db_get_next_token (
392
        char                            *string,
393
        char                            **next);
394
 
395
u32
396
acpi_db_get_line (
397
        char                            *input_buffer);
398
 
399
u32
400
acpi_db_match_command (
401
        char                            *user_command);
402
 
403
void
404
acpi_db_single_thread (
405
        void);
406
 
407
 
408
/*
409
 * dbstats - Generation and display of ACPI table statistics
410
 */
411
 
412
void
413
acpi_db_generate_statistics (
414
        union acpi_parse_object         *root,
415
        u8                              is_method);
416
 
417
 
418
acpi_status
419
acpi_db_display_statistics (
420
        char                            *type_arg);
421
 
422
acpi_status
423
acpi_db_classify_one_object (
424
        acpi_handle                     obj_handle,
425
        u32                             nesting_level,
426
        void                            *context,
427
        void                            **return_value);
428
 
429
void
430
acpi_db_count_namespace_objects (
431
        void);
432
 
433
void
434
acpi_db_enumerate_object (
435
        union acpi_operand_object       *obj_desc);
436
 
437
 
438
/*
439
 * dbutils - AML debugger utilities
440
 */
441
 
442
void
443
acpi_db_set_output_destination (
444
        u32                             where);
445
 
446
void
447
acpi_db_dump_buffer (
448
        u32                             address);
449
 
450
void
451
acpi_db_dump_object (
452
        union acpi_object               *obj_desc,
453
        u32                             level);
454
 
455
void
456
acpi_db_prep_namestring (
457
        char                            *name);
458
 
459
 
460
acpi_status
461
acpi_db_second_pass_parse (
462
        union acpi_parse_object         *root);
463
 
464
struct acpi_namespace_node *
465
acpi_db_local_ns_lookup (
466
        char                            *name);
467
 
468
 
469
#endif  /* __ACDEBUG_H__ */