xref: /freebsd/sys/contrib/dev/acpica/include/acdebug.h (revision 0f27aaf940f2fa5a6540285537b33115a96161a4)
1 /******************************************************************************
2  *
3  * Name: acdebug.h - ACPI/AML debugger
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2011, 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 
48 #define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
49 
50 typedef struct CommandInfo
51 {
52     char                    *Name;          /* Command Name */
53     UINT8                   MinArgs;        /* Minimum arguments required */
54 
55 } COMMAND_INFO;
56 
57 typedef struct ArgumentInfo
58 {
59     char                    *Name;          /* Argument Name */
60 
61 } ARGUMENT_INFO;
62 
63 typedef struct acpi_execute_walk
64 {
65     UINT32                  Count;
66     UINT32                  MaxCount;
67 
68 } ACPI_EXECUTE_WALK;
69 
70 
71 #define PARAM_LIST(pl)                  pl
72 #define DBTEST_OUTPUT_LEVEL(lvl)        if (AcpiGbl_DbOpt_verbose)
73 #define VERBOSE_PRINT(fp)               DBTEST_OUTPUT_LEVEL(lvl) {\
74                                             AcpiOsPrintf PARAM_LIST(fp);}
75 
76 #define EX_NO_SINGLE_STEP               1
77 #define EX_SINGLE_STEP                  2
78 
79 
80 /*
81  * dbxface - external debugger interfaces
82  */
83 ACPI_STATUS
84 AcpiDbInitialize (
85     void);
86 
87 void
88 AcpiDbTerminate (
89     void);
90 
91 ACPI_STATUS
92 AcpiDbSingleStep (
93     ACPI_WALK_STATE         *WalkState,
94     ACPI_PARSE_OBJECT       *Op,
95     UINT32                  OpType);
96 
97 
98 /*
99  * dbcmds - debug commands and output routines
100  */
101 ACPI_STATUS
102 AcpiDbDisassembleMethod (
103     char                    *Name);
104 
105 void
106 AcpiDbDisplayTableInfo (
107     char                    *TableArg);
108 
109 void
110 AcpiDbUnloadAcpiTable (
111     char                    *TableArg,
112     char                    *InstanceArg);
113 
114 void
115 AcpiDbSetMethodBreakpoint (
116     char                    *Location,
117     ACPI_WALK_STATE         *WalkState,
118     ACPI_PARSE_OBJECT       *Op);
119 
120 void
121 AcpiDbSetMethodCallBreakpoint (
122     ACPI_PARSE_OBJECT       *Op);
123 
124 void
125 AcpiDbGetBusInfo (
126     void);
127 
128 void
129 AcpiDbDisassembleAml (
130     char                    *Statements,
131     ACPI_PARSE_OBJECT       *Op);
132 
133 void
134 AcpiDbDumpNamespace (
135     char                    *StartArg,
136     char                    *DepthArg);
137 
138 void
139 AcpiDbDumpNamespaceByOwner (
140     char                    *OwnerArg,
141     char                    *DepthArg);
142 
143 void
144 AcpiDbSendNotify (
145     char                    *Name,
146     UINT32                  Value);
147 
148 void
149 AcpiDbSetMethodData (
150     char                    *TypeArg,
151     char                    *IndexArg,
152     char                    *ValueArg);
153 
154 ACPI_STATUS
155 AcpiDbDisplayObjects (
156     char                    *ObjTypeArg,
157     char                    *DisplayCountArg);
158 
159 void
160 AcpiDbDisplayInterfaces (
161     char                    *ActionArg,
162     char                    *InterfaceNameArg);
163 
164 ACPI_STATUS
165 AcpiDbFindNameInNamespace (
166     char                    *NameArg);
167 
168 void
169 AcpiDbSetScope (
170     char                    *Name);
171 
172 ACPI_STATUS
173 AcpiDbSleep (
174     char                    *ObjectArg);
175 
176 void
177 AcpiDbFindReferences (
178     char                    *ObjectArg);
179 
180 void
181 AcpiDbDisplayLocks (
182     void);
183 
184 void
185 AcpiDbDisplayResources (
186     char                    *ObjectArg);
187 
188 void
189 AcpiDbDisplayGpes (
190     void);
191 
192 void
193 AcpiDbCheckIntegrity (
194     void);
195 
196 void
197 AcpiDbGenerateGpe (
198     char                    *GpeArg,
199     char                    *BlockArg);
200 
201 void
202 AcpiDbCheckPredefinedNames (
203     void);
204 
205 void
206 AcpiDbBatchExecute (
207     char                    *CountArg);
208 
209 /*
210  * dbdisply - debug display commands
211  */
212 void
213 AcpiDbDisplayMethodInfo (
214     ACPI_PARSE_OBJECT       *Op);
215 
216 void
217 AcpiDbDecodeAndDisplayObject (
218     char                    *Target,
219     char                    *OutputType);
220 
221 void
222 AcpiDbDisplayResultObject (
223     ACPI_OPERAND_OBJECT     *ObjDesc,
224     ACPI_WALK_STATE         *WalkState);
225 
226 ACPI_STATUS
227 AcpiDbDisplayAllMethods (
228     char                    *DisplayCountArg);
229 
230 void
231 AcpiDbDisplayArguments (
232     void);
233 
234 void
235 AcpiDbDisplayLocals (
236     void);
237 
238 void
239 AcpiDbDisplayResults (
240     void);
241 
242 void
243 AcpiDbDisplayCallingTree (
244     void);
245 
246 void
247 AcpiDbDisplayObjectType (
248     char                    *ObjectArg);
249 
250 void
251 AcpiDbDisplayArgumentObject (
252     ACPI_OPERAND_OBJECT     *ObjDesc,
253     ACPI_WALK_STATE         *WalkState);
254 
255 
256 /*
257  * dbexec - debugger control method execution
258  */
259 void
260 AcpiDbExecute (
261     char                    *Name,
262     char                    **Args,
263     UINT32                  Flags);
264 
265 void
266 AcpiDbCreateExecutionThreads (
267     char                    *NumThreadsArg,
268     char                    *NumLoopsArg,
269     char                    *MethodNameArg);
270 
271 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
272 UINT32
273 AcpiDbGetCacheInfo (
274     ACPI_MEMORY_LIST        *Cache);
275 #endif
276 
277 
278 /*
279  * dbfileio - Debugger file I/O commands
280  */
281 ACPI_OBJECT_TYPE
282 AcpiDbMatchArgument (
283     char                    *UserArgument,
284     ARGUMENT_INFO           *Arguments);
285 
286 void
287 AcpiDbCloseDebugFile (
288     void);
289 
290 void
291 AcpiDbOpenDebugFile (
292     char                    *Name);
293 
294 ACPI_STATUS
295 AcpiDbLoadAcpiTable (
296     char                    *Filename);
297 
298 ACPI_STATUS
299 AcpiDbGetTableFromFile (
300     char                    *Filename,
301     ACPI_TABLE_HEADER       **Table);
302 
303 ACPI_STATUS
304 AcpiDbReadTableFromFile (
305     char                    *Filename,
306     ACPI_TABLE_HEADER       **Table);
307 
308 
309 /*
310  * dbhistry - debugger HISTORY command
311  */
312 void
313 AcpiDbAddToHistory (
314     char                    *CommandLine);
315 
316 void
317 AcpiDbDisplayHistory (
318     void);
319 
320 char *
321 AcpiDbGetFromHistory (
322     char                    *CommandNumArg);
323 
324 
325 /*
326  * dbinput - user front-end to the AML debugger
327  */
328 ACPI_STATUS
329 AcpiDbCommandDispatch (
330     char                    *InputBuffer,
331     ACPI_WALK_STATE         *WalkState,
332     ACPI_PARSE_OBJECT       *Op);
333 
334 void ACPI_SYSTEM_XFACE
335 AcpiDbExecuteThread (
336     void                    *Context);
337 
338 ACPI_STATUS
339 AcpiDbUserCommands (
340     char                    Prompt,
341     ACPI_PARSE_OBJECT       *Op);
342 
343 
344 /*
345  * dbstats - Generation and display of ACPI table statistics
346  */
347 void
348 AcpiDbGenerateStatistics (
349     ACPI_PARSE_OBJECT       *Root,
350     BOOLEAN                 IsMethod);
351 
352 ACPI_STATUS
353 AcpiDbDisplayStatistics (
354     char                    *TypeArg);
355 
356 
357 /*
358  * dbutils - AML debugger utilities
359  */
360 void
361 AcpiDbSetOutputDestination (
362     UINT32                  Where);
363 
364 void
365 AcpiDbDumpExternalObject (
366     ACPI_OBJECT             *ObjDesc,
367     UINT32                  Level);
368 
369 void
370 AcpiDbPrepNamestring (
371     char                    *Name);
372 
373 ACPI_NAMESPACE_NODE *
374 AcpiDbLocalNsLookup (
375     char                    *Name);
376 
377 void
378 AcpiDbUInt32ToHexString (
379     UINT32                  Value,
380     char                    *Buffer);
381 
382 #endif  /* __ACDEBUG_H__ */
383