Print this page
update to acpica-unix2-20140114
acpica-unix2-20130823
PANKOVs restructure
   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