xref: /freebsd/sys/contrib/dev/acpica/include/acdebug.h (revision d244b2279c2f63fc930fa1c11a6033b7119d426a)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: acdebug.h - ACPI/AML debugger
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7*d244b227SJung-uk Kim /*
8*d244b227SJung-uk Kim  * Copyright (C) 2000 - 2011, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11*d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12*d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13*d244b227SJung-uk Kim  * are met:
14*d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15*d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16*d244b227SJung-uk Kim  *    without modification.
17*d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19*d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20*d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21*d244b227SJung-uk Kim  *    binary redistribution.
22*d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23*d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24*d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26*d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27*d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28*d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30*d244b227SJung-uk Kim  * NO WARRANTY
31*d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42*d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef __ACDEBUG_H__
45a9f12690SJung-uk Kim #define __ACDEBUG_H__
46a9f12690SJung-uk Kim 
47a9f12690SJung-uk Kim 
485a77b11bSJung-uk Kim #define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
49a9f12690SJung-uk Kim 
50a9f12690SJung-uk Kim typedef struct CommandInfo
51a9f12690SJung-uk Kim {
52a9f12690SJung-uk Kim     char                    *Name;          /* Command Name */
53a9f12690SJung-uk Kim     UINT8                   MinArgs;        /* Minimum arguments required */
54a9f12690SJung-uk Kim 
55a9f12690SJung-uk Kim } COMMAND_INFO;
56a9f12690SJung-uk Kim 
57a9f12690SJung-uk Kim typedef struct ArgumentInfo
58a9f12690SJung-uk Kim {
59a9f12690SJung-uk Kim     char                    *Name;          /* Argument Name */
60a9f12690SJung-uk Kim 
61a9f12690SJung-uk Kim } ARGUMENT_INFO;
62a9f12690SJung-uk Kim 
63f556842eSJung-uk Kim typedef struct acpi_execute_walk
64f556842eSJung-uk Kim {
65f556842eSJung-uk Kim     UINT32                  Count;
66f556842eSJung-uk Kim     UINT32                  MaxCount;
67f556842eSJung-uk Kim 
68f556842eSJung-uk Kim } ACPI_EXECUTE_WALK;
69f556842eSJung-uk Kim 
70a9f12690SJung-uk Kim 
71a9f12690SJung-uk Kim #define PARAM_LIST(pl)                  pl
72a9f12690SJung-uk Kim #define DBTEST_OUTPUT_LEVEL(lvl)        if (AcpiGbl_DbOpt_verbose)
73a9f12690SJung-uk Kim #define VERBOSE_PRINT(fp)               DBTEST_OUTPUT_LEVEL(lvl) {\
74a9f12690SJung-uk Kim                                             AcpiOsPrintf PARAM_LIST(fp);}
75a9f12690SJung-uk Kim 
76a9f12690SJung-uk Kim #define EX_NO_SINGLE_STEP               1
77a9f12690SJung-uk Kim #define EX_SINGLE_STEP                  2
78a9f12690SJung-uk Kim 
79a9f12690SJung-uk Kim 
80a9f12690SJung-uk Kim /*
81a9f12690SJung-uk Kim  * dbxface - external debugger interfaces
82a9f12690SJung-uk Kim  */
83a9f12690SJung-uk Kim ACPI_STATUS
84a9f12690SJung-uk Kim AcpiDbInitialize (
85a9f12690SJung-uk Kim     void);
86a9f12690SJung-uk Kim 
87a9f12690SJung-uk Kim void
88a9f12690SJung-uk Kim AcpiDbTerminate (
89a9f12690SJung-uk Kim     void);
90a9f12690SJung-uk Kim 
91a9f12690SJung-uk Kim ACPI_STATUS
92a9f12690SJung-uk Kim AcpiDbSingleStep (
93a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState,
94a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
95a9f12690SJung-uk Kim     UINT32                  OpType);
96a9f12690SJung-uk Kim 
97a9f12690SJung-uk Kim 
98a9f12690SJung-uk Kim /*
99a9f12690SJung-uk Kim  * dbcmds - debug commands and output routines
100a9f12690SJung-uk Kim  */
101a9f12690SJung-uk Kim ACPI_STATUS
102a9f12690SJung-uk Kim AcpiDbDisassembleMethod (
103a9f12690SJung-uk Kim     char                    *Name);
104a9f12690SJung-uk Kim 
105a9f12690SJung-uk Kim void
106a9f12690SJung-uk Kim AcpiDbDisplayTableInfo (
107a9f12690SJung-uk Kim     char                    *TableArg);
108a9f12690SJung-uk Kim 
109a9f12690SJung-uk Kim void
110a9f12690SJung-uk Kim AcpiDbUnloadAcpiTable (
111a9f12690SJung-uk Kim     char                    *TableArg,
112a9f12690SJung-uk Kim     char                    *InstanceArg);
113a9f12690SJung-uk Kim 
114a9f12690SJung-uk Kim void
115a9f12690SJung-uk Kim AcpiDbSetMethodBreakpoint (
116a9f12690SJung-uk Kim     char                    *Location,
117a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState,
118a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
119a9f12690SJung-uk Kim 
120a9f12690SJung-uk Kim void
121a9f12690SJung-uk Kim AcpiDbSetMethodCallBreakpoint (
122a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
123a9f12690SJung-uk Kim 
124a9f12690SJung-uk Kim void
125a9f12690SJung-uk Kim AcpiDbGetBusInfo (
126a9f12690SJung-uk Kim     void);
127a9f12690SJung-uk Kim 
128a9f12690SJung-uk Kim void
129a9f12690SJung-uk Kim AcpiDbDisassembleAml (
130a9f12690SJung-uk Kim     char                    *Statements,
131a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
132a9f12690SJung-uk Kim 
133a9f12690SJung-uk Kim void
134a9f12690SJung-uk Kim AcpiDbDumpNamespace (
135a9f12690SJung-uk Kim     char                    *StartArg,
136a9f12690SJung-uk Kim     char                    *DepthArg);
137a9f12690SJung-uk Kim 
138a9f12690SJung-uk Kim void
139a9f12690SJung-uk Kim AcpiDbDumpNamespaceByOwner (
140a9f12690SJung-uk Kim     char                    *OwnerArg,
141a9f12690SJung-uk Kim     char                    *DepthArg);
142a9f12690SJung-uk Kim 
143a9f12690SJung-uk Kim void
144a9f12690SJung-uk Kim AcpiDbSendNotify (
145a9f12690SJung-uk Kim     char                    *Name,
146a9f12690SJung-uk Kim     UINT32                  Value);
147a9f12690SJung-uk Kim 
148a9f12690SJung-uk Kim void
149a9f12690SJung-uk Kim AcpiDbSetMethodData (
150a9f12690SJung-uk Kim     char                    *TypeArg,
151a9f12690SJung-uk Kim     char                    *IndexArg,
152a9f12690SJung-uk Kim     char                    *ValueArg);
153a9f12690SJung-uk Kim 
154a9f12690SJung-uk Kim ACPI_STATUS
155a9f12690SJung-uk Kim AcpiDbDisplayObjects (
156a9f12690SJung-uk Kim     char                    *ObjTypeArg,
157a9f12690SJung-uk Kim     char                    *DisplayCountArg);
158a9f12690SJung-uk Kim 
159709fac06SJung-uk Kim void
160709fac06SJung-uk Kim AcpiDbDisplayInterfaces (
161709fac06SJung-uk Kim     char                    *ActionArg,
162709fac06SJung-uk Kim     char                    *InterfaceNameArg);
163709fac06SJung-uk Kim 
164a9f12690SJung-uk Kim ACPI_STATUS
165a9f12690SJung-uk Kim AcpiDbFindNameInNamespace (
166a9f12690SJung-uk Kim     char                    *NameArg);
167a9f12690SJung-uk Kim 
168a9f12690SJung-uk Kim void
169a9f12690SJung-uk Kim AcpiDbSetScope (
170a9f12690SJung-uk Kim     char                    *Name);
171a9f12690SJung-uk Kim 
172a9f12690SJung-uk Kim ACPI_STATUS
173a9f12690SJung-uk Kim AcpiDbSleep (
174a9f12690SJung-uk Kim     char                    *ObjectArg);
175a9f12690SJung-uk Kim 
176a9f12690SJung-uk Kim void
177a9f12690SJung-uk Kim AcpiDbFindReferences (
178a9f12690SJung-uk Kim     char                    *ObjectArg);
179a9f12690SJung-uk Kim 
180a9f12690SJung-uk Kim void
181a9f12690SJung-uk Kim AcpiDbDisplayLocks (
182a9f12690SJung-uk Kim     void);
183a9f12690SJung-uk Kim 
184a9f12690SJung-uk Kim void
185a9f12690SJung-uk Kim AcpiDbDisplayResources (
186a9f12690SJung-uk Kim     char                    *ObjectArg);
187a9f12690SJung-uk Kim 
188a9f12690SJung-uk Kim void
189a9f12690SJung-uk Kim AcpiDbDisplayGpes (
190a9f12690SJung-uk Kim     void);
191a9f12690SJung-uk Kim 
192a9f12690SJung-uk Kim void
193a9f12690SJung-uk Kim AcpiDbCheckIntegrity (
194a9f12690SJung-uk Kim     void);
195a9f12690SJung-uk Kim 
196a9f12690SJung-uk Kim void
197a9f12690SJung-uk Kim AcpiDbGenerateGpe (
198a9f12690SJung-uk Kim     char                    *GpeArg,
199a9f12690SJung-uk Kim     char                    *BlockArg);
200a9f12690SJung-uk Kim 
201a9f12690SJung-uk Kim void
202a9f12690SJung-uk Kim AcpiDbCheckPredefinedNames (
203a9f12690SJung-uk Kim     void);
204a9f12690SJung-uk Kim 
205a9f12690SJung-uk Kim void
206a9f12690SJung-uk Kim AcpiDbBatchExecute (
207f556842eSJung-uk Kim     char                    *CountArg);
208a9f12690SJung-uk Kim 
209a9f12690SJung-uk Kim /*
210a9f12690SJung-uk Kim  * dbdisply - debug display commands
211a9f12690SJung-uk Kim  */
212a9f12690SJung-uk Kim void
213a9f12690SJung-uk Kim AcpiDbDisplayMethodInfo (
214a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
215a9f12690SJung-uk Kim 
216a9f12690SJung-uk Kim void
217a9f12690SJung-uk Kim AcpiDbDecodeAndDisplayObject (
218a9f12690SJung-uk Kim     char                    *Target,
219a9f12690SJung-uk Kim     char                    *OutputType);
220a9f12690SJung-uk Kim 
221a9f12690SJung-uk Kim void
222a9f12690SJung-uk Kim AcpiDbDisplayResultObject (
223a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
224a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
225a9f12690SJung-uk Kim 
226a9f12690SJung-uk Kim ACPI_STATUS
227a9f12690SJung-uk Kim AcpiDbDisplayAllMethods (
228a9f12690SJung-uk Kim     char                    *DisplayCountArg);
229a9f12690SJung-uk Kim 
230a9f12690SJung-uk Kim void
231a9f12690SJung-uk Kim AcpiDbDisplayArguments (
232a9f12690SJung-uk Kim     void);
233a9f12690SJung-uk Kim 
234a9f12690SJung-uk Kim void
235a9f12690SJung-uk Kim AcpiDbDisplayLocals (
236a9f12690SJung-uk Kim     void);
237a9f12690SJung-uk Kim 
238a9f12690SJung-uk Kim void
239a9f12690SJung-uk Kim AcpiDbDisplayResults (
240a9f12690SJung-uk Kim     void);
241a9f12690SJung-uk Kim 
242a9f12690SJung-uk Kim void
243a9f12690SJung-uk Kim AcpiDbDisplayCallingTree (
244a9f12690SJung-uk Kim     void);
245a9f12690SJung-uk Kim 
246a9f12690SJung-uk Kim void
247a9f12690SJung-uk Kim AcpiDbDisplayObjectType (
248a9f12690SJung-uk Kim     char                    *ObjectArg);
249a9f12690SJung-uk Kim 
250a9f12690SJung-uk Kim void
251a9f12690SJung-uk Kim AcpiDbDisplayArgumentObject (
252a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
253a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
254a9f12690SJung-uk Kim 
255d6dd1baeSJung-uk Kim 
256a9f12690SJung-uk Kim /*
257a9f12690SJung-uk Kim  * dbexec - debugger control method execution
258a9f12690SJung-uk Kim  */
259a9f12690SJung-uk Kim void
260a9f12690SJung-uk Kim AcpiDbExecute (
261a9f12690SJung-uk Kim     char                    *Name,
262a9f12690SJung-uk Kim     char                    **Args,
263a9f12690SJung-uk Kim     UINT32                  Flags);
264a9f12690SJung-uk Kim 
265a9f12690SJung-uk Kim void
266a9f12690SJung-uk Kim AcpiDbCreateExecutionThreads (
267a9f12690SJung-uk Kim     char                    *NumThreadsArg,
268a9f12690SJung-uk Kim     char                    *NumLoopsArg,
269a9f12690SJung-uk Kim     char                    *MethodNameArg);
270a9f12690SJung-uk Kim 
271a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
272a9f12690SJung-uk Kim UINT32
273a9f12690SJung-uk Kim AcpiDbGetCacheInfo (
274a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        *Cache);
275a9f12690SJung-uk Kim #endif
276a9f12690SJung-uk Kim 
277a9f12690SJung-uk Kim 
278a9f12690SJung-uk Kim /*
279a9f12690SJung-uk Kim  * dbfileio - Debugger file I/O commands
280a9f12690SJung-uk Kim  */
281a9f12690SJung-uk Kim ACPI_OBJECT_TYPE
282a9f12690SJung-uk Kim AcpiDbMatchArgument (
283a9f12690SJung-uk Kim     char                    *UserArgument,
284a9f12690SJung-uk Kim     ARGUMENT_INFO           *Arguments);
285a9f12690SJung-uk Kim 
286a9f12690SJung-uk Kim void
287a9f12690SJung-uk Kim AcpiDbCloseDebugFile (
288a9f12690SJung-uk Kim     void);
289a9f12690SJung-uk Kim 
290a9f12690SJung-uk Kim void
291a9f12690SJung-uk Kim AcpiDbOpenDebugFile (
292a9f12690SJung-uk Kim     char                    *Name);
293a9f12690SJung-uk Kim 
294a9f12690SJung-uk Kim ACPI_STATUS
295a9f12690SJung-uk Kim AcpiDbLoadAcpiTable (
296a9f12690SJung-uk Kim     char                    *Filename);
297a9f12690SJung-uk Kim 
298a9f12690SJung-uk Kim ACPI_STATUS
299a9f12690SJung-uk Kim AcpiDbGetTableFromFile (
300a9f12690SJung-uk Kim     char                    *Filename,
301a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       **Table);
302a9f12690SJung-uk Kim 
303a9f12690SJung-uk Kim ACPI_STATUS
304a9f12690SJung-uk Kim AcpiDbReadTableFromFile (
305a9f12690SJung-uk Kim     char                    *Filename,
306a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       **Table);
307a9f12690SJung-uk Kim 
308a9f12690SJung-uk Kim 
309a9f12690SJung-uk Kim /*
310a9f12690SJung-uk Kim  * dbhistry - debugger HISTORY command
311a9f12690SJung-uk Kim  */
312a9f12690SJung-uk Kim void
313a9f12690SJung-uk Kim AcpiDbAddToHistory (
314a9f12690SJung-uk Kim     char                    *CommandLine);
315a9f12690SJung-uk Kim 
316a9f12690SJung-uk Kim void
317a9f12690SJung-uk Kim AcpiDbDisplayHistory (
318a9f12690SJung-uk Kim     void);
319a9f12690SJung-uk Kim 
320a9f12690SJung-uk Kim char *
321a9f12690SJung-uk Kim AcpiDbGetFromHistory (
322a9f12690SJung-uk Kim     char                    *CommandNumArg);
323a9f12690SJung-uk Kim 
324a9f12690SJung-uk Kim 
325a9f12690SJung-uk Kim /*
326a9f12690SJung-uk Kim  * dbinput - user front-end to the AML debugger
327a9f12690SJung-uk Kim  */
328a9f12690SJung-uk Kim ACPI_STATUS
329a9f12690SJung-uk Kim AcpiDbCommandDispatch (
330a9f12690SJung-uk Kim     char                    *InputBuffer,
331a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState,
332a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
333a9f12690SJung-uk Kim 
334a9f12690SJung-uk Kim void ACPI_SYSTEM_XFACE
335a9f12690SJung-uk Kim AcpiDbExecuteThread (
336a9f12690SJung-uk Kim     void                    *Context);
337a9f12690SJung-uk Kim 
338a9f12690SJung-uk Kim ACPI_STATUS
339a9f12690SJung-uk Kim AcpiDbUserCommands (
340a9f12690SJung-uk Kim     char                    Prompt,
341a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
342a9f12690SJung-uk Kim 
343a9f12690SJung-uk Kim 
344a9f12690SJung-uk Kim /*
345a9f12690SJung-uk Kim  * dbstats - Generation and display of ACPI table statistics
346a9f12690SJung-uk Kim  */
347a9f12690SJung-uk Kim void
348a9f12690SJung-uk Kim AcpiDbGenerateStatistics (
349a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Root,
350a9f12690SJung-uk Kim     BOOLEAN                 IsMethod);
351a9f12690SJung-uk Kim 
352a9f12690SJung-uk Kim ACPI_STATUS
353a9f12690SJung-uk Kim AcpiDbDisplayStatistics (
354a9f12690SJung-uk Kim     char                    *TypeArg);
355a9f12690SJung-uk Kim 
356a9f12690SJung-uk Kim 
357a9f12690SJung-uk Kim /*
358a9f12690SJung-uk Kim  * dbutils - AML debugger utilities
359a9f12690SJung-uk Kim  */
360a9f12690SJung-uk Kim void
361a9f12690SJung-uk Kim AcpiDbSetOutputDestination (
362a9f12690SJung-uk Kim     UINT32                  Where);
363a9f12690SJung-uk Kim 
364a9f12690SJung-uk Kim void
365a9f12690SJung-uk Kim AcpiDbDumpExternalObject (
366a9f12690SJung-uk Kim     ACPI_OBJECT             *ObjDesc,
367a9f12690SJung-uk Kim     UINT32                  Level);
368a9f12690SJung-uk Kim 
369a9f12690SJung-uk Kim void
370a9f12690SJung-uk Kim AcpiDbPrepNamestring (
371a9f12690SJung-uk Kim     char                    *Name);
372a9f12690SJung-uk Kim 
373a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *
374a9f12690SJung-uk Kim AcpiDbLocalNsLookup (
375a9f12690SJung-uk Kim     char                    *Name);
376a9f12690SJung-uk Kim 
377a9f12690SJung-uk Kim void
378a9f12690SJung-uk Kim AcpiDbUInt32ToHexString (
379a9f12690SJung-uk Kim     UINT32                  Value,
380a9f12690SJung-uk Kim     char                    *Buffer);
381a9f12690SJung-uk Kim 
382a9f12690SJung-uk Kim #endif  /* __ACDEBUG_H__ */
383