1 | /****************************************************************************** |
2 | * |
3 | * Name: acdebug.h - ACPI/AML debugger |
4 | * |
5 | *****************************************************************************/ |
6 | |
7 | /* |
8 | * Copyright (C) 2000 - 2016, 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 | /* The debugger is used in conjunction with the disassembler most of time */ |
48 | |
49 | #ifdef ACPI_DISASSEMBLER |
50 | #include "acdisasm.h" |
51 | #endif |
52 | |
53 | |
54 | #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */ |
55 | |
56 | typedef struct acpi_db_command_info |
57 | { |
58 | const char *Name; /* Command Name */ |
59 | UINT8 MinArgs; /* Minimum arguments required */ |
60 | |
61 | } ACPI_DB_COMMAND_INFO; |
62 | |
63 | typedef struct acpi_db_command_help |
64 | { |
65 | UINT8 LineCount; /* Number of help lines */ |
66 | const char *Invocation; /* Command Invocation */ |
67 | const char *Description; /* Command Description */ |
68 | |
69 | } ACPI_DB_COMMAND_HELP; |
70 | |
71 | typedef struct acpi_db_argument_info |
72 | { |
73 | const char *Name; /* Argument Name */ |
74 | |
75 | } ACPI_DB_ARGUMENT_INFO; |
76 | |
77 | typedef struct acpi_db_execute_walk |
78 | { |
79 | UINT32 Count; |
80 | UINT32 MaxCount; |
81 | |
82 | } ACPI_DB_EXECUTE_WALK; |
83 | |
84 | |
85 | #define PARAM_LIST(pl) pl |
86 | |
87 | #define EX_NO_SINGLE_STEP 1 |
88 | #define EX_SINGLE_STEP 2 |
89 | |
90 | |
91 | /* |
92 | * dbxface - external debugger interfaces |
93 | */ |
94 | ACPI_DBR_DEPENDENT_RETURN_OK ( |
95 | ACPI_STATUS |
96 | AcpiDbSingleStep ( |
97 | ACPI_WALK_STATE *WalkState, |
98 | ACPI_PARSE_OBJECT *Op, |
99 | UINT32 OpType)) |
100 | |
101 | ACPI_DBR_DEPENDENT_RETURN_VOID ( |
102 | void |
103 | AcpiDbSignalBreakPoint ( |
104 | ACPI_WALK_STATE *WalkState)) |
105 | |
106 | |
107 | /* |
108 | * dbcmds - debug commands and output routines |
109 | */ |
110 | ACPI_NAMESPACE_NODE * |
111 | AcpiDbConvertToNode ( |
112 | char *InString); |
113 | |
114 | void |
115 | AcpiDbDisplayTableInfo ( |
116 | char *TableArg); |
117 | |
118 | void |
119 | AcpiDbDisplayTemplate ( |
120 | char *BufferArg); |
121 | |
122 | void |
123 | AcpiDbUnloadAcpiTable ( |
124 | char *Name); |
125 | |
126 | void |
127 | AcpiDbSendNotify ( |
128 | char *Name, |
129 | UINT32 Value); |
130 | |
131 | void |
132 | AcpiDbDisplayInterfaces ( |
133 | char *ActionArg, |
134 | char *InterfaceNameArg); |
135 | |
136 | ACPI_STATUS |
137 | AcpiDbSleep ( |
138 | char *ObjectArg); |
139 | |
140 | void |
141 | AcpiDbTrace ( |
142 | char *EnableArg, |
143 | char *MethodArg, |
144 | char *OnceArg); |
145 | |
146 | void |
147 | AcpiDbDisplayLocks ( |
148 | void); |
149 | |
150 | void |
151 | AcpiDbDisplayResources ( |
152 | char *ObjectArg); |
153 | |
154 | ACPI_HW_DEPENDENT_RETURN_VOID ( |
155 | void |
156 | AcpiDbDisplayGpes ( |
157 | void)) |
158 | |
159 | void |
160 | AcpiDbDisplayHandlers ( |
161 | void); |
162 | |
163 | ACPI_HW_DEPENDENT_RETURN_VOID ( |
164 | void |
165 | AcpiDbGenerateGpe ( |
166 | char *GpeArg, |
167 | char *BlockArg)) |
168 | |
169 | ACPI_HW_DEPENDENT_RETURN_VOID ( |
170 | void |
171 | AcpiDbGenerateSci ( |
172 | void)) |
173 | |
174 | void |
175 | AcpiDbExecuteTest ( |
176 | char *TypeArg); |
177 | |
178 | |
179 | /* |
180 | * dbconvert - miscellaneous conversion routines |
181 | */ |
182 | ACPI_STATUS |
183 | AcpiDbHexCharToValue ( |
184 | int HexChar, |
185 | UINT8 *ReturnValue); |
186 | |
187 | ACPI_STATUS |
188 | AcpiDbConvertToPackage ( |
189 | char *String, |
190 | ACPI_OBJECT *Object); |
191 | |
192 | ACPI_STATUS |
193 | AcpiDbConvertToObject ( |
194 | ACPI_OBJECT_TYPE Type, |
195 | char *String, |
196 | ACPI_OBJECT *Object); |
197 | |
198 | UINT8 * |
199 | AcpiDbEncodePldBuffer ( |
200 | ACPI_PLD_INFO *PldInfo); |
201 | |
202 | void |
203 | AcpiDbDumpPldBuffer ( |
204 | ACPI_OBJECT *ObjDesc); |
205 | |
206 | |
207 | /* |
208 | * dbmethod - control method commands |
209 | */ |
210 | void |
211 | AcpiDbSetMethodBreakpoint ( |
212 | char *Location, |
213 | ACPI_WALK_STATE *WalkState, |
214 | ACPI_PARSE_OBJECT *Op); |
215 | |
216 | void |
217 | AcpiDbSetMethodCallBreakpoint ( |
218 | ACPI_PARSE_OBJECT *Op); |
219 | |
220 | void |
221 | AcpiDbSetMethodData ( |
222 | char *TypeArg, |
223 | char *IndexArg, |
224 | char *ValueArg); |
225 | |
226 | ACPI_STATUS |
227 | AcpiDbDisassembleMethod ( |
228 | char *Name); |
229 | |
230 | void |
231 | AcpiDbDisassembleAml ( |
232 | char *Statements, |
233 | ACPI_PARSE_OBJECT *Op); |
234 | |
235 | void |
236 | AcpiDbEvaluatePredefinedNames ( |
237 | void); |
238 | |
239 | |
240 | /* |
241 | * dbnames - namespace commands |
242 | */ |
243 | void |
244 | AcpiDbSetScope ( |
245 | char *Name); |
246 | |
247 | void |
248 | AcpiDbDumpNamespace ( |
249 | char *StartArg, |
250 | char *DepthArg); |
251 | |
252 | void |
253 | AcpiDbDumpNamespacePaths ( |
254 | void); |
255 | |
256 | void |
257 | AcpiDbDumpNamespaceByOwner ( |
258 | char *OwnerArg, |
259 | char *DepthArg); |
260 | |
261 | ACPI_STATUS |
262 | AcpiDbFindNameInNamespace ( |
263 | char *NameArg); |
264 | |
265 | void |
266 | AcpiDbCheckPredefinedNames ( |
267 | void); |
268 | |
269 | ACPI_STATUS |
270 | AcpiDbDisplayObjects ( |
271 | char *ObjTypeArg, |
272 | char *DisplayCountArg); |
273 | |
274 | void |
275 | AcpiDbCheckIntegrity ( |
276 | void); |
277 | |
278 | void |
279 | AcpiDbFindReferences ( |
280 | char *ObjectArg); |
281 | |
282 | void |
283 | AcpiDbGetBusInfo ( |
284 | void); |
285 | |
286 | |
287 | /* |
288 | * dbdisply - debug display commands |
289 | */ |
290 | void |
291 | AcpiDbDisplayMethodInfo ( |
292 | ACPI_PARSE_OBJECT *Op); |
293 | |
294 | void |
295 | AcpiDbDecodeAndDisplayObject ( |
296 | char *Target, |
297 | char *OutputType); |
298 | |
299 | ACPI_DBR_DEPENDENT_RETURN_VOID ( |
300 | void |
301 | AcpiDbDisplayResultObject ( |
302 | ACPI_OPERAND_OBJECT *ObjDesc, |
303 | ACPI_WALK_STATE *WalkState)) |
304 | |
305 | ACPI_STATUS |
306 | AcpiDbDisplayAllMethods ( |
307 | char *DisplayCountArg); |
308 | |
309 | void |
310 | AcpiDbDisplayArguments ( |
311 | void); |
312 | |
313 | void |
314 | AcpiDbDisplayLocals ( |
315 | void); |
316 | |
317 | void |
318 | AcpiDbDisplayResults ( |
319 | void); |
320 | |
321 | void |
322 | AcpiDbDisplayCallingTree ( |
323 | void); |
324 | |
325 | void |
326 | AcpiDbDisplayObjectType ( |
327 | char *ObjectArg); |
328 | |
329 | ACPI_DBR_DEPENDENT_RETURN_VOID ( |
330 | void |
331 | AcpiDbDisplayArgumentObject ( |
332 | ACPI_OPERAND_OBJECT *ObjDesc, |
333 | ACPI_WALK_STATE *WalkState)) |
334 | |
335 | |
336 | /* |
337 | * dbexec - debugger control method execution |
338 | */ |
339 | void |
340 | AcpiDbExecute ( |
341 | char *Name, |
342 | char **Args, |
343 | ACPI_OBJECT_TYPE *Types, |
344 | UINT32 Flags); |
345 | |
346 | void |
347 | AcpiDbCreateExecutionThreads ( |
348 | char *NumThreadsArg, |
349 | char *NumLoopsArg, |
350 | char *MethodNameArg); |
351 | |
352 | void |
353 | AcpiDbDeleteObjects ( |
354 | UINT32 Count, |
355 | ACPI_OBJECT *Objects); |
356 | |
357 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS |
358 | UINT32 |
359 | AcpiDbGetCacheInfo ( |
360 | ACPI_MEMORY_LIST *Cache); |
361 | #endif |
362 | |
363 | |
364 | /* |
365 | * dbfileio - Debugger file I/O commands |
366 | */ |
367 | ACPI_OBJECT_TYPE |
368 | AcpiDbMatchArgument ( |
369 | char *UserArgument, |
370 | ACPI_DB_ARGUMENT_INFO *Arguments); |
371 | |
372 | void |
373 | AcpiDbCloseDebugFile ( |
374 | void); |
375 | |
376 | void |
377 | AcpiDbOpenDebugFile ( |
378 | char *Name); |
379 | |
380 | ACPI_STATUS |
381 | AcpiDbLoadAcpiTable ( |
382 | char *Filename); |
383 | |
384 | ACPI_STATUS |
385 | AcpiDbLoadTables ( |
386 | ACPI_NEW_TABLE_DESC *ListHead); |
387 | |
388 | |
389 | /* |
390 | * dbhistry - debugger HISTORY command |
391 | */ |
392 | void |
393 | AcpiDbAddToHistory ( |
394 | char *CommandLine); |
395 | |
396 | void |
397 | AcpiDbDisplayHistory ( |
398 | void); |
399 | |
400 | char * |
401 | AcpiDbGetFromHistory ( |
402 | char *CommandNumArg); |
403 | |
404 | char * |
405 | AcpiDbGetHistoryByIndex ( |
406 | UINT32 CommanddNum); |
407 | |
408 | |
409 | /* |
410 | * dbinput - user front-end to the AML debugger |
411 | */ |
412 | ACPI_STATUS |
413 | AcpiDbCommandDispatch ( |
414 | char *InputBuffer, |
415 | ACPI_WALK_STATE *WalkState, |
416 | ACPI_PARSE_OBJECT *Op); |
417 | |
418 | void ACPI_SYSTEM_XFACE |
419 | AcpiDbExecuteThread ( |
420 | void *Context); |
421 | |
422 | ACPI_STATUS |
423 | AcpiDbUserCommands ( |
424 | char Prompt, |
425 | ACPI_PARSE_OBJECT *Op); |
426 | |
427 | char * |
428 | AcpiDbGetNextToken ( |
429 | char *String, |
430 | char **Next, |
431 | ACPI_OBJECT_TYPE *ReturnType); |
432 | |
433 | |
434 | /* |
435 | * dbobject |
436 | */ |
437 | void |
438 | AcpiDbDecodeInternalObject ( |
439 | ACPI_OPERAND_OBJECT *ObjDesc); |
440 | |
441 | void |
442 | AcpiDbDisplayInternalObject ( |
443 | ACPI_OPERAND_OBJECT *ObjDesc, |
444 | ACPI_WALK_STATE *WalkState); |
445 | |
446 | void |
447 | AcpiDbDecodeArguments ( |
448 | ACPI_WALK_STATE *WalkState); |
449 | |
450 | void |
451 | AcpiDbDecodeLocals ( |
452 | ACPI_WALK_STATE *WalkState); |
453 | |
454 | void |
455 | AcpiDbDumpMethodInfo ( |
456 | ACPI_STATUS Status, |
457 | ACPI_WALK_STATE *WalkState); |
458 | |
459 | |
460 | /* |
461 | * dbstats - Generation and display of ACPI table statistics |
462 | */ |
463 | void |
464 | AcpiDbGenerateStatistics ( |
465 | ACPI_PARSE_OBJECT *Root, |
466 | BOOLEAN IsMethod); |
467 | |
468 | ACPI_STATUS |
469 | AcpiDbDisplayStatistics ( |
470 | char *TypeArg); |
471 | |
472 | |
473 | /* |
474 | * dbutils - AML debugger utilities |
475 | */ |
476 | void |
477 | AcpiDbSetOutputDestination ( |
478 | UINT32 Where); |
479 | |
480 | void |
481 | AcpiDbDumpExternalObject ( |
482 | ACPI_OBJECT *ObjDesc, |
483 | UINT32 Level); |
484 | |
485 | void |
486 | AcpiDbPrepNamestring ( |
487 | char *Name); |
488 | |
489 | ACPI_NAMESPACE_NODE * |
490 | AcpiDbLocalNsLookup ( |
491 | char *Name); |
492 | |
493 | void |
494 | AcpiDbUint32ToHexString ( |
495 | UINT32 Value, |
496 | char *Buffer); |
497 | |
498 | #endif /* __ACDEBUG_H__ */ |
499 | |