Esempio n. 1
0
static ACPI_STATUS
AcpiDbClassifyOneObject (
    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
}
Esempio n. 2
0
static void
AcpiDbEnumerateObject (
    ACPI_OPERAND_OBJECT     *ObjDesc)
{
    UINT32                  i;


    if (!ObjDesc)
    {
        return;
    }

    /* Enumerate this object first */

    AcpiGbl_NumObjects++;

    if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)
    {
        AcpiGbl_ObjTypeCountMisc++;
    }
    else
    {
        AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++;
    }

    /* Count the sub-objects */

    switch (ObjDesc->Common.Type)
    {
    case ACPI_TYPE_PACKAGE:

        for (i = 0; i < ObjDesc->Package.Count; i++)
        {
            AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);
        }
        break;

    case ACPI_TYPE_DEVICE:

        AcpiDbEnumerateObject (ObjDesc->Device.SystemNotify);
        AcpiDbEnumerateObject (ObjDesc->Device.DeviceNotify);
        AcpiDbEnumerateObject (ObjDesc->Device.Handler);
        break;

    case ACPI_TYPE_BUFFER_FIELD:

        if (AcpiNsGetSecondaryObject (ObjDesc))
        {
            AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++;
        }
        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;
    }
}
Esempio n. 3
0
static void
AcpiDbEnumerateObject (
    ACPI_OPERAND_OBJECT     *ObjDesc)
{
    UINT32                  Type;
    UINT32                  i;


    if (!ObjDesc)
    {
        return;
    }


    /* Enumerate this object first */

    AcpiGbl_NumObjects++;

    Type = ObjDesc->Common.Type;
    if (Type > INTERNAL_TYPE_NODE_MAX)
    {
        AcpiGbl_ObjTypeCountMisc++;
    }
    else
    {
        AcpiGbl_ObjTypeCount [Type]++;
    }

    /* Count the sub-objects */

    switch (Type)
    {
    case ACPI_TYPE_PACKAGE:
        for (i = 0; i< ObjDesc->Package.Count; i++)
        {
            AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);
        }
        break;

    case ACPI_TYPE_DEVICE:
        AcpiDbEnumerateObject (ObjDesc->Device.SysHandler);
        AcpiDbEnumerateObject (ObjDesc->Device.DrvHandler);
        AcpiDbEnumerateObject (ObjDesc->Device.AddrHandler);
        break;

    case ACPI_TYPE_REGION:
        AcpiDbEnumerateObject (ObjDesc->Region.AddrHandler);
        break;

    case ACPI_TYPE_POWER:
        AcpiDbEnumerateObject (ObjDesc->PowerResource.SysHandler);
        AcpiDbEnumerateObject (ObjDesc->PowerResource.DrvHandler);
        break;

    case ACPI_TYPE_PROCESSOR:
        AcpiDbEnumerateObject (ObjDesc->Processor.SysHandler);
        AcpiDbEnumerateObject (ObjDesc->Processor.DrvHandler);
        AcpiDbEnumerateObject (ObjDesc->Processor.AddrHandler);
        break;

    case ACPI_TYPE_THERMAL:
        AcpiDbEnumerateObject (ObjDesc->ThermalZone.SysHandler);
        AcpiDbEnumerateObject (ObjDesc->ThermalZone.DrvHandler);
        AcpiDbEnumerateObject (ObjDesc->ThermalZone.AddrHandler);
        break;
    }
}