您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AcpiNsGetSecondaryObject函数代码示例

51自学网 2021-06-01 19:39:37
  C++
这篇教程C++ AcpiNsGetSecondaryObject函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AcpiNsGetSecondaryObject函数的典型用法代码示例。如果您正苦于以下问题:C++ AcpiNsGetSecondaryObject函数的具体用法?C++ AcpiNsGetSecondaryObject怎么用?C++ AcpiNsGetSecondaryObject使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AcpiNsGetSecondaryObject函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: AcpiDsGetBankFieldArguments

ACPI_STATUSAcpiDsGetBankFieldArguments (    ACPI_OPERAND_OBJECT     *ObjDesc){    ACPI_OPERAND_OBJECT     *ExtraDesc;    ACPI_NAMESPACE_NODE     *Node;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE_PTR (DsGetBankFieldArguments, ObjDesc);    if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)    {        return_ACPI_STATUS (AE_OK);    }    /* Get the AML pointer (method object) and BankField node */    ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc);    Node = ObjDesc->BankField.Node;    ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_LOCAL_BANK_FIELD, Node, NULL));    ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BankField Arg Init/n",        AcpiUtGetNodeName (Node)));    /* Execute the AML code for the TermArg arguments */    Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node),                ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart);    return_ACPI_STATUS (Status);}
开发者ID:mmanley,项目名称:Antares,代码行数:32,


示例2: AcpiEvAssociateRegMethod

voidAcpiEvAssociateRegMethod (    ACPI_OPERAND_OBJECT     *RegionObj){    ACPI_NAME               *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG;    ACPI_NAMESPACE_NODE     *MethodNode;    ACPI_NAMESPACE_NODE     *Node;    ACPI_OPERAND_OBJECT     *RegionObj2;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (EvAssociateRegMethod);    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_VOID;    }    Node = RegionObj->Region.Node->Parent;    /* Find any "_REG" method associated with this region definition */    Status = AcpiNsSearchOneScope (        *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode);    if (ACPI_SUCCESS (Status))    {        /*         * The _REG method is optional and there can be only one per region         * definition. This will be executed when the handler is attached         * or removed         */        RegionObj2->Extra.Method_REG = MethodNode;    }    return_VOID;}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:38,


示例3: AcpiDsGetRegionArguments

ACPI_STATUSAcpiDsGetRegionArguments (    ACPI_OPERAND_OBJECT     *ObjDesc){    ACPI_NAMESPACE_NODE     *Node;    ACPI_STATUS             Status;    ACPI_OPERAND_OBJECT     *ExtraDesc;    ACPI_FUNCTION_TRACE_PTR ("DsGetRegionArguments", ObjDesc);    if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)    {        return_ACPI_STATUS (AE_OK);    }    ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc);    if (!ExtraDesc)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    /* Get the Region node */    Node = ObjDesc->Region.Node;    ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL));    ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Init at AML %p/n",        Node->Name.Ascii, ExtraDesc->Extra.AmlStart));    Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node),                ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart);    return_ACPI_STATUS (Status);}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:37,


示例4: AcpiDbEnumerateObject

static voidAcpiDbEnumerateObject (    ACPI_OPERAND_OBJECT     *ObjDesc){    UINT32                  i;    if (!ObjDesc)    {        return;    }    /* Enumerate this object first */    AcpiGbl_NumObjects++;    if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)    {        AcpiGbl_ObjTypeCountMisc++;    }    else    {        AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++;    }    /* Count the sub-objects */    switch (ObjDesc->Common.Type)    {    case ACPI_TYPE_PACKAGE:        for (i = 0; i < ObjDesc->Package.Count; i++)        {            AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);        }        break;    case ACPI_TYPE_DEVICE:        AcpiDbEnumerateObject (ObjDesc->Device.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->Device.DeviceNotify);        AcpiDbEnumerateObject (ObjDesc->Device.Handler);        break;    case ACPI_TYPE_BUFFER_FIELD:        if (AcpiNsGetSecondaryObject (ObjDesc))        {            AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++;        }        break;    case ACPI_TYPE_REGION:        AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;        AcpiDbEnumerateObject (ObjDesc->Region.Handler);        break;    case ACPI_TYPE_POWER:        AcpiDbEnumerateObject (ObjDesc->PowerResource.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->PowerResource.DeviceNotify);        break;    case ACPI_TYPE_PROCESSOR:        AcpiDbEnumerateObject (ObjDesc->Processor.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->Processor.DeviceNotify);        AcpiDbEnumerateObject (ObjDesc->Processor.Handler);        break;    case ACPI_TYPE_THERMAL:        AcpiDbEnumerateObject (ObjDesc->ThermalZone.SystemNotify);        AcpiDbEnumerateObject (ObjDesc->ThermalZone.DeviceNotify);        AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler);        break;    default:        break;    }}
开发者ID:apprisi,项目名称:illumos-gate,代码行数:82,


