📄 dmobject.c
字号:
/******************************************************************************* * * 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 + -