acdebug.h revision 1.13 1 1.1 jruoho /******************************************************************************
2 1.1 jruoho *
3 1.1 jruoho * Name: acdebug.h - ACPI/AML debugger
4 1.1 jruoho *
5 1.1 jruoho *****************************************************************************/
6 1.1 jruoho
7 1.3 jruoho /*
8 1.12 christos * Copyright (C) 2000 - 2017, Intel Corp.
9 1.1 jruoho * All rights reserved.
10 1.1 jruoho *
11 1.3 jruoho * Redistribution and use in source and binary forms, with or without
12 1.3 jruoho * modification, are permitted provided that the following conditions
13 1.3 jruoho * are met:
14 1.3 jruoho * 1. Redistributions of source code must retain the above copyright
15 1.3 jruoho * notice, this list of conditions, and the following disclaimer,
16 1.3 jruoho * without modification.
17 1.3 jruoho * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 1.3 jruoho * substantially similar to the "NO WARRANTY" disclaimer below
19 1.3 jruoho * ("Disclaimer") and any redistribution must be conditioned upon
20 1.3 jruoho * including a substantially similar Disclaimer requirement for further
21 1.3 jruoho * binary redistribution.
22 1.3 jruoho * 3. Neither the names of the above-listed copyright holders nor the names
23 1.3 jruoho * of any contributors may be used to endorse or promote products derived
24 1.3 jruoho * from this software without specific prior written permission.
25 1.3 jruoho *
26 1.3 jruoho * Alternatively, this software may be distributed under the terms of the
27 1.3 jruoho * GNU General Public License ("GPL") version 2 as published by the Free
28 1.3 jruoho * Software Foundation.
29 1.3 jruoho *
30 1.3 jruoho * NO WARRANTY
31 1.3 jruoho * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 1.3 jruoho * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 1.3 jruoho * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 1.3 jruoho * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 1.3 jruoho * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 1.3 jruoho * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 1.3 jruoho * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 1.3 jruoho * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 1.3 jruoho * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 1.3 jruoho * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 1.3 jruoho * POSSIBILITY OF SUCH DAMAGES.
42 1.3 jruoho */
43 1.1 jruoho
44 1.1 jruoho #ifndef __ACDEBUG_H__
45 1.1 jruoho #define __ACDEBUG_H__
46 1.1 jruoho
47 1.10 christos /* The debugger is used in conjunction with the disassembler most of time */
48 1.10 christos
49 1.10 christos #ifdef ACPI_DISASSEMBLER
50 1.10 christos #include "acdisasm.h"
51 1.10 christos #endif
52 1.10 christos
53 1.1 jruoho
54 1.3 jruoho #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */
55 1.1 jruoho
56 1.5 christos typedef struct acpi_db_command_info
57 1.1 jruoho {
58 1.2 jruoho const char *Name; /* Command Name */
59 1.1 jruoho UINT8 MinArgs; /* Minimum arguments required */
60 1.1 jruoho
61 1.5 christos } ACPI_DB_COMMAND_INFO;
62 1.1 jruoho
63 1.5 christos typedef struct acpi_db_command_help
64 1.5 christos {
65 1.5 christos UINT8 LineCount; /* Number of help lines */
66 1.6 christos const char *Invocation; /* Command Invocation */
67 1.6 christos const char *Description; /* Command Description */
68 1.5 christos
69 1.5 christos } ACPI_DB_COMMAND_HELP;
70 1.5 christos
71 1.5 christos typedef struct acpi_db_argument_info
72 1.1 jruoho {
73 1.2 jruoho const char *Name; /* Argument Name */
74 1.1 jruoho
75 1.5 christos } ACPI_DB_ARGUMENT_INFO;
76 1.1 jruoho
77 1.5 christos typedef struct acpi_db_execute_walk
78 1.1 jruoho {
79 1.1 jruoho UINT32 Count;
80 1.1 jruoho UINT32 MaxCount;
81 1.1 jruoho
82 1.5 christos } ACPI_DB_EXECUTE_WALK;
83 1.1 jruoho
84 1.1 jruoho
85 1.1 jruoho #define PARAM_LIST(pl) pl
86 1.1 jruoho
87 1.1 jruoho #define EX_NO_SINGLE_STEP 1
88 1.1 jruoho #define EX_SINGLE_STEP 2
89 1.1 jruoho
90 1.1 jruoho
91 1.1 jruoho /*
92 1.1 jruoho * dbxface - external debugger interfaces
93 1.1 jruoho */
94 1.10 christos ACPI_DBR_DEPENDENT_RETURN_OK (
95 1.1 jruoho ACPI_STATUS
96 1.1 jruoho AcpiDbSingleStep (
97 1.1 jruoho ACPI_WALK_STATE *WalkState,
98 1.1 jruoho ACPI_PARSE_OBJECT *Op,
99 1.10 christos UINT32 OpType))
100 1.10 christos
101 1.10 christos ACPI_DBR_DEPENDENT_RETURN_VOID (
102 1.10 christos void
103 1.10 christos AcpiDbSignalBreakPoint (
104 1.10 christos ACPI_WALK_STATE *WalkState))
105 1.1 jruoho
106 1.1 jruoho
107 1.1 jruoho /*
108 1.1 jruoho * dbcmds - debug commands and output routines
109 1.1 jruoho */
110 1.3 jruoho ACPI_NAMESPACE_NODE *
111 1.3 jruoho AcpiDbConvertToNode (
112 1.3 jruoho char *InString);
113 1.1 jruoho
114 1.1 jruoho void
115 1.1 jruoho AcpiDbDisplayTableInfo (
116 1.1 jruoho char *TableArg);
117 1.1 jruoho
118 1.1 jruoho void
119 1.5 christos AcpiDbDisplayTemplate (
120 1.5 christos char *BufferArg);
121 1.5 christos
122 1.5 christos void
123 1.1 jruoho AcpiDbUnloadAcpiTable (
124 1.5 christos char *Name);
125 1.1 jruoho
126 1.1 jruoho void
127 1.3 jruoho AcpiDbSendNotify (
128 1.3 jruoho char *Name,
129 1.3 jruoho UINT32 Value);
130 1.3 jruoho
131 1.3 jruoho void
132 1.3 jruoho AcpiDbDisplayInterfaces (
133 1.3 jruoho char *ActionArg,
134 1.3 jruoho char *InterfaceNameArg);
135 1.3 jruoho
136 1.3 jruoho ACPI_STATUS
137 1.3 jruoho AcpiDbSleep (
138 1.3 jruoho char *ObjectArg);
139 1.3 jruoho
140 1.3 jruoho void
141 1.9 christos AcpiDbTrace (
142 1.9 christos char *EnableArg,
143 1.9 christos char *MethodArg,
144 1.9 christos char *OnceArg);
145 1.9 christos
146 1.9 christos void
147 1.3 jruoho AcpiDbDisplayLocks (
148 1.3 jruoho void);
149 1.1 jruoho
150 1.1 jruoho void
151 1.3 jruoho AcpiDbDisplayResources (
152 1.3 jruoho char *ObjectArg);
153 1.1 jruoho
154 1.5 christos ACPI_HW_DEPENDENT_RETURN_VOID (
155 1.1 jruoho void
156 1.3 jruoho AcpiDbDisplayGpes (
157 1.5 christos void))
158 1.1 jruoho
159 1.1 jruoho void
160 1.3 jruoho AcpiDbDisplayHandlers (
161 1.3 jruoho void);
162 1.1 jruoho
163 1.5 christos ACPI_HW_DEPENDENT_RETURN_VOID (
164 1.1 jruoho void
165 1.3 jruoho AcpiDbGenerateGpe (
166 1.3 jruoho char *GpeArg,
167 1.5 christos char *BlockArg))
168 1.5 christos
169 1.5 christos ACPI_HW_DEPENDENT_RETURN_VOID (
170 1.5 christos void
171 1.5 christos AcpiDbGenerateSci (
172 1.5 christos void))
173 1.5 christos
174 1.7 christos void
175 1.7 christos AcpiDbExecuteTest (
176 1.7 christos char *TypeArg);
177 1.7 christos
178 1.7 christos
179 1.5 christos /*
180 1.5 christos * dbconvert - miscellaneous conversion routines
181 1.5 christos */
182 1.5 christos ACPI_STATUS
183 1.5 christos AcpiDbHexCharToValue (
184 1.5 christos int HexChar,
185 1.5 christos UINT8 *ReturnValue);
186 1.5 christos
187 1.5 christos ACPI_STATUS
188 1.5 christos AcpiDbConvertToPackage (
189 1.5 christos char *String,
190 1.5 christos ACPI_OBJECT *Object);
191 1.5 christos
192 1.5 christos ACPI_STATUS
193 1.5 christos AcpiDbConvertToObject (
194 1.5 christos ACPI_OBJECT_TYPE Type,
195 1.5 christos char *String,
196 1.5 christos ACPI_OBJECT *Object);
197 1.5 christos
198 1.5 christos UINT8 *
199 1.5 christos AcpiDbEncodePldBuffer (
200 1.5 christos ACPI_PLD_INFO *PldInfo);
201 1.5 christos
202 1.5 christos void
203 1.5 christos AcpiDbDumpPldBuffer (
204 1.5 christos ACPI_OBJECT *ObjDesc);
205 1.3 jruoho
206 1.1 jruoho
207 1.3 jruoho /*
208 1.3 jruoho * dbmethod - control method commands
209 1.3 jruoho */
210 1.1 jruoho void
211 1.3 jruoho AcpiDbSetMethodBreakpoint (
212 1.3 jruoho char *Location,
213 1.3 jruoho ACPI_WALK_STATE *WalkState,
214 1.3 jruoho ACPI_PARSE_OBJECT *Op);
215 1.1 jruoho
216 1.1 jruoho void
217 1.3 jruoho AcpiDbSetMethodCallBreakpoint (
218 1.3 jruoho ACPI_PARSE_OBJECT *Op);
219 1.1 jruoho
220 1.1 jruoho void
221 1.1 jruoho AcpiDbSetMethodData (
222 1.1 jruoho char *TypeArg,
223 1.1 jruoho char *IndexArg,
224 1.1 jruoho char *ValueArg);
225 1.1 jruoho
226 1.1 jruoho ACPI_STATUS
227 1.3 jruoho AcpiDbDisassembleMethod (
228 1.3 jruoho char *Name);
229 1.3 jruoho
230 1.3 jruoho void
231 1.3 jruoho AcpiDbDisassembleAml (
232 1.3 jruoho char *Statements,
233 1.3 jruoho ACPI_PARSE_OBJECT *Op);
234 1.3 jruoho
235 1.3 jruoho void
236 1.11 christos AcpiDbEvaluatePredefinedNames (
237 1.11 christos void);
238 1.1 jruoho
239 1.1 jruoho
240 1.3 jruoho /*
241 1.3 jruoho * dbnames - namespace commands
242 1.3 jruoho */
243 1.1 jruoho void
244 1.1 jruoho AcpiDbSetScope (
245 1.1 jruoho char *Name);
246 1.1 jruoho
247 1.1 jruoho void
248 1.3 jruoho AcpiDbDumpNamespace (
249 1.3 jruoho char *StartArg,
250 1.3 jruoho char *DepthArg);
251 1.1 jruoho
252 1.1 jruoho void
253 1.5 christos AcpiDbDumpNamespacePaths (
254 1.5 christos void);
255 1.5 christos
256 1.5 christos void
257 1.3 jruoho AcpiDbDumpNamespaceByOwner (
258 1.3 jruoho char *OwnerArg,
259 1.3 jruoho char *DepthArg);
260 1.1 jruoho
261 1.3 jruoho ACPI_STATUS
262 1.3 jruoho AcpiDbFindNameInNamespace (
263 1.3 jruoho char *NameArg);
264 1.1 jruoho
265 1.1 jruoho void
266 1.3 jruoho AcpiDbCheckPredefinedNames (
267 1.1 jruoho void);
268 1.1 jruoho
269 1.3 jruoho ACPI_STATUS
270 1.3 jruoho AcpiDbDisplayObjects (
271 1.3 jruoho char *ObjTypeArg,
272 1.3 jruoho char *DisplayCountArg);
273 1.3 jruoho
274 1.1 jruoho void
275 1.1 jruoho AcpiDbCheckIntegrity (
276 1.1 jruoho void);
277 1.1 jruoho
278 1.1 jruoho void
279 1.3 jruoho AcpiDbFindReferences (
280 1.3 jruoho char *ObjectArg);
281 1.1 jruoho
282 1.1 jruoho void
283 1.3 jruoho AcpiDbGetBusInfo (
284 1.1 jruoho void);
285 1.1 jruoho
286 1.1 jruoho
287 1.1 jruoho /*
288 1.1 jruoho * dbdisply - debug display commands
289 1.1 jruoho */
290 1.1 jruoho void
291 1.1 jruoho AcpiDbDisplayMethodInfo (
292 1.1 jruoho ACPI_PARSE_OBJECT *Op);
293 1.1 jruoho
294 1.1 jruoho void
295 1.1 jruoho AcpiDbDecodeAndDisplayObject (
296 1.1 jruoho char *Target,
297 1.1 jruoho char *OutputType);
298 1.1 jruoho
299 1.10 christos ACPI_DBR_DEPENDENT_RETURN_VOID (
300 1.1 jruoho void
301 1.1 jruoho AcpiDbDisplayResultObject (
302 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc,
303 1.10 christos ACPI_WALK_STATE *WalkState))
304 1.1 jruoho
305 1.1 jruoho ACPI_STATUS
306 1.1 jruoho AcpiDbDisplayAllMethods (
307 1.1 jruoho char *DisplayCountArg);
308 1.1 jruoho
309 1.1 jruoho void
310 1.1 jruoho AcpiDbDisplayArguments (
311 1.1 jruoho void);
312 1.1 jruoho
313 1.1 jruoho void
314 1.1 jruoho AcpiDbDisplayLocals (
315 1.1 jruoho void);
316 1.1 jruoho
317 1.1 jruoho void
318 1.1 jruoho AcpiDbDisplayResults (
319 1.1 jruoho void);
320 1.1 jruoho
321 1.1 jruoho void
322 1.1 jruoho AcpiDbDisplayCallingTree (
323 1.1 jruoho void);
324 1.1 jruoho
325 1.1 jruoho void
326 1.1 jruoho AcpiDbDisplayObjectType (
327 1.1 jruoho char *ObjectArg);
328 1.1 jruoho
329 1.10 christos ACPI_DBR_DEPENDENT_RETURN_VOID (
330 1.1 jruoho void
331 1.1 jruoho AcpiDbDisplayArgumentObject (
332 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc,
333 1.10 christos ACPI_WALK_STATE *WalkState))
334 1.1 jruoho
335 1.1 jruoho
336 1.1 jruoho /*
337 1.1 jruoho * dbexec - debugger control method execution
338 1.1 jruoho */
339 1.1 jruoho void
340 1.1 jruoho AcpiDbExecute (
341 1.1 jruoho char *Name,
342 1.1 jruoho char **Args,
343 1.4 jruoho ACPI_OBJECT_TYPE *Types,
344 1.1 jruoho UINT32 Flags);
345 1.1 jruoho
346 1.1 jruoho void
347 1.13 christos AcpiDbCreateExecutionThread (
348 1.13 christos char *MethodNameArg,
349 1.13 christos char **Arguments,
350 1.13 christos ACPI_OBJECT_TYPE *Types);
351 1.13 christos
352 1.13 christos void
353 1.1 jruoho AcpiDbCreateExecutionThreads (
354 1.1 jruoho char *NumThreadsArg,
355 1.1 jruoho char *NumLoopsArg,
356 1.1 jruoho char *MethodNameArg);
357 1.1 jruoho
358 1.5 christos void
359 1.5 christos AcpiDbDeleteObjects (
360 1.5 christos UINT32 Count,
361 1.5 christos ACPI_OBJECT *Objects);
362 1.5 christos
363 1.1 jruoho #ifdef ACPI_DBG_TRACK_ALLOCATIONS
364 1.1 jruoho UINT32
365 1.1 jruoho AcpiDbGetCacheInfo (
366 1.1 jruoho ACPI_MEMORY_LIST *Cache);
367 1.1 jruoho #endif
368 1.1 jruoho
369 1.1 jruoho
370 1.1 jruoho /*
371 1.1 jruoho * dbfileio - Debugger file I/O commands
372 1.1 jruoho */
373 1.1 jruoho ACPI_OBJECT_TYPE
374 1.1 jruoho AcpiDbMatchArgument (
375 1.1 jruoho char *UserArgument,
376 1.5 christos ACPI_DB_ARGUMENT_INFO *Arguments);
377 1.1 jruoho
378 1.1 jruoho void
379 1.1 jruoho AcpiDbCloseDebugFile (
380 1.1 jruoho void);
381 1.1 jruoho
382 1.1 jruoho void
383 1.1 jruoho AcpiDbOpenDebugFile (
384 1.1 jruoho char *Name);
385 1.1 jruoho
386 1.1 jruoho ACPI_STATUS
387 1.1 jruoho AcpiDbLoadAcpiTable (
388 1.1 jruoho char *Filename);
389 1.1 jruoho
390 1.1 jruoho ACPI_STATUS
391 1.10 christos AcpiDbLoadTables (
392 1.10 christos ACPI_NEW_TABLE_DESC *ListHead);
393 1.1 jruoho
394 1.1 jruoho
395 1.1 jruoho /*
396 1.1 jruoho * dbhistry - debugger HISTORY command
397 1.1 jruoho */
398 1.1 jruoho void
399 1.1 jruoho AcpiDbAddToHistory (
400 1.1 jruoho char *CommandLine);
401 1.1 jruoho
402 1.1 jruoho void
403 1.1 jruoho AcpiDbDisplayHistory (
404 1.1 jruoho void);
405 1.1 jruoho
406 1.1 jruoho char *
407 1.1 jruoho AcpiDbGetFromHistory (
408 1.1 jruoho char *CommandNumArg);
409 1.1 jruoho
410 1.5 christos char *
411 1.5 christos AcpiDbGetHistoryByIndex (
412 1.5 christos UINT32 CommanddNum);
413 1.5 christos
414 1.1 jruoho
415 1.1 jruoho /*
416 1.1 jruoho * dbinput - user front-end to the AML debugger
417 1.1 jruoho */
418 1.1 jruoho ACPI_STATUS
419 1.1 jruoho AcpiDbCommandDispatch (
420 1.1 jruoho char *InputBuffer,
421 1.1 jruoho ACPI_WALK_STATE *WalkState,
422 1.1 jruoho ACPI_PARSE_OBJECT *Op);
423 1.1 jruoho
424 1.1 jruoho void ACPI_SYSTEM_XFACE
425 1.1 jruoho AcpiDbExecuteThread (
426 1.1 jruoho void *Context);
427 1.1 jruoho
428 1.1 jruoho ACPI_STATUS
429 1.1 jruoho AcpiDbUserCommands (
430 1.12 christos void);
431 1.1 jruoho
432 1.4 jruoho char *
433 1.4 jruoho AcpiDbGetNextToken (
434 1.4 jruoho char *String,
435 1.4 jruoho char **Next,
436 1.4 jruoho ACPI_OBJECT_TYPE *ReturnType);
437 1.4 jruoho
438 1.1 jruoho
439 1.1 jruoho /*
440 1.9 christos * dbobject
441 1.9 christos */
442 1.9 christos void
443 1.9 christos AcpiDbDecodeInternalObject (
444 1.9 christos ACPI_OPERAND_OBJECT *ObjDesc);
445 1.9 christos
446 1.9 christos void
447 1.9 christos AcpiDbDisplayInternalObject (
448 1.9 christos ACPI_OPERAND_OBJECT *ObjDesc,
449 1.9 christos ACPI_WALK_STATE *WalkState);
450 1.9 christos
451 1.9 christos void
452 1.9 christos AcpiDbDecodeArguments (
453 1.9 christos ACPI_WALK_STATE *WalkState);
454 1.9 christos
455 1.9 christos void
456 1.9 christos AcpiDbDecodeLocals (
457 1.9 christos ACPI_WALK_STATE *WalkState);
458 1.9 christos
459 1.9 christos void
460 1.9 christos AcpiDbDumpMethodInfo (
461 1.9 christos ACPI_STATUS Status,
462 1.9 christos ACPI_WALK_STATE *WalkState);
463 1.9 christos
464 1.9 christos
465 1.9 christos /*
466 1.1 jruoho * dbstats - Generation and display of ACPI table statistics
467 1.1 jruoho */
468 1.1 jruoho void
469 1.1 jruoho AcpiDbGenerateStatistics (
470 1.1 jruoho ACPI_PARSE_OBJECT *Root,
471 1.1 jruoho BOOLEAN IsMethod);
472 1.1 jruoho
473 1.1 jruoho ACPI_STATUS
474 1.1 jruoho AcpiDbDisplayStatistics (
475 1.1 jruoho char *TypeArg);
476 1.1 jruoho
477 1.1 jruoho
478 1.1 jruoho /*
479 1.1 jruoho * dbutils - AML debugger utilities
480 1.1 jruoho */
481 1.1 jruoho void
482 1.1 jruoho AcpiDbSetOutputDestination (
483 1.1 jruoho UINT32 Where);
484 1.1 jruoho
485 1.1 jruoho void
486 1.1 jruoho AcpiDbDumpExternalObject (
487 1.1 jruoho ACPI_OBJECT *ObjDesc,
488 1.1 jruoho UINT32 Level);
489 1.1 jruoho
490 1.1 jruoho void
491 1.1 jruoho AcpiDbPrepNamestring (
492 1.1 jruoho char *Name);
493 1.1 jruoho
494 1.1 jruoho ACPI_NAMESPACE_NODE *
495 1.1 jruoho AcpiDbLocalNsLookup (
496 1.1 jruoho char *Name);
497 1.1 jruoho
498 1.1 jruoho void
499 1.5 christos AcpiDbUint32ToHexString (
500 1.1 jruoho UINT32 Value,
501 1.1 jruoho char *Buffer);
502 1.1 jruoho
503 1.1 jruoho #endif /* __ACDEBUG_H__ */
504