void AcpiDbDisplayLocals (void) { UINT32 i; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (!Node) { AcpiOsPrintf ("No method node (Executing subtree for buffer or opregion)\n"); return; } AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", Node->Name.Ascii); for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { ObjDesc = WalkState->LocalVariables[i].Object; AcpiOsPrintf ("Local%d: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); } }
void AcpiDbDisplayResults (void) { UINT32 i; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 NumResults = 0; ACPI_NAMESPACE_NODE *Node; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (WalkState->Results) { NumResults = WalkState->Results->Results.NumResults; } AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n", Node->Name.Ascii, NumResults); for (i = 0; i < NumResults; i++) { ObjDesc = WalkState->Results->Results.ObjDesc[i]; AcpiOsPrintf ("Result%d: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); } }
void AcpiDbDisplayResults ( void) { UINT32 i; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 ResultCount = 0; ACPI_NAMESPACE_NODE *Node; ACPI_GENERIC_STATE *Frame; UINT32 Index; /* Index onto current frame */ WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (WalkState->Results) { ResultCount = WalkState->ResultCount; } AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n", AcpiUtGetNodeName (Node), ResultCount); /* From the top element of result stack */ Frame = WalkState->Results; Index = (ResultCount - 1) % ACPI_RESULTS_FRAME_OBJ_NUM; for (i = 0; i < ResultCount; i++) { ObjDesc = Frame->Results.ObjDesc[Index]; AcpiOsPrintf ("Result%u: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); if (Index == 0) { Frame = Frame->Results.Next; Index = ACPI_RESULTS_FRAME_OBJ_NUM; } Index--; } }
void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ArgObj: "); AcpiDbDisplayInternalObject (ObjDesc, WalkState); }
void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { /* Only display if single stepping */ if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ResultObj: "); AcpiDbDisplayInternalObject (ObjDesc, WalkState); AcpiOsPrintf ("\n"); }
void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { #ifndef ACPI_APPLICATION if (AcpiGbl_DbThreadId != AcpiOsGetThreadId()) { return; } #endif if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ArgObj: "); AcpiDbDisplayInternalObject (ObjDesc, WalkState); }
void AcpiDbDisplayArguments (void) { UINT32 i; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 NumArgs; UINT32 Concurrency; ACPI_NAMESPACE_NODE *Node; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (!Node) { AcpiOsPrintf ("No method node (Executing subtree for buffer or opregion)\n"); return; } NumArgs = ObjDesc->Method.ParamCount; Concurrency = ObjDesc->Method.Concurrency; AcpiOsPrintf ("Method [%4.4s] has %X arguments, max concurrency = %X\n", Node->Name.Ascii, NumArgs, Concurrency); for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { ObjDesc = WalkState->Arguments[i].Object; AcpiOsPrintf ("Arg%d: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); } }
void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { #ifndef ACPI_APPLICATION if (AcpiGbl_DbThreadId != AcpiOsGetThreadId()) { return; } #endif /* Only display if single stepping */ if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ResultObj: "); AcpiDbDisplayInternalObject (ObjDesc, WalkState); AcpiOsPrintf ("\n"); }
void AcpiDbDecodeArguments ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; BOOLEAN DisplayArgs = FALSE; Node = WalkState->MethodNode; ObjDesc = WalkState->MethodDesc; 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; } /* Are any arguments actually set? */ for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { ObjDesc = WalkState->Arguments[i].Object; if (ObjDesc) { DisplayArgs = TRUE; break; } } /* If any are set, only display the ones that are set */ if (DisplayArgs) { AcpiOsPrintf ( "Initialized Arguments for Method [%4.4s]: " "(%X arguments defined for method invocation)\n", AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount); for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { ObjDesc = WalkState->Arguments[i].Object; if (ObjDesc) { AcpiOsPrintf (" Arg%u: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); } } } else { AcpiOsPrintf ( "No Arguments are initialized for method [%4.4s]\n", AcpiUtGetNodeName (Node)); } }
void AcpiDbDecodeLocals ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; BOOLEAN DisplayLocals = FALSE; 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; } /* Are any locals actually set? */ for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { ObjDesc = WalkState->LocalVariables[i].Object; if (ObjDesc) { DisplayLocals = TRUE; break; } } /* If any are set, only display the ones that are set */ if (DisplayLocals) { AcpiOsPrintf ("\nInitialized Local Variables for method [%4.4s]:\n", AcpiUtGetNodeName (Node)); for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { ObjDesc = WalkState->LocalVariables[i].Object; if (ObjDesc) { AcpiOsPrintf (" Local%X: ", i); AcpiDbDisplayInternalObject (ObjDesc, WalkState); } } } else { AcpiOsPrintf ( "No Local Variables are initialized for method [%4.4s]\n", AcpiUtGetNodeName (Node)); } }
void AcpiDbDumpExternalObject ( ACPI_OBJECT *ObjDesc, UINT32 Level) { UINT32 i; if (!ObjDesc) { AcpiOsPrintf ("[Null Object]\n"); return; } for (i = 0; i < Level; i++) { AcpiOsPrintf (" "); } switch (ObjDesc->Type) { case ACPI_TYPE_ANY: AcpiOsPrintf ("[Null Object] (Type=0)\n"); break; case ACPI_TYPE_INTEGER: AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length); AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { if (ObjDesc->Buffer.Length > 16) { AcpiOsPrintf ("\n"); } AcpiUtDebugDumpBuffer ( ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_BYTE_DISPLAY, _COMPONENT); } else { AcpiOsPrintf ("\n"); } break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("[Package] Contains %u Elements:\n", ObjDesc->Package.Count); for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiDbDumpExternalObject ( &ObjDesc->Package.Elements[i], Level+1); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] = "); AcpiDbDisplayInternalObject (ObjDesc->Reference.Handle, NULL); break; case ACPI_TYPE_PROCESSOR: AcpiOsPrintf ("[Processor]\n"); break; case ACPI_TYPE_POWER: AcpiOsPrintf ("[Power Resource]\n"); break; default: AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Type); break; } }
void AcpiDbSetMethodData ( char *TypeArg, char *IndexArg, char *ValueArg) { char Type; UINT32 Index; UINT32 Value; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; /* Validate TypeArg */ AcpiUtStrupr (TypeArg); Type = TypeArg[0]; if ((Type != 'L') && (Type != 'A') && (Type != 'N')) { AcpiOsPrintf ("Invalid SET operand: %s\n", TypeArg); return; } Value = strtoul (ValueArg, NULL, 16); if (Type == 'N') { Node = AcpiDbConvertToNode (IndexArg); if (!Node) { return; } if (Node->Type != ACPI_TYPE_INTEGER) { AcpiOsPrintf ("Can only set Integer nodes\n"); return; } ObjDesc = Node->Object; ObjDesc->Integer.Value = Value; return; } /* Get the index and value */ Index = strtoul (IndexArg, NULL, 16); WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } /* Create and initialize the new object */ ObjDesc = AcpiUtCreateIntegerObject ((UINT64) Value); if (!ObjDesc) { AcpiOsPrintf ("Could not create an internal object\n"); return; } /* Store the new object into the target */ switch (Type) { case 'A': /* Set a method argument */ if (Index > ACPI_METHOD_MAX_ARG) { AcpiOsPrintf ("Arg%u - Invalid argument name\n", Index); goto Cleanup; } Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_ARG, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } ObjDesc = WalkState->Arguments[Index].Object; AcpiOsPrintf ("Arg%u: ", Index); AcpiDbDisplayInternalObject (ObjDesc, WalkState); break; case 'L': /* Set a method local */ if (Index > ACPI_METHOD_MAX_LOCAL) { AcpiOsPrintf ("Local%u - Invalid local variable name\n", Index); goto Cleanup; } Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_LOCAL, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } ObjDesc = WalkState->LocalVariables[Index].Object; AcpiOsPrintf ("Local%u: ", Index); AcpiDbDisplayInternalObject (ObjDesc, WalkState); break; default: break; } Cleanup: AcpiUtRemoveReference (ObjDesc); }