📄 exdump.c
字号:
case ACPI_TYPE_MUTEX: AcpiOsPrintf ("Mutex\n"); break; case ACPI_TYPE_DEVICE: AcpiOsPrintf ("Device\n"); break; case ACPI_TYPE_POWER: AcpiOsPrintf ("Power\n"); break; case ACPI_TYPE_PROCESSOR: AcpiOsPrintf ("Processor\n"); break; case ACPI_TYPE_THERMAL: AcpiOsPrintf ("Thermal\n"); break; default: /* Unknown Type */ AcpiOsPrintf ("Unknown Type %X\n", ACPI_GET_OBJECT_TYPE (ObjDesc)); break; } return;}/******************************************************************************* * * FUNCTION: AcpiExDumpOperands * * PARAMETERS: Operands - Operand list * InterpreterMode - Load or Exec * Ident - Identification * NumLevels - # of stack entries to dump above line * Note - Output notation * ModuleName - Caller's module name * LineNumber - Caller's invocation line number * * DESCRIPTION: Dump the object stack * ******************************************************************************/voidAcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, ACPI_INTERPRETER_MODE InterpreterMode, char *Ident, UINT32 NumLevels, char *Note, char *ModuleName, UINT32 LineNumber){ ACPI_NATIVE_UINT i; ACPI_FUNCTION_NAME (ExDumpOperands); if (!Ident) { Ident = "?"; } if (!Note) { Note = "?"; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "************* Operand Stack Contents (Opcode [%s], %d Operands)\n", Ident, NumLevels)); if (NumLevels == 0) { NumLevels = 1; } /* Dump the operand stack starting at the top */ for (i = 0; NumLevels > 0; i--, NumLevels--) { AcpiExDumpOperand (Operands[i], 0); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "************* Operand Stack dump from %s(%d), %s\n", ModuleName, LineNumber, Note)); return;}/******************************************************************************* * * FUNCTION: AcpiExOut* functions * * PARAMETERS: Title - Descriptive text * Value - Value to be displayed * * DESCRIPTION: Object dump output formatting functions. These functions * reduce the number of format strings required and keeps them * all in one place for easy modification. * ******************************************************************************/static voidAcpiExOutString ( char *Title, char *Value){ AcpiOsPrintf ("%20s : %s\n", Title, Value);}static voidAcpiExOutPointer ( char *Title, void *Value){ AcpiOsPrintf ("%20s : %p\n", Title, Value);}/******************************************************************************* * * FUNCTION: AcpiExDumpNamespaceNode * * PARAMETERS: Node - Descriptor to dump * Flags - Force display if TRUE * * DESCRIPTION: Dumps the members of the given.Node * ******************************************************************************/voidAcpiExDumpNamespaceNode ( ACPI_NAMESPACE_NODE *Node, UINT32 Flags){ ACPI_FUNCTION_ENTRY (); if (!Flags) { if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) { return; } } AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node)); AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type)); AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node)); AcpiExOutPointer ("Parent", AcpiNsGetParentNode (Node)); AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node), AcpiExDumpNode);}/******************************************************************************* * * FUNCTION: AcpiExDumpReferenceObj * * PARAMETERS: Object - Descriptor to dump * * DESCRIPTION: Dumps a reference object * ******************************************************************************/static voidAcpiExDumpReferenceObj ( ACPI_OPERAND_OBJECT *ObjDesc){ ACPI_BUFFER RetBuf; ACPI_STATUS Status; RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER; if (ObjDesc->Reference.Opcode == AML_INT_NAMEPATH_OP) { AcpiOsPrintf (" Named Object %p ", ObjDesc->Reference.Node); Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf); if (ACPI_FAILURE (Status)) { AcpiOsPrintf (" Could not convert name to pathname\n"); } else { AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer); ACPI_FREE (RetBuf.Pointer); } } else if (ObjDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object); if (ObjDesc->Reference.Opcode == AML_LOAD_OP) { /* * For DDBHandle reference, * ObjDesc->Reference.Object is the table index */ AcpiOsPrintf (" [DDBHandle]\n"); } else { AcpiOsPrintf (" [%s]\n", AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) ObjDesc->Reference.Object)->Common.Type)); } } else { AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object); } }}/******************************************************************************* * * FUNCTION: AcpiExDumpPackageObj * * PARAMETERS: ObjDesc - Descriptor to dump * Level - Indentation Level * Index - Package index for this object * * DESCRIPTION: Dumps the elements of the package * ******************************************************************************/static voidAcpiExDumpPackageObj ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Level, UINT32 Index){ UINT32 i; /* Indentation and index output */ if (Level > 0) { for (i = 0; i < Level; i++) { AcpiOsPrintf (" "); } AcpiOsPrintf ("[%.2d] ", Index); } AcpiOsPrintf ("%p ", ObjDesc); /* Null package elements are allowed */ if (!ObjDesc) { AcpiOsPrintf ("[Null Object]\n"); return; } /* Packages may only contain a few object types */ switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { case ACPI_TYPE_INTEGER: AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("[String] Value: "); for (i = 0; i < ObjDesc->String.Length; i++) { AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]); } AcpiOsPrintf ("\n"); break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); } else { AcpiOsPrintf ("\n"); } break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("[Package] Contains %d Elements:\n", ObjDesc->Package.Count); for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] %s", (AcpiPsGetOpcodeInfo (ObjDesc->Reference.Opcode))->Name); AcpiExDumpReferenceObj (ObjDesc); break; default: AcpiOsPrintf ("[Unknown Type] %X\n", ACPI_GET_OBJECT_TYPE (ObjDesc)); break; }}/******************************************************************************* * * FUNCTION: AcpiExDumpObjectDescriptor * * PARAMETERS: ObjDesc - Descriptor to dump * Flags - Force display if TRUE * * DESCRIPTION: Dumps the members of the object descriptor given. * ******************************************************************************/voidAcpiExDumpObjectDescriptor ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Flags){ ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor); if (!ObjDesc) { return_VOID; } if (!Flags) { if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) { return_VOID; } } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) { AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags); AcpiOsPrintf ("\nAttached Object (%p):\n", ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object); AcpiExDumpObjectDescriptor ( ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags); return_VOID; } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf ( "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); return_VOID; } if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX) { return_VOID; } /* Common Fields */ AcpiExDumpObject (ObjDesc, AcpiExDumpCommon); /* Object-specific fields */ AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]); return_VOID;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -