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

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

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

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

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

示例1: AcpiDsCreateMethodMutex

static ACPI_STATUSAcpiDsCreateMethodMutex (    ACPI_OPERAND_OBJECT     *MethodDesc){    ACPI_OPERAND_OBJECT     *MutexDesc;    ACPI_STATUS             Status;    ACPI_FUNCTION_TRACE (DsCreateMethodMutex);    /* Create the new mutex object */    MutexDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX);    if (!MutexDesc)    {        return_ACPI_STATUS (AE_NO_MEMORY);    }    /* Create the actual OS Mutex */    Status = AcpiOsCreateMutex (&MutexDesc->Mutex.OsMutex);    if (ACPI_FAILURE (Status))    {        AcpiUtDeleteObjectDesc (MutexDesc);        return_ACPI_STATUS (Status);    }    MutexDesc->Mutex.SyncLevel = MethodDesc->Method.SyncLevel;    MethodDesc->Method.Mutex = MutexDesc;    return_ACPI_STATUS (AE_OK);}
开发者ID:Lxg1582,项目名称:freebsd,代码行数:32,


示例2: AcpiDsCreateOperand

//.........这里部分代码省略.........        }        /* Put the resulting object onto the current object stack */        Status = AcpiDsObjStackPush (ObjDesc, WalkState);        if (ACPI_FAILURE (Status))        {            return_ACPI_STATUS (Status);        }        ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState));    }    else    {        /* Check for null name case */        if ((Arg->Common.AmlOpcode == AML_INT_NAMEPATH_OP) &&            !(Arg->Common.Flags & ACPI_PARSEOP_IN_STACK))        {            /*             * If the name is null, this means that this is an             * optional result parameter that was not specified             * in the original ASL. Create a Zero Constant for a             * placeholder. (Store to a constant is a Noop.)             */            Opcode = AML_ZERO_OP;       /* Has no arguments! */            ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,                "Null namepath: Arg=%p/n", Arg));        }        else        {            Opcode = Arg->Common.AmlOpcode;        }        /* Get the object type of the argument */        OpInfo = AcpiPsGetOpcodeInfo (Opcode);        if (OpInfo->ObjectType == ACPI_TYPE_INVALID)        {            return_ACPI_STATUS (AE_NOT_IMPLEMENTED);        }        if ((OpInfo->Flags & AML_HAS_RETVAL) || (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK))        {            ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,                "Argument previously created, already stacked/n"));            ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (                WalkState->Operands [WalkState->NumOperands - 1], WalkState));            /*             * Use value that was already previously returned             * by the evaluation of this argument             */            Status = AcpiDsResultPop (&ObjDesc, WalkState);            if (ACPI_FAILURE (Status))            {                /*                 * Only error is underflow, and this indicates                 * a missing or null operand!                 */                ACPI_EXCEPTION ((AE_INFO, Status,                    "Missing or null operand"));                return_ACPI_STATUS (Status);            }        }        else        {            /* Create an ACPI_INTERNAL_OBJECT for the argument */            ObjDesc = AcpiUtCreateInternalObject (OpInfo->ObjectType);            if (!ObjDesc)            {                return_ACPI_STATUS (AE_NO_MEMORY);            }            /* Initialize the new object */            Status = AcpiDsInitObjectFromOp (                        WalkState, Arg, Opcode, &ObjDesc);            if (ACPI_FAILURE (Status))            {                AcpiUtDeleteObjectDesc (ObjDesc);                return_ACPI_STATUS (Status);            }        }        /* Put the operand object on the object stack */        Status = AcpiDsObjStackPush (ObjDesc, WalkState);        if (ACPI_FAILURE (Status))        {            return_ACPI_STATUS (Status);        }        ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState));    }    return_ACPI_STATUS (AE_OK);}
开发者ID:ornarium,项目名称:freebsd,代码行数:101,


示例3: AcpiDsBuildInternalPackageObj

