xref: /freebsd/sys/contrib/dev/acpica/include/acdebug.h (revision 3ef51c5fb9163f2aafb1c14729e06a8bf0c4d113)
1 /******************************************************************************
2  *
3  * Name: acdebug.h - ACPI/AML debugger
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2012, 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_NAMESPACE_NODE *
102 AcpiDbConvertToNode (
103     char                    *InString);
104 
105 void
106 AcpiDbDisplayTableInfo (
107     char                    *TableArg);
108 
109 void
110 AcpiDbDisplayTemplate (
111     char                    *BufferArg);
112 
113 void
114 AcpiDbUnloadAcpiTable (
115     char                    *TableArg,
116     char                    *InstanceArg);
117 
118 void
119 AcpiDbSendNotify (
120     char                    *Name,
121     UINT32                  Value);
122 
123 void
124 AcpiDbDisplayInterfaces (
125     char                    *ActionArg,
126     char                    *InterfaceNameArg);
127 
128 ACPI_STATUS
129 AcpiDbSleep (
130     char                    *ObjectArg);
131 
132 void
133 AcpiDbDisplayLocks (
134     void);
135 
136 void
137 AcpiDbDisplayResources (
138     char                    *ObjectArg);
139 
140 ACPI_HW_DEPENDENT_RETURN_VOID (
141 void
142 AcpiDbDisplayGpes (
143     void))
144 
145 void
146 AcpiDbDisplayHandlers (
147     void);
148 
149 ACPI_HW_DEPENDENT_RETURN_VOID (
150 void
151 AcpiDbGenerateGpe (
152     char                    *GpeArg,
153     char                    *BlockArg))
154 
155 
156 /*
157  * dbmethod - control method commands
158  */
159 void
160 AcpiDbSetMethodBreakpoint (
161     char                    *Location,
162     ACPI_WALK_STATE         *WalkState,
163     ACPI_PARSE_OBJECT       *Op);
164 
165 void
166 AcpiDbSetMethodCallBreakpoint (
167     ACPI_PARSE_OBJECT       *Op);
168 
169 void
170 AcpiDbSetMethodData (
171     char                    *TypeArg,
172     char                    *IndexArg,
173     char                    *ValueArg);
174 
175 ACPI_STATUS
176 AcpiDbDisassembleMethod (
177     char                    *Name);
178 
179 void
180 AcpiDbDisassembleAml (
181     char                    *Statements,
182     ACPI_PARSE_OBJECT       *Op);
183 
184 void
185 AcpiDbBatchExecute (
186     char                    *CountArg);
187 
188 
189 /*
190  * dbnames - namespace commands
191  */
192 void
193 AcpiDbSetScope (
194     char                    *Name);
195 
196 void
197 AcpiDbDumpNamespace (
198     char                    *StartArg,
199     char                    *DepthArg);
200 
201 void
202 AcpiDbDumpNamespaceByOwner (
203     char                    *OwnerArg,
204     char                    *DepthArg);
205 
206 ACPI_STATUS
207 AcpiDbFindNameInNamespace (
208     char                    *NameArg);
209 
210 void
211 AcpiDbCheckPredefinedNames (
212     void);
213 
214 ACPI_STATUS
215 AcpiDbDisplayObjects (
216     char                    *ObjTypeArg,
217     char                    *DisplayCountArg);
218 
219 void
220 AcpiDbCheckIntegrity (
221     void);
222 
223 void
224 AcpiDbFindReferences (
225     char                    *ObjectArg);
226 
227 void
228 AcpiDbGetBusInfo (
229     void);
230 
231 
232 /*
233  * dbdisply - debug display commands
234  */
235 void
236 AcpiDbDisplayMethodInfo (
237     ACPI_PARSE_OBJECT       *Op);
238 
239 void
240 AcpiDbDecodeAndDisplayObject (
241     char                    *Target,
242     char                    *OutputType);
243 
244 void
245 AcpiDbDisplayResultObject (
246     ACPI_OPERAND_OBJECT     *ObjDesc,
247     ACPI_WALK_STATE         *WalkState);
248 
249 ACPI_STATUS
250 AcpiDbDisplayAllMethods (
251     char                    *DisplayCountArg);
252 
253 void
254 AcpiDbDisplayArguments (
255     void);
256 
257 void
258 AcpiDbDisplayLocals (
259     void);
260 
261 void
262 AcpiDbDisplayResults (
263     void);
264 
265 void
266 AcpiDbDisplayCallingTree (
267     void);
268 
269 void
270 AcpiDbDisplayObjectType (
271     char                    *ObjectArg);
272 
273 void
274 AcpiDbDisplayArgumentObject (
275     ACPI_OPERAND_OBJECT     *ObjDesc,
276     ACPI_WALK_STATE         *WalkState);
277 
278 
279 /*
280  * dbexec - debugger control method execution
281  */
282 void
283 AcpiDbExecute (
284     char                    *Name,
285     char                    **Args,
286     ACPI_OBJECT_TYPE        *Types,
287     UINT32                  Flags);
288 
289 void
290 AcpiDbCreateExecutionThreads (
291     char                    *NumThreadsArg,
292     char                    *NumLoopsArg,
293     char                    *MethodNameArg);
294 
295 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
296 UINT32
297 AcpiDbGetCacheInfo (
298     ACPI_MEMORY_LIST        *Cache);
299 #endif
300 
301 
302 /*
303  * dbfileio - Debugger file I/O commands
304  */
305 ACPI_OBJECT_TYPE
306 AcpiDbMatchArgument (
307     char                    *UserArgument,
308     ARGUMENT_INFO           *Arguments);
309 
310 void
311 AcpiDbCloseDebugFile (
312     void);
313 
314 void
315 AcpiDbOpenDebugFile (
316     char                    *Name);
317 
318 ACPI_STATUS
319 AcpiDbLoadAcpiTable (
320     char                    *Filename);
321 
322 ACPI_STATUS
323 AcpiDbGetTableFromFile (
324     char                    *Filename,
325     ACPI_TABLE_HEADER       **Table);
326 
327 ACPI_STATUS
328 AcpiDbReadTableFromFile (
329     char                    *Filename,
330     ACPI_TABLE_HEADER       **Table);
331 
332 
333 /*
334  * dbhistry - debugger HISTORY command
335  */
336 void
337 AcpiDbAddToHistory (
338     char                    *CommandLine);
339 
340 void
341 AcpiDbDisplayHistory (
342     void);
343 
344 char *
345 AcpiDbGetFromHistory (
346     char                    *CommandNumArg);
347 
348 
349 /*
350  * dbinput - user front-end to the AML debugger
351  */
352 ACPI_STATUS
353 AcpiDbCommandDispatch (
354     char                    *InputBuffer,
355     ACPI_WALK_STATE         *WalkState,
356     ACPI_PARSE_OBJECT       *Op);
357 
358 void ACPI_SYSTEM_XFACE
359 AcpiDbExecuteThread (
360     void                    *Context);
361 
362 ACPI_STATUS
363 AcpiDbUserCommands (
364     char                    Prompt,
365     ACPI_PARSE_OBJECT       *Op);
366 
367 char *
368 AcpiDbGetNextToken (
369     char                    *String,
370     char                    **Next,
371     ACPI_OBJECT_TYPE        *ReturnType);
372 
373 
374 /*
375  * dbstats - Generation and display of ACPI table statistics
376  */
377 void
378 AcpiDbGenerateStatistics (
379     ACPI_PARSE_OBJECT       *Root,
380     BOOLEAN                 IsMethod);
381 
382 ACPI_STATUS
383 AcpiDbDisplayStatistics (
384     char                    *TypeArg);
385 
386 
387 /*
388  * dbutils - AML debugger utilities
389  */
390 void
391 AcpiDbSetOutputDestination (
392     UINT32                  Where);
393 
394 void
395 AcpiDbDumpExternalObject (
396     ACPI_OBJECT             *ObjDesc,
397     UINT32                  Level);
398 
399 void
400 AcpiDbPrepNamestring (
401     char                    *Name);
402 
403 ACPI_NAMESPACE_NODE *
404 AcpiDbLocalNsLookup (
405     char                    *Name);
406 
407 void
408 AcpiDbUInt32ToHexString (
409     UINT32                  Value,
410     char                    *Buffer);
411 
412 #endif  /* __ACDEBUG_H__ */
413