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:
Michael Kubacki
2021-12-05 14:53:55 -08:00
committed by mergify[bot]
parent 7c34237831
commit 731c67e1d7
85 changed files with 5347 additions and 4795 deletions

View File

@@ -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;

View File

@@ -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.

View File

@@ -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_

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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_

View File

@@ -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
}

View File

@@ -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) {

View File

@@ -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_

View File

@@ -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;

View File

@@ -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_