这篇教程C++ AcpiDsGetCurrentWalkState函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中AcpiDsGetCurrentWalkState函数的典型用法代码示例。如果您正苦于以下问题:C++ AcpiDsGetCurrentWalkState函数的具体用法?C++ AcpiDsGetCurrentWalkState怎么用?C++ AcpiDsGetCurrentWalkState使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了AcpiDsGetCurrentWalkState函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: AcpiDbDisplayResultsvoidAcpiDbDisplayResults (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); }}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:35,
示例2: AcpiDbDisplayCallingTreevoidAcpiDbDisplayCallingTree ( void){ ACPI_WALK_STATE *WalkState; ACPI_NAMESPACE_NODE *Node; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing/n"); return; } Node = WalkState->MethodNode; AcpiOsPrintf ("Current Control Method Call Tree/n"); while (WalkState) { Node = WalkState->MethodNode; AcpiOsPrintf (" [%4.4s]/n", AcpiUtGetNodeName (Node)); WalkState = WalkState->Next; }}
开发者ID:iHaD,项目名称:DragonFlyBSD,代码行数:26,
示例3: AcpiDbDisplayLocalsvoidAcpiDbDisplayLocals (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); }}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:33,
示例4: AcpiDbDisplayResultsvoidAcpiDbDisplayResults ( 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--; }}
开发者ID:iHaD,项目名称:DragonFlyBSD,代码行数:51,
示例5: AcpiDbDisplayArgumentsvoidAcpiDbDisplayArguments ( void){ ACPI_WALK_STATE *WalkState; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing/n"); return; } AcpiDbDecodeArguments (WalkState);}
开发者ID:iHaD,项目名称:DragonFlyBSD,代码行数:16,
示例6: AcpiDbDisplayArgumentsvoidAcpiDbDisplayArguments (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); }}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:39,
示例7: AcpiDbSetMethodDatavoidAcpiDbSetMethodData ( 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 = ACPI_STRTOUL (ValueArg, NULL, 16); if (Type == 'N') { Node = AcpiDbConvertToNode (IndexArg); 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 = ACPI_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); AcpiDmDisplayInternalObject (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,//.........这里部分代码省略.........
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:101,
示例8: AcpiDbDisplayMethodInfovoidAcpiDbDisplayMethodInfo ( ACPI_PARSE_OBJECT *StartOp){ ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *RootOp; ACPI_PARSE_OBJECT *Op; const ACPI_OPCODE_INFO *OpInfo; UINT32 NumOps = 0; UINT32 NumOperands = 0; UINT32 NumOperators = 0; UINT32 NumRemainingOps = 0; UINT32 NumRemainingOperands = 0; UINT32 NumRemainingOperators = 0; BOOLEAN CountRemaining = FALSE; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing/n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; AcpiOsPrintf ("Currently executing control method is [%4.4s]/n", AcpiUtGetNodeName (Node)); AcpiOsPrintf ("%X Arguments, SyncLevel = %X/n", (UINT32) ObjDesc->Method.ParamCount, (UINT32) ObjDesc->Method.SyncLevel); RootOp = StartOp; while (RootOp->Common.Parent) { RootOp = RootOp->Common.Parent; } Op = RootOp; while (Op) { if (Op == StartOp) { CountRemaining = TRUE; } NumOps++; if (CountRemaining) { NumRemainingOps++; } /* Decode the opcode */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); switch (OpInfo->Class) { case AML_CLASS_ARGUMENT: if (CountRemaining) { NumRemainingOperands++; } NumOperands++; break; case AML_CLASS_UNKNOWN: /* Bad opcode or ASCII character */ continue; default: if (CountRemaining) { NumRemainingOperators++; } NumOperators++; break; } Op = AcpiPsGetDepthNext (StartOp, Op); } AcpiOsPrintf ( "Method contains: %X AML Opcodes - %X Operators, %X Operands/n", NumOps, NumOperators, NumOperands); AcpiOsPrintf ( "Remaining to execute: %X AML Opcodes - %X Operators, %X Operands/n", NumRemainingOps, NumRemainingOperators, NumRemainingOperands);}
开发者ID:iHaD,项目名称:DragonFlyBSD,代码行数:100,
示例9: AcpiPsParseAmlACPI_STATUSAcpiPsParseAml ( ACPI_WALK_STATE *WalkState){ ACPI_STATUS Status; ACPI_THREAD_STATE *Thread; ACPI_THREAD_STATE *PrevWalkList = AcpiGbl_CurrentWalkList; ACPI_WALK_STATE *PreviousWalkState; ACPI_FUNCTION_TRACE (PsParseAml); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Entered with WalkState=%p Aml=%p size=%X/n", WalkState, WalkState->ParserState.Aml, WalkState->ParserState.AmlSize)); if (!WalkState->ParserState.Aml) { return_ACPI_STATUS (AE_NULL_OBJECT); } /* Create and initialize a new thread state */ Thread = AcpiUtCreateThreadState (); if (!Thread) { if (WalkState->MethodDesc) { /* Executing a control method - additional cleanup */ AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); } AcpiDsDeleteWalkState (WalkState); return_ACPI_STATUS (AE_NO_MEMORY); } WalkState->Thread = Thread; /* * If executing a method, the starting SyncLevel is this method's * SyncLevel */ if (WalkState->MethodDesc) { WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; } AcpiDsPushWalkState (WalkState, Thread); /* * This global allows the AML debugger to get a handle to the currently * executing control method. */ AcpiGbl_CurrentWalkList = Thread; /* * Execute the walk loop as long as there is a valid Walk State. This * handles nested control method invocations without recursion. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "State=%p/n", WalkState)); Status = AE_OK; while (WalkState) { if (ACPI_SUCCESS (Status)) { /* * The ParseLoop executes AML until the method terminates * or calls another method. */ Status = AcpiPsParseLoop (WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Completed one call to walk loop, %s State=%p/n", AcpiFormatException (Status), WalkState)); if (Status == AE_CTRL_TRANSFER) { /* * A method call was detected. * Transfer control to the called control method */ Status = AcpiDsCallControlMethod (Thread, WalkState, NULL); if (ACPI_FAILURE (Status)) { Status = AcpiDsMethodError (Status, WalkState); } /* * If the transfer to the new method method call worked, a new walk * state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; } else if (Status == AE_CTRL_TERMINATE) {//.........这里部分代码省略.........
开发者ID:ModeenF,项目名称:haiku,代码行数:101,
示例10: AcpiPsParseAml//.........这里部分代码省略......... } } /* * Execute the walk loop as long as there is a valid Walk State. This * handles nested control method invocations without recursion. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "State=%p/n", WalkState)); Status = AE_OK; while (WalkState) { if (ACPI_SUCCESS (Status)) { Status = AcpiPsParseLoop (WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Completed one call to walk loop, State=%p/n", WalkState)); if (Status == AE_CTRL_TRANSFER) { /* * A method call was detected. * Transfer control to the called control method */ Status = AcpiDsCallControlMethod (&WalkList, WalkState, NULL); /* * If the transfer to the new method method call worked, a new walk * state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (&WalkList); continue; } else if (Status == AE_CTRL_TERMINATE) { Status = AE_OK; } /* We are done with this walk, move on to the parent if any */ WalkState = AcpiDsPopWalkState (&WalkList); /* Extract return value before we delete WalkState */ ReturnDesc = WalkState->ReturnDesc; ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "ReturnValue=%p, State=%p/n", WalkState->ReturnDesc, WalkState)); /* Reset the current scope to the beginning of scope stack */ AcpiDsScopeStackClear (WalkState); /* * If we just returned from the execution of a control method, * there's lots of cleanup to do */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) { AcpiDsTerminateControlMethod (WalkState); }
开发者ID:MarginC,项目名称:kame,代码行数:66,
注:本文中的AcpiDsGetCurrentWalkState函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ AcpiDsMethodDataGetNode函数代码示例 C++ AcpiDsDeleteWalkState函数代码示例 |