示例5: AcpiEvExecuteRegMethod

ACPI_STATUSAcpiEvExecuteRegMethod (    ACPI_OPERAND_OBJECT     *RegionObj,    UINT32                  Function){    ACPI_EVALUATE_INFO      *Info;    ACPI_OPERAND_OBJECT     *Args[3];    ACPI_OPERAND_OBJECT     *RegionObj2;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (EvExecuteRegMethod);    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    if (RegionObj2->Extra.Method_REG == NULL)    {        return_ACPI_STATUS (AE_OK);    }    /* Allocate and initialize the evaluation information block */    Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));    if (!Info)    {        return_ACPI_STATUS (AE_NO_MEMORY);    }    Info->PrefixNode = RegionObj2->Extra.Method_REG;    Info->RelativePathname = NULL;    Info->Parameters = Args;    Info->Flags = ACPI_IGNORE_RETURN_VALUE;    /*     * The _REG method has two arguments:     *     * Arg0 - Integer:     *  Operation region space ID Same value as RegionObj->Region.SpaceId     *     * Arg1 - Integer:     *  connection status 1 for connecting the handler, 0 for disconnecting     *  the handler (Passed as a parameter)     */    Args[0] = AcpiUtCreateIntegerObject ((UINT64) RegionObj->Region.SpaceId);    if (!Args[0])    {        Status = AE_NO_MEMORY;        goto Cleanup1;    }    Args[1] = AcpiUtCreateIntegerObject ((UINT64) Function);    if (!Args[1])    {        Status = AE_NO_MEMORY;        goto Cleanup2;    }    Args[2] = NULL; /* Terminate list */    /* Execute the method, no return value */    ACPI_DEBUG_EXEC (        AcpiUtDisplayInitPathname (ACPI_TYPE_METHOD, Info->PrefixNode, NULL));    Status = AcpiNsEvaluate (Info);    AcpiUtRemoveReference (Args[1]);Cleanup2:    AcpiUtRemoveReference (Args[0]);Cleanup1:    ACPI_FREE (Info);    return_ACPI_STATUS (Status);}
开发者ID:JasonFord53,项目名称:freebsd,代码行数:79,


示例6: AcpiUtDeleteInternalObj

//.........这里部分代码省略.........        Object->Event.OsSemaphore = NULL;        break;    case ACPI_TYPE_METHOD:        ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,            "***** Method %p/n", Object));        /* Delete the method mutex if it exists */        if (Object->Method.Mutex)        {            AcpiOsDeleteMutex (Object->Method.Mutex->Mutex.OsMutex);            AcpiUtDeleteObjectDesc (Object->Method.Mutex);            Object->Method.Mutex = NULL;        }        break;    case ACPI_TYPE_REGION:        ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,            "***** Region %p/n", Object));        /*         * Update AddressRange list. However, only permanent regions         * are installed in this list. (Not created within a method)         */        if (!(Object->Region.Node->Flags & ANOBJ_TEMPORARY))        {            AcpiUtRemoveAddressRange (Object->Region.SpaceId,                Object->Region.Node);        }        SecondDesc = AcpiNsGetSecondaryObject (Object);        if (SecondDesc)        {            /*             * Free the RegionContext if and only if the handler is one of the             * default handlers -- and therefore, we created the context object             * locally, it was not created by an external caller.             */            HandlerDesc = Object->Region.Handler;            if (HandlerDesc)            {                NextDesc = HandlerDesc->AddressSpace.RegionList;                StartDesc = NextDesc;                LastObjPtr = &HandlerDesc->AddressSpace.RegionList;                /* Remove the region object from the handler list */                while (NextDesc)                {                    if (NextDesc == Object)                    {                        *LastObjPtr = NextDesc->Region.Next;                        break;                    }                    /* Walk the linked list of handlers */                    LastObjPtr = &NextDesc->Region.Next;                    NextDesc = NextDesc->Region.Next;                    /* Prevent infinite loop if list is corrupted */                    if (NextDesc == StartDesc)
开发者ID:99corps,项目名称:runtime,代码行数:67,


示例7: AcpiEvAddressSpaceDispatch

ACPI_STATUSAcpiEvAddressSpaceDispatch (    ACPI_OPERAND_OBJECT     *RegionObj,    ACPI_OPERAND_OBJECT     *FieldObj,    UINT32                  Function,    UINT32                  RegionOffset,    UINT32                  BitWidth,    UINT64                  *Value){    ACPI_STATUS             Status;    ACPI_ADR_SPACE_HANDLER  Handler;    ACPI_ADR_SPACE_SETUP    RegionSetup;    ACPI_OPERAND_OBJECT     *HandlerDesc;    ACPI_OPERAND_OBJECT     *RegionObj2;    void                    *RegionContext = NULL;    ACPI_CONNECTION_INFO    *Context;    ACPI_PHYSICAL_ADDRESS   Address;    ACPI_FUNCTION_TRACE (EvAddressSpaceDispatch);    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    /* Ensure that there is a handler associated with this region */    HandlerDesc = RegionObj->Region.Handler;    if (!HandlerDesc)    {        ACPI_ERROR ((AE_INFO,            "No handler for Region [%4.4s] (%p) [%s]",            AcpiUtGetNodeName (RegionObj->Region.Node),            RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));        return_ACPI_STATUS (AE_NOT_EXIST);    }    Context = HandlerDesc->AddressSpace.Context;    /*     * It may be the case that the region has never been initialized.     * Some types of regions require special init code     */    if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE))    {        /* This region has not been initialized yet, do it */        RegionSetup = HandlerDesc->AddressSpace.Setup;        if (!RegionSetup)        {            /* No initialization routine, exit with error */            ACPI_ERROR ((AE_INFO,                "No init routine for region(%p) [%s]",                RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (AE_NOT_EXIST);        }        /*         * We must exit the interpreter because the region setup will         * potentially execute control methods (for example, the _REG method         * for this region)         */        AcpiExExitInterpreter ();        Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE,                    Context, &RegionContext);        /* Re-enter the interpreter */        AcpiExEnterInterpreter ();        /* Check for failure of the Region Setup */        if (ACPI_FAILURE (Status))        {            ACPI_EXCEPTION ((AE_INFO, Status,                "During region initialization: [%s]",                AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (Status);        }        /* Region initialization may have been completed by RegionSetup */        if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE))        {            RegionObj->Region.Flags |= AOPOBJ_SETUP_COMPLETE;            /*             * Save the returned context for use in all accesses to             * the handler for this particular region             */            if (!(RegionObj2->Extra.RegionContext))            {                RegionObj2->Extra.RegionContext = RegionContext;            }//.........这里部分代码省略.........
开发者ID:JasonFord53,项目名称:freebsd,代码行数:101,


示例8: AcpiEvDetachRegion

voidAcpiEvDetachRegion(    ACPI_OPERAND_OBJECT     *RegionObj,    BOOLEAN                 AcpiNsIsLocked){    ACPI_OPERAND_OBJECT     *HandlerObj;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_OPERAND_OBJECT     *StartDesc;    ACPI_OPERAND_OBJECT     **LastObjPtr;    ACPI_ADR_SPACE_SETUP    RegionSetup;    void                    **RegionContext;    ACPI_OPERAND_OBJECT     *RegionObj2;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (EvDetachRegion);    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_VOID;    }    RegionContext = &RegionObj2->Extra.RegionContext;    /* Get the address handler from the region object */    HandlerObj = RegionObj->Region.Handler;    if (!HandlerObj)    {        /* This region has no handler, all done */        return_VOID;    }    /* Find this region in the handler's list */    ObjDesc = HandlerObj->AddressSpace.RegionList;    StartDesc = ObjDesc;    LastObjPtr = &HandlerObj->AddressSpace.RegionList;    while (ObjDesc)    {        /* Is this the correct Region? */        if (ObjDesc == RegionObj)        {            ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,                "Removing Region %p from address handler %p/n",                RegionObj, HandlerObj));            /* This is it, remove it from the handler's list */            *LastObjPtr = ObjDesc->Region.Next;            ObjDesc->Region.Next = NULL;        /* Must clear field */            if (AcpiNsIsLocked)            {                Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);                if (ACPI_FAILURE (Status))                {                    return_VOID;                }            }            /* Now stop region accesses by executing the _REG method */            Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_DISCONNECT);            if (ACPI_FAILURE (Status))            {                ACPI_EXCEPTION ((AE_INFO, Status, "from region _REG, [%s]",                    AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            }            if (AcpiNsIsLocked)            {                Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);                if (ACPI_FAILURE (Status))                {                    return_VOID;                }            }            /*             * If the region has been activated, call the setup handler with             * the deactivate notification             */            if (RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE)            {                RegionSetup = HandlerObj->AddressSpace.Setup;                Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE,                    HandlerObj->AddressSpace.Context, RegionContext);                /*                 * RegionContext should have been released by the deactivate                 * operation. We don't need access to it anymore here.                 */                if (RegionContext)                {                    *RegionContext = NULL;//.........这里部分代码省略.........
开发者ID:JasonFord53,项目名称:freebsd,代码行数:101,


示例9: AcpiEvInitializeRegion

ACPI_STATUSAcpiEvInitializeRegion (    ACPI_OPERAND_OBJECT     *RegionObj,    BOOLEAN                 AcpiNsLocked){    ACPI_OPERAND_OBJECT     *HandlerObj;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_ADR_SPACE_TYPE     SpaceId;    ACPI_NAMESPACE_NODE     *Node;    ACPI_STATUS             Status;    ACPI_NAMESPACE_NODE     *MethodNode;    ACPI_NAME               *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG;    ACPI_OPERAND_OBJECT     *RegionObj2;    ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked);    if (!RegionObj)    {        return_ACPI_STATUS (AE_BAD_PARAMETER);    }    if (RegionObj->Common.Flags & AOPOBJ_OBJECT_INITIALIZED)    {        return_ACPI_STATUS (AE_OK);    }    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    Node = AcpiNsGetParentNode (RegionObj->Region.Node);    SpaceId = RegionObj->Region.SpaceId;    /* Setup defaults */    RegionObj->Region.Handler = NULL;    RegionObj2->Extra.Method_REG = NULL;    RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE);    RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED;    /* Find any "_REG" method associated with this region definition */    Status = AcpiNsSearchOneScope (                *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode);    if (ACPI_SUCCESS (Status))    {        /*         * The _REG method is optional and there can be only one per region         * definition. This will be executed when the handler is attached         * or removed         */        RegionObj2->Extra.Method_REG = MethodNode;    }    /*     * The following loop depends upon the root Node having no parent     * ie: AcpiGbl_RootNode->ParentEntry being set to NULL     */    while (Node)    {        /* Check to see if a handler exists */        HandlerObj = NULL;        ObjDesc = AcpiNsGetAttachedObject (Node);        if (ObjDesc)        {            /* Can only be a handler if the object exists */            switch (Node->Type)            {            case ACPI_TYPE_DEVICE:                HandlerObj = ObjDesc->Device.Handler;                break;            case ACPI_TYPE_PROCESSOR:                HandlerObj = ObjDesc->Processor.Handler;                break;            case ACPI_TYPE_THERMAL:                HandlerObj = ObjDesc->ThermalZone.Handler;                break;            default:                /* Ignore other objects */                break;            }            while (HandlerObj)            {                /* Is this handler of the correct type? */                if (HandlerObj->AddressSpace.SpaceId == SpaceId)                {//.........这里部分代码省略.........
开发者ID:DangerDexter,项目名称:FreeBSD-8.0-dyntick,代码行数:101,


示例10: AcpiEvExecuteRegMethod

static ACPI_STATUSAcpiEvExecuteRegMethod (    ACPI_OPERAND_OBJECT    *RegionObj,    UINT32                  Function){    ACPI_OPERAND_OBJECT    *Params[3];    ACPI_OPERAND_OBJECT    *RegionObj2;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE ("EvExecuteRegMethod");    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    if (RegionObj2->Extra.Method_REG == NULL)    {        return_ACPI_STATUS (AE_OK);    }    /*     *  _REG method has two arguments     *  Arg0:   Integer: Operation region space ID     *          Same value as RegionObj->Region.SpaceId     *  Arg1:   Integer: connection status     *          1 for connecting the handler,     *          0 for disconnecting the handler     *          Passed as a parameter     */    Params[0] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);    if (!Params[0])    {        return_ACPI_STATUS (AE_NO_MEMORY);    }    Params[1] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);    if (!Params[1])    {        Status = AE_NO_MEMORY;        goto Cleanup;    }    /*     *  Set up the parameter objects     */    Params[0]->Integer.Value = RegionObj->Region.SpaceId;    Params[1]->Integer.Value = Function;    Params[2] = NULL;    /*     *  Execute the method, no return value     */    ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_METHOD, RegionObj2->Extra.Method_REG, NULL));    Status = AcpiNsEvaluateByHandle (RegionObj2->Extra.Method_REG, Params, NULL);    AcpiUtRemoveReference (Params[1]);Cleanup:    AcpiUtRemoveReference (Params[0]);    return_ACPI_STATUS (Status);}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:66,


示例11: AcpiEvAddressSpaceDispatch

ACPI_STATUSAcpiEvAddressSpaceDispatch (    ACPI_OPERAND_OBJECT     *RegionObj,    UINT32                  Function,    UINT32                  RegionOffset,    UINT32                  BitWidth,    UINT64                  *Value){    ACPI_STATUS             Status;    ACPI_ADR_SPACE_HANDLER  Handler;    ACPI_ADR_SPACE_SETUP    RegionSetup;    ACPI_OPERAND_OBJECT     *HandlerDesc;    ACPI_OPERAND_OBJECT     *RegionObj2;    void                    *RegionContext = NULL;    ACPI_FUNCTION_TRACE (EvAddressSpaceDispatch);    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    /* Ensure that there is a handler associated with this region */    HandlerDesc = RegionObj->Region.Handler;    if (!HandlerDesc)    {        ACPI_ERROR ((AE_INFO,            "No handler for Region [%4.4s] (%p) [%s]",            AcpiUtGetNodeName (RegionObj->Region.Node),            RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));        return_ACPI_STATUS (AE_NOT_EXIST);    }    /*     * It may be the case that the region has never been initialized.     * Some types of regions require special init code     */    if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE))    {        /* This region has not been initialized yet, do it */        RegionSetup = HandlerDesc->AddressSpace.Setup;        if (!RegionSetup)        {            /* No initialization routine, exit with error */            ACPI_ERROR ((AE_INFO,                "No init routine for region(%p) [%s]",                RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (AE_NOT_EXIST);        }        /*         * We must exit the interpreter because the region setup will         * potentially execute control methods (for example, the _REG method         * for this region)         */        AcpiExExitInterpreter ();        Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE,                    HandlerDesc->AddressSpace.Context, &RegionContext);        /* Re-enter the interpreter */        AcpiExEnterInterpreter ();        /* Check for failure of the Region Setup */        if (ACPI_FAILURE (Status))        {            ACPI_EXCEPTION ((AE_INFO, Status,                "During region initialization: [%s]",                AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (Status);        }        /* Region initialization may have been completed by RegionSetup */        if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE))        {            RegionObj->Region.Flags |= AOPOBJ_SETUP_COMPLETE;            if (RegionObj2->Extra.RegionContext)            {                /* The handler for this region was already installed */                ACPI_FREE (RegionContext);            }            else            {                /*                 * Save the returned context for use in all accesses to                 * this particular region                 */                RegionObj2->Extra.RegionContext = RegionContext;//.........这里部分代码省略.........
开发者ID:animotron,项目名称:animos,代码行数:101,


示例12: AcpiEvAddressSpaceDispatch

ACPI_STATUSAcpiEvAddressSpaceDispatch (    ACPI_OPERAND_OBJECT     *RegionObj,    UINT32                  Function,    ACPI_PHYSICAL_ADDRESS   Address,    UINT32                  BitWidth,    void                    *Value){    ACPI_STATUS             Status;    ACPI_STATUS             Status2;    ACPI_ADR_SPACE_HANDLER  Handler;    ACPI_ADR_SPACE_SETUP    RegionSetup;    ACPI_OPERAND_OBJECT     *HandlerDesc;    ACPI_OPERAND_OBJECT     *RegionObj2;    void                    *RegionContext = NULL;    ACPI_FUNCTION_TRACE ("EvAddressSpaceDispatch");    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    /*     * Ensure that there is a handler associated with this region     */    HandlerDesc = RegionObj->Region.AddrHandler;    if (!HandlerDesc)    {        ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "no handler for region(%p) [%s]/n",            RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));        return_ACPI_STATUS (AE_NOT_EXIST);    }    /*     * It may be the case that the region has never been initialized     * Some types of regions require special init code     */    if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE))    {        /*         * This region has not been initialized yet, do it         */        RegionSetup = HandlerDesc->AddrHandler.Setup;        if (!RegionSetup)        {            /*             *  Bad news, no init routine and not init'd             */            ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No init routine for region(%p) [%s]/n",                RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (AE_UNKNOWN_STATUS);        }        /*         * We must exit the interpreter because the region setup will potentially         * execute control methods         */        AcpiExExitInterpreter ();        Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE,                        HandlerDesc->AddrHandler.Context, &RegionContext);        /* Re-enter the interpreter */        Status2 = AcpiExEnterInterpreter ();        if (ACPI_FAILURE (Status2))        {            return_ACPI_STATUS (Status2);        }        /*         *  Init routine may fail         */        if (ACPI_FAILURE (Status))        {            ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Region Init: %s [%s]/n",                AcpiFormatException (Status),                AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            return_ACPI_STATUS (Status);        }        RegionObj->Region.Flags |= AOPOBJ_SETUP_COMPLETE;        /*         *  Save the returned context for use in all accesses to         *  this particular region.         */        RegionObj2->Extra.RegionContext = RegionContext;    }    /*     *  We have everything we need, begin the process     */    Handler = HandlerDesc->AddrHandler.Handler;//.........这里部分代码省略.........
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:101,


示例13: AcpiEvExecuteRegMethod

ACPI_STATUSAcpiEvExecuteRegMethod (    ACPI_OPERAND_OBJECT     *RegionObj,    UINT32                  Function){    ACPI_EVALUATE_INFO      *Info;    ACPI_OPERAND_OBJECT     *Args[3];    ACPI_OPERAND_OBJECT     *RegionObj2;    const ACPI_NAME         *RegNamePtr = ACPI_CAST_PTR (ACPI_NAME, METHOD_NAME__REG);    ACPI_NAMESPACE_NODE     *MethodNode;    ACPI_NAMESPACE_NODE     *Node;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (EvExecuteRegMethod);    if (!AcpiGbl_NamespaceInitialized ||        RegionObj->Region.Handler == NULL)    {        return_ACPI_STATUS (AE_OK);    }    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_ACPI_STATUS (AE_NOT_EXIST);    }    /*     * Find any "_REG" method associated with this region definition.     * The method should always be updated as this function may be     * invoked after a namespace change.     */    Node = RegionObj->Region.Node->Parent;    Status = AcpiNsSearchOneScope (        *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode);    if (ACPI_SUCCESS (Status))    {        /*         * The _REG method is optional and there can be only one per         * region definition. This will be executed when the handler is         * attached or removed.         */        RegionObj2->Extra.Method_REG = MethodNode;    }    if (RegionObj2->Extra.Method_REG == NULL)    {        return_ACPI_STATUS (AE_OK);    }    /* _REG(DISCONNECT) should be paired with _REG(CONNECT) */    if ((Function == ACPI_REG_CONNECT &&        RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED) ||        (Function == ACPI_REG_DISCONNECT &&         !(RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED)))    {        return_ACPI_STATUS (AE_OK);    }    /* Allocate and initialize the evaluation information block */    Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));    if (!Info)    {        return_ACPI_STATUS (AE_NO_MEMORY);    }    Info->PrefixNode = RegionObj2->Extra.Method_REG;    Info->RelativePathname = NULL;    Info->Parameters = Args;    Info->Flags = ACPI_IGNORE_RETURN_VALUE;    /*     * The _REG method has two arguments:     *     * Arg0 - Integer:     *  Operation region space ID Same value as RegionObj->Region.SpaceId     *     * Arg1 - Integer:     *  connection status 1 for connecting the handler, 0 for disconnecting     *  the handler (Passed as a parameter)     */    Args[0] = AcpiUtCreateIntegerObject ((UINT64) RegionObj->Region.SpaceId);    if (!Args[0])    {        Status = AE_NO_MEMORY;        goto Cleanup1;    }    Args[1] = AcpiUtCreateIntegerObject ((UINT64) Function);    if (!Args[1])    {        Status = AE_NO_MEMORY;        goto Cleanup2;    }    Args[2] = NULL; /* Terminate list *///.........这里部分代码省略.........
开发者ID:Moteesh,项目名称:reactos,代码行数:101,


