OpenCore  1.0.4
OpenCore Bootloader
1.0.4
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
OcDeviceTreeLib.h
Go to the documentation of this file.
1
15#ifndef OC_DEVICE_TREE_LIB_H
16#define OC_DEVICE_TREE_LIB_H
17
18//
19// Device tree property name prefixes for loaded kexts or mkext.
20//
21#define DT_BOOTER_KEXT_PREFIX "Driver-"
22#define DT_BOOTER_MKEXT_PREFIX "DriversPackage-"
23
24//
25// Struct at the beginning of every loaded kext (10.4 and 10.5).
26// Pointers to every loaded kext (to this struct) are
27// properties Driver-<hex addr of DriverInfo> in DevTree /chosen/memory-map.
28//
35
36//
37// Struct at the beginning of every loaded kext (10.6 and newer).
38// Pointers to every loaded kext (to this struct) are
39// properties Driver-<hex addr of DriverInfo> in DevTree /chosen/memory-map.
40//
49
50//
51// DeviceTree MemoryMap entry structure.
52//
53typedef struct DTMemMapEntry_ {
54 UINT32 Address;
55 UINT32 Length;
57
58//
59// Foundation Types.
60//
61
62#define DT_PATH_NAME_SEPERATOR '/'
63
64#define DT_MAX_PROPERTY_NAME_LENGTH 31
65#define DT_MAX_ENTRY_NAME_LENGTH 31
66#define DT_PROPERTY_NAME_LENGTH 32
67
69
72
74
77
80
83
84//
85// Structures for a Flattened Device Tree.
86//
87
92
94 UINT32 NumProperties; // Number of props[] elements (0 => end)
95 UINT32 NumChildren; // Number of children[] elements
96};
97
98//
99// Entry.
100//
101
108
109//
110// Entry Iterator.
111//
119
120//
121// Property Iterator.
122//
128
135EFI_STATUS
137 IN CONST DTEntry SearchPoint,
138 IN CONST CHAR8 *PathName,
139 IN DTEntry *FoundEntry
140 );
141
156EFI_STATUS
158 IN CONST DTEntry StartEntry,
159 IN DTEntryIterator *Iterator
160 );
161
165EFI_STATUS
167 IN DTEntryIterator Iterator
168 );
169
177EFI_STATUS
179 IN DTEntryIterator Iterator,
180 IN DTEntry ChildEntry
181 );
182
190EFI_STATUS
192 IN DTEntryIterator Iterator,
193 IN DTEntry *CurrentPosition
194 );
195
203EFI_STATUS
205 IN DTEntryIterator Iterator,
206 IN DTEntry *NextEntry
207 );
208
216EFI_STATUS
218 IN DTEntryIterator Iterator
219 );
220
224EFI_STATUS
226 IN CONST DTEntry Entry,
227 IN CHAR8 *PropertyName,
228 IN VOID **PropertyValue,
229 IN UINT32 *PropertySize
230 );
231
236EFI_STATUS
238 IN CONST DTEntry Entry,
239 IN DTPropertyIterator Iterator
240 );
241
248EFI_STATUS
250 IN DTPropertyIterator Iterator,
251 IN CHAR8 **FoundProperty
252 );
253
259EFI_STATUS
261 IN DTPropertyIterator Iterator
262 );
263
264//
265// Exported Functions
266//
267
272VOID
273DTInit (
274 IN VOID *Base,
275 IN UINT32 *Length
276 );
277
278VOID
280 VOID
281 );
282
283UINT32
285 IN CHAR8 *NodeName,
286 IN CHAR8 *DeletePropertyName
287 );
288
289VOID
291 IN CHAR8 *NodeName,
292 IN CHAR8 *InsertPropertyName,
293 IN CHAR8 *AddPropertyName,
294 IN VOID *AddPropertyValue,
295 IN UINT32 ValueLength,
296 IN BOOLEAN InsertAfter OPTIONAL
297 );
298
299#endif // OC_DEVICE_TREE_LIB_H
UINT64 Length
CHAR16 PathName[DMG_FILE_PATH_LEN]
EFI_STATUS DTLookupEntry(IN CONST DTEntry SearchPoint, IN CONST CHAR8 *PathName, IN DTEntry *FoundEntry)
EFI_STATUS DTDisposeEntryIterator(IN DTEntryIterator Iterator)
VOID DTInit(IN VOID *Base, IN UINT32 *Length)
struct DTBootxDriverInfo_ DTBootxDriverInfo
OpaqueDTEntryIterator * DTEntryIterator
DeviceTreeNode * DTEntry
Entry.
DTSavedScope * DTSavedScopePtr
EFI_STATUS DTIterateProperties(IN DTPropertyIterator Iterator, IN CHAR8 **FoundProperty)
EFI_STATUS DTRestartPropertyIteration(IN DTPropertyIterator Iterator)
EFI_STATUS DTCreateEntryIterator(IN CONST DTEntry StartEntry, IN DTEntryIterator *Iterator)
EFI_STATUS DTGetProperty(IN CONST DTEntry Entry, IN CHAR8 *PropertyName, IN VOID **PropertyValue, IN UINT32 *PropertySize)
struct DTBooterKextFileInfo_ DTBooterKextFileInfo
UINT32 DTDeleteProperty(IN CHAR8 *NodeName, IN CHAR8 *DeletePropertyName)
OpaqueDTPropertyIterator * DTPropertyIterator
EFI_STATUS DTCreatePropertyIterator(IN CONST DTEntry Entry, IN DTPropertyIterator Iterator)
VOID DTInsertProperty(IN CHAR8 *NodeName, IN CHAR8 *InsertPropertyName, IN CHAR8 *AddPropertyName, IN VOID *AddPropertyValue, IN UINT32 ValueLength, IN BOOLEAN InsertAfter OPTIONAL)
#define DT_PROPERTY_NAME_LENGTH
EFI_STATUS DTExitEntry(IN DTEntryIterator Iterator, IN DTEntry *CurrentPosition)
CHAR8 DTEntryNameBuf[DT_PROPERTY_NAME_LENGTH]
Length of DTEntryNameBuf = DT_MAX_ENTRY_NAME_LENGTH + 1.
EFI_STATUS DTIterateEntries(IN DTEntryIterator Iterator, IN DTEntry *NextEntry)
struct DTMemMapEntry_ DTMemMapEntry
EFI_STATUS DTRestartEntryIteration(IN DTEntryIterator Iterator)
EFI_STATUS DTEnterEntry(IN DTEntryIterator Iterator, IN DTEntry ChildEntry)
VOID DumpDeviceTree(VOID)
UINT32 Address
UINT32 Length
DTSavedScopePtr NextScope
UINT32 NumChildren
UINT32 NumProperties
DTSavedScopePtr SavedScope
DTEntry OuterScope
DTEntry CurrentScope
DTEntry CurrentEntry
UINT32 CurrentIndex
UINT32 Length
Length (bytes) of folloing prop value.
CHAR8 Name[DT_PROPERTY_NAME_LENGTH]
NUL terminated property name.