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