1 /*******************************************************************************
2 *
3 * Module Name: dmobject - ACPI object decode and display
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.
197 AcpiOsPrintf (" Uninitialized");
198 return;
199 }
200
201 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
202 {
203 AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
204 return;
205 }
206
207 AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc));
208
209 switch (ObjDesc->Common.Type)
210 {
211 case ACPI_TYPE_INTEGER:
212
213 AcpiOsPrintf (" %8.8X%8.8X",
214 ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
215 break;
216
217
218 case ACPI_TYPE_STRING:
219
220 AcpiOsPrintf ("(%u) \"%.24s",
221 ObjDesc->String.Length, ObjDesc->String.Pointer);
222
223 if (ObjDesc->String.Length > 24)
224 {
225 AcpiOsPrintf ("...");
226 }
227 else
228 {
229 AcpiOsPrintf ("\"");
230 }
231 break;
232
233
234 case ACPI_TYPE_BUFFER:
235
236 AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length);
237 for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++)
238 {
239 AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]);
240 }
241 break;
242
243
244 default:
245
246 AcpiOsPrintf (" %p", ObjDesc);
247 break;
248 }
249 }
250
251
252 /*******************************************************************************
253 *
254 * FUNCTION: AcpiDmDecodeNode
255 *
256 * PARAMETERS: Node - Object to be displayed
257 *
258 * RETURN: None
259 *
260 * DESCRIPTION: Short display of a namespace node
261 *
262 ******************************************************************************/
263
266 ACPI_NAMESPACE_NODE *Node)
267 {
268
269 AcpiOsPrintf ("<Node> Name %4.4s",
270 AcpiUtGetNodeName (Node));
271
272 if (Node->Flags & ANOBJ_METHOD_ARG)
273 {
274 AcpiOsPrintf (" [Method Arg]");
275 }
276 if (Node->Flags & ANOBJ_METHOD_LOCAL)
277 {
278 AcpiOsPrintf (" [Method Local]");
279 }
280
281 switch (Node->Type)
282 {
283 /* These types have no attached object */
284
285 case ACPI_TYPE_DEVICE:
286 AcpiOsPrintf (" Device");
287 break;
288
289 case ACPI_TYPE_THERMAL:
290 AcpiOsPrintf (" Thermal Zone");
291 break;
292
293 default:
294 AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node));
295 break;
296 }
297 }
298
299
300 /*******************************************************************************
301 *
302 * FUNCTION: AcpiDmDisplayInternalObject
303 *
304 * PARAMETERS: ObjDesc - Object to be displayed
305 * WalkState - Current walk state
306 *
307 * RETURN: None
308 *
309 * DESCRIPTION: Short display of an internal object
310 *
311 ******************************************************************************/
312
313 void
318 UINT8 Type;
319
320
321 AcpiOsPrintf ("%p ", ObjDesc);
322
323 if (!ObjDesc)
324 {
325 AcpiOsPrintf ("<Null Object>\n");
326 return;
327 }
328
329 /* Decode the object type */
330
331 switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))
332 {
333 case ACPI_DESC_TYPE_PARSER:
334
335 AcpiOsPrintf ("<Parser> ");
336 break;
337
338
339 case ACPI_DESC_TYPE_NAMED:
340
341 AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);
342 break;
343
344
345 case ACPI_DESC_TYPE_OPERAND:
346
347 Type = ObjDesc->Common.Type;
348 if (Type > ACPI_TYPE_LOCAL_MAX)
349 {
350 AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type);
351 return;
352 }
353
354 /* Decode the ACPI object type */
355
356 switch (ObjDesc->Common.Type)
357 {
358 case ACPI_TYPE_LOCAL_REFERENCE:
359
360 AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
361
362 /* Decode the refererence */
363
364 switch (ObjDesc->Reference.Class)
365 {
366 case ACPI_REFCLASS_LOCAL:
367
368 AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
369 if (WalkState)
370 {
371 ObjDesc = WalkState->LocalVariables
372 [ObjDesc->Reference.Value].Object;
373 AcpiOsPrintf ("%p", ObjDesc);
374 AcpiDmDecodeInternalObject (ObjDesc);
375 }
376 break;
377
378
379 case ACPI_REFCLASS_ARG:
380
381 AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
382 if (WalkState)
383 {
384 ObjDesc = WalkState->Arguments
385 [ObjDesc->Reference.Value].Object;
386 AcpiOsPrintf ("%p", ObjDesc);
387 AcpiDmDecodeInternalObject (ObjDesc);
388 }
389 break;
390
391
392 case ACPI_REFCLASS_INDEX:
393
394 switch (ObjDesc->Reference.TargetType)
395 {
396 case ACPI_TYPE_BUFFER_FIELD:
397
398 AcpiOsPrintf ("%p", ObjDesc->Reference.Object);
399 AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);
400 break;
401
402 case ACPI_TYPE_PACKAGE:
403
404 AcpiOsPrintf ("%p", ObjDesc->Reference.Where);
405 if (!ObjDesc->Reference.Where)
406 {
407 AcpiOsPrintf (" Uninitialized WHERE pointer");
408 }
409 else
410 {
411 AcpiDmDecodeInternalObject (
412 *(ObjDesc->Reference.Where));
413 }
414 break;
415
416 default:
417
418 AcpiOsPrintf ("Unknown index target type");
419 break;
420 }
421 break;
422
423
424 case ACPI_REFCLASS_REFOF:
425
426 if (!ObjDesc->Reference.Object)
427 {
428 AcpiOsPrintf ("Uninitialized reference subobject pointer");
429 break;
430 }
431
432 /* Reference can be to a Node or an Operand object */
433
434 switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object))
435 {
436 case ACPI_DESC_TYPE_NAMED:
437 AcpiDmDecodeNode (ObjDesc->Reference.Object);
438 break;
439
440 case ACPI_DESC_TYPE_OPERAND:
441 AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);
442 break;
443
444 default:
445 break;
446 }
447 break;
448
449
450 case ACPI_REFCLASS_NAME:
451
452 AcpiDmDecodeNode (ObjDesc->Reference.Node);
453 break;
454
455
456 case ACPI_REFCLASS_DEBUG:
457 case ACPI_REFCLASS_TABLE:
458
459 AcpiOsPrintf ("\n");
460 break;
461
462
463 default: /* Unknown reference class */
464
465 AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
466 break;
467 }
468 break;
469
470
471 default:
472
473 AcpiOsPrintf ("<Obj> ");
474 AcpiDmDecodeInternalObject (ObjDesc);
475 break;
476 }
477 break;
478
479
480 default:
481
482 AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",
483 AcpiUtGetDescriptorName (ObjDesc));
484 break;
485 }
486
487 AcpiOsPrintf ("\n");
488 }
489
490
491 /*******************************************************************************
492 *
493 * FUNCTION: AcpiDmDisplayLocals
494 *
495 * PARAMETERS: WalkState - State for current method
496 *
497 * RETURN: None
498 *
499 * DESCRIPTION: Display all locals for the currently running control method
568
569 if (Node->Type != ACPI_TYPE_METHOD)
570 {
571 AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");
572 return;
573 }
574
575 AcpiOsPrintf (
576 "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n",
577 AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel);
578
579 for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
580 {
581 ObjDesc = WalkState->Arguments[i].Object;
582 AcpiOsPrintf (" Arg%u: ", i);
583 AcpiDmDisplayInternalObject (ObjDesc, WalkState);
584 }
585 }
586
587 #endif
588
589
|
1 /*******************************************************************************
2 *
3 * Module Name: dmobject - ACPI object decode and display
4 *
5 ******************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2014, 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.
197 AcpiOsPrintf (" Uninitialized");
198 return;
199 }
200
201 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
202 {
203 AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
204 return;
205 }
206
207 AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc));
208
209 switch (ObjDesc->Common.Type)
210 {
211 case ACPI_TYPE_INTEGER:
212
213 AcpiOsPrintf (" %8.8X%8.8X",
214 ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
215 break;
216
217 case ACPI_TYPE_STRING:
218
219 AcpiOsPrintf ("(%u) \"%.24s",
220 ObjDesc->String.Length, ObjDesc->String.Pointer);
221
222 if (ObjDesc->String.Length > 24)
223 {
224 AcpiOsPrintf ("...");
225 }
226 else
227 {
228 AcpiOsPrintf ("\"");
229 }
230 break;
231
232 case ACPI_TYPE_BUFFER:
233
234 AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length);
235 for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++)
236 {
237 AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]);
238 }
239 break;
240
241 default:
242
243 AcpiOsPrintf (" %p", ObjDesc);
244 break;
245 }
246 }
247
248
249 /*******************************************************************************
250 *
251 * FUNCTION: AcpiDmDecodeNode
252 *
253 * PARAMETERS: Node - Object to be displayed
254 *
255 * RETURN: None
256 *
257 * DESCRIPTION: Short display of a namespace node
258 *
259 ******************************************************************************/
260
263 ACPI_NAMESPACE_NODE *Node)
264 {
265
266 AcpiOsPrintf ("<Node> Name %4.4s",
267 AcpiUtGetNodeName (Node));
268
269 if (Node->Flags & ANOBJ_METHOD_ARG)
270 {
271 AcpiOsPrintf (" [Method Arg]");
272 }
273 if (Node->Flags & ANOBJ_METHOD_LOCAL)
274 {
275 AcpiOsPrintf (" [Method Local]");
276 }
277
278 switch (Node->Type)
279 {
280 /* These types have no attached object */
281
282 case ACPI_TYPE_DEVICE:
283
284 AcpiOsPrintf (" Device");
285 break;
286
287 case ACPI_TYPE_THERMAL:
288
289 AcpiOsPrintf (" Thermal Zone");
290 break;
291
292 default:
293
294 AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node));
295 break;
296 }
297 }
298
299
300 /*******************************************************************************
301 *
302 * FUNCTION: AcpiDmDisplayInternalObject
303 *
304 * PARAMETERS: ObjDesc - Object to be displayed
305 * WalkState - Current walk state
306 *
307 * RETURN: None
308 *
309 * DESCRIPTION: Short display of an internal object
310 *
311 ******************************************************************************/
312
313 void
318 UINT8 Type;
319
320
321 AcpiOsPrintf ("%p ", ObjDesc);
322
323 if (!ObjDesc)
324 {
325 AcpiOsPrintf ("<Null Object>\n");
326 return;
327 }
328
329 /* Decode the object type */
330
331 switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))
332 {
333 case ACPI_DESC_TYPE_PARSER:
334
335 AcpiOsPrintf ("<Parser> ");
336 break;
337
338 case ACPI_DESC_TYPE_NAMED:
339
340 AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);
341 break;
342
343 case ACPI_DESC_TYPE_OPERAND:
344
345 Type = ObjDesc->Common.Type;
346 if (Type > ACPI_TYPE_LOCAL_MAX)
347 {
348 AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type);
349 return;
350 }
351
352 /* Decode the ACPI object type */
353
354 switch (ObjDesc->Common.Type)
355 {
356 case ACPI_TYPE_LOCAL_REFERENCE:
357
358 AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
359
360 /* Decode the refererence */
361
362 switch (ObjDesc->Reference.Class)
363 {
364 case ACPI_REFCLASS_LOCAL:
365
366 AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
367 if (WalkState)
368 {
369 ObjDesc = WalkState->LocalVariables
370 [ObjDesc->Reference.Value].Object;
371 AcpiOsPrintf ("%p", ObjDesc);
372 AcpiDmDecodeInternalObject (ObjDesc);
373 }
374 break;
375
376 case ACPI_REFCLASS_ARG:
377
378 AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
379 if (WalkState)
380 {
381 ObjDesc = WalkState->Arguments
382 [ObjDesc->Reference.Value].Object;
383 AcpiOsPrintf ("%p", ObjDesc);
384 AcpiDmDecodeInternalObject (ObjDesc);
385 }
386 break;
387
388 case ACPI_REFCLASS_INDEX:
389
390 switch (ObjDesc->Reference.TargetType)
391 {
392 case ACPI_TYPE_BUFFER_FIELD:
393
394 AcpiOsPrintf ("%p", ObjDesc->Reference.Object);
395 AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);
396 break;
397
398 case ACPI_TYPE_PACKAGE:
399
400 AcpiOsPrintf ("%p", ObjDesc->Reference.Where);
401 if (!ObjDesc->Reference.Where)
402 {
403 AcpiOsPrintf (" Uninitialized WHERE pointer");
404 }
405 else
406 {
407 AcpiDmDecodeInternalObject (
408 *(ObjDesc->Reference.Where));
409 }
410 break;
411
412 default:
413
414 AcpiOsPrintf ("Unknown index target type");
415 break;
416 }
417 break;
418
419 case ACPI_REFCLASS_REFOF:
420
421 if (!ObjDesc->Reference.Object)
422 {
423 AcpiOsPrintf ("Uninitialized reference subobject pointer");
424 break;
425 }
426
427 /* Reference can be to a Node or an Operand object */
428
429 switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object))
430 {
431 case ACPI_DESC_TYPE_NAMED:
432 AcpiDmDecodeNode (ObjDesc->Reference.Object);
433 break;
434
435 case ACPI_DESC_TYPE_OPERAND:
436 AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);
437 break;
438
439 default:
440 break;
441 }
442 break;
443
444 case ACPI_REFCLASS_NAME:
445
446 AcpiDmDecodeNode (ObjDesc->Reference.Node);
447 break;
448
449 case ACPI_REFCLASS_DEBUG:
450 case ACPI_REFCLASS_TABLE:
451
452 AcpiOsPrintf ("\n");
453 break;
454
455 default: /* Unknown reference class */
456
457 AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
458 break;
459 }
460 break;
461
462 default:
463
464 AcpiOsPrintf ("<Obj> ");
465 AcpiDmDecodeInternalObject (ObjDesc);
466 break;
467 }
468 break;
469
470 default:
471
472 AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",
473 AcpiUtGetDescriptorName (ObjDesc));
474 break;
475 }
476
477 AcpiOsPrintf ("\n");
478 }
479
480
481 /*******************************************************************************
482 *
483 * FUNCTION: AcpiDmDisplayLocals
484 *
485 * PARAMETERS: WalkState - State for current method
486 *
487 * RETURN: None
488 *
489 * DESCRIPTION: Display all locals for the currently running control method
558
559 if (Node->Type != ACPI_TYPE_METHOD)
560 {
561 AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");
562 return;
563 }
564
565 AcpiOsPrintf (
566 "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n",
567 AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel);
568
569 for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
570 {
571 ObjDesc = WalkState->Arguments[i].Object;
572 AcpiOsPrintf (" Arg%u: ", i);
573 AcpiDmDisplayInternalObject (ObjDesc, WalkState);
574 }
575 }
576
577 #endif
|