Print this page
update to acpica-unix2-20140114
acpica-unix2-20130823
PANKOVs restructure
   1 /*******************************************************************************
   2  *
   3  * Module Name: dbstats - Generation and display of ACPI table statistics
   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.


  62 AcpiDbEnumerateObject (
  63     ACPI_OPERAND_OBJECT     *ObjDesc);
  64 
  65 static ACPI_STATUS
  66 AcpiDbClassifyOneObject (
  67     ACPI_HANDLE             ObjHandle,
  68     UINT32                  NestingLevel,
  69     void                    *Context,
  70     void                    **ReturnValue);
  71 
  72 #if defined ACPI_DBG_TRACK_ALLOCATIONS || defined ACPI_USE_LOCAL_CACHE
  73 static void
  74 AcpiDbListInfo (
  75     ACPI_MEMORY_LIST        *List);
  76 #endif
  77 
  78 
  79 /*
  80  * Statistics subcommands
  81  */
  82 static ARGUMENT_INFO        AcpiDbStatTypes [] =
  83 {
  84     {"ALLOCATIONS"},
  85     {"OBJECTS"},
  86     {"MEMORY"},
  87     {"MISC"},
  88     {"TABLES"},
  89     {"SIZES"},
  90     {"STACK"},
  91     {NULL}           /* Must be null terminated */
  92 };
  93 
  94 #define CMD_STAT_ALLOCATIONS     0
  95 #define CMD_STAT_OBJECTS         1
  96 #define CMD_STAT_MEMORY          2
  97 #define CMD_STAT_MISC            3
  98 #define CMD_STAT_TABLES          4
  99 #define CMD_STAT_SIZES           5
 100 #define CMD_STAT_STACK           6
 101 
 102 


 210     }
 211     else
 212     {
 213         AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++;
 214     }
 215 
 216     /* Count the sub-objects */
 217 
 218     switch (ObjDesc->Common.Type)
 219     {
 220     case ACPI_TYPE_PACKAGE:
 221 
 222         for (i = 0; i < ObjDesc->Package.Count; i++)
 223         {
 224             AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);
 225         }
 226         break;
 227 
 228     case ACPI_TYPE_DEVICE:
 229 
 230         AcpiDbEnumerateObject (ObjDesc->Device.SystemNotify);
 231         AcpiDbEnumerateObject (ObjDesc->Device.DeviceNotify);
 232         AcpiDbEnumerateObject (ObjDesc->Device.Handler);
 233         break;
 234 
 235     case ACPI_TYPE_BUFFER_FIELD:
 236 
 237         if (AcpiNsGetSecondaryObject (ObjDesc))
 238         {
 239             AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++;
 240         }
 241         break;
 242 
 243     case ACPI_TYPE_REGION:
 244 
 245         AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;
 246         AcpiDbEnumerateObject (ObjDesc->Region.Handler);
 247         break;
 248 
 249     case ACPI_TYPE_POWER:
 250 
 251         AcpiDbEnumerateObject (ObjDesc->PowerResource.SystemNotify);
 252         AcpiDbEnumerateObject (ObjDesc->PowerResource.DeviceNotify);
 253         break;
 254 
 255     case ACPI_TYPE_PROCESSOR:
 256 
 257         AcpiDbEnumerateObject (ObjDesc->Processor.SystemNotify);
 258         AcpiDbEnumerateObject (ObjDesc->Processor.DeviceNotify);
 259         AcpiDbEnumerateObject (ObjDesc->Processor.Handler);
 260         break;
 261 
 262     case ACPI_TYPE_THERMAL:
 263 
 264         AcpiDbEnumerateObject (ObjDesc->ThermalZone.SystemNotify);
 265         AcpiDbEnumerateObject (ObjDesc->ThermalZone.DeviceNotify);
 266         AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler);
 267         break;
 268 
 269     default:

 270         break;
 271     }
 272 }
 273 
 274 
 275 /*******************************************************************************
 276  *
 277  * FUNCTION:    AcpiDbClassifyOneObject
 278  *
 279  * PARAMETERS:  Callback for WalkNamespace
 280  *
 281  * RETURN:      Status
 282  *
 283  * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and
 284  *              the parent namespace node.
 285  *
 286  ******************************************************************************/
 287 
 288 static ACPI_STATUS
 289 AcpiDbClassifyOneObject (


 297     UINT32                  Type;
 298 
 299 
 300     AcpiGbl_NumNodes++;
 301 
 302     Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
 303     ObjDesc = AcpiNsGetAttachedObject (Node);
 304 
 305     AcpiDbEnumerateObject (ObjDesc);
 306 
 307     Type = Node->Type;
 308     if (Type > ACPI_TYPE_NS_NODE_MAX)
 309     {
 310         AcpiGbl_NodeTypeCountMisc++;
 311     }
 312     else
 313     {
 314         AcpiGbl_NodeTypeCount [Type]++;
 315     }
 316 
 317     return AE_OK;
 318 
 319 
 320 #ifdef ACPI_FUTURE_IMPLEMENTATION
 321 
 322     /* TBD: These need to be counted during the initial parsing phase */
 323 
 324     if (AcpiPsIsNamedOp (Op->Opcode))
 325     {
 326         NumNodes++;
 327     }
 328 
 329     if (IsMethod)
 330     {
 331         NumMethodElements++;
 332     }
 333 
 334     NumGrammarElements++;
 335     Op = AcpiPsGetDepthNext (Root, Op);
 336 
 337     SizeOfParseTree   = (NumGrammarElements - NumMethodElements) *


 381 /*******************************************************************************
 382  *
 383  * FUNCTION:    AcpiDbDisplayStatistics
 384  *
 385  * PARAMETERS:  TypeArg         - Subcommand
 386  *
 387  * RETURN:      Status
 388  *
 389  * DESCRIPTION: Display various statistics
 390  *
 391  ******************************************************************************/
 392 
 393 ACPI_STATUS
 394 AcpiDbDisplayStatistics (
 395     char                    *TypeArg)
 396 {
 397     UINT32                  i;
 398     UINT32                  Temp;
 399 
 400 
 401     if (!TypeArg)
 402     {
 403         AcpiOsPrintf ("The following subcommands are available:\n    ALLOCATIONS, OBJECTS, MEMORY, MISC, SIZES, TABLES\n");
 404         return (AE_OK);
 405     }
 406 
 407     AcpiUtStrupr (TypeArg);
 408     Temp = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes);
 409     if (Temp == (UINT32) -1)
 410     {
 411         AcpiOsPrintf ("Invalid or unsupported argument\n");
 412         return (AE_OK);
 413     }
 414 
 415 
 416     switch (Temp)
 417     {
 418     case CMD_STAT_ALLOCATIONS:
 419 
 420 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
 421         AcpiUtDumpAllocationInfo ();
 422 #endif
 423         break;
 424 
 425     case CMD_STAT_TABLES:
 426 
 427         AcpiOsPrintf ("ACPI Table Information (not implemented):\n\n");
 428         break;
 429 


 468         break;
 469 
 470     case CMD_STAT_MISC:
 471 
 472         AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
 473         AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",
 474             AcpiGbl_PsFindCount);
 475         AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
 476             AcpiGbl_NsLookupCount);
 477 
 478         AcpiOsPrintf ("\n");
 479 
 480         AcpiOsPrintf ("Mutex usage:\n\n");
 481         for (i = 0; i < ACPI_NUM_MUTEX; i++)
 482         {
 483             AcpiOsPrintf ("%-28s:       % 7ld\n",
 484                 AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
 485         }
 486         break;
 487 
 488 
 489     case CMD_STAT_SIZES:
 490 
 491         AcpiOsPrintf ("\nInternal object sizes:\n\n");
 492 
 493         AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));
 494         AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));
 495         AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));
 496         AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));
 497         AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
 498         AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
 499         AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));
 500         AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));
 501         AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));
 502         AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));
 503         AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));
 504         AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
 505         AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
 506         AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
 507         AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
 508         AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
 509         AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
 510         AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
 511         AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
 512         AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
 513         AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));
 514         AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));
 515 
 516         AcpiOsPrintf ("\n");
 517 
 518         AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
 519         AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
 520         AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
 521         AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));
 522         AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));
 523         AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));
 524 












 525         break;
 526 
 527 
 528     case CMD_STAT_STACK:
 529 #if defined(ACPI_DEBUG_OUTPUT)
 530 
 531         Temp = (UINT32) ACPI_PTR_DIFF (AcpiGbl_EntryStackPointer, AcpiGbl_LowestStackPointer);
 532 
 533         AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n");
 534         AcpiOsPrintf ("Entry Stack Pointer          %p\n", AcpiGbl_EntryStackPointer);
 535         AcpiOsPrintf ("Lowest Stack Pointer         %p\n", AcpiGbl_LowestStackPointer);
 536         AcpiOsPrintf ("Stack Use                    %X (%u)\n", Temp, Temp);
 537         AcpiOsPrintf ("Deepest Procedure Nesting    %u\n", AcpiGbl_DeepestNesting);
 538 #endif
 539         break;
 540 
 541     default:

 542         break;
 543     }
 544 
 545     AcpiOsPrintf ("\n");
 546     return (AE_OK);
 547 }
 548 
 549 #endif /* ACPI_DEBUGGER  */
   1 /*******************************************************************************
   2  *
   3  * Module Name: dbstats - Generation and display of ACPI table statistics
   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.


  62 AcpiDbEnumerateObject (
  63     ACPI_OPERAND_OBJECT     *ObjDesc);
  64 
  65 static ACPI_STATUS
  66 AcpiDbClassifyOneObject (
  67     ACPI_HANDLE             ObjHandle,
  68     UINT32                  NestingLevel,
  69     void                    *Context,
  70     void                    **ReturnValue);
  71 
  72 #if defined ACPI_DBG_TRACK_ALLOCATIONS || defined ACPI_USE_LOCAL_CACHE
  73 static void
  74 AcpiDbListInfo (
  75     ACPI_MEMORY_LIST        *List);
  76 #endif
  77 
  78 
  79 /*
  80  * Statistics subcommands
  81  */
  82 static ACPI_DB_ARGUMENT_INFO    AcpiDbStatTypes [] =
  83 {
  84     {"ALLOCATIONS"},
  85     {"OBJECTS"},
  86     {"MEMORY"},
  87     {"MISC"},
  88     {"TABLES"},
  89     {"SIZES"},
  90     {"STACK"},
  91     {NULL}           /* Must be null terminated */
  92 };
  93 
  94 #define CMD_STAT_ALLOCATIONS     0
  95 #define CMD_STAT_OBJECTS         1
  96 #define CMD_STAT_MEMORY          2
  97 #define CMD_STAT_MISC            3
  98 #define CMD_STAT_TABLES          4
  99 #define CMD_STAT_SIZES           5
 100 #define CMD_STAT_STACK           6
 101 
 102 


 210     }
 211     else
 212     {
 213         AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++;
 214     }
 215 
 216     /* Count the sub-objects */
 217 
 218     switch (ObjDesc->Common.Type)
 219     {
 220     case ACPI_TYPE_PACKAGE:
 221 
 222         for (i = 0; i < ObjDesc->Package.Count; i++)
 223         {
 224             AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);
 225         }
 226         break;
 227 
 228     case ACPI_TYPE_DEVICE:
 229 
 230         AcpiDbEnumerateObject (ObjDesc->Device.NotifyList[0]);
 231         AcpiDbEnumerateObject (ObjDesc->Device.NotifyList[1]);
 232         AcpiDbEnumerateObject (ObjDesc->Device.Handler);
 233         break;
 234 
 235     case ACPI_TYPE_BUFFER_FIELD:
 236 
 237         if (AcpiNsGetSecondaryObject (ObjDesc))
 238         {
 239             AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++;
 240         }
 241         break;
 242 
 243     case ACPI_TYPE_REGION:
 244 
 245         AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;
 246         AcpiDbEnumerateObject (ObjDesc->Region.Handler);
 247         break;
 248 
 249     case ACPI_TYPE_POWER:
 250 
 251         AcpiDbEnumerateObject (ObjDesc->PowerResource.NotifyList[0]);
 252         AcpiDbEnumerateObject (ObjDesc->PowerResource.NotifyList[1]);
 253         break;
 254 
 255     case ACPI_TYPE_PROCESSOR:
 256 
 257         AcpiDbEnumerateObject (ObjDesc->Processor.NotifyList[0]);
 258         AcpiDbEnumerateObject (ObjDesc->Processor.NotifyList[1]);
 259         AcpiDbEnumerateObject (ObjDesc->Processor.Handler);
 260         break;
 261 
 262     case ACPI_TYPE_THERMAL:
 263 
 264         AcpiDbEnumerateObject (ObjDesc->ThermalZone.NotifyList[0]);
 265         AcpiDbEnumerateObject (ObjDesc->ThermalZone.NotifyList[1]);
 266         AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler);
 267         break;
 268 
 269     default:
 270 
 271         break;
 272     }
 273 }
 274 
 275 
 276 /*******************************************************************************
 277  *
 278  * FUNCTION:    AcpiDbClassifyOneObject
 279  *
 280  * PARAMETERS:  Callback for WalkNamespace
 281  *
 282  * RETURN:      Status
 283  *
 284  * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and
 285  *              the parent namespace node.
 286  *
 287  ******************************************************************************/
 288 
 289 static ACPI_STATUS
 290 AcpiDbClassifyOneObject (


 298     UINT32                  Type;
 299 
 300 
 301     AcpiGbl_NumNodes++;
 302 
 303     Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
 304     ObjDesc = AcpiNsGetAttachedObject (Node);
 305 
 306     AcpiDbEnumerateObject (ObjDesc);
 307 
 308     Type = Node->Type;
 309     if (Type > ACPI_TYPE_NS_NODE_MAX)
 310     {
 311         AcpiGbl_NodeTypeCountMisc++;
 312     }
 313     else
 314     {
 315         AcpiGbl_NodeTypeCount [Type]++;
 316     }
 317 
 318     return (AE_OK);
 319 
 320 
 321 #ifdef ACPI_FUTURE_IMPLEMENTATION
 322 
 323     /* TBD: These need to be counted during the initial parsing phase */
 324 
 325     if (AcpiPsIsNamedOp (Op->Opcode))
 326     {
 327         NumNodes++;
 328     }
 329 
 330     if (IsMethod)
 331     {
 332         NumMethodElements++;
 333     }
 334 
 335     NumGrammarElements++;
 336     Op = AcpiPsGetDepthNext (Root, Op);
 337 
 338     SizeOfParseTree   = (NumGrammarElements - NumMethodElements) *


 382 /*******************************************************************************
 383  *
 384  * FUNCTION:    AcpiDbDisplayStatistics
 385  *
 386  * PARAMETERS:  TypeArg         - Subcommand
 387  *
 388  * RETURN:      Status
 389  *
 390  * DESCRIPTION: Display various statistics
 391  *
 392  ******************************************************************************/
 393 
 394 ACPI_STATUS
 395 AcpiDbDisplayStatistics (
 396     char                    *TypeArg)
 397 {
 398     UINT32                  i;
 399     UINT32                  Temp;
 400 
 401 






 402     AcpiUtStrupr (TypeArg);
 403     Temp = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes);
 404     if (Temp == ACPI_TYPE_NOT_FOUND)
 405     {
 406         AcpiOsPrintf ("Invalid or unsupported argument\n");
 407         return (AE_OK);
 408     }
 409 
 410 
 411     switch (Temp)
 412     {
 413     case CMD_STAT_ALLOCATIONS:
 414 
 415 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
 416         AcpiUtDumpAllocationInfo ();
 417 #endif
 418         break;
 419 
 420     case CMD_STAT_TABLES:
 421 
 422         AcpiOsPrintf ("ACPI Table Information (not implemented):\n\n");
 423         break;
 424 


 463         break;
 464 
 465     case CMD_STAT_MISC:
 466 
 467         AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
 468         AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",
 469             AcpiGbl_PsFindCount);
 470         AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
 471             AcpiGbl_NsLookupCount);
 472 
 473         AcpiOsPrintf ("\n");
 474 
 475         AcpiOsPrintf ("Mutex usage:\n\n");
 476         for (i = 0; i < ACPI_NUM_MUTEX; i++)
 477         {
 478             AcpiOsPrintf ("%-28s:       % 7ld\n",
 479                 AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
 480         }
 481         break;
 482 

 483     case CMD_STAT_SIZES:
 484 
 485         AcpiOsPrintf ("\nInternal object sizes:\n\n");
 486 
 487         AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));
 488         AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));
 489         AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));
 490         AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));
 491         AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
 492         AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
 493         AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));
 494         AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));
 495         AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));
 496         AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));
 497         AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));
 498         AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
 499         AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
 500         AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
 501         AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
 502         AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
 503         AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
 504         AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
 505         AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
 506         AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
 507         AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));
 508         AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));
 509 
 510         AcpiOsPrintf ("\n");
 511 
 512         AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
 513         AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
 514         AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
 515         AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));
 516         AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));
 517         AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));
 518 
 519         AcpiOsPrintf ("\n");
 520 
 521         AcpiOsPrintf ("Generic State    %3d\n", sizeof (ACPI_GENERIC_STATE));
 522         AcpiOsPrintf ("Common State     %3d\n", sizeof (ACPI_COMMON_STATE));
 523         AcpiOsPrintf ("Control State    %3d\n", sizeof (ACPI_CONTROL_STATE));
 524         AcpiOsPrintf ("Update State     %3d\n", sizeof (ACPI_UPDATE_STATE));
 525         AcpiOsPrintf ("Scope State      %3d\n", sizeof (ACPI_SCOPE_STATE));
 526         AcpiOsPrintf ("Parse Scope      %3d\n", sizeof (ACPI_PSCOPE_STATE));
 527         AcpiOsPrintf ("Package State    %3d\n", sizeof (ACPI_PKG_STATE));
 528         AcpiOsPrintf ("Thread State     %3d\n", sizeof (ACPI_THREAD_STATE));
 529         AcpiOsPrintf ("Result Values    %3d\n", sizeof (ACPI_RESULT_VALUES));
 530         AcpiOsPrintf ("Notify Info      %3d\n", sizeof (ACPI_NOTIFY_INFO));
 531         break;
 532 

 533     case CMD_STAT_STACK:
 534 #if defined(ACPI_DEBUG_OUTPUT)
 535 
 536         Temp = (UINT32) ACPI_PTR_DIFF (AcpiGbl_EntryStackPointer, AcpiGbl_LowestStackPointer);
 537 
 538         AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n");
 539         AcpiOsPrintf ("Entry Stack Pointer          %p\n", AcpiGbl_EntryStackPointer);
 540         AcpiOsPrintf ("Lowest Stack Pointer         %p\n", AcpiGbl_LowestStackPointer);
 541         AcpiOsPrintf ("Stack Use                    %X (%u)\n", Temp, Temp);
 542         AcpiOsPrintf ("Deepest Procedure Nesting    %u\n", AcpiGbl_DeepestNesting);
 543 #endif
 544         break;
 545 
 546     default:
 547 
 548         break;
 549     }
 550 
 551     AcpiOsPrintf ("\n");
 552     return (AE_OK);
 553 }
 554 
 555 #endif /* ACPI_DEBUGGER  */