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

📄 dmobject.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************* * * FUNCTION:    AcpiDmDecodeNode * * PARAMETERS:  Node        - Object to be displayed * * RETURN:      None * * DESCRIPTION: Short display of a namespace node * ******************************************************************************/static voidAcpiDmDecodeNode (    ACPI_NAMESPACE_NODE     *Node){    AcpiOsPrintf ("<Node>            Name %4.4s",            AcpiUtGetNodeName (Node));    if (Node->Flags & ANOBJ_METHOD_ARG)    {        AcpiOsPrintf (" [Method Arg]");    }    if (Node->Flags & ANOBJ_METHOD_LOCAL)    {        AcpiOsPrintf (" [Method Local]");    }    AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node));}/******************************************************************************* * * FUNCTION:    AcpiDmDisplayInternalObject * * PARAMETERS:  ObjDesc         - Object to be displayed *              WalkState       - Current walk state * * RETURN:      None * * DESCRIPTION: Short display of an internal object * ******************************************************************************/voidAcpiDmDisplayInternalObject (    ACPI_OPERAND_OBJECT     *ObjDesc,    ACPI_WALK_STATE         *WalkState){    UINT8                   Type;    AcpiOsPrintf ("%p ", ObjDesc);    if (!ObjDesc)    {        AcpiOsPrintf ("<Null Object>\n");        return;    }    /* Decode the object type */    switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))    {    case ACPI_DESC_TYPE_PARSER:        AcpiOsPrintf ("<Parser>  ");        break;    case ACPI_DESC_TYPE_NAMED:        AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);        break;    case ACPI_DESC_TYPE_OPERAND:        Type = ACPI_GET_OBJECT_TYPE (ObjDesc);        if (Type > ACPI_TYPE_LOCAL_MAX)        {            AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type);            return;        }        /* Decode the ACPI object type */        switch (ACPI_GET_OBJECT_TYPE (ObjDesc))        {        case ACPI_TYPE_LOCAL_REFERENCE:            switch (ObjDesc->Reference.Opcode)            {            case AML_LOCAL_OP:                AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset);                if (WalkState)                {                    ObjDesc = WalkState->LocalVariables[                                ObjDesc->Reference.Offset].Object;                    AcpiOsPrintf ("%p", ObjDesc);                    AcpiDmDecodeInternalObject (ObjDesc);                }                break;            case AML_ARG_OP:                AcpiOsPrintf ("[Arg%d]   ", ObjDesc->Reference.Offset);                if (WalkState)                {                    ObjDesc = WalkState->Arguments[                                ObjDesc->Reference.Offset].Object;                    AcpiOsPrintf ("%p", ObjDesc);                    AcpiDmDecodeInternalObject (ObjDesc);                }                break;            case AML_DEBUG_OP:                AcpiOsPrintf ("[Debug]  ");                break;            case AML_INDEX_OP:                AcpiOsPrintf ("[Index]  ");                switch (ObjDesc->Reference.TargetType)                {                case ACPI_TYPE_BUFFER_FIELD:                    AcpiOsPrintf ("%p", ObjDesc->Reference.Object);                    AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);                    break;                case ACPI_TYPE_PACKAGE:                    AcpiOsPrintf ("%p", ObjDesc->Reference.Where);                    if (!ObjDesc->Reference.Where)                    {                        AcpiOsPrintf (" Uninitialized WHERE ptr");                    }                    else                    {                        AcpiDmDecodeInternalObject (                            *(ObjDesc->Reference.Where));                    }                    break;                default:                    AcpiOsPrintf ("Unknown index target type");                    break;                }                break;            case AML_LOAD_OP:                AcpiOsPrintf ("[DdbHandle]  ");                break;            case AML_REF_OF_OP:                AcpiOsPrintf ("[RefOf]          ");                if (!ObjDesc->Reference.Object)                {                    AcpiOsPrintf ("Uninitialized reference subobject ptr");                    break;                }                /* Reference can be to a Node or an Operand object */                switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object))                {                case ACPI_DESC_TYPE_NAMED:                    AcpiDmDecodeNode (ObjDesc->Reference.Object);                    break;                case ACPI_DESC_TYPE_OPERAND:                    AcpiDmDecodeInternalObject (ObjDesc->Reference.Object);                    break;                default:                    break;                }                break;            case AML_INT_NAMEPATH_OP:                AcpiDmDecodeNode (ObjDesc->Reference.Node);                break;            default:                AcpiOsPrintf ("Unknown Reference opcode %X (%s)\n",                    ObjDesc->Reference.Opcode,                    AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode));                break;            }            break;        default:            AcpiOsPrintf ("<Obj>            ");            AcpiDmDecodeInternalObject (ObjDesc);            break;        }        break;    default:        AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",                AcpiUtGetDescriptorName (ObjDesc));        break;    }    AcpiOsPrintf ("\n");}/******************************************************************************* * * FUNCTION:    AcpiDmDisplayLocals * * PARAMETERS:  WalkState       - State for current method * * RETURN:      None * * DESCRIPTION: Display all locals for the currently running control method * ******************************************************************************/voidAcpiDmDisplayLocals (    ACPI_WALK_STATE         *WalkState){    UINT32                  i;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_NAMESPACE_NODE     *Node;    ObjDesc = WalkState->MethodDesc;    Node    = WalkState->MethodNode;    if (!Node)    {        AcpiOsPrintf (            "No method node (Executing subtree for buffer or opregion)\n");        return;    }    if (Node->Type != ACPI_TYPE_METHOD)    {        AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");        return;    }    AcpiOsPrintf ("Local Variables for method [%4.4s]:\n",            AcpiUtGetNodeName (Node));    for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++)    {        ObjDesc = WalkState->LocalVariables[i].Object;        AcpiOsPrintf ("    Local%X: ", i);        AcpiDmDisplayInternalObject (ObjDesc, WalkState);    }}/******************************************************************************* * * FUNCTION:    AcpiDmDisplayArguments * * PARAMETERS:  WalkState       - State for current method * * RETURN:      None * * DESCRIPTION: Display all arguments for the currently running control method * ******************************************************************************/voidAcpiDmDisplayArguments (    ACPI_WALK_STATE         *WalkState){    UINT32                  i;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_NAMESPACE_NODE     *Node;    ObjDesc = WalkState->MethodDesc;    Node    = WalkState->MethodNode;    if (!Node)    {        AcpiOsPrintf (            "No method node (Executing subtree for buffer or opregion)\n");        return;    }    if (Node->Type != ACPI_TYPE_METHOD)    {        AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");        return;    }    AcpiOsPrintf (        "Arguments for Method [%4.4s]:  (%X arguments defined, max concurrency = %X)\n",        AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel);    for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)    {        ObjDesc = WalkState->Arguments[i].Object;        AcpiOsPrintf ("    Arg%d:   ", i);        AcpiDmDisplayInternalObject (ObjDesc, WalkState);    }}#endif

⌨️ 快捷键说明

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