示例14: AcpiEvDetachRegion

voidAcpiEvDetachRegion(    ACPI_OPERAND_OBJECT     *RegionObj,    BOOLEAN                 AcpiNsIsLocked){    ACPI_OPERAND_OBJECT     *HandlerObj;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_OPERAND_OBJECT     **LastObjPtr;    ACPI_ADR_SPACE_SETUP    RegionSetup;    void                    *RegionContext;    ACPI_OPERAND_OBJECT     *RegionObj2;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE ("EvDetachRegion");    RegionObj2 = AcpiNsGetSecondaryObject (RegionObj);    if (!RegionObj2)    {        return_VOID;    }    RegionContext = RegionObj2->Extra.RegionContext;    /*     *  Get the address handler from the region object     */    HandlerObj = RegionObj->Region.AddrHandler;    if (!HandlerObj)    {        /*         *  This region has no handler, all done         */        return_VOID;    }    /*     *  Find this region in the handler's list     */    ObjDesc = HandlerObj->AddrHandler.RegionList;    LastObjPtr = &HandlerObj->AddrHandler.RegionList;    while (ObjDesc)    {        /*         *  See if this is the one         */        if (ObjDesc == RegionObj)        {            ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,                "Removing Region %p from address handler %p/n",                RegionObj, HandlerObj));            /*             *  This is it, remove it from the handler's list             */            *LastObjPtr = ObjDesc->Region.Next;            ObjDesc->Region.Next = NULL;            /* Must clear field */            if (AcpiNsIsLocked)            {                Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);                if (ACPI_FAILURE (Status))                {                    return_VOID;                }            }            /*             *  Now stop region accesses by executing the _REG method             */            Status = AcpiEvExecuteRegMethod (RegionObj, 0);            if (ACPI_FAILURE (Status))            {                ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s from region _REG, [%s]/n",                    AcpiFormatException (Status),                    AcpiUtGetRegionName (RegionObj->Region.SpaceId)));            }            if (AcpiNsIsLocked)            {                Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);                if (ACPI_FAILURE (Status))                {                    return_VOID;                }            }            /*             *  Call the setup handler with the deactivate notification             */            RegionSetup = HandlerObj->AddrHandler.Setup;            Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE,                            HandlerObj->AddrHandler.Context, &RegionContext);            /*             *  Init routine may fail, Just ignore errors             */            if (ACPI_FAILURE (Status))            {//.........这里部分代码省略.........
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:101,


示例15: AcpiUtDeleteInternalObj

//.........这里部分代码省略.........    case ACPI_TYPE_EVENT:        ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,                           "***** Event %p, OS Semaphore %p/n",                           Object, Object->Event.OsSemaphore));        (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore);        Object->Event.OsSemaphore = NULL;        break;    case ACPI_TYPE_METHOD:        ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,                           "***** Method %p/n", Object));        /* Delete the method mutex if it exists */        if (Object->Method.Mutex)        {            AcpiOsDeleteMutex (Object->Method.Mutex->Mutex.OsMutex);            AcpiUtDeleteObjectDesc (Object->Method.Mutex);            Object->Method.Mutex = NULL;        }        break;    case ACPI_TYPE_REGION:        ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,                           "***** Region %p/n", Object));        SecondDesc = AcpiNsGetSecondaryObject (Object);        if (SecondDesc)        {            /*             * Free the RegionContext if and only if the handler is one of the             * default handlers -- and therefore, we created the context object             * locally, it was not created by an external caller.             */            HandlerDesc = Object->Region.Handler;            if (HandlerDesc)            {                if (HandlerDesc->AddressSpace.HandlerFlags &                        ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)                {                    /* Deactivate region and free region context */                    if (HandlerDesc->AddressSpace.Setup)                    {                        (void) HandlerDesc->AddressSpace.Setup (Object,                                                                ACPI_REGION_DEACTIVATE,                                                                HandlerDesc->AddressSpace.Context,                                                                &SecondDesc->Extra.RegionContext);                    }                }                AcpiUtRemoveReference (HandlerDesc);            }            /* Now we can free the Extra object */            AcpiUtDeleteObjectDesc (SecondDesc);        }        break;
开发者ID:oza,项目名称:FreeBSD-7.3-dyntick,代码行数:67,



注:本文中的AcpiNsGetSecondaryObject函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AcpiNsGetType函数代码示例
C++ AcpiNsGetNode函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。