ACPI_STATUSAcpiDsBuildInternalPackageObj (    ACPI_WALK_STATE         *WalkState,    ACPI_PARSE_OBJECT       *Op,    UINT32                  ElementCount,    ACPI_OPERAND_OBJECT     **ObjDescPtr){    ACPI_PARSE_OBJECT       *Arg;    ACPI_PARSE_OBJECT       *Parent;    ACPI_OPERAND_OBJECT     *ObjDesc = NULL;    ACPI_STATUS             Status = AE_OK;    UINT32                  i;    UINT16                  Index;    UINT16                  ReferenceCount;    ACPI_FUNCTION_TRACE (DsBuildInternalPackageObj);    /* Find the parent of a possibly nested package */    Parent = Op->Common.Parent;    while ((Parent->Common.AmlOpcode == AML_PACKAGE_OP) ||           (Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))    {        Parent = Parent->Common.Parent;    }    /*     * If we are evaluating a Named package object "Name (xxxx, Package)",     * the package object already exists, otherwise it must be created.     */    ObjDesc = *ObjDescPtr;    if (!ObjDesc)    {        ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE);        *ObjDescPtr = ObjDesc;        if (!ObjDesc)        {            return_ACPI_STATUS (AE_NO_MEMORY);        }        ObjDesc->Package.Node = Parent->Common.Node;    }    /*     * Allocate the element array (array of pointers to the individual     * objects) based on the NumElements parameter. Add an extra pointer slot     * so that the list is always null terminated.     */    ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED (        ((ACPI_SIZE) ElementCount + 1) * sizeof (void *));    if (!ObjDesc->Package.Elements)    {        AcpiUtDeleteObjectDesc (ObjDesc);        return_ACPI_STATUS (AE_NO_MEMORY);    }    ObjDesc->Package.Count = ElementCount;    /*     * Initialize the elements of the package, up to the NumElements count.     * Package is automatically padded with uninitialized (NULL) elements     * if NumElements is greater than the package list length. Likewise,     * Package is truncated if NumElements is less than the list length.     */    Arg = Op->Common.Value.Arg;    Arg = Arg->Common.Next;    for (i = 0; Arg && (i < ElementCount); i++)    {        if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)        {            if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)            {                /*                 * A method reference "looks" to the parser to be a method                 * invocation, so we special case it here                 */                Arg->Common.AmlOpcode = AML_INT_NAMEPATH_OP;                Status = AcpiDsBuildInternalObject (WalkState, Arg,                            &ObjDesc->Package.Elements[i]);            }            else            {                /* This package element is already built, just get it */                ObjDesc->Package.Elements[i] =                    ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node);            }        }        else        {            Status = AcpiDsBuildInternalObject (WalkState, Arg,                        &ObjDesc->Package.Elements[i]);        }        if (*ObjDescPtr)        {            /* Existing package, get existing reference count *///.........这里部分代码省略.........
开发者ID:ornarium,项目名称:freebsd,代码行数:101,


示例4: AcpiDsBuildInternalBufferObj

ACPI_STATUSAcpiDsBuildInternalBufferObj (    ACPI_WALK_STATE         *WalkState,    ACPI_PARSE_OBJECT       *Op,    UINT32                  BufferLength,    ACPI_OPERAND_OBJECT     **ObjDescPtr){    ACPI_PARSE_OBJECT       *Arg;    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_PARSE_OBJECT       *ByteList;    UINT32                  ByteListLength = 0;    ACPI_FUNCTION_TRACE (DsBuildInternalBufferObj);    /*     * If we are evaluating a Named buffer object "Name (xxxx, Buffer)".     * The buffer object already exists (from the NS node), otherwise it must     * be created.     */    ObjDesc = *ObjDescPtr;    if (!ObjDesc)    {        /* Create a new buffer object */        ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);        *ObjDescPtr = ObjDesc;        if (!ObjDesc)        {            return_ACPI_STATUS (AE_NO_MEMORY);        }    }    /*     * Second arg is the buffer data (optional) ByteList can be either     * individual bytes or a string initializer. In either case, a     * ByteList appears in the AML.     */    Arg = Op->Common.Value.Arg;         /* skip first arg */    ByteList = Arg->Named.Next;    if (ByteList)    {        if (ByteList->Common.AmlOpcode != AML_INT_BYTELIST_OP)        {            ACPI_ERROR ((AE_INFO,                "Expecting bytelist, found AML opcode 0x%X in op %p",                ByteList->Common.AmlOpcode, ByteList));            AcpiUtRemoveReference (ObjDesc);            return (AE_TYPE);        }        ByteListLength = (UINT32) ByteList->Common.Value.Integer;    }    /*     * The buffer length (number of bytes) will be the larger of:     * 1) The specified buffer length and     * 2) The length of the initializer byte list     */    ObjDesc->Buffer.Length = BufferLength;    if (ByteListLength > BufferLength)    {        ObjDesc->Buffer.Length = ByteListLength;    }    /* Allocate the buffer */    if (ObjDesc->Buffer.Length == 0)    {        ObjDesc->Buffer.Pointer = NULL;        ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,            "Buffer defined with zero length in AML, creating/n"));    }    else    {        ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED (                                        ObjDesc->Buffer.Length);        if (!ObjDesc->Buffer.Pointer)        {            AcpiUtDeleteObjectDesc (ObjDesc);            return_ACPI_STATUS (AE_NO_MEMORY);        }        /* Initialize buffer from the ByteList (if present) */        if (ByteList)        {            ACPI_MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Named.Data,                         ByteListLength);        }    }    ObjDesc->Buffer.Flags |= AOPOBJ_DATA_VALID;    Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc);    return_ACPI_STATUS (AE_OK);}
开发者ID:ornarium,项目名称:freebsd,代码行数:99,


示例5: AcpiUtDeleteInternalObj

//.........这里部分代码省略.........            (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore);            AcpiGbl_GlobalLockSemaphore = NULL;            AcpiOsDeleteMutex (Object->Mutex.OsMutex);            AcpiGbl_GlobalLockMutex = NULL;        }        else        {            AcpiExUnlinkMutex (Object);            AcpiOsDeleteMutex (Object->Mutex.OsMutex);        }        break;    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));        /*         * 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;
开发者ID:99corps,项目名称:runtime,代码行数:67,


示例6: AcpiDsBuildInternalPackageObj

ACPI_STATUSAcpiDsBuildInternalPackageObj (    ACPI_WALK_STATE         *WalkState,    ACPI_PARSE_OBJECT       *Op,    UINT32                  ElementCount,    ACPI_OPERAND_OBJECT     **ObjDescPtr){    ACPI_PARSE_OBJECT       *Arg;    ACPI_PARSE_OBJECT       *Parent;    ACPI_OPERAND_OBJECT     *ObjDesc = NULL;    ACPI_STATUS             Status = AE_OK;    ACPI_NATIVE_UINT        i;    ACPI_FUNCTION_TRACE (DsBuildInternalPackageObj);    /* Find the parent of a possibly nested package */    Parent = Op->Common.Parent;    while ((Parent->Common.AmlOpcode == AML_PACKAGE_OP) ||           (Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))    {        Parent = Parent->Common.Parent;    }    /*     * If we are evaluating a Named package object "Name (xxxx, Package)",     * the package object already exists, otherwise it must be created.     */    ObjDesc = *ObjDescPtr;    if (!ObjDesc)    {        ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE);        *ObjDescPtr = ObjDesc;        if (!ObjDesc)        {            return_ACPI_STATUS (AE_NO_MEMORY);        }        ObjDesc->Package.Node = Parent->Common.Node;    }    /*     * Allocate the element array (array of pointers to the individual     * objects) based on the NumElements parameter. Add an extra pointer slot     * so that the list is always null terminated.     */    ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED (        ((ACPI_SIZE) ElementCount + 1) * sizeof (void *));    if (!ObjDesc->Package.Elements)    {        AcpiUtDeleteObjectDesc (ObjDesc);        return_ACPI_STATUS (AE_NO_MEMORY);    }    ObjDesc->Package.Count = ElementCount;    /*     * Initialize the elements of the package, up to the NumElements count.     * Package is automatically padded with uninitialized (NULL) elements     * if NumElements is greater than the package list length. Likewise,     * Package is truncated if NumElements is less than the list length.     */    Arg = Op->Common.Value.Arg;    Arg = Arg->Common.Next;    for (i = 0; Arg && (i < ElementCount); i++)    {        if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)        {            /* This package element is already built, just get it */            ObjDesc->Package.Elements[i] =                ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node);        }        else        {            Status = AcpiDsBuildInternalObject (WalkState, Arg,                        &ObjDesc->Package.Elements[i]);        }        Arg = Arg->Common.Next;    }    if (!Arg)    {        ACPI_DEBUG_PRINT ((ACPI_DB_INFO,            "Package List length larger than NumElements count (%X), truncated/n",            ElementCount));    }    ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;    Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc);    return_ACPI_STATUS (Status);}
开发者ID:andreiw,项目名称:polaris,代码行数:95,


示例7: AcpiUtCreateInternalObjectDbg

ACPI_OPERAND_OBJECT  *AcpiUtCreateInternalObjectDbg (    const char              *ModuleName,    UINT32                  LineNumber,    UINT32                  ComponentId,    ACPI_OBJECT_TYPE        Type){    ACPI_OPERAND_OBJECT     *Object;    ACPI_OPERAND_OBJECT     *SecondObject;    ACPI_FUNCTION_TRACE_STR (UtCreateInternalObjectDbg,        AcpiUtGetTypeName (Type));    /* Allocate the raw object descriptor */    Object = AcpiUtAllocateObjectDescDbg (        ModuleName, LineNumber, ComponentId);    if (!Object)    {        return_PTR (NULL);    }    switch (Type)    {    case ACPI_TYPE_REGION:    case ACPI_TYPE_BUFFER_FIELD:    case ACPI_TYPE_LOCAL_BANK_FIELD:        /* These types require a secondary object */        SecondObject = AcpiUtAllocateObjectDescDbg (            ModuleName, LineNumber, ComponentId);        if (!SecondObject)        {            AcpiUtDeleteObjectDesc (Object);            return_PTR (NULL);        }        SecondObject->Common.Type = ACPI_TYPE_LOCAL_EXTRA;        SecondObject->Common.ReferenceCount = 1;        /* Link the second object to the first */        Object->Common.NextObject = SecondObject;        break;    default:        /* All others have no secondary object */        break;    }    /* Save the object type in the object descriptor */    Object->Common.Type = (UINT8) Type;    /* Init the reference count */    Object->Common.ReferenceCount = 1;    /* Any per-type initialization should go here */    return_PTR (Object);}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:66,


示例8: AcpiExPrepFieldValue

ACPI_STATUSAcpiExPrepFieldValue (    ACPI_CREATE_FIELD_INFO  *Info){    ACPI_OPERAND_OBJECT     *ObjDesc;    ACPI_OPERAND_OBJECT     *SecondDesc = NULL;    ACPI_STATUS             Status;    UINT32                  AccessByteWidth;    UINT32                  Type;    ACPI_FUNCTION_TRACE (ExPrepFieldValue);    /* Parameter validation */    if (Info->FieldType != ACPI_TYPE_LOCAL_INDEX_FIELD)    {        if (!Info->RegionNode)        {            ACPI_ERROR ((AE_INFO, "Null RegionNode"));            return_ACPI_STATUS (AE_AML_NO_OPERAND);        }        Type = AcpiNsGetType (Info->RegionNode);        if (Type != ACPI_TYPE_REGION)        {            ACPI_ERROR ((AE_INFO, "Needed Region, found type 0x%X (%s)",                Type, AcpiUtGetTypeName (Type)));            return_ACPI_STATUS (AE_AML_OPERAND_TYPE);        }    }    /* Allocate a new field object */    ObjDesc = AcpiUtCreateInternalObject (Info->FieldType);    if (!ObjDesc)    {        return_ACPI_STATUS (AE_NO_MEMORY);    }    /* Initialize areas of the object that are common to all fields */    ObjDesc->CommonField.Node = Info->FieldNode;    Status = AcpiExPrepCommonFieldObject (ObjDesc,                Info->FieldFlags, Info->Attribute,                Info->FieldBitPosition, Info->FieldBitLength);    if (ACPI_FAILURE (Status))    {        AcpiUtDeleteObjectDesc (ObjDesc);        return_ACPI_STATUS (Status);    }    /* Initialize areas of the object that are specific to the field type */    switch (Info->FieldType)    {    case ACPI_TYPE_LOCAL_REGION_FIELD:        ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode);        /* Fields specific to GenericSerialBus fields */        ObjDesc->Field.AccessLength = Info->AccessLength;        if (Info->ConnectionNode)        {            SecondDesc = Info->ConnectionNode->Object;            if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID))            {                Status = AcpiDsGetBufferArguments (SecondDesc);                if (ACPI_FAILURE (Status))                {                    AcpiUtDeleteObjectDesc (ObjDesc);                    return_ACPI_STATUS (Status);                }            }            ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer;            ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length;        }        else if (Info->ResourceBuffer)        {            ObjDesc->Field.ResourceBuffer = Info->ResourceBuffer;            ObjDesc->Field.ResourceLength = Info->ResourceLength;        }        /* Allow full data read from EC address space */        if ((ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_EC) &&            (ObjDesc->CommonField.BitLength > 8))        {            AccessByteWidth = ACPI_ROUND_BITS_UP_TO_BYTES (                ObjDesc->CommonField.BitLength);            /* Maximum byte width supported is 255 */            if (AccessByteWidth < 256)            {//.........这里部分代码省略.........
开发者ID:CSharpLover,项目名称:MosquitOS,代码行数:101,


示例9: AcpiUtDeleteInternalObj

//.........这里部分代码省略.........            AcpiOsDeleteMutex (Object->Mutex.OsMutex);            AcpiGbl_GlobalLockMutex = NULL;        }        else        {            AcpiExUnlinkMutex (Object);            AcpiOsDeleteMutex (Object->Mutex.OsMutex);        }        break;    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);
开发者ID:oza,项目名称:FreeBSD-7.3-dyntick,代码行数:67,


示例10: AcpiDsBuildInternalPackageObj

ACPI_STATUSAcpiDsBuildInternalPackageObj (    ACPI_WALK_STATE         *WalkState,    ACPI_PARSE_OBJECT       *Op,    UINT32                  PackageLength,    ACPI_OPERAND_OBJECT     **ObjDescPtr){    ACPI_PARSE_OBJECT       *Arg;    ACPI_PARSE_OBJECT       *Parent;    ACPI_OPERAND_OBJECT     *ObjDesc = NULL;    UINT32                  PackageListLength;    ACPI_STATUS             Status = AE_OK;    UINT32                  i;    ACPI_FUNCTION_TRACE ("DsBuildInternalPackageObj");    /* Find the parent of a possibly nested package */    Parent = Op->Common.Parent;    while ((Parent->Common.AmlOpcode == AML_PACKAGE_OP)     ||           (Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))    {        Parent = Parent->Common.Parent;    }    ObjDesc = *ObjDescPtr;    if (ObjDesc)    {        /*         * We are evaluating a Named package object "Name (xxxx, Package)".         * Get the existing package object from the NS node         */    }    else    {        ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE);        *ObjDescPtr = ObjDesc;        if (!ObjDesc)        {            return_ACPI_STATUS (AE_NO_MEMORY);        }        ObjDesc->Package.Node = Parent->Common.Node;    }    ObjDesc->Package.Count = PackageLength;    /* Count the number of items in the package list */    PackageListLength = 0;    Arg = Op->Common.Value.Arg;    Arg = Arg->Common.Next;    while (Arg)    {        PackageListLength++;        Arg = Arg->Common.Next;    }    /*     * The package length (number of elements) will be the greater     * of the specified length and the length of the initializer list     */    if (PackageListLength > PackageLength)    {        ObjDesc->Package.Count = PackageListLength;    }    /*     * Allocate the pointer array (array of pointers to the     * individual objects). Add an extra pointer slot so     * that the list is always null terminated.     */    ObjDesc->Package.Elements = ACPI_MEM_CALLOCATE (                ((ACPI_SIZE) ObjDesc->Package.Count + 1) * sizeof (void *));    if (!ObjDesc->Package.Elements)    {        AcpiUtDeleteObjectDesc (ObjDesc);        return_ACPI_STATUS (AE_NO_MEMORY);    }    /*     * Now init the elements of the package     */    i = 0;    Arg = Op->Common.Value.Arg;    Arg = Arg->Common.Next;    while (Arg)    {        if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)        {            /* Object (package or buffer) is already built */            ObjDesc->Package.Elements[i] = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node);        }        else        {            Status = AcpiDsBuildInternalObject (WalkState, Arg,//.........这里部分代码省略.........
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:101,



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


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