1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
/** @file
Copyright (C) 2020-2025 Advanced Micro Devices, Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef INTERNAL_AML_OBJECTS_H_
#define INTERNAL_AML_OBJECTS_H_
// #include "LocalAmlLib.h"
/**
Free Object->Data
Frees Object->Data, Nulls pointer, zeros size and marks
Object->Completed = FALSE
@param [in] Object - Pointer to Object to have Data freed
@return EFI_SUCCESS - Object Freed
@return <all others> - Object free failed
**/
EFI_STATUS
EFIAPI
InternalFreeAmlObjectData (
IN AML_OBJECT_INSTANCE *Object
);
/**
Free an Object
Removes Object from it's linked list.
Frees Object->Data
Frees Object
@param [in] Object - Pointer to Object to be freed
@param [in,out] ListHead - Head of AML Object linked list
@return EFI_SUCCESS - Object Freed
@return <all others> - Object free failed
**/
EFI_STATUS
EFIAPI
InternalFreeAmlObject (
IN AML_OBJECT_INSTANCE **Object,
IN OUT LIST_ENTRY *ListHead
);
/**
Creates a new AML_OBJECT_INSTANCE. Object->Data will be NULL and
Object->DataSize will be 0
Allocates AML_OBJECT_INSTANCE which must be freed by caller
@param [out] ReturnObject - Pointer to an Object
@return EFI_SUCCESS - Object created and appended to linked list
@return <all others> - Object creation failed, Object = NULL
**/
EFI_STATUS
EFIAPI
InternalNewAmlObjectNoData (
OUT AML_OBJECT_INSTANCE **ReturnObject
);
/**
Inserts a new AML_OBJECT_INSTANCE at the end of the linked list. Object->Data
will be NULL and Object->DataSize will be 0
Allocates AML_OBJECT_INSTANCE which must be freed by caller
@param [out] ReturnObject - Pointer to an Object
@param [in,out] ListHead - Head of AML Object linked list
@return EFI_SUCCESS - Object created and appended to linked list
@return <all others> - Object creation failed, Object = NULL
**/
EFI_STATUS
EFIAPI
InternalAppendNewAmlObjectNoData (
OUT AML_OBJECT_INSTANCE **ReturnObject,
IN OUT LIST_ENTRY *ListHead
);
/**
Inserts a new AML_OBJECT_INSTANCE at the end of the linked list. Using a
string Identifier for comparison purposes
Allocates AML_OBJECT_INSTANCE which must be freed by caller
@param [out] ReturnObject - Pointer to an Object
@param [in] Identifier - String Identifier to create object with
@param [in,out] ListHead - Head of AML Object linked list
@return EFI_SUCCESS - Object created and appended to linked list
@return <all others> - Object creation failed, Object = NULL
**/
EFI_STATUS
EFIAPI
InternalAppendNewAmlObject (
OUT AML_OBJECT_INSTANCE **ReturnObject,
IN CHAR8 *Identifier,
IN OUT LIST_ENTRY *ListHead
);
/**
Finds AML_OBJECT_INSTANCE given a string Identifier looking backwards in the
AML_OBJECT_INSTANCE linked list
@param [out] ReturnObject - Pointer to an Object
@param [in] Identifier - String Identifier to create object with
@param [in] ListHead - Head of AML Object linked list
@return EFI_SUCCESS - Object located and returned
@return <all others> - Object creation failed, Object = NULL
**/
EFI_STATUS
EFIAPI
InternalAmlLocateObjectByIdentifier (
OUT AML_OBJECT_INSTANCE **ReturnObject,
IN CHAR8 *Identifier,
IN LIST_ENTRY *ListHead
);
/**
Finds all children of the Link and appends them into a single ObjectData
buffer of ObjectDataSize
Allocates AML_OBJECT_INSTANCE and Data which must be freed by caller
@param [out] ReturnObject - Pointer to an Object pointer
@param [out] ChildCount - Count of Child Objects collapsed
@param [in] Link - Linked List Object entry to collect children
@param [in,out] ListHead - Head of Object Linked List
@return EFI_SUCCESS - ChildObject created and returned
@return <all others> - Object creation failed, Object = NULL
**/
EFI_STATUS
EFIAPI
InternalAmlCollapseAndReleaseChildren (
OUT AML_OBJECT_INSTANCE **ReturnObject,
OUT UINTN *ChildCount,
IN LIST_ENTRY *Link,
IN OUT LIST_ENTRY *ListHead
);
#endif // INTERNAL_AML_OBJECTS_H_
|