⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbstats.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
        }        break;    case ACPI_TYPE_REGION:        AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;        AcpiDbEnumerateObject (ObjDesc->Region.Handler);        break;    case ACPI_TYPE_POWER:        AcpiDbEnumerateObject (ObjDesc->PowerResource.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->PowerResource.DeviceNotify);        break;    case ACPI_TYPE_PROCESSOR:        AcpiDbEnumerateObject (ObjDesc->Processor.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->Processor.DeviceNotify);        AcpiDbEnumerateObject (ObjDesc->Processor.Handler);        break;    case ACPI_TYPE_THERMAL:        AcpiDbEnumerateObject (ObjDesc->ThermalZone.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->ThermalZone.DeviceNotify);        AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler);        break;    default:        break;    }}/******************************************************************************* * * FUNCTION:    AcpiDbClassifyOneObject * * PARAMETERS:  Callback for WalkNamespace * * RETURN:      Status * * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and *              the parent namespace node. * ******************************************************************************/static ACPI_STATUSAcpiDbClassifyOneObject (    ACPI_HANDLE             ObjHandle,    UINT32                  NestingLevel,    void                    *Context,    void                    **ReturnValue){    ACPI_NAMESPACE_NODE     *Node;    ACPI_OPERAND_OBJECT     *ObjDesc;    UINT32                  Type;    AcpiGbl_NumNodes++;    Node = (ACPI_NAMESPACE_NODE *) ObjHandle;    ObjDesc = AcpiNsGetAttachedObject (Node);    AcpiDbEnumerateObject (ObjDesc);    Type = Node->Type;    if (Type > ACPI_TYPE_NS_NODE_MAX)    {        AcpiGbl_NodeTypeCountMisc++;    }    else    {        AcpiGbl_NodeTypeCount [Type]++;    }    return AE_OK;#ifdef ACPI_FUTURE_IMPLEMENTATION    /* TBD: These need to be counted during the initial parsing phase */    if (AcpiPsIsNamedOp (Op->Opcode))    {        NumNodes++;    }    if (IsMethod)    {        NumMethodElements++;    }    NumGrammarElements++;    Op = AcpiPsGetDepthNext (Root, Op);    SizeOfParseTree   = (NumGrammarElements - NumMethodElements) *                            (UINT32) sizeof (ACPI_PARSE_OBJECT);    SizeOfMethodTrees = NumMethodElements * (UINT32) sizeof (ACPI_PARSE_OBJECT);    SizeOfNodeEntries = NumNodes * (UINT32) sizeof (ACPI_NAMESPACE_NODE);    SizeOfAcpiObjects = NumNodes * (UINT32) sizeof (ACPI_OPERAND_OBJECT);#endif}/******************************************************************************* * * FUNCTION:    AcpiDbCountNamespaceObjects * * PARAMETERS:  None * * RETURN:      None * * DESCRIPTION: Count and classify the entire namespace, including all *              namespace nodes and attached objects. * ******************************************************************************/static voidAcpiDbCountNamespaceObjects (    void){    UINT32                  i;    AcpiGbl_NumNodes = 0;    AcpiGbl_NumObjects = 0;    AcpiGbl_ObjTypeCountMisc = 0;    for (i = 0; i < (ACPI_TYPE_NS_NODE_MAX -1); i++)    {        AcpiGbl_ObjTypeCount [i] = 0;        AcpiGbl_NodeTypeCount [i] = 0;    }    (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,                ACPI_UINT32_MAX, FALSE, AcpiDbClassifyOneObject, NULL, NULL);}/******************************************************************************* * * FUNCTION:    AcpiDbDisplayStatistics * * PARAMETERS:  TypeArg         - Subcommand * * RETURN:      Status * * DESCRIPTION: Display various statistics * ******************************************************************************/ACPI_STATUSAcpiDbDisplayStatistics (    char                    *TypeArg){    UINT32                  i;    UINT32                  Temp;    if (!TypeArg)    {        AcpiOsPrintf ("The following subcommands are available:\n    ALLOCATIONS, OBJECTS, MEMORY, MISC, SIZES, TABLES\n");        return (AE_OK);    }    AcpiUtStrupr (TypeArg);    Temp = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes);    if (Temp == (UINT32) -1)    {        AcpiOsPrintf ("Invalid or unsupported argument\n");        return (AE_OK);    }    switch (Temp)    {    case CMD_STAT_ALLOCATIONS:#ifdef ACPI_DBG_TRACK_ALLOCATIONS        AcpiUtDumpAllocationInfo ();#endif        break;    case CMD_STAT_TABLES:        AcpiOsPrintf ("ACPI Table Information (not implemented):\n\n");        break;    case CMD_STAT_OBJECTS:        AcpiDbCountNamespaceObjects ();        AcpiOsPrintf ("\nObjects defined in the current namespace:\n\n");        AcpiOsPrintf ("%16.16s %10.10s %10.10s\n",            "ACPI_TYPE", "NODES", "OBJECTS");        for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)        {            AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),                AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);        }        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",            AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",            AcpiGbl_NumNodes, AcpiGbl_NumObjects);        break;    case CMD_STAT_MEMORY:#ifdef ACPI_DBG_TRACK_ALLOCATIONS        AcpiOsPrintf ("\n----Object Statistics (all in hex)---------\n");        AcpiDbListInfo (AcpiGbl_GlobalList);        AcpiDbListInfo (AcpiGbl_NsNodeList);#endif#ifdef ACPI_USE_LOCAL_CACHE        AcpiOsPrintf ("\n----Cache Statistics (all in hex)---------\n");        AcpiDbListInfo (AcpiGbl_OperandCache);        AcpiDbListInfo (AcpiGbl_PsNodeCache);        AcpiDbListInfo (AcpiGbl_PsNodeExtCache);        AcpiDbListInfo (AcpiGbl_StateCache);#endif        break;    case CMD_STAT_MISC:        AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");        AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",            AcpiGbl_PsFindCount);        AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",            AcpiGbl_NsLookupCount);        AcpiOsPrintf ("\n");        AcpiOsPrintf ("Mutex usage:\n\n");        for (i = 0; i < ACPI_NUM_MUTEX; i++)        {            AcpiOsPrintf ("%-28s:       % 7ld\n",                AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);        }        break;    case CMD_STAT_SIZES:        AcpiOsPrintf ("\nInternal object sizes:\n\n");        AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));        AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));        AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));        AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));        AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));        AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));        AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));        AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));        AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));        AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));        AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));        AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));        AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));        AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));        AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));        AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));        AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));        AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));        AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));        AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));        AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));        AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));        AcpiOsPrintf ("\n");        AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));        AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));        AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));        AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));        AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));        AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));        break;    case CMD_STAT_STACK:#if defined(ACPI_DEBUG_OUTPUT)        Temp = (UINT32) ACPI_PTR_DIFF (AcpiGbl_EntryStackPointer, AcpiGbl_LowestStackPointer);        AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n");        AcpiOsPrintf ("Entry Stack Pointer          %p\n", AcpiGbl_EntryStackPointer);        AcpiOsPrintf ("Lowest Stack Pointer         %p\n", AcpiGbl_LowestStackPointer);        AcpiOsPrintf ("Stack Use                    %X (%u)\n", Temp, Temp);        AcpiOsPrintf ("Deepest Procedure Nesting    %u\n", AcpiGbl_DeepestNesting);#endif        break;    default:        break;    }    AcpiOsPrintf ("\n");    return (AE_OK);}#endif /* ACPI_DEBUGGER  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -