DynamicTablesPkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the DynamicTablesPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
committed by
mergify[bot]
parent
7c34237831
commit
731c67e1d7
@@ -27,50 +27,51 @@
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCloneNode (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
OUT AML_NODE_HEADER ** ClonedNode
|
||||
IN AML_NODE_HEADER *Node,
|
||||
OUT AML_NODE_HEADER **ClonedNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
AML_OBJECT_NODE * ObjectNode;
|
||||
AML_DATA_NODE * DataNode;
|
||||
AML_ROOT_NODE * RootNode;
|
||||
AML_OBJECT_NODE *ObjectNode;
|
||||
AML_DATA_NODE *DataNode;
|
||||
AML_ROOT_NODE *RootNode;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node) ||
|
||||
(ClonedNode == NULL)) {
|
||||
(ClonedNode == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (IS_AML_DATA_NODE (Node)) {
|
||||
DataNode = (AML_DATA_NODE*)Node;
|
||||
Status = AmlCreateDataNode (
|
||||
DataNode->DataType,
|
||||
DataNode->Buffer,
|
||||
DataNode->Size,
|
||||
(AML_DATA_NODE**)ClonedNode
|
||||
);
|
||||
DataNode = (AML_DATA_NODE *)Node;
|
||||
Status = AmlCreateDataNode (
|
||||
DataNode->DataType,
|
||||
DataNode->Buffer,
|
||||
DataNode->Size,
|
||||
(AML_DATA_NODE **)ClonedNode
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
}
|
||||
} else if (IS_AML_OBJECT_NODE (Node)) {
|
||||
ObjectNode = (AML_OBJECT_NODE*)Node;
|
||||
ObjectNode = (AML_OBJECT_NODE *)Node;
|
||||
|
||||
Status = AmlCreateObjectNode (
|
||||
ObjectNode->AmlByteEncoding,
|
||||
ObjectNode->PkgLen,
|
||||
(AML_OBJECT_NODE**)ClonedNode
|
||||
);
|
||||
ObjectNode->AmlByteEncoding,
|
||||
ObjectNode->PkgLen,
|
||||
(AML_OBJECT_NODE **)ClonedNode
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
}
|
||||
} else if (IS_AML_ROOT_NODE (Node)) {
|
||||
RootNode = (AML_ROOT_NODE*)Node;
|
||||
RootNode = (AML_ROOT_NODE *)Node;
|
||||
|
||||
Status = AmlCreateRootNode (
|
||||
RootNode->SdtHeader,
|
||||
(AML_ROOT_NODE**)ClonedNode
|
||||
(AML_ROOT_NODE **)ClonedNode
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
@@ -99,24 +100,25 @@ AmlCloneNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCloneTree (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
OUT AML_NODE_HEADER ** ClonedNode
|
||||
IN AML_NODE_HEADER *Node,
|
||||
OUT AML_NODE_HEADER **ClonedNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
AML_NODE_HEADER * HeadNode;
|
||||
AML_NODE_HEADER * ClonedChildNode;
|
||||
AML_NODE_HEADER * FixedArgNode;
|
||||
AML_NODE_HEADER *HeadNode;
|
||||
AML_NODE_HEADER *ClonedChildNode;
|
||||
AML_NODE_HEADER *FixedArgNode;
|
||||
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
|
||||
LIST_ENTRY * StartLink;
|
||||
LIST_ENTRY * CurrentLink;
|
||||
LIST_ENTRY *StartLink;
|
||||
LIST_ENTRY *CurrentLink;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node) ||
|
||||
(ClonedNode == NULL)) {
|
||||
(ClonedNode == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -129,10 +131,10 @@ AmlCloneTree (
|
||||
|
||||
// Clone the fixed arguments and bind them to their parent.
|
||||
MaxIndex = (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)Node
|
||||
(AML_OBJECT_NODE *)Node
|
||||
);
|
||||
for (Index = EAmlParseIndexTerm0; Index < MaxIndex; Index++) {
|
||||
FixedArgNode = AmlGetFixedArgument ((AML_OBJECT_NODE*)Node, Index);
|
||||
FixedArgNode = AmlGetFixedArgument ((AML_OBJECT_NODE *)Node, Index);
|
||||
if (FixedArgNode == NULL) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
ASSERT (0);
|
||||
@@ -151,7 +153,7 @@ AmlCloneTree (
|
||||
|
||||
// Bind child.
|
||||
Status = AmlSetFixedArgument (
|
||||
(AML_OBJECT_NODE*)HeadNode,
|
||||
(AML_OBJECT_NODE *)HeadNode,
|
||||
Index,
|
||||
ClonedChildNode
|
||||
);
|
||||
@@ -168,7 +170,7 @@ AmlCloneTree (
|
||||
CurrentLink = StartLink->ForwardLink;
|
||||
while (CurrentLink != StartLink) {
|
||||
// Clone child.
|
||||
Status = AmlCloneTree ((AML_NODE_HEADER*)CurrentLink, &ClonedChildNode);
|
||||
Status = AmlCloneTree ((AML_NODE_HEADER *)CurrentLink, &ClonedChildNode);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
goto error_handler;
|
||||
|
@@ -24,8 +24,8 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlInitializeNodeHeader (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN EAML_NODE_TYPE NodeType
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN EAML_NODE_TYPE NodeType
|
||||
)
|
||||
{
|
||||
if (Node == NULL) {
|
||||
@@ -35,7 +35,7 @@ AmlInitializeNodeHeader (
|
||||
|
||||
InitializeListHead (&Node->Link);
|
||||
|
||||
Node->Parent = NULL;
|
||||
Node->Parent = NULL;
|
||||
Node->NodeType = NodeType;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
@@ -55,7 +55,7 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteRootNode (
|
||||
IN AML_ROOT_NODE * RootNode
|
||||
IN AML_ROOT_NODE *RootNode
|
||||
)
|
||||
{
|
||||
if (!IS_AML_ROOT_NODE (RootNode)) {
|
||||
@@ -90,15 +90,16 @@ AmlDeleteRootNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateRootNode (
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER * SdtHeader,
|
||||
OUT AML_ROOT_NODE ** NewRootNodePtr
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER *SdtHeader,
|
||||
OUT AML_ROOT_NODE **NewRootNodePtr
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_ROOT_NODE * RootNode;
|
||||
EFI_STATUS Status;
|
||||
AML_ROOT_NODE *RootNode;
|
||||
|
||||
if ((SdtHeader == NULL) ||
|
||||
(NewRootNodePtr == NULL)) {
|
||||
(NewRootNodePtr == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -149,7 +150,7 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteObjectNode (
|
||||
IN AML_OBJECT_NODE * ObjectNode
|
||||
IN AML_OBJECT_NODE *ObjectNode
|
||||
)
|
||||
{
|
||||
if (!IS_AML_OBJECT_NODE (ObjectNode)) {
|
||||
@@ -178,16 +179,17 @@ AmlDeleteObjectNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateObjectNode (
|
||||
IN CONST AML_BYTE_ENCODING * AmlByteEncoding,
|
||||
IN UINT32 PkgLength,
|
||||
OUT AML_OBJECT_NODE ** NewObjectNodePtr
|
||||
IN CONST AML_BYTE_ENCODING *AmlByteEncoding,
|
||||
IN UINT32 PkgLength,
|
||||
OUT AML_OBJECT_NODE **NewObjectNodePtr
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_OBJECT_NODE * ObjectNode;
|
||||
EFI_STATUS Status;
|
||||
AML_OBJECT_NODE *ObjectNode;
|
||||
|
||||
if ((AmlByteEncoding == NULL) ||
|
||||
(NewObjectNodePtr == NULL)) {
|
||||
(NewObjectNodePtr == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -212,7 +214,7 @@ AmlCreateObjectNode (
|
||||
// ObjectNode->FixedArgs[...] is already initialised to NULL as the
|
||||
// ObjectNode is Zero allocated.
|
||||
ObjectNode->AmlByteEncoding = AmlByteEncoding;
|
||||
ObjectNode->PkgLen = PkgLength;
|
||||
ObjectNode->PkgLen = PkgLength;
|
||||
|
||||
*NewObjectNodePtr = ObjectNode;
|
||||
|
||||
@@ -234,7 +236,7 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteDataNode (
|
||||
IN AML_DATA_NODE * DataNode
|
||||
IN AML_DATA_NODE *DataNode
|
||||
)
|
||||
{
|
||||
if (!IS_AML_DATA_NODE (DataNode)) {
|
||||
@@ -271,14 +273,14 @@ AmlDeleteDataNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateDataNode (
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN CONST UINT8 * Data,
|
||||
IN UINT32 DataSize,
|
||||
OUT AML_DATA_NODE ** NewDataNodePtr
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN CONST UINT8 *Data,
|
||||
IN UINT32 DataSize,
|
||||
OUT AML_DATA_NODE **NewDataNodePtr
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_DATA_NODE * DataNode;
|
||||
EFI_STATUS Status;
|
||||
AML_DATA_NODE *DataNode;
|
||||
|
||||
// A data node must not be created for certain data types.
|
||||
if ((DataType == EAmlNodeDataTypeNone) ||
|
||||
@@ -289,7 +291,8 @@ AmlCreateDataNode (
|
||||
(DataType == EAmlNodeDataTypeReserved5) ||
|
||||
(Data == NULL) ||
|
||||
(DataSize == 0) ||
|
||||
(NewDataNodePtr == NULL)) {
|
||||
(NewDataNodePtr == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -317,7 +320,7 @@ AmlCreateDataNode (
|
||||
}
|
||||
|
||||
DataNode->DataType = DataType;
|
||||
DataNode->Size = DataSize;
|
||||
DataNode->Size = DataSize;
|
||||
|
||||
*NewDataNodePtr = DataNode;
|
||||
|
||||
@@ -334,17 +337,18 @@ AmlCreateDataNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteNode (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EFI_STATUS Status;
|
||||
EAML_PARSE_INDEX Index;
|
||||
|
||||
// Check that the node being deleted is unlinked.
|
||||
// When removing the node, its parent and list are reset
|
||||
// with InitializeListHead. Thus it must be empty.
|
||||
if (!IS_AML_NODE_VALID (Node) ||
|
||||
!AML_NODE_IS_DETACHED (Node)) {
|
||||
!AML_NODE_IS_DETACHED (Node))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -358,10 +362,11 @@ AmlDeleteNode (
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
Status = AmlDeleteRootNode ((AML_ROOT_NODE*)Node);
|
||||
Status = AmlDeleteRootNode ((AML_ROOT_NODE *)Node);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -375,25 +380,27 @@ AmlDeleteNode (
|
||||
|
||||
// Check the fixed argument list has been cleaned.
|
||||
for (Index = EAmlParseIndexTerm0; Index < EAmlParseIndexMax; Index++) {
|
||||
if (((AML_OBJECT_NODE*)Node)->FixedArgs[Index] != NULL) {
|
||||
if (((AML_OBJECT_NODE *)Node)->FixedArgs[Index] != NULL) {
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
Status = AmlDeleteObjectNode ((AML_OBJECT_NODE*)Node);
|
||||
Status = AmlDeleteObjectNode ((AML_OBJECT_NODE *)Node);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EAmlNodeData:
|
||||
{
|
||||
Status = AmlDeleteDataNode ((AML_DATA_NODE*)Node);
|
||||
Status = AmlDeleteDataNode ((AML_DATA_NODE *)Node);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -421,12 +428,13 @@ AmlDeleteNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlNodeHasAttribute (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
IN AML_OP_ATTRIBUTE Attribute
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
IN AML_OP_ATTRIBUTE Attribute
|
||||
)
|
||||
{
|
||||
if (!IS_AML_OBJECT_NODE (ObjectNode) ||
|
||||
(ObjectNode->AmlByteEncoding == NULL)) {
|
||||
(ObjectNode->AmlByteEncoding == NULL))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -447,21 +455,22 @@ AmlNodeHasAttribute (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlNodeCompareOpCode (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
IN UINT8 OpCode,
|
||||
IN UINT8 SubOpCode
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
IN UINT8 OpCode,
|
||||
IN UINT8 SubOpCode
|
||||
)
|
||||
{
|
||||
if (!IS_AML_OBJECT_NODE (ObjectNode) ||
|
||||
(ObjectNode->AmlByteEncoding == NULL)) {
|
||||
(ObjectNode->AmlByteEncoding == NULL))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ASSERT (AmlIsOpCodeValid (OpCode, SubOpCode));
|
||||
|
||||
return ((ObjectNode->AmlByteEncoding->OpCode == OpCode) &&
|
||||
(ObjectNode->AmlByteEncoding->SubOpCode == SubOpCode)) ?
|
||||
TRUE : FALSE;
|
||||
(ObjectNode->AmlByteEncoding->SubOpCode == SubOpCode)) ?
|
||||
TRUE : FALSE;
|
||||
}
|
||||
|
||||
/** Check whether a Node is an integer node.
|
||||
@@ -480,13 +489,14 @@ AmlNodeCompareOpCode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsIntegerNode (
|
||||
IN AML_OBJECT_NODE * Node
|
||||
IN AML_OBJECT_NODE *Node
|
||||
)
|
||||
{
|
||||
UINT8 OpCode;
|
||||
UINT8 OpCode;
|
||||
|
||||
if (!IS_AML_OBJECT_NODE (Node) ||
|
||||
(Node->AmlByteEncoding == NULL)) {
|
||||
(Node->AmlByteEncoding == NULL))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -495,7 +505,8 @@ IsIntegerNode (
|
||||
if ((OpCode != AML_BYTE_PREFIX) &&
|
||||
(OpCode != AML_WORD_PREFIX) &&
|
||||
(OpCode != AML_DWORD_PREFIX) &&
|
||||
(OpCode != AML_QWORD_PREFIX)) {
|
||||
(OpCode != AML_QWORD_PREFIX))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -515,13 +526,14 @@ IsIntegerNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsSpecialIntegerNode (
|
||||
IN AML_OBJECT_NODE * Node
|
||||
IN AML_OBJECT_NODE *Node
|
||||
)
|
||||
{
|
||||
UINT8 OpCode;
|
||||
UINT8 OpCode;
|
||||
|
||||
if (!IS_AML_OBJECT_NODE (Node) ||
|
||||
(Node->AmlByteEncoding == NULL)) {
|
||||
(Node->AmlByteEncoding == NULL))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -529,7 +541,8 @@ IsSpecialIntegerNode (
|
||||
|
||||
if ((OpCode != AML_ZERO_OP) &&
|
||||
(OpCode != AML_ONE_OP) &&
|
||||
(OpCode != AML_ONES_OP)) {
|
||||
(OpCode != AML_ONES_OP))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -555,10 +568,10 @@ IsSpecialIntegerNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlIsMethodDefinitionNode (
|
||||
IN CONST AML_OBJECT_NODE * Node
|
||||
IN CONST AML_OBJECT_NODE *Node
|
||||
)
|
||||
{
|
||||
AML_DATA_NODE * ObjectType;
|
||||
AML_DATA_NODE *ObjectType;
|
||||
|
||||
// Node is checked to be an object node aswell.
|
||||
if (AmlNodeCompareOpCode (Node, AML_METHOD_OP, 0)) {
|
||||
@@ -569,14 +582,15 @@ AmlIsMethodDefinitionNode (
|
||||
// ExternalOp := 0x15
|
||||
// ObjectType := ByteData
|
||||
// ArgumentCount := ByteData (0 - 7)
|
||||
ObjectType = (AML_DATA_NODE*)AmlGetFixedArgument (
|
||||
(AML_OBJECT_NODE*)Node,
|
||||
EAmlParseIndexTerm1
|
||||
);
|
||||
ObjectType = (AML_DATA_NODE *)AmlGetFixedArgument (
|
||||
(AML_OBJECT_NODE *)Node,
|
||||
EAmlParseIndexTerm1
|
||||
);
|
||||
if (IS_AML_DATA_NODE (ObjectType) &&
|
||||
(ObjectType->DataType == EAmlNodeDataTypeUInt) &&
|
||||
((ObjectType->Size == 1))) {
|
||||
if (*((UINT8*)ObjectType->Buffer) == (UINT8)EAmlObjTypeMethodObj) {
|
||||
((ObjectType->Size == 1)))
|
||||
{
|
||||
if (*((UINT8 *)ObjectType->Buffer) == (UINT8)EAmlObjTypeMethodObj) {
|
||||
// The external definition is a method.
|
||||
return TRUE;
|
||||
} else {
|
||||
@@ -605,15 +619,16 @@ AmlIsMethodDefinitionNode (
|
||||
**/
|
||||
EFI_STATUS
|
||||
AmlNodeGetNameIndex (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
OUT EAML_PARSE_INDEX * Index
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
OUT EAML_PARSE_INDEX *Index
|
||||
)
|
||||
{
|
||||
EAML_PARSE_INDEX NameIndex;
|
||||
EAML_PARSE_INDEX NameIndex;
|
||||
|
||||
if (!AmlNodeHasAttribute (ObjectNode, AML_IN_NAMESPACE) ||
|
||||
(ObjectNode->AmlByteEncoding == NULL) ||
|
||||
(Index == NULL)) {
|
||||
(Index == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -621,7 +636,8 @@ AmlNodeGetNameIndex (
|
||||
NameIndex = ObjectNode->AmlByteEncoding->NameIndex;
|
||||
|
||||
if ((NameIndex > ObjectNode->AmlByteEncoding->MaxIndex) ||
|
||||
(ObjectNode->AmlByteEncoding->Format[NameIndex] != EAmlName)) {
|
||||
(ObjectNode->AmlByteEncoding->Format[NameIndex] != EAmlName))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -645,12 +661,12 @@ AmlNodeGetNameIndex (
|
||||
CHAR8 *
|
||||
EFIAPI
|
||||
AmlNodeGetName (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EAML_PARSE_INDEX NameIndex;
|
||||
AML_DATA_NODE * DataNode;
|
||||
EFI_STATUS Status;
|
||||
EAML_PARSE_INDEX NameIndex;
|
||||
AML_DATA_NODE *DataNode;
|
||||
|
||||
if (!AmlNodeHasAttribute (ObjectNode, AML_IN_NAMESPACE)) {
|
||||
ASSERT (0);
|
||||
@@ -665,10 +681,11 @@ AmlNodeGetName (
|
||||
}
|
||||
|
||||
// The name is stored in a Data node.
|
||||
DataNode = (AML_DATA_NODE*)ObjectNode->FixedArgs[NameIndex];
|
||||
DataNode = (AML_DATA_NODE *)ObjectNode->FixedArgs[NameIndex];
|
||||
if (IS_AML_DATA_NODE (DataNode) &&
|
||||
(DataNode->DataType == EAmlNodeDataTypeNameString)) {
|
||||
return (CHAR8*)DataNode->Buffer;
|
||||
(DataNode->DataType == EAmlNodeDataTypeNameString))
|
||||
{
|
||||
return (CHAR8 *)DataNode->Buffer;
|
||||
}
|
||||
|
||||
/* Return NULL if no name is found.
|
||||
|
@@ -28,8 +28,8 @@
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateRootNode (
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER * SdtHeader,
|
||||
OUT AML_ROOT_NODE ** NewRootNodePtr
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER *SdtHeader,
|
||||
OUT AML_ROOT_NODE **NewRootNodePtr
|
||||
);
|
||||
|
||||
/** Create an AML_OBJECT_NODE.
|
||||
@@ -49,9 +49,9 @@ AmlCreateRootNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateObjectNode (
|
||||
IN CONST AML_BYTE_ENCODING * AmlByteEncoding,
|
||||
IN UINT32 PkgLength,
|
||||
OUT AML_OBJECT_NODE ** NewObjectNodePtr
|
||||
IN CONST AML_BYTE_ENCODING *AmlByteEncoding,
|
||||
IN UINT32 PkgLength,
|
||||
OUT AML_OBJECT_NODE **NewObjectNodePtr
|
||||
);
|
||||
|
||||
/** Create an AML_DATA_NODE.
|
||||
@@ -72,10 +72,10 @@ AmlCreateObjectNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlCreateDataNode (
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN CONST UINT8 * Data,
|
||||
IN UINT32 DataSize,
|
||||
OUT AML_DATA_NODE ** NewDataNodePtr
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN CONST UINT8 *Data,
|
||||
IN UINT32 DataSize,
|
||||
OUT AML_DATA_NODE **NewDataNodePtr
|
||||
);
|
||||
|
||||
/** Delete a Node.
|
||||
@@ -88,7 +88,7 @@ AmlCreateDataNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteNode (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
);
|
||||
|
||||
/** Check whether ObjectNode has the input attribute.
|
||||
@@ -104,8 +104,8 @@ AmlDeleteNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlNodeHasAttribute (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
IN AML_OP_ATTRIBUTE Attribute
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
IN AML_OP_ATTRIBUTE Attribute
|
||||
);
|
||||
|
||||
/** Check whether ObjectNode has the input OpCode/SubOpcode couple.
|
||||
@@ -121,9 +121,9 @@ AmlNodeHasAttribute (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlNodeCompareOpCode (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
IN UINT8 OpCode,
|
||||
IN UINT8 SubOpCode
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
IN UINT8 OpCode,
|
||||
IN UINT8 SubOpCode
|
||||
);
|
||||
|
||||
/** Check whether a Node is an integer node.
|
||||
@@ -142,7 +142,7 @@ AmlNodeCompareOpCode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsIntegerNode (
|
||||
IN AML_OBJECT_NODE * Node
|
||||
IN AML_OBJECT_NODE *Node
|
||||
);
|
||||
|
||||
/** Check whether a Node is a ZeroOp, a OneOp or a OnesOp.
|
||||
@@ -158,7 +158,7 @@ IsIntegerNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsSpecialIntegerNode (
|
||||
IN AML_OBJECT_NODE * Node
|
||||
IN AML_OBJECT_NODE *Node
|
||||
);
|
||||
|
||||
/** Check whether Node corresponds to a method definition.
|
||||
@@ -180,7 +180,7 @@ IsSpecialIntegerNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlIsMethodDefinitionNode (
|
||||
IN CONST AML_OBJECT_NODE * Node
|
||||
IN CONST AML_OBJECT_NODE *Node
|
||||
);
|
||||
|
||||
/** Get the index at which the name of the node is stored.
|
||||
@@ -194,8 +194,8 @@ AmlIsMethodDefinitionNode (
|
||||
**/
|
||||
EFI_STATUS
|
||||
AmlNodeGetNameIndex (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode,
|
||||
OUT EAML_PARSE_INDEX * Index
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode,
|
||||
OUT EAML_PARSE_INDEX *Index
|
||||
);
|
||||
|
||||
/** Get the name of the Node.
|
||||
@@ -212,7 +212,7 @@ AmlNodeGetNameIndex (
|
||||
CHAR8 *
|
||||
EFIAPI
|
||||
AmlNodeGetName (
|
||||
IN CONST AML_OBJECT_NODE * ObjectNode
|
||||
IN CONST AML_OBJECT_NODE *ObjectNode
|
||||
);
|
||||
|
||||
#endif // AML_NODE_H_
|
||||
|
@@ -25,7 +25,7 @@
|
||||
EAML_NODE_TYPE
|
||||
EFIAPI
|
||||
AmlGetNodeType (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
if (!IS_AML_NODE_VALID (Node)) {
|
||||
@@ -48,12 +48,13 @@ AmlGetNodeType (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlGetRootNodeInfo (
|
||||
IN AML_ROOT_NODE * RootNode,
|
||||
OUT EFI_ACPI_DESCRIPTION_HEADER * SdtHeaderBuffer
|
||||
IN AML_ROOT_NODE *RootNode,
|
||||
OUT EFI_ACPI_DESCRIPTION_HEADER *SdtHeaderBuffer
|
||||
)
|
||||
{
|
||||
if (!IS_AML_ROOT_NODE (RootNode) ||
|
||||
(SdtHeaderBuffer == NULL)) {
|
||||
(SdtHeaderBuffer == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -94,11 +95,11 @@ AmlGetRootNodeInfo (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlGetObjectNodeInfo (
|
||||
IN AML_OBJECT_NODE * ObjectNode,
|
||||
OUT UINT8 * OpCode OPTIONAL,
|
||||
OUT UINT8 * SubOpCode OPTIONAL,
|
||||
OUT UINT32 * PkgLen OPTIONAL,
|
||||
OUT BOOLEAN * IsNameSpaceNode OPTIONAL
|
||||
IN AML_OBJECT_NODE *ObjectNode,
|
||||
OUT UINT8 *OpCode OPTIONAL,
|
||||
OUT UINT8 *SubOpCode OPTIONAL,
|
||||
OUT UINT32 *PkgLen OPTIONAL,
|
||||
OUT BOOLEAN *IsNameSpaceNode OPTIONAL
|
||||
)
|
||||
{
|
||||
if (!IS_AML_OBJECT_NODE (ObjectNode)) {
|
||||
@@ -109,12 +110,15 @@ AmlGetObjectNodeInfo (
|
||||
if (OpCode != NULL) {
|
||||
*OpCode = ObjectNode->AmlByteEncoding->OpCode;
|
||||
}
|
||||
|
||||
if (SubOpCode != NULL) {
|
||||
*SubOpCode = ObjectNode->AmlByteEncoding->SubOpCode;
|
||||
}
|
||||
|
||||
if (PkgLen != NULL) {
|
||||
*PkgLen = ObjectNode->PkgLen;
|
||||
}
|
||||
|
||||
if (IsNameSpaceNode != NULL) {
|
||||
*IsNameSpaceNode = AmlNodeHasAttribute (ObjectNode, AML_IN_NAMESPACE);
|
||||
}
|
||||
@@ -131,11 +135,12 @@ AmlGetObjectNodeInfo (
|
||||
**/
|
||||
UINT8
|
||||
AmlGetFixedArgumentCount (
|
||||
IN AML_OBJECT_NODE * Node
|
||||
IN AML_OBJECT_NODE *Node
|
||||
)
|
||||
{
|
||||
if (IS_AML_OBJECT_NODE (Node) &&
|
||||
(Node->AmlByteEncoding != NULL)) {
|
||||
(Node->AmlByteEncoding != NULL))
|
||||
{
|
||||
return (UINT8)Node->AmlByteEncoding->MaxIndex;
|
||||
}
|
||||
|
||||
@@ -154,12 +159,13 @@ AmlGetFixedArgumentCount (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlGetNodeDataType (
|
||||
IN AML_DATA_NODE * DataNode,
|
||||
OUT EAML_NODE_DATA_TYPE * DataType
|
||||
IN AML_DATA_NODE *DataNode,
|
||||
OUT EAML_NODE_DATA_TYPE *DataType
|
||||
)
|
||||
{
|
||||
if (!IS_AML_DATA_NODE (DataNode) ||
|
||||
(DataType == NULL)) {
|
||||
(DataType == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -187,13 +193,14 @@ AmlGetNodeDataType (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlGetResourceDataType (
|
||||
IN AML_DATA_NODE * DataNode,
|
||||
OUT AML_RD_HEADER * ResourceDataType
|
||||
IN AML_DATA_NODE *DataNode,
|
||||
OUT AML_RD_HEADER *ResourceDataType
|
||||
)
|
||||
{
|
||||
if (!IS_AML_DATA_NODE (DataNode) ||
|
||||
(ResourceDataType == NULL) ||
|
||||
(DataNode->DataType != EAmlNodeDataTypeResourceData)) {
|
||||
(DataNode->DataType != EAmlNodeDataTypeResourceData))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -227,19 +234,21 @@ AmlGetResourceDataType (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlGetDataNodeBuffer (
|
||||
IN AML_DATA_NODE * DataNode,
|
||||
OUT UINT8 * Buffer OPTIONAL,
|
||||
IN OUT UINT32 * BufferSize
|
||||
IN AML_DATA_NODE *DataNode,
|
||||
OUT UINT8 *Buffer OPTIONAL,
|
||||
IN OUT UINT32 *BufferSize
|
||||
)
|
||||
{
|
||||
if (!IS_AML_DATA_NODE (DataNode) ||
|
||||
(BufferSize == NULL)) {
|
||||
(BufferSize == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if ((*BufferSize >= DataNode->Size) &&
|
||||
(Buffer != NULL)) {
|
||||
(Buffer != NULL))
|
||||
{
|
||||
CopyMem (Buffer, DataNode->Buffer, DataNode->Size);
|
||||
}
|
||||
|
||||
@@ -263,8 +272,8 @@ AmlGetDataNodeBuffer (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlUpdateRootNode (
|
||||
IN AML_ROOT_NODE * RootNode,
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER * SdtHeader
|
||||
IN AML_ROOT_NODE *RootNode,
|
||||
IN CONST EFI_ACPI_DESCRIPTION_HEADER *SdtHeader
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -275,7 +284,8 @@ AmlUpdateRootNode (
|
||||
((SdtHeader->Signature !=
|
||||
EFI_ACPI_6_3_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) &&
|
||||
(SdtHeader->Signature !=
|
||||
EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE))) {
|
||||
EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -287,14 +297,14 @@ AmlUpdateRootNode (
|
||||
);
|
||||
|
||||
// Update the Length field.
|
||||
Status = AmlComputeSize ((AML_NODE_HEADER*)RootNode, &Length);
|
||||
Status = AmlComputeSize ((AML_NODE_HEADER *)RootNode, &Length);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
return Status;
|
||||
}
|
||||
|
||||
RootNode->SdtHeader->Length = Length +
|
||||
(UINT32)sizeof (EFI_ACPI_DESCRIPTION_HEADER);
|
||||
(UINT32)sizeof (EFI_ACPI_DESCRIPTION_HEADER);
|
||||
|
||||
return Status;
|
||||
}
|
||||
@@ -323,18 +333,19 @@ AmlUpdateRootNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlUpdateInteger (
|
||||
IN AML_OBJECT_NODE * IntegerOpNode,
|
||||
IN UINT64 NewInteger
|
||||
IN AML_OBJECT_NODE *IntegerOpNode,
|
||||
IN UINT64 NewInteger
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
INT8 ValueWidthDiff;
|
||||
INT8 ValueWidthDiff;
|
||||
|
||||
if (!IS_AML_OBJECT_NODE (IntegerOpNode) ||
|
||||
(!IsIntegerNode (IntegerOpNode) &&
|
||||
!IsSpecialIntegerNode (IntegerOpNode)) ||
|
||||
AmlNodeCompareOpCode (IntegerOpNode, AML_ONES_OP, 0)) {
|
||||
AmlNodeCompareOpCode (IntegerOpNode, AML_ONES_OP, 0))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -349,7 +360,7 @@ AmlUpdateInteger (
|
||||
if (ValueWidthDiff != 0) {
|
||||
// Propagate the information.
|
||||
Status = AmlPropagateInformation (
|
||||
(AML_NODE_HEADER*)IntegerOpNode,
|
||||
(AML_NODE_HEADER *)IntegerOpNode,
|
||||
(ValueWidthDiff > 0) ? TRUE : FALSE,
|
||||
ABS (ValueWidthDiff),
|
||||
0
|
||||
@@ -380,28 +391,29 @@ AmlUpdateInteger (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlUpdateDataNode (
|
||||
IN AML_DATA_NODE * DataNode,
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN UINT8 * Buffer,
|
||||
IN UINT32 Size
|
||||
IN AML_DATA_NODE *DataNode,
|
||||
IN EAML_NODE_DATA_TYPE DataType,
|
||||
IN UINT8 *Buffer,
|
||||
IN UINT32 Size
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
UINT32 ExpectedSize;
|
||||
AML_OBJECT_NODE * ParentNode;
|
||||
EAML_NODE_DATA_TYPE ExpectedArgType;
|
||||
EAML_PARSE_INDEX Index;
|
||||
UINT32 ExpectedSize;
|
||||
AML_OBJECT_NODE *ParentNode;
|
||||
EAML_NODE_DATA_TYPE ExpectedArgType;
|
||||
EAML_PARSE_INDEX Index;
|
||||
|
||||
if (!IS_AML_DATA_NODE (DataNode) ||
|
||||
(DataType > EAmlNodeDataTypeMax) ||
|
||||
(Buffer == NULL) ||
|
||||
(Size == 0)) {
|
||||
(Size == 0))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ParentNode = (AML_OBJECT_NODE*)AmlGetParent ((AML_NODE_HEADER*)DataNode);
|
||||
ParentNode = (AML_OBJECT_NODE *)AmlGetParent ((AML_NODE_HEADER *)DataNode);
|
||||
if (!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
@@ -419,7 +431,8 @@ AmlUpdateDataNode (
|
||||
(((ExpectedArgType != EAmlNodeDataTypeRaw) &&
|
||||
(ExpectedArgType != EAmlNodeDataTypeResourceData)) ||
|
||||
((DataType != EAmlNodeDataTypeRaw) &&
|
||||
(DataType != EAmlNodeDataTypeResourceData)))) {
|
||||
(DataType != EAmlNodeDataTypeResourceData))))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
@@ -430,12 +443,14 @@ AmlUpdateDataNode (
|
||||
{
|
||||
// Check the name contained in the Buffer is an AML name
|
||||
// with the right size.
|
||||
Status = AmlGetNameStringSize ((CONST CHAR8*)Buffer, &ExpectedSize);
|
||||
Status = AmlGetNameStringSize ((CONST CHAR8 *)Buffer, &ExpectedSize);
|
||||
if (EFI_ERROR (Status) ||
|
||||
(Size != ExpectedSize)) {
|
||||
(Size != ExpectedSize))
|
||||
{
|
||||
ASSERT (0);
|
||||
return Status;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case EAmlNodeDataTypeString:
|
||||
@@ -450,6 +465,7 @@ AmlUpdateDataNode (
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ExpectedSize++;
|
||||
}
|
||||
|
||||
@@ -457,13 +473,15 @@ AmlUpdateDataNode (
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case EAmlNodeDataTypeUInt:
|
||||
{
|
||||
if (AmlIsNodeFixedArgument ((CONST AML_NODE_HEADER*)DataNode, &Index)) {
|
||||
if (AmlIsNodeFixedArgument ((CONST AML_NODE_HEADER *)DataNode, &Index)) {
|
||||
if ((ParentNode->AmlByteEncoding == NULL) ||
|
||||
(ParentNode->AmlByteEncoding->Format == NULL)) {
|
||||
(ParentNode->AmlByteEncoding->Format == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -472,11 +490,13 @@ AmlUpdateDataNode (
|
||||
// E.g. for PackageOp the first fixed argument is of type EAmlUInt8
|
||||
// and represents the count of elements. This type cannot be changed.
|
||||
if ((ParentNode->AmlByteEncoding->Format[Index] != EAmlObject) &&
|
||||
(DataNode->Size != Size)) {
|
||||
(DataNode->Size != Size))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case EAmlNodeDataTypeRaw:
|
||||
@@ -486,6 +506,7 @@ AmlUpdateDataNode (
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case EAmlNodeDataTypeResourceData:
|
||||
@@ -495,7 +516,8 @@ AmlUpdateDataNode (
|
||||
// Large resource data must be at least as long as the header
|
||||
// of a large resource data.
|
||||
if (AML_RD_IS_LARGE (Buffer) &&
|
||||
(Size < sizeof (ACPI_LARGE_RESOURCE_HEADER))) {
|
||||
(Size < sizeof (ACPI_LARGE_RESOURCE_HEADER)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -529,6 +551,7 @@ AmlUpdateDataNode (
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
// None and reserved types.
|
||||
@@ -547,8 +570,8 @@ AmlUpdateDataNode (
|
||||
DataNode->NodeHeader.Parent,
|
||||
(Size > DataNode->Size) ? TRUE : FALSE,
|
||||
(Size > DataNode->Size) ?
|
||||
(Size - DataNode->Size) :
|
||||
(DataNode->Size - Size),
|
||||
(Size - DataNode->Size) :
|
||||
(DataNode->Size - Size),
|
||||
0
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -564,6 +587,7 @@ AmlUpdateDataNode (
|
||||
ASSERT (0);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
DataNode->Size = Size;
|
||||
}
|
||||
|
||||
|
@@ -23,11 +23,12 @@
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetParent (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
if (IS_AML_DATA_NODE (Node) ||
|
||||
IS_AML_OBJECT_NODE (Node)) {
|
||||
IS_AML_OBJECT_NODE (Node))
|
||||
{
|
||||
return Node->Parent;
|
||||
}
|
||||
|
||||
@@ -45,7 +46,7 @@ AmlGetParent (
|
||||
AML_ROOT_NODE *
|
||||
EFIAPI
|
||||
AmlGetRootNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
if (!IS_AML_NODE_VALID (Node)) {
|
||||
@@ -60,7 +61,8 @@ AmlGetRootNode (
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return (AML_ROOT_NODE*)Node;
|
||||
|
||||
return (AML_ROOT_NODE *)Node;
|
||||
}
|
||||
|
||||
/** Get the node at the input Index in the fixed argument list of the input
|
||||
@@ -77,8 +79,8 @@ AmlGetRootNode (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetFixedArgument (
|
||||
IN AML_OBJECT_NODE * ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index
|
||||
IN AML_OBJECT_NODE *ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index
|
||||
)
|
||||
{
|
||||
if (IS_AML_OBJECT_NODE (ObjectNode)) {
|
||||
@@ -106,23 +108,24 @@ AmlGetFixedArgument (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlIsNodeFixedArgument (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
OUT EAML_PARSE_INDEX * IndexPtr
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
OUT EAML_PARSE_INDEX *IndexPtr
|
||||
)
|
||||
{
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
|
||||
if ((IndexPtr == NULL) ||
|
||||
(!IS_AML_DATA_NODE (Node) &&
|
||||
!IS_AML_OBJECT_NODE (Node))) {
|
||||
!IS_AML_OBJECT_NODE (Node)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER*)Node);
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER *)Node);
|
||||
if (IS_AML_ROOT_NODE (ParentNode)) {
|
||||
return FALSE;
|
||||
} else if (IS_AML_DATA_NODE (ParentNode)) {
|
||||
@@ -133,10 +136,10 @@ AmlIsNodeFixedArgument (
|
||||
|
||||
// Check whether the Node is in the fixed argument list.
|
||||
MaxIndex = (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)ParentNode
|
||||
(AML_OBJECT_NODE *)ParentNode
|
||||
);
|
||||
for (Index = EAmlParseIndexTerm0; Index < MaxIndex; Index++) {
|
||||
if (AmlGetFixedArgument ((AML_OBJECT_NODE*)ParentNode, Index) == Node) {
|
||||
if (AmlGetFixedArgument ((AML_OBJECT_NODE *)ParentNode, Index) == Node) {
|
||||
*IndexPtr = Index;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -163,21 +166,22 @@ AmlIsNodeFixedArgument (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlSetFixedArgument (
|
||||
IN AML_OBJECT_NODE * ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_OBJECT_NODE *ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
if (IS_AML_OBJECT_NODE (ObjectNode) &&
|
||||
(Index <= (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (ObjectNode)) &&
|
||||
((NewNode == NULL) ||
|
||||
IS_AML_OBJECT_NODE (NewNode) ||
|
||||
IS_AML_DATA_NODE (NewNode))) {
|
||||
IS_AML_DATA_NODE (NewNode)))
|
||||
{
|
||||
ObjectNode->FixedArgs[Index] = NewNode;
|
||||
|
||||
// If NewNode is a data node or an object node, set its parent.
|
||||
if (NewNode != NULL) {
|
||||
NewNode->Parent = (AML_NODE_HEADER*)ObjectNode;
|
||||
NewNode->Parent = (AML_NODE_HEADER *)ObjectNode;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
@@ -199,14 +203,15 @@ AmlSetFixedArgument (
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
AmlNodeGetVariableArgList (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
if (IS_AML_ROOT_NODE (Node)) {
|
||||
return &(((AML_ROOT_NODE*)Node)->VariableArgs);
|
||||
return &(((AML_ROOT_NODE *)Node)->VariableArgs);
|
||||
} else if (IS_AML_OBJECT_NODE (Node)) {
|
||||
return &(((AML_OBJECT_NODE*)Node)->VariableArgs);
|
||||
return &(((AML_OBJECT_NODE *)Node)->VariableArgs);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -226,22 +231,24 @@ AmlNodeGetVariableArgList (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlRemoveNodeFromVarArgList (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
UINT32 Size;
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
UINT32 Size;
|
||||
|
||||
if ((!IS_AML_DATA_NODE (Node) &&
|
||||
!IS_AML_OBJECT_NODE (Node))) {
|
||||
!IS_AML_OBJECT_NODE (Node)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent (Node);
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
!IS_AML_OBJECT_NODE (ParentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -249,7 +256,9 @@ AmlRemoveNodeFromVarArgList (
|
||||
// Check the node is in its parent variable list of arguments.
|
||||
if (!IsNodeInList (
|
||||
AmlNodeGetVariableArgList (ParentNode),
|
||||
&Node->Link)) {
|
||||
&Node->Link
|
||||
))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -289,7 +298,7 @@ AmlRemoveNodeFromVarArgList (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDetachNode (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
return AmlRemoveNodeFromVarArgList (Node);
|
||||
@@ -308,13 +317,13 @@ AmlDetachNode (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddHead (
|
||||
IN AML_NODE_HEADER * ParentNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *ParentNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 NewSize;
|
||||
LIST_ENTRY * ChildrenList;
|
||||
EFI_STATUS Status;
|
||||
UINT32 NewSize;
|
||||
LIST_ENTRY *ChildrenList;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
// ParentNode != Data Node AND NewNode != Root Node AND NewNode != attached.
|
||||
@@ -322,7 +331,8 @@ AmlVarListAddHead (
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) ||
|
||||
(!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -367,11 +377,11 @@ AmlVarListAddHead (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddTailInternal (
|
||||
IN AML_NODE_HEADER * ParentNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *ParentNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
LIST_ENTRY * ChildrenList;
|
||||
LIST_ENTRY *ChildrenList;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
// ParentNode != Data Node AND NewNode != Root Node AND NewNode != attached.
|
||||
@@ -379,7 +389,8 @@ AmlVarListAddTailInternal (
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) ||
|
||||
(!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -410,8 +421,8 @@ AmlVarListAddTailInternal (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddTail (
|
||||
IN AML_NODE_HEADER * ParentNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *ParentNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -451,25 +462,27 @@ AmlVarListAddTail (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddBefore (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
UINT32 NewSize;
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
UINT32 NewSize;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
if ((!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent (Node);
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
!IS_AML_OBJECT_NODE (ParentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -505,25 +518,27 @@ AmlVarListAddBefore (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddAfter (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
UINT32 NewSize;
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
UINT32 NewSize;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
if ((!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent (Node);
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
!IS_AML_OBJECT_NODE (ParentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -561,16 +576,17 @@ AmlVarListAddAfter (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlAppendRdNode (
|
||||
IN AML_OBJECT_NODE * BufferOpNode,
|
||||
IN AML_DATA_NODE * NewRdNode
|
||||
IN AML_OBJECT_NODE *BufferOpNode,
|
||||
IN AML_DATA_NODE *NewRdNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_DATA_NODE * LastRdNode;
|
||||
EFI_STATUS Status;
|
||||
AML_DATA_NODE *LastRdNode;
|
||||
|
||||
if (!AmlNodeCompareOpCode (BufferOpNode, AML_BUFFER_OP, 0) ||
|
||||
!IS_AML_DATA_NODE (NewRdNode) ||
|
||||
(NewRdNode->DataType != EAmlNodeDataTypeResourceData)) {
|
||||
(NewRdNode->DataType != EAmlNodeDataTypeResourceData))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -590,22 +606,24 @@ AmlAppendRdNode (
|
||||
// Get the last Resource data node in the variable list of argument of the
|
||||
// BufferOp node. This must be an EndTag, otherwise setting the checksum
|
||||
// would have failed.
|
||||
LastRdNode = (AML_DATA_NODE*)AmlGetPreviousVariableArgument (
|
||||
(AML_NODE_HEADER*)BufferOpNode,
|
||||
NULL
|
||||
);
|
||||
LastRdNode = (AML_DATA_NODE *)AmlGetPreviousVariableArgument (
|
||||
(AML_NODE_HEADER *)BufferOpNode,
|
||||
NULL
|
||||
);
|
||||
if ((LastRdNode == NULL) ||
|
||||
!IS_AML_DATA_NODE (LastRdNode) ||
|
||||
(LastRdNode->DataType != EAmlNodeDataTypeResourceData)) {
|
||||
(LastRdNode->DataType != EAmlNodeDataTypeResourceData))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Add NewRdNode before the EndTag.
|
||||
Status = AmlVarListAddBefore (
|
||||
(AML_NODE_HEADER*)LastRdNode,
|
||||
(AML_NODE_HEADER*)NewRdNode)
|
||||
;
|
||||
(AML_NODE_HEADER *)LastRdNode,
|
||||
(AML_NODE_HEADER *)NewRdNode
|
||||
)
|
||||
;
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
return Status;
|
||||
}
|
||||
@@ -628,23 +646,24 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlReplaceFixedArgument (
|
||||
IN AML_OBJECT_NODE * ParentNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_OBJECT_NODE *ParentNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
AML_NODE_HEADER * OldNode;
|
||||
UINT32 NewSize;
|
||||
UINT32 OldSize;
|
||||
AML_PARSE_FORMAT FixedArgType;
|
||||
AML_NODE_HEADER *OldNode;
|
||||
UINT32 NewSize;
|
||||
UINT32 OldSize;
|
||||
AML_PARSE_FORMAT FixedArgType;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
if (!IS_AML_OBJECT_NODE (ParentNode) ||
|
||||
(!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -657,11 +676,14 @@ AmlReplaceFixedArgument (
|
||||
// A FieldPkgLen can only have a parent node with the
|
||||
// AML_IS_FIELD_ELEMENT flag.
|
||||
if (!AmlNodeHasAttribute (
|
||||
(AML_OBJECT_NODE*)ParentNode,
|
||||
AML_HAS_FIELD_LIST)) {
|
||||
(AML_OBJECT_NODE *)ParentNode,
|
||||
AML_HAS_FIELD_LIST
|
||||
))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Fall through.
|
||||
}
|
||||
|
||||
@@ -676,11 +698,13 @@ AmlReplaceFixedArgument (
|
||||
// data node of the same type.
|
||||
// Note: This condition might be too strict, but safer.
|
||||
if (!IS_AML_DATA_NODE (NewNode) ||
|
||||
(((AML_DATA_NODE*)NewNode)->DataType !=
|
||||
AmlTypeToNodeDataType (FixedArgType))) {
|
||||
(((AML_DATA_NODE *)NewNode)->DataType !=
|
||||
AmlTypeToNodeDataType (FixedArgType)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -733,11 +757,11 @@ AmlReplaceFixedArgument (
|
||||
|
||||
// Propagate the new information.
|
||||
Status = AmlPropagateInformation (
|
||||
(AML_NODE_HEADER*)ParentNode,
|
||||
(NewSize > OldSize) ? TRUE : FALSE,
|
||||
(NewSize > OldSize) ? (NewSize - OldSize) : (OldSize - NewSize),
|
||||
0
|
||||
);
|
||||
(AML_NODE_HEADER *)ParentNode,
|
||||
(NewSize > OldSize) ? TRUE : FALSE,
|
||||
(NewSize > OldSize) ? (NewSize - OldSize) : (OldSize - NewSize),
|
||||
0
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Status;
|
||||
@@ -760,18 +784,18 @@ AmlReplaceFixedArgument (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlReplaceVariableArgument (
|
||||
IN AML_NODE_HEADER * OldNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *OldNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 NewSize;
|
||||
UINT32 OldSize;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EFI_STATUS Status;
|
||||
UINT32 NewSize;
|
||||
UINT32 OldSize;
|
||||
EAML_PARSE_INDEX Index;
|
||||
|
||||
AML_DATA_NODE * NewDataNode;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
LIST_ENTRY * NextLink;
|
||||
AML_DATA_NODE *NewDataNode;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
LIST_ENTRY *NextLink;
|
||||
|
||||
// Check arguments, that NewNode is not already attached to a tree,
|
||||
// and that OldNode is attached and not in a fixed list of arguments.
|
||||
@@ -781,19 +805,21 @@ AmlReplaceVariableArgument (
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode) ||
|
||||
AML_NODE_IS_DETACHED (OldNode) ||
|
||||
AmlIsNodeFixedArgument (OldNode, &Index)) {
|
||||
AmlIsNodeFixedArgument (OldNode, &Index))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent (OldNode);
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
NewDataNode = (AML_DATA_NODE*)NewNode;
|
||||
NewDataNode = (AML_DATA_NODE *)NewNode;
|
||||
|
||||
// Check attributes if the parent node is an object node.
|
||||
if (IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
@@ -801,21 +827,26 @@ AmlReplaceVariableArgument (
|
||||
// data node or an object node. This has already been checked. So,
|
||||
// check for other cases.
|
||||
|
||||
if (AmlNodeHasAttribute ((AML_OBJECT_NODE*)ParentNode, AML_HAS_BYTE_LIST)) {
|
||||
if (AmlNodeHasAttribute ((AML_OBJECT_NODE *)ParentNode, AML_HAS_BYTE_LIST)) {
|
||||
if (!IS_AML_DATA_NODE (NewNode) ||
|
||||
((NewDataNode->DataType != EAmlNodeDataTypeRaw) &&
|
||||
(NewDataNode->DataType != EAmlNodeDataTypeResourceData))) {
|
||||
(NewDataNode->DataType != EAmlNodeDataTypeResourceData)))
|
||||
{
|
||||
// A child node of a node with the BYTE_LIST flag must be a data node,
|
||||
// containing raw data or a resource data.
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
} else if (AmlNodeHasAttribute (
|
||||
(AML_OBJECT_NODE*)ParentNode,
|
||||
AML_HAS_FIELD_LIST)) {
|
||||
(AML_OBJECT_NODE *)ParentNode,
|
||||
AML_HAS_FIELD_LIST
|
||||
))
|
||||
{
|
||||
if (!AmlNodeHasAttribute (
|
||||
(CONST AML_OBJECT_NODE*)NewNode,
|
||||
AML_IS_FIELD_ELEMENT)) {
|
||||
(CONST AML_OBJECT_NODE *)NewNode,
|
||||
AML_IS_FIELD_ELEMENT
|
||||
))
|
||||
{
|
||||
// A child node of a node with the FIELD_LIST flag must be an object
|
||||
// node with AML_IS_FIELD_ELEMENT flag.
|
||||
ASSERT (0);
|
||||
@@ -882,20 +913,21 @@ AmlReplaceVariableArgument (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlReplaceArgument (
|
||||
IN AML_NODE_HEADER * OldNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *OldNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EFI_STATUS Status;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
EAML_PARSE_INDEX Index;
|
||||
|
||||
// Check arguments and that NewNode is not already attached to a tree.
|
||||
if ((!IS_AML_DATA_NODE (OldNode) &&
|
||||
!IS_AML_OBJECT_NODE (OldNode)) ||
|
||||
(!IS_AML_DATA_NODE (NewNode) &&
|
||||
!IS_AML_OBJECT_NODE (NewNode)) ||
|
||||
!AML_NODE_IS_DETACHED (NewNode)) {
|
||||
!AML_NODE_IS_DETACHED (NewNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -903,7 +935,8 @@ AmlReplaceArgument (
|
||||
// ParentNode can be a root node or an object node.
|
||||
ParentNode = AmlGetParent (OldNode);
|
||||
if (!IS_AML_ROOT_NODE (ParentNode) &&
|
||||
!IS_AML_OBJECT_NODE (ParentNode)) {
|
||||
!IS_AML_OBJECT_NODE (ParentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -911,7 +944,7 @@ AmlReplaceArgument (
|
||||
if (AmlIsNodeFixedArgument (OldNode, &Index)) {
|
||||
// OldNode is in its parent's fixed argument list at the Index.
|
||||
Status = AmlReplaceFixedArgument (
|
||||
(AML_OBJECT_NODE*)ParentNode,
|
||||
(AML_OBJECT_NODE *)ParentNode,
|
||||
Index,
|
||||
NewNode
|
||||
);
|
||||
@@ -942,18 +975,18 @@ AmlReplaceArgument (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteTree (
|
||||
IN AML_NODE_HEADER * Node
|
||||
IN AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
|
||||
AML_NODE_HEADER * Arg;
|
||||
LIST_ENTRY * StartLink;
|
||||
LIST_ENTRY * CurrentLink;
|
||||
LIST_ENTRY * NextLink;
|
||||
AML_NODE_HEADER *Arg;
|
||||
LIST_ENTRY *StartLink;
|
||||
LIST_ENTRY *CurrentLink;
|
||||
LIST_ENTRY *NextLink;
|
||||
|
||||
// Check that the node being deleted is unlinked.
|
||||
// When removing the node, its parent pointer and
|
||||
@@ -961,7 +994,8 @@ AmlDeleteTree (
|
||||
// InitializeListHead. Thus it must be detached
|
||||
// from the tree to avoid memory leaks.
|
||||
if (!IS_AML_NODE_VALID (Node) ||
|
||||
!AML_NODE_IS_DETACHED (Node)) {
|
||||
!AML_NODE_IS_DETACHED (Node))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -970,10 +1004,10 @@ AmlDeleteTree (
|
||||
// Iterate through the fixed list of arguments.
|
||||
if (IS_AML_OBJECT_NODE (Node)) {
|
||||
MaxIndex = (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)Node
|
||||
(AML_OBJECT_NODE *)Node
|
||||
);
|
||||
for (Index = EAmlParseIndexTerm0; Index < MaxIndex; Index++) {
|
||||
Arg = AmlGetFixedArgument ((AML_OBJECT_NODE*)Node, Index);
|
||||
Arg = AmlGetFixedArgument ((AML_OBJECT_NODE *)Node, Index);
|
||||
if (Arg == NULL) {
|
||||
// A fixed argument is missing. The tree is inconsistent.
|
||||
// Note: During CodeGeneration, the fixed arguments should be set
|
||||
@@ -986,7 +1020,7 @@ AmlDeleteTree (
|
||||
|
||||
// Remove the node from the fixed argument list.
|
||||
Arg->Parent = NULL;
|
||||
Status = AmlSetFixedArgument ((AML_OBJECT_NODE*)Node, Index, NULL);
|
||||
Status = AmlSetFixedArgument ((AML_OBJECT_NODE *)Node, Index, NULL);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
return Status;
|
||||
@@ -1011,9 +1045,9 @@ AmlDeleteTree (
|
||||
// Unlink the node from the tree.
|
||||
NextLink = RemoveEntryList (CurrentLink);
|
||||
InitializeListHead (CurrentLink);
|
||||
((AML_NODE_HEADER*)CurrentLink)->Parent = NULL;
|
||||
((AML_NODE_HEADER *)CurrentLink)->Parent = NULL;
|
||||
|
||||
Status = AmlDeleteTree ((AML_NODE_HEADER*)CurrentLink);
|
||||
Status = AmlDeleteTree ((AML_NODE_HEADER *)CurrentLink);
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT (0);
|
||||
return Status;
|
||||
|
@@ -22,7 +22,7 @@
|
||||
AML_ROOT_NODE *
|
||||
EFIAPI
|
||||
AmlGetRootNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
);
|
||||
|
||||
/** Check whether the input Node is in the fixed argument list of its parent
|
||||
@@ -41,8 +41,8 @@ AmlGetRootNode (
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlIsNodeFixedArgument (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
OUT EAML_PARSE_INDEX * IndexPtr
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
OUT EAML_PARSE_INDEX *IndexPtr
|
||||
);
|
||||
|
||||
/** Set the fixed argument of the ObjectNode at the Index to the NewNode.
|
||||
@@ -63,9 +63,9 @@ AmlIsNodeFixedArgument (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlSetFixedArgument (
|
||||
IN AML_OBJECT_NODE * ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_OBJECT_NODE *ObjectNode,
|
||||
IN EAML_PARSE_INDEX Index,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
);
|
||||
|
||||
/** If the given AML_NODE_HEADER has a variable list of arguments,
|
||||
@@ -80,7 +80,7 @@ AmlSetFixedArgument (
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
AmlNodeGetVariableArgList (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
);
|
||||
|
||||
/** Add the NewNode to the tail of the variable list of arguments
|
||||
@@ -99,8 +99,8 @@ AmlNodeGetVariableArgList (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlVarListAddTailInternal (
|
||||
IN AML_NODE_HEADER * ParentNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *ParentNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
);
|
||||
|
||||
/** Replace the OldNode by the NewNode.
|
||||
@@ -119,9 +119,8 @@ AmlVarListAddTailInternal (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlReplaceArgument (
|
||||
IN AML_NODE_HEADER * OldNode,
|
||||
IN AML_NODE_HEADER * NewNode
|
||||
IN AML_NODE_HEADER *OldNode,
|
||||
IN AML_NODE_HEADER *NewNode
|
||||
);
|
||||
|
||||
#endif // AML_TREE_H_
|
||||
|
||||
|
@@ -33,25 +33,26 @@
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
AmlEnumTree (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN EDKII_AML_TREE_ENUM_CALLBACK CallBack,
|
||||
IN OUT VOID * Context OPTIONAL,
|
||||
OUT EFI_STATUS * Status OPTIONAL
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN EDKII_AML_TREE_ENUM_CALLBACK CallBack,
|
||||
IN OUT VOID *Context OPTIONAL,
|
||||
OUT EFI_STATUS *Status OPTIONAL
|
||||
)
|
||||
{
|
||||
BOOLEAN ContinueEnum;
|
||||
BOOLEAN ContinueEnum;
|
||||
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
|
||||
LIST_ENTRY * StartLink;
|
||||
LIST_ENTRY * CurrentLink;
|
||||
LIST_ENTRY *StartLink;
|
||||
LIST_ENTRY *CurrentLink;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node) || (CallBack == NULL)) {
|
||||
ASSERT (0);
|
||||
if (Status != NULL) {
|
||||
*Status = EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -62,11 +63,11 @@ AmlEnumTree (
|
||||
|
||||
// Iterate through the fixed list of arguments.
|
||||
MaxIndex = (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)Node
|
||||
(AML_OBJECT_NODE *)Node
|
||||
);
|
||||
for (Index = EAmlParseIndexTerm0; Index < MaxIndex; Index++) {
|
||||
ContinueEnum = AmlEnumTree (
|
||||
AmlGetFixedArgument ((AML_OBJECT_NODE*)Node, Index),
|
||||
AmlGetFixedArgument ((AML_OBJECT_NODE *)Node, Index),
|
||||
CallBack,
|
||||
Context,
|
||||
Status
|
||||
@@ -82,7 +83,7 @@ AmlEnumTree (
|
||||
CurrentLink = StartLink->ForwardLink;
|
||||
while (CurrentLink != StartLink) {
|
||||
ContinueEnum = AmlEnumTree (
|
||||
(AML_NODE_HEADER*)CurrentLink,
|
||||
(AML_NODE_HEADER *)CurrentLink,
|
||||
CallBack,
|
||||
Context,
|
||||
Status
|
||||
@@ -90,6 +91,7 @@ AmlEnumTree (
|
||||
if (ContinueEnum == FALSE) {
|
||||
return ContinueEnum;
|
||||
}
|
||||
|
||||
CurrentLink = CurrentLink->ForwardLink;
|
||||
} // while
|
||||
}
|
||||
|
@@ -25,10 +25,10 @@ typedef struct AmlTreeInternalIterator {
|
||||
// of the Tree iterator APIs.
|
||||
|
||||
/// Pointer to the node on which the iterator has been initialized.
|
||||
CONST AML_NODE_HEADER * InitialNode;
|
||||
CONST AML_NODE_HEADER *InitialNode;
|
||||
|
||||
/// Pointer to the current node.
|
||||
CONST AML_NODE_HEADER * CurrentNode;
|
||||
CONST AML_NODE_HEADER *CurrentNode;
|
||||
|
||||
/// Iteration mode.
|
||||
/// Allow to choose how to traverse the tree/choose which node is next.
|
||||
@@ -47,13 +47,13 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlIteratorGetNode (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HEADER ** OutNode
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HEADER **OutNode
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)Iterator;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)Iterator;
|
||||
|
||||
// CurrentNode can be NULL, but InitialNode cannot.
|
||||
if ((OutNode == NULL) ||
|
||||
@@ -62,12 +62,13 @@ AmlIteratorGetNode (
|
||||
(InternalIterator->Mode >= EAmlIteratorModeMax) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->InitialNode) ||
|
||||
((InternalIterator->CurrentNode != NULL) &&
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode))) {
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode)))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
*OutNode = (AML_NODE_HEADER*)InternalIterator->CurrentNode;
|
||||
*OutNode = (AML_NODE_HEADER *)InternalIterator->CurrentNode;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -87,19 +88,20 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlIteratorGetNextLinear (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HEADER ** NextNode
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HEADER **NextNode
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)Iterator;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)Iterator;
|
||||
|
||||
// CurrentNode can be NULL, but InitialNode cannot.
|
||||
if ((InternalIterator == NULL) ||
|
||||
(InternalIterator->Mode != EAmlIteratorLinear) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->InitialNode) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode)) {
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -110,8 +112,9 @@ AmlIteratorGetNextLinear (
|
||||
);
|
||||
|
||||
if (NextNode != NULL) {
|
||||
*NextNode = (AML_NODE_HEADER*)InternalIterator->CurrentNode;
|
||||
*NextNode = (AML_NODE_HEADER *)InternalIterator->CurrentNode;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -130,19 +133,20 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlIteratorGetPreviousLinear (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HEADER ** PrevNode
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HEADER **PrevNode
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)Iterator;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)Iterator;
|
||||
|
||||
// CurrentNode can be NULL, but InitialNode cannot.
|
||||
if ((InternalIterator == NULL) ||
|
||||
(InternalIterator->Mode != EAmlIteratorLinear) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->InitialNode) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode)) {
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -152,8 +156,9 @@ AmlIteratorGetPreviousLinear (
|
||||
InternalIterator->CurrentNode
|
||||
);
|
||||
if (PrevNode != NULL) {
|
||||
*PrevNode = (AML_NODE_HEADER*)InternalIterator->CurrentNode;
|
||||
*PrevNode = (AML_NODE_HEADER *)InternalIterator->CurrentNode;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -172,20 +177,21 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlIteratorGetNextBranch (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HEADER ** NextNode
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HEADER **NextNode
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_NODE_HEADER * Node;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
AML_NODE_HEADER *Node;
|
||||
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)Iterator;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)Iterator;
|
||||
|
||||
// CurrentNode can be NULL, but InitialNode cannot.
|
||||
if ((InternalIterator == NULL) ||
|
||||
(InternalIterator->Mode != EAmlIteratorBranch) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->InitialNode) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode)) {
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -193,7 +199,8 @@ AmlIteratorGetNextBranch (
|
||||
Node = AmlGetNextNode (InternalIterator->CurrentNode);
|
||||
// Check whether NextNode is a sibling of InitialNode.
|
||||
if (AmlGetParent (Node) ==
|
||||
AmlGetParent ((AML_NODE_HEADER*)InternalIterator->InitialNode)) {
|
||||
AmlGetParent ((AML_NODE_HEADER *)InternalIterator->InitialNode))
|
||||
{
|
||||
Node = NULL;
|
||||
}
|
||||
|
||||
@@ -202,6 +209,7 @@ AmlIteratorGetNextBranch (
|
||||
if (NextNode != NULL) {
|
||||
*NextNode = Node;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -220,20 +228,21 @@ STATIC
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlIteratorGetPreviousBranch (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HEADER ** PrevNode
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HEADER **PrevNode
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_NODE_HEADER * Node;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
AML_NODE_HEADER *Node;
|
||||
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)Iterator;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)Iterator;
|
||||
|
||||
// CurrentNode can be NULL, but InitialNode cannot.
|
||||
if ((InternalIterator == NULL) ||
|
||||
(InternalIterator->Mode != EAmlIteratorBranch) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->InitialNode) ||
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode)) {
|
||||
!IS_AML_NODE_VALID (InternalIterator->CurrentNode))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -241,7 +250,8 @@ AmlIteratorGetPreviousBranch (
|
||||
Node = AmlGetPreviousNode (InternalIterator->CurrentNode);
|
||||
// Check whether PreviousNode is a sibling of InitialNode.
|
||||
if (AmlGetParent (Node) ==
|
||||
AmlGetParent ((AML_NODE_HEADER*)InternalIterator->InitialNode)) {
|
||||
AmlGetParent ((AML_NODE_HEADER *)InternalIterator->InitialNode))
|
||||
{
|
||||
Node = NULL;
|
||||
}
|
||||
|
||||
@@ -250,6 +260,7 @@ AmlIteratorGetPreviousBranch (
|
||||
if (PrevNode != NULL) {
|
||||
*PrevNode = Node;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -269,47 +280,48 @@ AmlIteratorGetPreviousBranch (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlInitializeIterator (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN EAML_ITERATOR_MODE IteratorMode,
|
||||
OUT AML_TREE_ITERATOR ** IteratorPtr
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN EAML_ITERATOR_MODE IteratorMode,
|
||||
OUT AML_TREE_ITERATOR **IteratorPtr
|
||||
)
|
||||
{
|
||||
AML_TREE_ITERATOR_INTERNAL * InternalIterator;
|
||||
AML_TREE_ITERATOR_INTERNAL *InternalIterator;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node) ||
|
||||
(IteratorMode <= EAmlIteratorUnknown) ||
|
||||
(IteratorMode >= EAmlIteratorModeMax) ||
|
||||
(IteratorPtr == NULL)) {
|
||||
(IteratorPtr == NULL))
|
||||
{
|
||||
ASSERT (0);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
*IteratorPtr = NULL;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL*)AllocateZeroPool (
|
||||
sizeof (
|
||||
AML_TREE_ITERATOR_INTERNAL
|
||||
)
|
||||
);
|
||||
*IteratorPtr = NULL;
|
||||
InternalIterator = (AML_TREE_ITERATOR_INTERNAL *)AllocateZeroPool (
|
||||
sizeof (
|
||||
AML_TREE_ITERATOR_INTERNAL
|
||||
)
|
||||
);
|
||||
if (InternalIterator == NULL) {
|
||||
ASSERT (0);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
InternalIterator->InitialNode = Node;
|
||||
InternalIterator->CurrentNode = Node;
|
||||
InternalIterator->Mode = IteratorMode;
|
||||
InternalIterator->InitialNode = Node;
|
||||
InternalIterator->CurrentNode = Node;
|
||||
InternalIterator->Mode = IteratorMode;
|
||||
InternalIterator->Iterator.GetNode = AmlIteratorGetNode;
|
||||
|
||||
switch (InternalIterator->Mode) {
|
||||
case EAmlIteratorLinear:
|
||||
{
|
||||
InternalIterator->Iterator.GetNext = AmlIteratorGetNextLinear;
|
||||
InternalIterator->Iterator.GetNext = AmlIteratorGetNextLinear;
|
||||
InternalIterator->Iterator.GetPrevious = AmlIteratorGetPreviousLinear;
|
||||
break;
|
||||
}
|
||||
case EAmlIteratorBranch:
|
||||
{
|
||||
InternalIterator->Iterator.GetNext = AmlIteratorGetNextBranch;
|
||||
InternalIterator->Iterator.GetNext = AmlIteratorGetNextBranch;
|
||||
InternalIterator->Iterator.GetPrevious = AmlIteratorGetPreviousBranch;
|
||||
break;
|
||||
}
|
||||
@@ -339,7 +351,7 @@ AmlInitializeIterator (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteIterator (
|
||||
IN AML_TREE_ITERATOR * Iterator
|
||||
IN AML_TREE_ITERATOR *Iterator
|
||||
)
|
||||
{
|
||||
if (Iterator == NULL) {
|
||||
|
@@ -115,9 +115,9 @@ typedef struct AmlTreeIterator AML_TREE_ITERATOR;
|
||||
*/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI * EDKII_AML_TREE_ITERATOR_GET_NODE) (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HANDLE * OutNode
|
||||
(EFIAPI *EDKII_AML_TREE_ITERATOR_GET_NODE)(
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HANDLE *OutNode
|
||||
);
|
||||
|
||||
/** Function pointer to move the current node of the iterator to the
|
||||
@@ -135,9 +135,9 @@ EFI_STATUS
|
||||
*/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI * EDKII_AML_TREE_ITERATOR_GET_NEXT) (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HANDLE * NextNode
|
||||
(EFIAPI *EDKII_AML_TREE_ITERATOR_GET_NEXT)(
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HANDLE *NextNode
|
||||
);
|
||||
|
||||
/** Function pointer to move the current node of the iterator to the
|
||||
@@ -155,9 +155,9 @@ EFI_STATUS
|
||||
*/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI * EDKII_AML_TREE_ITERATOR_GET_PREVIOUS) (
|
||||
IN AML_TREE_ITERATOR * Iterator,
|
||||
OUT AML_NODE_HANDLE * PrevNode
|
||||
(EFIAPI *EDKII_AML_TREE_ITERATOR_GET_PREVIOUS)(
|
||||
IN AML_TREE_ITERATOR *Iterator,
|
||||
OUT AML_NODE_HANDLE *PrevNode
|
||||
);
|
||||
|
||||
/** Iterator structure to traverse the tree.
|
||||
@@ -166,16 +166,15 @@ EFI_STATUS
|
||||
*/
|
||||
typedef struct AmlTreeIterator {
|
||||
/// Get the current node of the iterator.
|
||||
EDKII_AML_TREE_ITERATOR_GET_NODE GetNode;
|
||||
EDKII_AML_TREE_ITERATOR_GET_NODE GetNode;
|
||||
|
||||
/// Update the current node of the iterator with the next node.
|
||||
EDKII_AML_TREE_ITERATOR_GET_NEXT GetNext;
|
||||
EDKII_AML_TREE_ITERATOR_GET_NEXT GetNext;
|
||||
|
||||
/// Update the current node of the iterator with the previous node.
|
||||
EDKII_AML_TREE_ITERATOR_GET_PREVIOUS GetPrevious;
|
||||
EDKII_AML_TREE_ITERATOR_GET_PREVIOUS GetPrevious;
|
||||
} AML_TREE_ITERATOR;
|
||||
|
||||
|
||||
/** Initialize an iterator.
|
||||
|
||||
Note: The caller must call AmlDeleteIterator () to free the memory
|
||||
@@ -194,9 +193,9 @@ typedef struct AmlTreeIterator {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlInitializeIterator (
|
||||
IN AML_NODE_HANDLE Node,
|
||||
IN EAML_ITERATOR_MODE IteratorMode,
|
||||
OUT AML_TREE_ITERATOR ** IteratorPtr
|
||||
IN AML_NODE_HANDLE Node,
|
||||
IN EAML_ITERATOR_MODE IteratorMode,
|
||||
OUT AML_TREE_ITERATOR **IteratorPtr
|
||||
);
|
||||
|
||||
/** Delete an iterator.
|
||||
@@ -214,7 +213,7 @@ AmlInitializeIterator (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AmlDeleteIterator (
|
||||
IN AML_TREE_ITERATOR * Iterator
|
||||
IN AML_TREE_ITERATOR *Iterator
|
||||
);
|
||||
|
||||
#endif // AML_ITERATOR_H_
|
||||
|
@@ -37,17 +37,18 @@
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetSiblingVariableArgument (
|
||||
IN AML_NODE_HEADER * VarArgNode
|
||||
IN AML_NODE_HEADER *VarArgNode
|
||||
)
|
||||
{
|
||||
EAML_PARSE_INDEX Index;
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
EAML_PARSE_INDEX Index;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
|
||||
// VarArgNode must be an object node or a data node,
|
||||
// and be in a variable list of arguments.
|
||||
if ((!IS_AML_OBJECT_NODE (VarArgNode) &&
|
||||
!IS_AML_DATA_NODE (VarArgNode)) ||
|
||||
AmlIsNodeFixedArgument (VarArgNode, &Index)) {
|
||||
AmlIsNodeFixedArgument (VarArgNode, &Index))
|
||||
{
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
@@ -85,12 +86,12 @@ AmlGetSiblingVariableArgument (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetNextVariableArgument (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN AML_NODE_HEADER * CurrVarArg
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN AML_NODE_HEADER *CurrVarArg
|
||||
)
|
||||
{
|
||||
CONST LIST_ENTRY * StartLink;
|
||||
CONST LIST_ENTRY * NextLink;
|
||||
CONST LIST_ENTRY *StartLink;
|
||||
CONST LIST_ENTRY *NextLink;
|
||||
|
||||
// Node must be a RootNode or an Object Node
|
||||
// and the CurrVarArg must not be a Root Node.
|
||||
@@ -98,7 +99,8 @@ AmlGetNextVariableArgument (
|
||||
!IS_AML_OBJECT_NODE (Node)) ||
|
||||
((CurrVarArg != NULL) &&
|
||||
(!IS_AML_OBJECT_NODE (CurrVarArg) &&
|
||||
!IS_AML_DATA_NODE (CurrVarArg)))) {
|
||||
!IS_AML_DATA_NODE (CurrVarArg))))
|
||||
{
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
@@ -112,8 +114,9 @@ AmlGetNextVariableArgument (
|
||||
if (CurrVarArg == NULL) {
|
||||
NextLink = StartLink->ForwardLink;
|
||||
if (NextLink != StartLink) {
|
||||
return (AML_NODE_HEADER*)NextLink;
|
||||
return (AML_NODE_HEADER *)NextLink;
|
||||
}
|
||||
|
||||
// List is empty.
|
||||
return NULL;
|
||||
}
|
||||
@@ -127,7 +130,7 @@ AmlGetNextVariableArgument (
|
||||
// Get the node following the CurrVarArg.
|
||||
NextLink = CurrVarArg->Link.ForwardLink;
|
||||
if (NextLink != StartLink) {
|
||||
return (AML_NODE_HEADER*)NextLink;
|
||||
return (AML_NODE_HEADER *)NextLink;
|
||||
}
|
||||
|
||||
// End of the list has been reached.
|
||||
@@ -159,12 +162,12 @@ AmlGetNextVariableArgument (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetPreviousVariableArgument (
|
||||
IN AML_NODE_HEADER * Node,
|
||||
IN AML_NODE_HEADER * CurrVarArg
|
||||
IN AML_NODE_HEADER *Node,
|
||||
IN AML_NODE_HEADER *CurrVarArg
|
||||
)
|
||||
{
|
||||
CONST LIST_ENTRY * StartLink;
|
||||
CONST LIST_ENTRY * PreviousLink;
|
||||
CONST LIST_ENTRY *StartLink;
|
||||
CONST LIST_ENTRY *PreviousLink;
|
||||
|
||||
// Node must be a RootNode or an Object Node
|
||||
// and the CurrVarArg must not be a Root Node.
|
||||
@@ -172,7 +175,8 @@ AmlGetPreviousVariableArgument (
|
||||
!IS_AML_OBJECT_NODE (Node)) ||
|
||||
((CurrVarArg != NULL) &&
|
||||
(!IS_AML_OBJECT_NODE (CurrVarArg) &&
|
||||
!IS_AML_DATA_NODE (CurrVarArg)))) {
|
||||
!IS_AML_DATA_NODE (CurrVarArg))))
|
||||
{
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
@@ -186,8 +190,9 @@ AmlGetPreviousVariableArgument (
|
||||
if (CurrVarArg == NULL) {
|
||||
PreviousLink = StartLink->BackLink;
|
||||
if (PreviousLink != StartLink) {
|
||||
return (AML_NODE_HEADER*)PreviousLink;
|
||||
return (AML_NODE_HEADER *)PreviousLink;
|
||||
}
|
||||
|
||||
// List is empty.
|
||||
return NULL;
|
||||
}
|
||||
@@ -201,7 +206,7 @@ AmlGetPreviousVariableArgument (
|
||||
// Get the node before the CurrVarArg.
|
||||
PreviousLink = CurrVarArg->Link.BackLink;
|
||||
if (PreviousLink != StartLink) {
|
||||
return (AML_NODE_HEADER*)PreviousLink;
|
||||
return (AML_NODE_HEADER *)PreviousLink;
|
||||
}
|
||||
|
||||
// We have reached the beginning of the list.
|
||||
@@ -240,12 +245,12 @@ AmlGetPreviousVariableArgument (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetNextSibling (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
IN CONST AML_NODE_HEADER * ChildNode
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
IN CONST AML_NODE_HEADER *ChildNode
|
||||
)
|
||||
{
|
||||
EAML_PARSE_INDEX Index;
|
||||
AML_NODE_HEADER * CandidateNode;
|
||||
EAML_PARSE_INDEX Index;
|
||||
AML_NODE_HEADER *CandidateNode;
|
||||
|
||||
// Node must be a RootNode or an Object Node
|
||||
// and the CurrVarArg must not be a Root Node.
|
||||
@@ -253,7 +258,8 @@ AmlGetNextSibling (
|
||||
!IS_AML_OBJECT_NODE (Node)) ||
|
||||
((ChildNode != NULL) &&
|
||||
(!IS_AML_OBJECT_NODE (ChildNode) &&
|
||||
!IS_AML_DATA_NODE (ChildNode)))) {
|
||||
!IS_AML_DATA_NODE (ChildNode))))
|
||||
{
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
@@ -262,7 +268,7 @@ AmlGetNextSibling (
|
||||
if (ChildNode == NULL) {
|
||||
// Get the fixed argument at index 0 of the ChildNode.
|
||||
CandidateNode = AmlGetFixedArgument (
|
||||
(AML_OBJECT_NODE*)Node,
|
||||
(AML_OBJECT_NODE *)Node,
|
||||
EAmlParseIndexTerm0
|
||||
);
|
||||
if (CandidateNode != NULL) {
|
||||
@@ -275,14 +281,16 @@ AmlGetNextSibling (
|
||||
Index++;
|
||||
// The node is part of the list of fixed arguments.
|
||||
if (Index == (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)Node)
|
||||
) {
|
||||
// It is at the last argument of the fixed argument list.
|
||||
// Get the first argument of the variable list of arguments.
|
||||
(AML_OBJECT_NODE *)Node
|
||||
)
|
||||
)
|
||||
{
|
||||
// It is at the last argument of the fixed argument list.
|
||||
// Get the first argument of the variable list of arguments.
|
||||
ChildNode = NULL;
|
||||
} else {
|
||||
// Else return the next node in the list of fixed arguments.
|
||||
return AmlGetFixedArgument ((AML_OBJECT_NODE*)Node, Index);
|
||||
return AmlGetFixedArgument ((AML_OBJECT_NODE *)Node, Index);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -290,8 +298,8 @@ AmlGetNextSibling (
|
||||
|
||||
// Else, get the next node in the variable list of arguments.
|
||||
return AmlGetNextVariableArgument (
|
||||
(AML_NODE_HEADER*)Node,
|
||||
(AML_NODE_HEADER*)ChildNode
|
||||
(AML_NODE_HEADER *)Node,
|
||||
(AML_NODE_HEADER *)ChildNode
|
||||
);
|
||||
}
|
||||
|
||||
@@ -325,14 +333,14 @@ AmlGetNextSibling (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetPreviousSibling (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
IN CONST AML_NODE_HEADER * ChildNode
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
IN CONST AML_NODE_HEADER *ChildNode
|
||||
)
|
||||
{
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
EAML_PARSE_INDEX Index;
|
||||
EAML_PARSE_INDEX MaxIndex;
|
||||
|
||||
AML_NODE_HEADER * CandidateNode;
|
||||
AML_NODE_HEADER *CandidateNode;
|
||||
|
||||
// Node must be a Root Node or an Object Node
|
||||
// and the ChildNode must not be a Root Node.
|
||||
@@ -340,20 +348,22 @@ AmlGetPreviousSibling (
|
||||
!IS_AML_OBJECT_NODE (Node)) ||
|
||||
((ChildNode != NULL) &&
|
||||
(!IS_AML_OBJECT_NODE (ChildNode) &&
|
||||
!IS_AML_DATA_NODE (ChildNode)))) {
|
||||
!IS_AML_DATA_NODE (ChildNode))))
|
||||
{
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MaxIndex = (EAML_PARSE_INDEX)AmlGetFixedArgumentCount (
|
||||
(AML_OBJECT_NODE*)Node
|
||||
(AML_OBJECT_NODE *)Node
|
||||
);
|
||||
|
||||
// Get the last variable argument if no ChildNode.
|
||||
// Otherwise the fixed argument list is checked first.
|
||||
if ((ChildNode != NULL) &&
|
||||
IS_AML_OBJECT_NODE (Node) &&
|
||||
(MaxIndex != EAmlParseIndexTerm0)) {
|
||||
(MaxIndex != EAmlParseIndexTerm0))
|
||||
{
|
||||
if (AmlIsNodeFixedArgument (ChildNode, &Index)) {
|
||||
// The node is part of the list of fixed arguments.
|
||||
if (Index == EAmlParseIndexTerm0) {
|
||||
@@ -362,7 +372,7 @@ AmlGetPreviousSibling (
|
||||
} else {
|
||||
// Return the previous node in the fixed argument list.
|
||||
return AmlGetFixedArgument (
|
||||
(AML_OBJECT_NODE*)Node,
|
||||
(AML_OBJECT_NODE *)Node,
|
||||
(EAML_PARSE_INDEX)(Index - 1)
|
||||
);
|
||||
}
|
||||
@@ -371,20 +381,21 @@ AmlGetPreviousSibling (
|
||||
|
||||
// ChildNode is in the variable list of arguments.
|
||||
CandidateNode = AmlGetPreviousVariableArgument (
|
||||
(AML_NODE_HEADER*)Node,
|
||||
(AML_NODE_HEADER*)ChildNode
|
||||
(AML_NODE_HEADER *)Node,
|
||||
(AML_NODE_HEADER *)ChildNode
|
||||
);
|
||||
if (CandidateNode != NULL) {
|
||||
if (!IS_AML_NODE_VALID (CandidateNode)) {
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// A Node has been found
|
||||
return CandidateNode;
|
||||
} else if (MaxIndex != EAmlParseIndexTerm0) {
|
||||
// ChildNode was the first node of the variable list of arguments.
|
||||
return AmlGetFixedArgument (
|
||||
(AML_OBJECT_NODE*)Node,
|
||||
(AML_OBJECT_NODE *)Node,
|
||||
(EAML_PARSE_INDEX)(MaxIndex - 1)
|
||||
);
|
||||
} else {
|
||||
@@ -416,11 +427,11 @@ AmlGetPreviousSibling (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetNextNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
AML_NODE_HEADER * CandidateNode;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
AML_NODE_HEADER *CandidateNode;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node)) {
|
||||
ASSERT (0);
|
||||
@@ -435,6 +446,7 @@ AmlGetNextNode (
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// A Node has been found
|
||||
return CandidateNode;
|
||||
} else if (IS_AML_ROOT_NODE (Node)) {
|
||||
@@ -452,7 +464,7 @@ AmlGetNextNode (
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER*)Node);
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER *)Node);
|
||||
if (!IS_AML_NODE_VALID (ParentNode)) {
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
@@ -464,6 +476,7 @@ AmlGetNextNode (
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// A Node has been found
|
||||
return CandidateNode;
|
||||
}
|
||||
@@ -498,12 +511,12 @@ AmlGetNextNode (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetPreviousNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
)
|
||||
{
|
||||
AML_NODE_HEADER * ParentNode;
|
||||
AML_NODE_HEADER * CandidateNode;
|
||||
AML_NODE_HEADER * PreviousNode;
|
||||
AML_NODE_HEADER *ParentNode;
|
||||
AML_NODE_HEADER *CandidateNode;
|
||||
AML_NODE_HEADER *PreviousNode;
|
||||
|
||||
if (!IS_AML_NODE_VALID (Node)) {
|
||||
ASSERT (0);
|
||||
@@ -511,13 +524,12 @@ AmlGetPreviousNode (
|
||||
}
|
||||
|
||||
while (1) {
|
||||
|
||||
if (IS_AML_ROOT_NODE (Node)) {
|
||||
// This is the root node.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER*)Node);
|
||||
ParentNode = AmlGetParent ((AML_NODE_HEADER *)Node);
|
||||
CandidateNode = AmlGetPreviousSibling (ParentNode, Node);
|
||||
|
||||
if (CandidateNode == NULL) {
|
||||
@@ -531,7 +543,7 @@ AmlGetPreviousNode (
|
||||
// then get the last child of this node.
|
||||
// If this node has children, get its last child, etc.
|
||||
while (1) {
|
||||
PreviousNode = CandidateNode;
|
||||
PreviousNode = CandidateNode;
|
||||
CandidateNode = AmlGetPreviousSibling (PreviousNode, NULL);
|
||||
if (CandidateNode == NULL) {
|
||||
return PreviousNode;
|
||||
@@ -539,7 +551,6 @@ AmlGetPreviousNode (
|
||||
return CandidateNode;
|
||||
}
|
||||
} // while
|
||||
|
||||
} else {
|
||||
ASSERT (0);
|
||||
return NULL;
|
||||
|
@@ -43,8 +43,8 @@
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetNextSibling (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
IN CONST AML_NODE_HEADER * ChildNode
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
IN CONST AML_NODE_HEADER *ChildNode
|
||||
);
|
||||
|
||||
/** Get the previous sibling node among the children of the input Node.
|
||||
@@ -77,8 +77,8 @@ AmlGetNextSibling (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetPreviousSibling (
|
||||
IN CONST AML_NODE_HEADER * Node,
|
||||
IN CONST AML_NODE_HEADER * ChildNode
|
||||
IN CONST AML_NODE_HEADER *Node,
|
||||
IN CONST AML_NODE_HEADER *ChildNode
|
||||
);
|
||||
|
||||
/** Iterate through the nodes in the same order as the AML bytestream.
|
||||
@@ -104,7 +104,7 @@ AmlGetPreviousSibling (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetNextNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
);
|
||||
|
||||
/** Iterate through the nodes in the reverse order of the AML bytestream.
|
||||
@@ -131,8 +131,7 @@ AmlGetNextNode (
|
||||
AML_NODE_HEADER *
|
||||
EFIAPI
|
||||
AmlGetPreviousNode (
|
||||
IN CONST AML_NODE_HEADER * Node
|
||||
IN CONST AML_NODE_HEADER *Node
|
||||
);
|
||||
|
||||
#endif // AML_TREE_TRAVERSAL_H_
|
||||
|
||||
|
Reference in New Issue
Block a user