1 /******************************************************************************
3 * Name: acdebug.h - ACPI/AML debugger
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2021, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
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.
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.
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 MERCHANTABILITY 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.
47 /* The debugger is used in conjunction with the disassembler most of time */
49 #ifdef ACPI_DISASSEMBLER
54 #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */
55 #define ACPI_DEBUG_LENGTH_FORMAT " (%.4X bits, %.3X bytes)"
57 typedef struct acpi_db_command_info
59 const char *Name
; /* Command Name */
60 UINT8 MinArgs
; /* Minimum arguments required */
62 } ACPI_DB_COMMAND_INFO
;
64 typedef struct acpi_db_command_help
66 UINT8 LineCount
; /* Number of help lines */
67 char *Invocation
; /* Command Invocation */
68 char *Description
; /* Command Description */
70 } ACPI_DB_COMMAND_HELP
;
72 typedef struct acpi_db_argument_info
74 const char *Name
; /* Argument Name */
76 } ACPI_DB_ARGUMENT_INFO
;
78 typedef struct acpi_db_execute_walk
82 char NameSeg
[ACPI_NAMESEG_SIZE
+ 1];
84 } ACPI_DB_EXECUTE_WALK
;
87 #define PARAM_LIST(pl) pl
89 #define EX_NO_SINGLE_STEP 1
90 #define EX_SINGLE_STEP 2
95 * dbxface - external debugger interfaces
97 ACPI_DBR_DEPENDENT_RETURN_OK (
100 ACPI_WALK_STATE
*WalkState
,
101 ACPI_PARSE_OBJECT
*Op
,
104 ACPI_DBR_DEPENDENT_RETURN_VOID (
106 AcpiDbSignalBreakPoint (
107 ACPI_WALK_STATE
*WalkState
))
111 * dbcmds - debug commands and output routines
113 ACPI_NAMESPACE_NODE
*
114 AcpiDbConvertToNode (
118 AcpiDbDisplayTableInfo (
122 AcpiDbDisplayTemplate (
126 AcpiDbUnloadAcpiTable (
135 AcpiDbDisplayInterfaces (
137 char *InterfaceNameArg
);
154 AcpiDbDisplayResources (
157 ACPI_HW_DEPENDENT_RETURN_VOID (
163 AcpiDbDisplayHandlers (
166 ACPI_HW_DEPENDENT_RETURN_VOID (
172 ACPI_HW_DEPENDENT_RETURN_VOID (
183 * dbconvert - miscellaneous conversion routines
186 AcpiDbHexCharToValue (
191 AcpiDbConvertToPackage (
193 ACPI_OBJECT
*Object
);
196 AcpiDbConvertToObject (
197 ACPI_OBJECT_TYPE Type
,
199 ACPI_OBJECT
*Object
);
202 AcpiDbEncodePldBuffer (
203 ACPI_PLD_INFO
*PldInfo
);
206 AcpiDbDumpPldBuffer (
207 ACPI_OBJECT
*ObjDesc
);
211 * dbmethod - control method commands
214 AcpiDbSetMethodBreakpoint (
216 ACPI_WALK_STATE
*WalkState
,
217 ACPI_PARSE_OBJECT
*Op
);
220 AcpiDbSetMethodCallBreakpoint (
221 ACPI_PARSE_OBJECT
*Op
);
224 AcpiDbSetMethodData (
230 AcpiDbDisassembleMethod (
234 AcpiDbDisassembleAml (
236 ACPI_PARSE_OBJECT
*Op
);
239 AcpiDbEvaluatePredefinedNames (
248 * dbnames - namespace commands
255 AcpiDbDumpNamespace (
260 AcpiDbDumpNamespacePaths (
264 AcpiDbDumpNamespaceByOwner (
269 AcpiDbFindNameInNamespace (
273 AcpiDbCheckPredefinedNames (
277 AcpiDbDisplayObjects (
279 char *DisplayCountArg
);
282 AcpiDbCheckIntegrity (
286 AcpiDbFindReferences (
294 AcpiDbDisplayFields (
295 UINT32 AddressSpaceId
);
299 * dbdisply - debug display commands
302 AcpiDbDisplayMethodInfo (
303 ACPI_PARSE_OBJECT
*Op
);
306 AcpiDbDecodeAndDisplayObject (
310 ACPI_DBR_DEPENDENT_RETURN_VOID (
312 AcpiDbDisplayResultObject (
313 ACPI_OPERAND_OBJECT
*ObjDesc
,
314 ACPI_WALK_STATE
*WalkState
))
317 AcpiDbDisplayAllMethods (
318 char *DisplayCountArg
);
321 AcpiDbDisplayArguments (
325 AcpiDbDisplayLocals (
329 AcpiDbDisplayResults (
333 AcpiDbDisplayCallingTree (
337 AcpiDbDisplayObjectType (
340 ACPI_DBR_DEPENDENT_RETURN_VOID (
342 AcpiDbDisplayArgumentObject (
343 ACPI_OPERAND_OBJECT
*ObjDesc
,
344 ACPI_WALK_STATE
*WalkState
))
348 * dbexec - debugger control method execution
354 ACPI_OBJECT_TYPE
*Types
,
358 AcpiDbCreateExecutionThread (
361 ACPI_OBJECT_TYPE
*Types
);
364 AcpiDbCreateExecutionThreads (
367 char *MethodNameArg
);
370 AcpiDbDeleteObjects (
372 ACPI_OBJECT
*Objects
);
374 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
377 ACPI_MEMORY_LIST
*Cache
);
382 * dbfileio - Debugger file I/O commands
385 AcpiDbMatchArgument (
387 ACPI_DB_ARGUMENT_INFO
*Arguments
);
390 AcpiDbCloseDebugFile (
394 AcpiDbOpenDebugFile (
398 AcpiDbLoadAcpiTable (
403 ACPI_NEW_TABLE_DESC
*ListHead
);
407 * dbhistry - debugger HISTORY command
414 AcpiDbDisplayHistory (
418 AcpiDbGetFromHistory (
419 char *CommandNumArg
);
422 AcpiDbGetHistoryByIndex (
427 * dbinput - user front-end to the AML debugger
430 AcpiDbCommandDispatch (
432 ACPI_WALK_STATE
*WalkState
,
433 ACPI_PARSE_OBJECT
*Op
);
435 void ACPI_SYSTEM_XFACE
436 AcpiDbExecuteThread (
447 ACPI_OBJECT_TYPE
*ReturnType
);
454 AcpiDbDecodeInternalObject (
455 ACPI_OPERAND_OBJECT
*ObjDesc
);
458 AcpiDbDisplayInternalObject (
459 ACPI_OPERAND_OBJECT
*ObjDesc
,
460 ACPI_WALK_STATE
*WalkState
);
463 AcpiDbDecodeArguments (
464 ACPI_WALK_STATE
*WalkState
);
468 ACPI_WALK_STATE
*WalkState
);
471 AcpiDbDumpMethodInfo (
473 ACPI_WALK_STATE
*WalkState
);
477 * dbstats - Generation and display of ACPI table statistics
480 AcpiDbGenerateStatistics (
481 ACPI_PARSE_OBJECT
*Root
,
485 AcpiDbDisplayStatistics (
490 * dbutils - AML debugger utilities
493 AcpiDbSetOutputDestination (
497 AcpiDbDumpExternalObject (
498 ACPI_OBJECT
*ObjDesc
,
502 AcpiDbPrepNamestring (
505 ACPI_NAMESPACE_NODE
*
506 AcpiDbLocalNsLookup (
510 AcpiDbUint32ToHexString (
514 #endif /* __ACDEBUG_H__ */