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.
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 (
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 AcpiDbUnloadAcpiTable (
111 char *TableArg,
112 char *InstanceArg);
113
114 void
115 AcpiDbSendNotify (
116 char *Name,
117 UINT32 Value);
118
119 void
120 AcpiDbDisplayInterfaces (
121 char *ActionArg,
122 char *InterfaceNameArg);
123
124 ACPI_STATUS
125 AcpiDbSleep (
126 char *ObjectArg);
127
128 void
129 AcpiDbDisplayLocks (
130 void);
131
132 void
133 AcpiDbDisplayResources (
134 char *ObjectArg);
135
136 void
137 AcpiDbDisplayGpes (
138 void);
139
140 void
141 AcpiDbDisplayHandlers (
142 void);
143
144 void
145 AcpiDbGenerateGpe (
146 char *GpeArg,
147 char *BlockArg);
148
149
150 /*
151 * dbmethod - control method commands
152 */
153 void
154 AcpiDbSetMethodBreakpoint (
155 char *Location,
156 ACPI_WALK_STATE *WalkState,
157 ACPI_PARSE_OBJECT *Op);
158
159 void
160 AcpiDbSetMethodCallBreakpoint (
161 ACPI_PARSE_OBJECT *Op);
162
163 void
164 AcpiDbSetMethodData (
165 char *TypeArg,
166 char *IndexArg,
167 char *ValueArg);
168
169 ACPI_STATUS
170 AcpiDbDisassembleMethod (
176 ACPI_PARSE_OBJECT *Op);
177
178 void
179 AcpiDbBatchExecute (
180 char *CountArg);
181
182
183 /*
184 * dbnames - namespace commands
185 */
186 void
187 AcpiDbSetScope (
188 char *Name);
189
190 void
191 AcpiDbDumpNamespace (
192 char *StartArg,
193 char *DepthArg);
194
195 void
196 AcpiDbDumpNamespaceByOwner (
197 char *OwnerArg,
198 char *DepthArg);
199
200 ACPI_STATUS
201 AcpiDbFindNameInNamespace (
202 char *NameArg);
203
204 void
205 AcpiDbCheckPredefinedNames (
206 void);
207
208 ACPI_STATUS
209 AcpiDbDisplayObjects (
210 char *ObjTypeArg,
211 char *DisplayCountArg);
212
213 void
214 AcpiDbCheckIntegrity (
215 void);
269 ACPI_OPERAND_OBJECT *ObjDesc,
270 ACPI_WALK_STATE *WalkState);
271
272
273 /*
274 * dbexec - debugger control method execution
275 */
276 void
277 AcpiDbExecute (
278 char *Name,
279 char **Args,
280 ACPI_OBJECT_TYPE *Types,
281 UINT32 Flags);
282
283 void
284 AcpiDbCreateExecutionThreads (
285 char *NumThreadsArg,
286 char *NumLoopsArg,
287 char *MethodNameArg);
288
289 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
290 UINT32
291 AcpiDbGetCacheInfo (
292 ACPI_MEMORY_LIST *Cache);
293 #endif
294
295
296 /*
297 * dbfileio - Debugger file I/O commands
298 */
299 ACPI_OBJECT_TYPE
300 AcpiDbMatchArgument (
301 char *UserArgument,
302 ARGUMENT_INFO *Arguments);
303
304 void
305 AcpiDbCloseDebugFile (
306 void);
307
308 void
309 AcpiDbOpenDebugFile (
310 char *Name);
311
312 ACPI_STATUS
313 AcpiDbLoadAcpiTable (
314 char *Filename);
315
316 ACPI_STATUS
317 AcpiDbGetTableFromFile (
318 char *Filename,
319 ACPI_TABLE_HEADER **Table);
320
321 ACPI_STATUS
322 AcpiDbReadTableFromFile (
323 char *Filename,
324 ACPI_TABLE_HEADER **Table);
325
326
327 /*
328 * dbhistry - debugger HISTORY command
329 */
330 void
331 AcpiDbAddToHistory (
332 char *CommandLine);
333
334 void
335 AcpiDbDisplayHistory (
336 void);
337
338 char *
339 AcpiDbGetFromHistory (
340 char *CommandNumArg);
341
342
343 /*
344 * dbinput - user front-end to the AML debugger
345 */
346 ACPI_STATUS
347 AcpiDbCommandDispatch (
348 char *InputBuffer,
349 ACPI_WALK_STATE *WalkState,
350 ACPI_PARSE_OBJECT *Op);
351
352 void ACPI_SYSTEM_XFACE
353 AcpiDbExecuteThread (
354 void *Context);
355
356 ACPI_STATUS
357 AcpiDbUserCommands (
358 char Prompt,
359 ACPI_PARSE_OBJECT *Op);
360
361 char *
362 AcpiDbGetNextToken (
382 * dbutils - AML debugger utilities
383 */
384 void
385 AcpiDbSetOutputDestination (
386 UINT32 Where);
387
388 void
389 AcpiDbDumpExternalObject (
390 ACPI_OBJECT *ObjDesc,
391 UINT32 Level);
392
393 void
394 AcpiDbPrepNamestring (
395 char *Name);
396
397 ACPI_NAMESPACE_NODE *
398 AcpiDbLocalNsLookup (
399 char *Name);
400
401 void
402 AcpiDbUInt32ToHexString (
403 UINT32 Value,
404 char *Buffer);
405
406 #endif /* __ACDEBUG_H__ */
|
1 /******************************************************************************
2 *
3 * Name: acdebug.h - ACPI/AML debugger
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2013, 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.
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 acpi_db_command_info
51 {
52 char *Name; /* Command Name */
53 UINT8 MinArgs; /* Minimum arguments required */
54
55 } ACPI_DB_COMMAND_INFO;
56
57 typedef 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
65 typedef struct acpi_db_argument_info
66 {
67 char *Name; /* Argument Name */
68
69 } ACPI_DB_ARGUMENT_INFO;
70
71 typedef 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 */
91 ACPI_STATUS
92 AcpiDbInitialize (
93 void);
94
95 void
96 AcpiDbTerminate (
98
99 ACPI_STATUS
100 AcpiDbSingleStep (
101 ACPI_WALK_STATE *WalkState,
102 ACPI_PARSE_OBJECT *Op,
103 UINT32 OpType);
104
105
106 /*
107 * dbcmds - debug commands and output routines
108 */
109 ACPI_NAMESPACE_NODE *
110 AcpiDbConvertToNode (
111 char *InString);
112
113 void
114 AcpiDbDisplayTableInfo (
115 char *TableArg);
116
117 void
118 AcpiDbDisplayTemplate (
119 char *BufferArg);
120
121 void
122 AcpiDbUnloadAcpiTable (
123 char *Name);
124
125 void
126 AcpiDbSendNotify (
127 char *Name,
128 UINT32 Value);
129
130 void
131 AcpiDbDisplayInterfaces (
132 char *ActionArg,
133 char *InterfaceNameArg);
134
135 ACPI_STATUS
136 AcpiDbSleep (
137 char *ObjectArg);
138
139 void
140 AcpiDbDisplayLocks (
141 void);
142
143 void
144 AcpiDbDisplayResources (
145 char *ObjectArg);
146
147 ACPI_HW_DEPENDENT_RETURN_VOID (
148 void
149 AcpiDbDisplayGpes (
150 void))
151
152 void
153 AcpiDbDisplayHandlers (
154 void);
155
156 ACPI_HW_DEPENDENT_RETURN_VOID (
157 void
158 AcpiDbGenerateGpe (
159 char *GpeArg,
160 char *BlockArg))
161
162 ACPI_HW_DEPENDENT_RETURN_VOID (
163 void
164 AcpiDbGenerateSci (
165 void))
166
167 /*
168 * dbconvert - miscellaneous conversion routines
169 */
170 ACPI_STATUS
171 AcpiDbHexCharToValue (
172 int HexChar,
173 UINT8 *ReturnValue);
174
175 ACPI_STATUS
176 AcpiDbConvertToPackage (
177 char *String,
178 ACPI_OBJECT *Object);
179
180 ACPI_STATUS
181 AcpiDbConvertToObject (
182 ACPI_OBJECT_TYPE Type,
183 char *String,
184 ACPI_OBJECT *Object);
185
186 UINT8 *
187 AcpiDbEncodePldBuffer (
188 ACPI_PLD_INFO *PldInfo);
189
190 void
191 AcpiDbDumpPldBuffer (
192 ACPI_OBJECT *ObjDesc);
193
194
195 /*
196 * dbmethod - control method commands
197 */
198 void
199 AcpiDbSetMethodBreakpoint (
200 char *Location,
201 ACPI_WALK_STATE *WalkState,
202 ACPI_PARSE_OBJECT *Op);
203
204 void
205 AcpiDbSetMethodCallBreakpoint (
206 ACPI_PARSE_OBJECT *Op);
207
208 void
209 AcpiDbSetMethodData (
210 char *TypeArg,
211 char *IndexArg,
212 char *ValueArg);
213
214 ACPI_STATUS
215 AcpiDbDisassembleMethod (
221 ACPI_PARSE_OBJECT *Op);
222
223 void
224 AcpiDbBatchExecute (
225 char *CountArg);
226
227
228 /*
229 * dbnames - namespace commands
230 */
231 void
232 AcpiDbSetScope (
233 char *Name);
234
235 void
236 AcpiDbDumpNamespace (
237 char *StartArg,
238 char *DepthArg);
239
240 void
241 AcpiDbDumpNamespacePaths (
242 void);
243
244 void
245 AcpiDbDumpNamespaceByOwner (
246 char *OwnerArg,
247 char *DepthArg);
248
249 ACPI_STATUS
250 AcpiDbFindNameInNamespace (
251 char *NameArg);
252
253 void
254 AcpiDbCheckPredefinedNames (
255 void);
256
257 ACPI_STATUS
258 AcpiDbDisplayObjects (
259 char *ObjTypeArg,
260 char *DisplayCountArg);
261
262 void
263 AcpiDbCheckIntegrity (
264 void);
318 ACPI_OPERAND_OBJECT *ObjDesc,
319 ACPI_WALK_STATE *WalkState);
320
321
322 /*
323 * dbexec - debugger control method execution
324 */
325 void
326 AcpiDbExecute (
327 char *Name,
328 char **Args,
329 ACPI_OBJECT_TYPE *Types,
330 UINT32 Flags);
331
332 void
333 AcpiDbCreateExecutionThreads (
334 char *NumThreadsArg,
335 char *NumLoopsArg,
336 char *MethodNameArg);
337
338 void
339 AcpiDbDeleteObjects (
340 UINT32 Count,
341 ACPI_OBJECT *Objects);
342
343 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
344 UINT32
345 AcpiDbGetCacheInfo (
346 ACPI_MEMORY_LIST *Cache);
347 #endif
348
349
350 /*
351 * dbfileio - Debugger file I/O commands
352 */
353 ACPI_OBJECT_TYPE
354 AcpiDbMatchArgument (
355 char *UserArgument,
356 ACPI_DB_ARGUMENT_INFO *Arguments);
357
358 void
359 AcpiDbCloseDebugFile (
360 void);
361
362 void
363 AcpiDbOpenDebugFile (
364 char *Name);
365
366 ACPI_STATUS
367 AcpiDbLoadAcpiTable (
368 char *Filename);
369
370 ACPI_STATUS
371 AcpiDbGetTableFromFile (
372 char *Filename,
373 ACPI_TABLE_HEADER **Table);
374
375 ACPI_STATUS
376 AcpiDbReadTableFromFile (
377 char *Filename,
378 ACPI_TABLE_HEADER **Table);
379
380
381 /*
382 * dbhistry - debugger HISTORY command
383 */
384 void
385 AcpiDbAddToHistory (
386 char *CommandLine);
387
388 void
389 AcpiDbDisplayHistory (
390 void);
391
392 char *
393 AcpiDbGetFromHistory (
394 char *CommandNumArg);
395
396 char *
397 AcpiDbGetHistoryByIndex (
398 UINT32 CommanddNum);
399
400
401 /*
402 * dbinput - user front-end to the AML debugger
403 */
404 ACPI_STATUS
405 AcpiDbCommandDispatch (
406 char *InputBuffer,
407 ACPI_WALK_STATE *WalkState,
408 ACPI_PARSE_OBJECT *Op);
409
410 void ACPI_SYSTEM_XFACE
411 AcpiDbExecuteThread (
412 void *Context);
413
414 ACPI_STATUS
415 AcpiDbUserCommands (
416 char Prompt,
417 ACPI_PARSE_OBJECT *Op);
418
419 char *
420 AcpiDbGetNextToken (
440 * dbutils - AML debugger utilities
441 */
442 void
443 AcpiDbSetOutputDestination (
444 UINT32 Where);
445
446 void
447 AcpiDbDumpExternalObject (
448 ACPI_OBJECT *ObjDesc,
449 UINT32 Level);
450
451 void
452 AcpiDbPrepNamestring (
453 char *Name);
454
455 ACPI_NAMESPACE_NODE *
456 AcpiDbLocalNsLookup (
457 char *Name);
458
459 void
460 AcpiDbUint32ToHexString (
461 UINT32 Value,
462 char *Buffer);
463
464 #endif /* __ACDEBUG_H__ */
|