xref: /freebsd/sys/contrib/dev/acpica/include/acdebug.h (revision a0ee8cc636cd5c2374ec44ca71226564ea0bca95)
1 /******************************************************************************
2  *
3  * Name: acdebug.h - ACPI/AML debugger
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2015, 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 /* The debugger is used in conjunction with the disassembler most of time */
48 
49 #ifdef ACPI_DISASSEMBLER
50 #include <contrib/dev/acpica/include/acdisasm.h>
51 #endif
52 
53 
54 #define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
55 
56 typedef struct acpi_db_command_info
57 {
58     char                    *Name;          /* Command Name */
59     UINT8                   MinArgs;        /* Minimum arguments required */
60 
61 } ACPI_DB_COMMAND_INFO;
62 
63 typedef struct acpi_db_command_help
64 {
65     UINT8                   LineCount;      /* Number of help lines */
66     char                    *Invocation;    /* Command Invocation */
67     char                    *Description;   /* Command Description */
68 
69 } ACPI_DB_COMMAND_HELP;
70 
71 typedef struct acpi_db_argument_info
72 {
73     char                    *Name;          /* Argument Name */
74 
75 } ACPI_DB_ARGUMENT_INFO;
76 
77 typedef struct acpi_db_execute_walk
78 {
79     UINT32                  Count;
80     UINT32                  MaxCount;
81 
82 } ACPI_DB_EXECUTE_WALK;
83 
84 
85 #define PARAM_LIST(pl)                  pl
86 
87 #define EX_NO_SINGLE_STEP               1
88 #define EX_SINGLE_STEP                  2
89 
90 
91 /*
92  * dbxface - external debugger interfaces
93  */
94 ACPI_STATUS
95 AcpiDbSingleStep (
96     ACPI_WALK_STATE         *WalkState,
97     ACPI_PARSE_OBJECT       *Op,
98     UINT32                  OpType);
99 
100 
101 /*
102  * dbcmds - debug commands and output routines
103  */
104 ACPI_NAMESPACE_NODE *
105 AcpiDbConvertToNode (
106     char                    *InString);
107 
108 void
109 AcpiDbDisplayTableInfo (
110     char                    *TableArg);
111 
112 void
113 AcpiDbDisplayTemplate (
114     char                    *BufferArg);
115 
116 void
117 AcpiDbUnloadAcpiTable (
118     char                    *Name);
119 
120 void
121 AcpiDbSendNotify (
122     char                    *Name,
123     UINT32                  Value);
124 
125 void
126 AcpiDbDisplayInterfaces (
127     char                    *ActionArg,
128     char                    *InterfaceNameArg);
129 
130 ACPI_STATUS
131 AcpiDbSleep (
132     char                    *ObjectArg);
133 
134 void
135 AcpiDbTrace (
136     char                    *EnableArg,
137     char                    *MethodArg,
138     char                    *OnceArg);
139 
140 void
141 AcpiDbDisplayLocks (
142     void);
143 
144 void
145 AcpiDbDisplayResources (
146     char                    *ObjectArg);
147 
148 ACPI_HW_DEPENDENT_RETURN_VOID (
149 void
150 AcpiDbDisplayGpes (
151     void))
152 
153 void
154 AcpiDbDisplayHandlers (
155     void);
156 
157 ACPI_HW_DEPENDENT_RETURN_VOID (
158 void
159 AcpiDbGenerateGpe (
160     char                    *GpeArg,
161     char                    *BlockArg))
162 
163 ACPI_HW_DEPENDENT_RETURN_VOID (
164 void
165 AcpiDbGenerateSci (
166     void))
167 
168 void
169 AcpiDbExecuteTest (
170     char                    *TypeArg);
171 
172 
173 /*
174  * dbconvert - miscellaneous conversion routines
175  */
176 ACPI_STATUS
177 AcpiDbHexCharToValue (
178     int                     HexChar,
179     UINT8                   *ReturnValue);
180 
181 ACPI_STATUS
182 AcpiDbConvertToPackage (
183     char                    *String,
184     ACPI_OBJECT             *Object);
185 
186 ACPI_STATUS
187 AcpiDbConvertToObject (
188     ACPI_OBJECT_TYPE        Type,
189     char                    *String,
190     ACPI_OBJECT             *Object);
191 
192 UINT8 *
193 AcpiDbEncodePldBuffer (
194     ACPI_PLD_INFO           *PldInfo);
195 
196 void
197 AcpiDbDumpPldBuffer (
198     ACPI_OBJECT             *ObjDesc);
199 
200 
201 /*
202  * dbmethod - control method commands
203  */
204 void
205 AcpiDbSetMethodBreakpoint (
206     char                    *Location,
207     ACPI_WALK_STATE         *WalkState,
208     ACPI_PARSE_OBJECT       *Op);
209 
210 void
211 AcpiDbSetMethodCallBreakpoint (
212     ACPI_PARSE_OBJECT       *Op);
213 
214 void
215 AcpiDbSetMethodData (
216     char                    *TypeArg,
217     char                    *IndexArg,
218     char                    *ValueArg);
219 
220 ACPI_STATUS
221 AcpiDbDisassembleMethod (
222     char                    *Name);
223 
224 void
225 AcpiDbDisassembleAml (
226     char                    *Statements,
227     ACPI_PARSE_OBJECT       *Op);
228 
229 void
230 AcpiDbBatchExecute (
231     char                    *CountArg);
232 
233 
234 /*
235  * dbnames - namespace commands
236  */
237 void
238 AcpiDbSetScope (
239     char                    *Name);
240 
241 void
242 AcpiDbDumpNamespace (
243     char                    *StartArg,
244     char                    *DepthArg);
245 
246 void
247 AcpiDbDumpNamespacePaths (
248     void);
249 
250 void
251 AcpiDbDumpNamespaceByOwner (
252     char                    *OwnerArg,
253     char                    *DepthArg);
254 
255 ACPI_STATUS
256 AcpiDbFindNameInNamespace (
257     char                    *NameArg);
258 
259 void
260 AcpiDbCheckPredefinedNames (
261     void);
262 
263 ACPI_STATUS
264 AcpiDbDisplayObjects (
265     char                    *ObjTypeArg,
266     char                    *DisplayCountArg);
267 
268 void
269 AcpiDbCheckIntegrity (
270     void);
271 
272 void
273 AcpiDbFindReferences (
274     char                    *ObjectArg);
275 
276 void
277 AcpiDbGetBusInfo (
278     void);
279 
280 
281 /*
282  * dbdisply - debug display commands
283  */
284 void
285 AcpiDbDisplayMethodInfo (
286     ACPI_PARSE_OBJECT       *Op);
287 
288 void
289 AcpiDbDecodeAndDisplayObject (
290     char                    *Target,
291     char                    *OutputType);
292 
293 void
294 AcpiDbDisplayResultObject (
295     ACPI_OPERAND_OBJECT     *ObjDesc,
296     ACPI_WALK_STATE         *WalkState);
297 
298 ACPI_STATUS
299 AcpiDbDisplayAllMethods (
300     char                    *DisplayCountArg);
301 
302 void
303 AcpiDbDisplayArguments (
304     void);
305 
306 void
307 AcpiDbDisplayLocals (
308     void);
309 
310 void
311 AcpiDbDisplayResults (
312     void);
313 
314 void
315 AcpiDbDisplayCallingTree (
316     void);
317 
318 void
319 AcpiDbDisplayObjectType (
320     char                    *ObjectArg);
321 
322 void
323 AcpiDbDisplayArgumentObject (
324     ACPI_OPERAND_OBJECT     *ObjDesc,
325     ACPI_WALK_STATE         *WalkState);
326 
327 
328 /*
329  * dbexec - debugger control method execution
330  */
331 void
332 AcpiDbExecute (
333     char                    *Name,
334     char                    **Args,
335     ACPI_OBJECT_TYPE        *Types,
336     UINT32                  Flags);
337 
338 void
339 AcpiDbCreateExecutionThreads (
340     char                    *NumThreadsArg,
341     char                    *NumLoopsArg,
342     char                    *MethodNameArg);
343 
344 void
345 AcpiDbDeleteObjects (
346     UINT32                  Count,
347     ACPI_OBJECT             *Objects);
348 
349 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
350 UINT32
351 AcpiDbGetCacheInfo (
352     ACPI_MEMORY_LIST        *Cache);
353 #endif
354 
355 
356 /*
357  * dbfileio - Debugger file I/O commands
358  */
359 ACPI_OBJECT_TYPE
360 AcpiDbMatchArgument (
361     char                    *UserArgument,
362     ACPI_DB_ARGUMENT_INFO   *Arguments);
363 
364 void
365 AcpiDbCloseDebugFile (
366     void);
367 
368 void
369 AcpiDbOpenDebugFile (
370     char                    *Name);
371 
372 ACPI_STATUS
373 AcpiDbLoadAcpiTable (
374     char                    *Filename);
375 
376 ACPI_STATUS
377 AcpiDbGetTableFromFile (
378     char                    *Filename,
379     ACPI_TABLE_HEADER       **Table,
380     BOOLEAN                 MustBeAmlTable);
381 
382 
383 /*
384  * dbhistry - debugger HISTORY command
385  */
386 void
387 AcpiDbAddToHistory (
388     char                    *CommandLine);
389 
390 void
391 AcpiDbDisplayHistory (
392     void);
393 
394 char *
395 AcpiDbGetFromHistory (
396     char                    *CommandNumArg);
397 
398 char *
399 AcpiDbGetHistoryByIndex (
400     UINT32                  CommanddNum);
401 
402 
403 /*
404  * dbinput - user front-end to the AML debugger
405  */
406 ACPI_STATUS
407 AcpiDbCommandDispatch (
408     char                    *InputBuffer,
409     ACPI_WALK_STATE         *WalkState,
410     ACPI_PARSE_OBJECT       *Op);
411 
412 void ACPI_SYSTEM_XFACE
413 AcpiDbExecuteThread (
414     void                    *Context);
415 
416 ACPI_STATUS
417 AcpiDbUserCommands (
418     char                    Prompt,
419     ACPI_PARSE_OBJECT       *Op);
420 
421 char *
422 AcpiDbGetNextToken (
423     char                    *String,
424     char                    **Next,
425     ACPI_OBJECT_TYPE        *ReturnType);
426 
427 
428 /*
429  * dbobject
430  */
431 void
432 AcpiDbDecodeInternalObject (
433     ACPI_OPERAND_OBJECT     *ObjDesc);
434 
435 void
436 AcpiDbDisplayInternalObject (
437     ACPI_OPERAND_OBJECT     *ObjDesc,
438     ACPI_WALK_STATE         *WalkState);
439 
440 void
441 AcpiDbDecodeArguments (
442     ACPI_WALK_STATE         *WalkState);
443 
444 void
445 AcpiDbDecodeLocals (
446     ACPI_WALK_STATE         *WalkState);
447 
448 void
449 AcpiDbDumpMethodInfo (
450     ACPI_STATUS             Status,
451     ACPI_WALK_STATE         *WalkState);
452 
453 
454 /*
455  * dbstats - Generation and display of ACPI table statistics
456  */
457 void
458 AcpiDbGenerateStatistics (
459     ACPI_PARSE_OBJECT       *Root,
460     BOOLEAN                 IsMethod);
461 
462 ACPI_STATUS
463 AcpiDbDisplayStatistics (
464     char                    *TypeArg);
465 
466 
467 /*
468  * dbutils - AML debugger utilities
469  */
470 void
471 AcpiDbSetOutputDestination (
472     UINT32                  Where);
473 
474 void
475 AcpiDbDumpExternalObject (
476     ACPI_OBJECT             *ObjDesc,
477     UINT32                  Level);
478 
479 void
480 AcpiDbPrepNamestring (
481     char                    *Name);
482 
483 ACPI_NAMESPACE_NODE *
484 AcpiDbLocalNsLookup (
485     char                    *Name);
486 
487 void
488 AcpiDbUint32ToHexString (
489     UINT32                  Value,
490     char                    *Buffer);
491 
492 #endif  /* __ACDEBUG_H__ */
493