efiapi.h revision 1.4 1 1.3 jmcneill /* $NetBSD: efiapi.h,v 1.4 2021/09/30 19:02:47 jmcneill Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFI_API_H
4 1.1 jakllsch #define _EFI_API_H
5 1.1 jakllsch
6 1.1 jakllsch /*++
7 1.1 jakllsch
8 1.1 jakllsch Copyright (c) 1998 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch Module Name:
11 1.1 jakllsch
12 1.1 jakllsch efiapi.h
13 1.1 jakllsch
14 1.1 jakllsch Abstract:
15 1.1 jakllsch
16 1.1 jakllsch Global EFI runtime & boot service interfaces
17 1.1 jakllsch
18 1.1 jakllsch
19 1.1 jakllsch
20 1.1 jakllsch
21 1.1 jakllsch Revision History
22 1.1 jakllsch
23 1.1 jakllsch --*/
24 1.1 jakllsch
25 1.1 jakllsch //
26 1.1 jakllsch // EFI Specification Revision
27 1.1 jakllsch //
28 1.1 jakllsch
29 1.1 jakllsch #define EFI_SPECIFICATION_MAJOR_REVISION 1
30 1.1 jakllsch #define EFI_SPECIFICATION_MINOR_REVISION 02
31 1.1 jakllsch
32 1.1 jakllsch //
33 1.1 jakllsch // Declare forward referenced data structures
34 1.1 jakllsch //
35 1.1 jakllsch
36 1.1 jakllsch INTERFACE_DECL(_EFI_SYSTEM_TABLE);
37 1.1 jakllsch
38 1.1 jakllsch //
39 1.1 jakllsch // EFI Memory
40 1.1 jakllsch //
41 1.1 jakllsch
42 1.1 jakllsch typedef
43 1.1 jakllsch EFI_STATUS
44 1.1 jakllsch (EFIAPI *EFI_ALLOCATE_PAGES) (
45 1.1 jakllsch IN EFI_ALLOCATE_TYPE Type,
46 1.1 jakllsch IN EFI_MEMORY_TYPE MemoryType,
47 1.1 jakllsch IN UINTN NoPages,
48 1.1 jakllsch OUT EFI_PHYSICAL_ADDRESS *Memory
49 1.1 jakllsch );
50 1.1 jakllsch
51 1.1 jakllsch typedef
52 1.1 jakllsch EFI_STATUS
53 1.1 jakllsch (EFIAPI *EFI_FREE_PAGES) (
54 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS Memory,
55 1.1 jakllsch IN UINTN NoPages
56 1.1 jakllsch );
57 1.1 jakllsch
58 1.1 jakllsch typedef
59 1.1 jakllsch EFI_STATUS
60 1.1 jakllsch (EFIAPI *EFI_GET_MEMORY_MAP) (
61 1.1 jakllsch IN OUT UINTN *MemoryMapSize,
62 1.1 jakllsch IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
63 1.1 jakllsch OUT UINTN *MapKey,
64 1.1 jakllsch OUT UINTN *DescriptorSize,
65 1.1 jakllsch OUT UINT32 *DescriptorVersion
66 1.1 jakllsch );
67 1.1 jakllsch
68 1.1 jakllsch #define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
69 1.1 jakllsch
70 1.1 jakllsch
71 1.1 jakllsch typedef
72 1.1 jakllsch EFI_STATUS
73 1.1 jakllsch (EFIAPI *EFI_ALLOCATE_POOL) (
74 1.1 jakllsch IN EFI_MEMORY_TYPE PoolType,
75 1.1 jakllsch IN UINTN Size,
76 1.1 jakllsch OUT VOID **Buffer
77 1.1 jakllsch );
78 1.1 jakllsch
79 1.1 jakllsch typedef
80 1.1 jakllsch EFI_STATUS
81 1.1 jakllsch (EFIAPI *EFI_FREE_POOL) (
82 1.1 jakllsch IN VOID *Buffer
83 1.1 jakllsch );
84 1.1 jakllsch
85 1.1 jakllsch typedef
86 1.1 jakllsch EFI_STATUS
87 1.1 jakllsch (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
88 1.1 jakllsch IN UINTN MemoryMapSize,
89 1.1 jakllsch IN UINTN DescriptorSize,
90 1.1 jakllsch IN UINT32 DescriptorVersion,
91 1.1 jakllsch IN EFI_MEMORY_DESCRIPTOR *VirtualMap
92 1.1 jakllsch );
93 1.1 jakllsch
94 1.1 jakllsch
95 1.1 jakllsch #define EFI_OPTIONAL_PTR 0x00000001
96 1.1 jakllsch #define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc
97 1.1 jakllsch #define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data
98 1.1 jakllsch
99 1.1 jakllsch
100 1.1 jakllsch typedef
101 1.1 jakllsch EFI_STATUS
102 1.1 jakllsch (EFIAPI *EFI_CONVERT_POINTER) (
103 1.1 jakllsch IN UINTN DebugDisposition,
104 1.1 jakllsch IN OUT VOID **Address
105 1.1 jakllsch );
106 1.1 jakllsch
107 1.1 jakllsch
108 1.1 jakllsch //
109 1.1 jakllsch // EFI Events
110 1.1 jakllsch //
111 1.1 jakllsch
112 1.1 jakllsch #define EVT_TIMER 0x80000000
113 1.1 jakllsch #define EVT_RUNTIME 0x40000000
114 1.1 jakllsch #define EVT_RUNTIME_CONTEXT 0x20000000
115 1.1 jakllsch
116 1.1 jakllsch #define EVT_NOTIFY_WAIT 0x00000100
117 1.1 jakllsch #define EVT_NOTIFY_SIGNAL 0x00000200
118 1.1 jakllsch
119 1.1 jakllsch #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
120 1.1 jakllsch #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
121 1.1 jakllsch
122 1.1 jakllsch #define EVT_EFI_SIGNAL_MASK 0x000000FF
123 1.3 jmcneill #define EVT_EFI_SIGNAL_MAX 4
124 1.3 jmcneill
125 1.3 jmcneill #define EFI_EVENT_TIMER EVT_TIMER
126 1.3 jmcneill #define EFI_EVENT_RUNTIME EVT_RUNTIME
127 1.3 jmcneill #define EFI_EVENT_RUNTIME_CONTEXT EVT_RUNTIME_CONTEXT
128 1.3 jmcneill #define EFI_EVENT_NOTIFY_WAIT EVT_NOTIFY_WAIT
129 1.3 jmcneill #define EFI_EVENT_NOTIFY_SIGNAL EVT_NOTIFY_SIGNAL
130 1.3 jmcneill #define EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES EVT_SIGNAL_EXIT_BOOT_SERVICES
131 1.3 jmcneill #define EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
132 1.3 jmcneill #define EFI_EVENT_EFI_SIGNAL_MASK EVT_EFI_SIGNAL_MASK
133 1.3 jmcneill #define EFI_EVENT_EFI_SIGNAL_MAX EVT_EFI_SIGNAL_MAX
134 1.3 jmcneill
135 1.1 jakllsch
136 1.1 jakllsch typedef
137 1.1 jakllsch VOID
138 1.1 jakllsch (EFIAPI *EFI_EVENT_NOTIFY) (
139 1.1 jakllsch IN EFI_EVENT Event,
140 1.1 jakllsch IN VOID *Context
141 1.1 jakllsch );
142 1.1 jakllsch
143 1.1 jakllsch typedef
144 1.1 jakllsch EFI_STATUS
145 1.1 jakllsch (EFIAPI *EFI_CREATE_EVENT) (
146 1.1 jakllsch IN UINT32 Type,
147 1.1 jakllsch IN EFI_TPL NotifyTpl,
148 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction,
149 1.1 jakllsch IN VOID *NotifyContext,
150 1.1 jakllsch OUT EFI_EVENT *Event
151 1.1 jakllsch );
152 1.1 jakllsch
153 1.1 jakllsch typedef enum {
154 1.1 jakllsch TimerCancel,
155 1.1 jakllsch TimerPeriodic,
156 1.1 jakllsch TimerRelative,
157 1.1 jakllsch TimerTypeMax
158 1.1 jakllsch } EFI_TIMER_DELAY;
159 1.1 jakllsch
160 1.1 jakllsch typedef
161 1.1 jakllsch EFI_STATUS
162 1.1 jakllsch (EFIAPI *EFI_SET_TIMER) (
163 1.1 jakllsch IN EFI_EVENT Event,
164 1.1 jakllsch IN EFI_TIMER_DELAY Type,
165 1.1 jakllsch IN UINT64 TriggerTime
166 1.1 jakllsch );
167 1.1 jakllsch
168 1.1 jakllsch typedef
169 1.1 jakllsch EFI_STATUS
170 1.1 jakllsch (EFIAPI *EFI_SIGNAL_EVENT) (
171 1.1 jakllsch IN EFI_EVENT Event
172 1.1 jakllsch );
173 1.1 jakllsch
174 1.1 jakllsch typedef
175 1.1 jakllsch EFI_STATUS
176 1.1 jakllsch (EFIAPI *EFI_WAIT_FOR_EVENT) (
177 1.1 jakllsch IN UINTN NumberOfEvents,
178 1.1 jakllsch IN EFI_EVENT *Event,
179 1.1 jakllsch OUT UINTN *Index
180 1.1 jakllsch );
181 1.1 jakllsch
182 1.1 jakllsch typedef
183 1.1 jakllsch EFI_STATUS
184 1.1 jakllsch (EFIAPI *EFI_CLOSE_EVENT) (
185 1.1 jakllsch IN EFI_EVENT Event
186 1.1 jakllsch );
187 1.1 jakllsch
188 1.1 jakllsch typedef
189 1.1 jakllsch EFI_STATUS
190 1.1 jakllsch (EFIAPI *EFI_CHECK_EVENT) (
191 1.1 jakllsch IN EFI_EVENT Event
192 1.1 jakllsch );
193 1.1 jakllsch
194 1.1 jakllsch //
195 1.1 jakllsch // Task priority level
196 1.1 jakllsch //
197 1.1 jakllsch
198 1.3 jmcneill #define TPL_APPLICATION 4
199 1.3 jmcneill #define TPL_CALLBACK 8
200 1.3 jmcneill #define TPL_NOTIFY 16
201 1.3 jmcneill #define TPL_HIGH_LEVEL 31
202 1.3 jmcneill #define EFI_TPL_APPLICATION TPL_APPLICATION
203 1.3 jmcneill #define EFI_TPL_CALLBACK TPL_CALLBACK
204 1.3 jmcneill #define EFI_TPL_NOTIFY TPL_NOTIFY
205 1.3 jmcneill #define EFI_TPL_HIGH_LEVEL TPL_HIGH_LEVEL
206 1.1 jakllsch typedef
207 1.1 jakllsch EFI_TPL
208 1.1 jakllsch (EFIAPI *EFI_RAISE_TPL) (
209 1.1 jakllsch IN EFI_TPL NewTpl
210 1.1 jakllsch );
211 1.1 jakllsch
212 1.1 jakllsch typedef
213 1.1 jakllsch VOID
214 1.1 jakllsch (EFIAPI *EFI_RESTORE_TPL) (
215 1.1 jakllsch IN EFI_TPL OldTpl
216 1.1 jakllsch );
217 1.1 jakllsch
218 1.1 jakllsch
219 1.1 jakllsch //
220 1.1 jakllsch // EFI platform varibles
221 1.1 jakllsch //
222 1.1 jakllsch
223 1.1 jakllsch #define EFI_GLOBAL_VARIABLE \
224 1.1 jakllsch { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
225 1.1 jakllsch
226 1.1 jakllsch // Variable attributes
227 1.3 jmcneill #define EFI_VARIABLE_NON_VOLATILE 0x00000001
228 1.3 jmcneill #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
229 1.3 jmcneill #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
230 1.3 jmcneill #define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
231 1.3 jmcneill #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
232 1.3 jmcneill #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
233 1.3 jmcneill #define EFI_VARIABLE_APPEND_WRITE 0x00000040
234 1.1 jakllsch
235 1.1 jakllsch // Variable size limitation
236 1.1 jakllsch #define EFI_MAXIMUM_VARIABLE_SIZE 1024
237 1.1 jakllsch
238 1.1 jakllsch typedef
239 1.1 jakllsch EFI_STATUS
240 1.1 jakllsch (EFIAPI *EFI_GET_VARIABLE) (
241 1.1 jakllsch IN CHAR16 *VariableName,
242 1.1 jakllsch IN EFI_GUID *VendorGuid,
243 1.1 jakllsch OUT UINT32 *Attributes OPTIONAL,
244 1.1 jakllsch IN OUT UINTN *DataSize,
245 1.1 jakllsch OUT VOID *Data
246 1.1 jakllsch );
247 1.1 jakllsch
248 1.1 jakllsch typedef
249 1.1 jakllsch EFI_STATUS
250 1.1 jakllsch (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
251 1.1 jakllsch IN OUT UINTN *VariableNameSize,
252 1.1 jakllsch IN OUT CHAR16 *VariableName,
253 1.1 jakllsch IN OUT EFI_GUID *VendorGuid
254 1.1 jakllsch );
255 1.1 jakllsch
256 1.1 jakllsch
257 1.1 jakllsch typedef
258 1.1 jakllsch EFI_STATUS
259 1.1 jakllsch (EFIAPI *EFI_SET_VARIABLE) (
260 1.1 jakllsch IN CHAR16 *VariableName,
261 1.1 jakllsch IN EFI_GUID *VendorGuid,
262 1.1 jakllsch IN UINT32 Attributes,
263 1.1 jakllsch IN UINTN DataSize,
264 1.1 jakllsch IN VOID *Data
265 1.1 jakllsch );
266 1.1 jakllsch
267 1.1 jakllsch
268 1.1 jakllsch //
269 1.1 jakllsch // EFI Time
270 1.1 jakllsch //
271 1.1 jakllsch
272 1.1 jakllsch typedef struct {
273 1.1 jakllsch UINT32 Resolution; // 1e-6 parts per million
274 1.1 jakllsch UINT32 Accuracy; // hertz
275 1.1 jakllsch BOOLEAN SetsToZero; // Set clears sub-second time
276 1.1 jakllsch } EFI_TIME_CAPABILITIES;
277 1.1 jakllsch
278 1.1 jakllsch
279 1.1 jakllsch typedef
280 1.1 jakllsch EFI_STATUS
281 1.1 jakllsch (EFIAPI *EFI_GET_TIME) (
282 1.1 jakllsch OUT EFI_TIME *Time,
283 1.1 jakllsch OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
284 1.1 jakllsch );
285 1.1 jakllsch
286 1.1 jakllsch typedef
287 1.1 jakllsch EFI_STATUS
288 1.1 jakllsch (EFIAPI *EFI_SET_TIME) (
289 1.1 jakllsch IN EFI_TIME *Time
290 1.1 jakllsch );
291 1.1 jakllsch
292 1.1 jakllsch typedef
293 1.1 jakllsch EFI_STATUS
294 1.1 jakllsch (EFIAPI *EFI_GET_WAKEUP_TIME) (
295 1.1 jakllsch OUT BOOLEAN *Enabled,
296 1.1 jakllsch OUT BOOLEAN *Pending,
297 1.1 jakllsch OUT EFI_TIME *Time
298 1.1 jakllsch );
299 1.1 jakllsch
300 1.1 jakllsch typedef
301 1.1 jakllsch EFI_STATUS
302 1.1 jakllsch (EFIAPI *EFI_SET_WAKEUP_TIME) (
303 1.1 jakllsch IN BOOLEAN Enable,
304 1.1 jakllsch IN EFI_TIME *Time OPTIONAL
305 1.1 jakllsch );
306 1.1 jakllsch
307 1.1 jakllsch
308 1.1 jakllsch //
309 1.1 jakllsch // Image functions
310 1.1 jakllsch //
311 1.1 jakllsch
312 1.1 jakllsch
313 1.1 jakllsch // PE32+ Subsystem type for EFI images
314 1.1 jakllsch
315 1.1 jakllsch #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
316 1.1 jakllsch #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
317 1.1 jakllsch #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
318 1.1 jakllsch #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
319 1.1 jakllsch #endif
320 1.1 jakllsch
321 1.1 jakllsch // PE32+ Machine type for EFI images
322 1.1 jakllsch
323 1.1 jakllsch #if !defined(EFI_IMAGE_MACHINE_IA32)
324 1.1 jakllsch #define EFI_IMAGE_MACHINE_IA32 0x014c
325 1.1 jakllsch #endif
326 1.1 jakllsch
327 1.1 jakllsch #if !defined(EFI_IMAGE_MACHINE_IA64)
328 1.1 jakllsch #define EFI_IMAGE_MACHINE_IA64 0x0200
329 1.1 jakllsch #endif
330 1.1 jakllsch
331 1.3 jmcneill #if !defined(EFI_IMAGE_MACHINE_EBC)
332 1.3 jmcneill #define EFI_IMAGE_MACHINE_EBC 0x0EBC
333 1.3 jmcneill #endif
334 1.3 jmcneill
335 1.3 jmcneill #if !defined(EFI_IMAGE_MACHINE_X64)
336 1.3 jmcneill #define EFI_IMAGE_MACHINE_X64 0x8664
337 1.3 jmcneill #endif
338 1.3 jmcneill
339 1.3 jmcneill #if !defined(EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
340 1.3 jmcneill #define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2
341 1.3 jmcneill #endif
342 1.3 jmcneill
343 1.3 jmcneill #if !defined(EFI_IMAGE_MACHINE_AARCH64)
344 1.3 jmcneill #define EFI_IMAGE_MACHINE_AARCH64 0xAA64
345 1.3 jmcneill #endif
346 1.3 jmcneill
347 1.4 jmcneill #if !defined(EFI_IMAGE_MACHINE_RISCV32)
348 1.4 jmcneill #define EFI_IMAGE_MACHINE_RISCV32 0x5032
349 1.4 jmcneill #endif
350 1.4 jmcneill
351 1.4 jmcneill #if !defined(EFI_IMAGE_MACHINE_RISCV64)
352 1.4 jmcneill #define EFI_IMAGE_MACHINE_RISCV64 0x5064
353 1.4 jmcneill #endif
354 1.4 jmcneill
355 1.4 jmcneill #if !defined(EFI_IMAGE_MACHINE_RISCV128)
356 1.4 jmcneill #define EFI_IMAGE_MACHINE_RISCV128 0x5128
357 1.4 jmcneill #endif
358 1.4 jmcneill
359 1.1 jakllsch // Image Entry prototype
360 1.1 jakllsch
361 1.1 jakllsch typedef
362 1.1 jakllsch EFI_STATUS
363 1.1 jakllsch (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
364 1.1 jakllsch IN EFI_HANDLE ImageHandle,
365 1.1 jakllsch IN struct _EFI_SYSTEM_TABLE *SystemTable
366 1.1 jakllsch );
367 1.1 jakllsch
368 1.1 jakllsch typedef
369 1.1 jakllsch EFI_STATUS
370 1.1 jakllsch (EFIAPI *EFI_IMAGE_LOAD) (
371 1.1 jakllsch IN BOOLEAN BootPolicy,
372 1.1 jakllsch IN EFI_HANDLE ParentImageHandle,
373 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
374 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL,
375 1.1 jakllsch IN UINTN SourceSize,
376 1.1 jakllsch OUT EFI_HANDLE *ImageHandle
377 1.1 jakllsch );
378 1.1 jakllsch
379 1.1 jakllsch typedef
380 1.1 jakllsch EFI_STATUS
381 1.1 jakllsch (EFIAPI *EFI_IMAGE_START) (
382 1.1 jakllsch IN EFI_HANDLE ImageHandle,
383 1.1 jakllsch OUT UINTN *ExitDataSize,
384 1.1 jakllsch OUT CHAR16 **ExitData OPTIONAL
385 1.1 jakllsch );
386 1.1 jakllsch
387 1.1 jakllsch typedef
388 1.1 jakllsch EFI_STATUS
389 1.1 jakllsch (EFIAPI *EFI_EXIT) (
390 1.1 jakllsch IN EFI_HANDLE ImageHandle,
391 1.1 jakllsch IN EFI_STATUS ExitStatus,
392 1.1 jakllsch IN UINTN ExitDataSize,
393 1.1 jakllsch IN CHAR16 *ExitData OPTIONAL
394 1.1 jakllsch );
395 1.1 jakllsch
396 1.1 jakllsch
397 1.1 jakllsch // Image handle
398 1.3 jmcneill /*#define LOADED_IMAGE_PROTOCOL \
399 1.1 jakllsch { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
400 1.1 jakllsch
401 1.1 jakllsch #define EFI_IMAGE_INFORMATION_REVISION 0x1000
402 1.1 jakllsch typedef struct {
403 1.1 jakllsch UINT32 Revision;
404 1.1 jakllsch EFI_HANDLE ParentHandle;
405 1.1 jakllsch struct _EFI_SYSTEM_TABLE *SystemTable;
406 1.1 jakllsch
407 1.1 jakllsch // Source location of image
408 1.1 jakllsch EFI_HANDLE DeviceHandle;
409 1.1 jakllsch EFI_DEVICE_PATH *FilePath;
410 1.1 jakllsch VOID *Reserved;
411 1.1 jakllsch
412 1.1 jakllsch // Images load options
413 1.1 jakllsch UINT32 LoadOptionsSize;
414 1.1 jakllsch VOID *LoadOptions;
415 1.1 jakllsch
416 1.1 jakllsch // Location of where image was loaded
417 1.1 jakllsch VOID *ImageBase;
418 1.1 jakllsch UINT64 ImageSize;
419 1.1 jakllsch EFI_MEMORY_TYPE ImageCodeType;
420 1.1 jakllsch EFI_MEMORY_TYPE ImageDataType;
421 1.1 jakllsch
422 1.1 jakllsch // If the driver image supports a dynamic unload request
423 1.1 jakllsch EFI_IMAGE_UNLOAD Unload;
424 1.1 jakllsch
425 1.3 jmcneill } EFI_LOADED_IMAGE;*/
426 1.1 jakllsch
427 1.1 jakllsch
428 1.1 jakllsch typedef
429 1.1 jakllsch EFI_STATUS
430 1.1 jakllsch (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
431 1.1 jakllsch IN EFI_HANDLE ImageHandle,
432 1.1 jakllsch IN UINTN MapKey
433 1.1 jakllsch );
434 1.1 jakllsch
435 1.1 jakllsch //
436 1.1 jakllsch // Misc
437 1.1 jakllsch //
438 1.1 jakllsch
439 1.1 jakllsch
440 1.1 jakllsch typedef
441 1.1 jakllsch EFI_STATUS
442 1.1 jakllsch (EFIAPI *EFI_STALL) (
443 1.1 jakllsch IN UINTN Microseconds
444 1.1 jakllsch );
445 1.1 jakllsch
446 1.1 jakllsch typedef
447 1.1 jakllsch EFI_STATUS
448 1.1 jakllsch (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
449 1.1 jakllsch IN UINTN Timeout,
450 1.1 jakllsch IN UINT64 WatchdogCode,
451 1.1 jakllsch IN UINTN DataSize,
452 1.1 jakllsch IN CHAR16 *WatchdogData OPTIONAL
453 1.1 jakllsch );
454 1.1 jakllsch
455 1.1 jakllsch typedef
456 1.1 jakllsch EFI_STATUS
457 1.1 jakllsch (EFIAPI *EFI_CONNECT_CONTROLLER) (
458 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
459 1.1 jakllsch IN EFI_HANDLE *DriverImageHandle OPTIONAL,
460 1.1 jakllsch IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL,
461 1.1 jakllsch IN BOOLEAN Recursive
462 1.1 jakllsch );
463 1.1 jakllsch
464 1.1 jakllsch typedef
465 1.1 jakllsch EFI_STATUS
466 1.1 jakllsch (EFIAPI *EFI_DISCONNECT_CONTROLLER) (
467 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
468 1.1 jakllsch IN EFI_HANDLE DriverImageHandle OPTIONAL,
469 1.1 jakllsch IN EFI_HANDLE ChildHandle OPTIONAL
470 1.1 jakllsch );
471 1.1 jakllsch
472 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
473 1.1 jakllsch #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
474 1.1 jakllsch #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
475 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
476 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
477 1.1 jakllsch #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
478 1.1 jakllsch
479 1.1 jakllsch typedef
480 1.1 jakllsch EFI_STATUS
481 1.1 jakllsch (EFIAPI *EFI_OPEN_PROTOCOL) (
482 1.1 jakllsch IN EFI_HANDLE Handle,
483 1.1 jakllsch IN EFI_GUID *Protocol,
484 1.1 jakllsch OUT VOID **Interface OPTIONAL,
485 1.1 jakllsch IN EFI_HANDLE AgentHandle,
486 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
487 1.1 jakllsch IN UINT32 Attributes
488 1.1 jakllsch );
489 1.1 jakllsch
490 1.1 jakllsch typedef
491 1.1 jakllsch EFI_STATUS
492 1.1 jakllsch (EFIAPI *EFI_CLOSE_PROTOCOL) (
493 1.1 jakllsch IN EFI_HANDLE Handle,
494 1.1 jakllsch IN EFI_GUID *Protocol,
495 1.1 jakllsch IN EFI_HANDLE AgentHandle,
496 1.1 jakllsch IN EFI_HANDLE ControllerHandle
497 1.1 jakllsch );
498 1.1 jakllsch
499 1.1 jakllsch typedef struct {
500 1.1 jakllsch EFI_HANDLE AgentHandle;
501 1.1 jakllsch EFI_HANDLE ControllerHandle;
502 1.1 jakllsch UINT32 Attributes;
503 1.1 jakllsch UINT32 OpenCount;
504 1.1 jakllsch } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
505 1.1 jakllsch
506 1.1 jakllsch typedef
507 1.1 jakllsch EFI_STATUS
508 1.1 jakllsch (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
509 1.1 jakllsch IN EFI_HANDLE Handle,
510 1.1 jakllsch IN EFI_GUID *Protocol,
511 1.1 jakllsch OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
512 1.1 jakllsch OUT UINTN *EntryCount
513 1.1 jakllsch );
514 1.1 jakllsch
515 1.1 jakllsch typedef
516 1.1 jakllsch EFI_STATUS
517 1.1 jakllsch (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
518 1.1 jakllsch IN EFI_HANDLE Handle,
519 1.1 jakllsch OUT EFI_GUID ***ProtocolBuffer,
520 1.1 jakllsch OUT UINTN *ProtocolBufferCount
521 1.1 jakllsch );
522 1.1 jakllsch
523 1.1 jakllsch typedef enum {
524 1.1 jakllsch AllHandles,
525 1.1 jakllsch ByRegisterNotify,
526 1.1 jakllsch ByProtocol
527 1.1 jakllsch } EFI_LOCATE_SEARCH_TYPE;
528 1.1 jakllsch
529 1.1 jakllsch typedef
530 1.1 jakllsch EFI_STATUS
531 1.1 jakllsch (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
532 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
533 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
534 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
535 1.1 jakllsch IN OUT UINTN *NoHandles,
536 1.1 jakllsch OUT EFI_HANDLE **Buffer
537 1.1 jakllsch );
538 1.1 jakllsch
539 1.1 jakllsch typedef
540 1.1 jakllsch EFI_STATUS
541 1.1 jakllsch (EFIAPI *EFI_LOCATE_PROTOCOL) (
542 1.1 jakllsch IN EFI_GUID *Protocol,
543 1.1 jakllsch IN VOID *Registration OPTIONAL,
544 1.1 jakllsch OUT VOID **Interface
545 1.1 jakllsch );
546 1.1 jakllsch
547 1.1 jakllsch typedef
548 1.1 jakllsch EFI_STATUS
549 1.1 jakllsch (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
550 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
551 1.1 jakllsch ...
552 1.1 jakllsch );
553 1.1 jakllsch
554 1.1 jakllsch typedef
555 1.1 jakllsch EFI_STATUS
556 1.1 jakllsch (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
557 1.1 jakllsch IN OUT EFI_HANDLE Handle,
558 1.1 jakllsch ...
559 1.1 jakllsch );
560 1.1 jakllsch
561 1.1 jakllsch typedef
562 1.1 jakllsch EFI_STATUS
563 1.1 jakllsch (EFIAPI *EFI_CALCULATE_CRC32) (
564 1.1 jakllsch IN VOID *Data,
565 1.1 jakllsch IN UINTN DataSize,
566 1.1 jakllsch OUT UINT32 *Crc32
567 1.1 jakllsch );
568 1.1 jakllsch
569 1.1 jakllsch typedef
570 1.1 jakllsch VOID
571 1.1 jakllsch (EFIAPI *EFI_COPY_MEM) (
572 1.1 jakllsch IN VOID *Destination,
573 1.1 jakllsch IN VOID *Source,
574 1.1 jakllsch IN UINTN Length
575 1.1 jakllsch );
576 1.1 jakllsch
577 1.1 jakllsch typedef
578 1.1 jakllsch VOID
579 1.1 jakllsch (EFIAPI *EFI_SET_MEM) (
580 1.1 jakllsch IN VOID *Buffer,
581 1.1 jakllsch IN UINTN Size,
582 1.1 jakllsch IN UINT8 Value
583 1.1 jakllsch );
584 1.1 jakllsch
585 1.1 jakllsch
586 1.1 jakllsch typedef
587 1.1 jakllsch EFI_STATUS
588 1.1 jakllsch (EFIAPI *EFI_CREATE_EVENT_EX) (
589 1.1 jakllsch IN UINT32 Type,
590 1.1 jakllsch IN EFI_TPL NotifyTpl,
591 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
592 1.1 jakllsch IN const VOID *NotifyContext OPTIONAL,
593 1.4 jmcneill IN const EFI_GUID *EventGroup OPTIONAL,
594 1.1 jakllsch OUT EFI_EVENT *Event
595 1.1 jakllsch );
596 1.1 jakllsch
597 1.1 jakllsch typedef enum {
598 1.1 jakllsch EfiResetCold,
599 1.1 jakllsch EfiResetWarm,
600 1.1 jakllsch EfiResetShutdown
601 1.1 jakllsch } EFI_RESET_TYPE;
602 1.1 jakllsch
603 1.1 jakllsch typedef
604 1.1 jakllsch EFI_STATUS
605 1.1 jakllsch (EFIAPI *EFI_RESET_SYSTEM) (
606 1.1 jakllsch IN EFI_RESET_TYPE ResetType,
607 1.1 jakllsch IN EFI_STATUS ResetStatus,
608 1.1 jakllsch IN UINTN DataSize,
609 1.1 jakllsch IN CHAR16 *ResetData OPTIONAL
610 1.1 jakllsch );
611 1.1 jakllsch
612 1.1 jakllsch typedef
613 1.1 jakllsch EFI_STATUS
614 1.1 jakllsch (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
615 1.1 jakllsch OUT UINT64 *Count
616 1.1 jakllsch );
617 1.1 jakllsch
618 1.1 jakllsch typedef
619 1.1 jakllsch EFI_STATUS
620 1.1 jakllsch (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
621 1.1 jakllsch OUT UINT32 *HighCount
622 1.1 jakllsch );
623 1.1 jakllsch
624 1.3 jmcneill typedef struct {
625 1.3 jmcneill UINT64 Length;
626 1.3 jmcneill union {
627 1.3 jmcneill EFI_PHYSICAL_ADDRESS DataBlock;
628 1.3 jmcneill EFI_PHYSICAL_ADDRESS ContinuationPointer;
629 1.3 jmcneill } Union;
630 1.3 jmcneill } EFI_CAPSULE_BLOCK_DESCRIPTOR;
631 1.3 jmcneill
632 1.3 jmcneill typedef struct {
633 1.3 jmcneill EFI_GUID CapsuleGuid;
634 1.3 jmcneill UINT32 HeaderSize;
635 1.3 jmcneill UINT32 Flags;
636 1.3 jmcneill UINT32 CapsuleImageSize;
637 1.3 jmcneill } EFI_CAPSULE_HEADER;
638 1.3 jmcneill
639 1.3 jmcneill #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
640 1.3 jmcneill #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
641 1.3 jmcneill #define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
642 1.3 jmcneill
643 1.3 jmcneill typedef
644 1.3 jmcneill EFI_STATUS
645 1.3 jmcneill (EFIAPI *EFI_UPDATE_CAPSULE) (
646 1.3 jmcneill IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
647 1.3 jmcneill IN UINTN CapsuleCount,
648 1.3 jmcneill IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
649 1.3 jmcneill );
650 1.3 jmcneill
651 1.3 jmcneill typedef
652 1.3 jmcneill EFI_STATUS
653 1.3 jmcneill (EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES) (
654 1.3 jmcneill IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
655 1.3 jmcneill IN UINTN CapsuleCount,
656 1.3 jmcneill OUT UINT64 *MaximumCapsuleSize,
657 1.3 jmcneill OUT EFI_RESET_TYPE *ResetType
658 1.3 jmcneill );
659 1.3 jmcneill
660 1.3 jmcneill typedef
661 1.3 jmcneill EFI_STATUS
662 1.3 jmcneill (EFIAPI *EFI_QUERY_VARIABLE_INFO) (
663 1.3 jmcneill IN UINT32 Attributes,
664 1.3 jmcneill OUT UINT64 *MaximumVariableStorageSize,
665 1.3 jmcneill OUT UINT64 *RemainingVariableStorageSize,
666 1.3 jmcneill OUT UINT64 *MaximumVariableSize
667 1.3 jmcneill );
668 1.3 jmcneill
669 1.1 jakllsch //
670 1.1 jakllsch // Protocol handler functions
671 1.1 jakllsch //
672 1.1 jakllsch
673 1.1 jakllsch typedef enum {
674 1.1 jakllsch EFI_NATIVE_INTERFACE,
675 1.1 jakllsch EFI_PCODE_INTERFACE
676 1.1 jakllsch } EFI_INTERFACE_TYPE;
677 1.1 jakllsch
678 1.1 jakllsch typedef
679 1.1 jakllsch EFI_STATUS
680 1.1 jakllsch (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
681 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
682 1.1 jakllsch IN EFI_GUID *Protocol,
683 1.1 jakllsch IN EFI_INTERFACE_TYPE InterfaceType,
684 1.1 jakllsch IN VOID *Interface
685 1.1 jakllsch );
686 1.1 jakllsch
687 1.1 jakllsch typedef
688 1.1 jakllsch EFI_STATUS
689 1.1 jakllsch (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
690 1.1 jakllsch IN EFI_HANDLE Handle,
691 1.1 jakllsch IN EFI_GUID *Protocol,
692 1.1 jakllsch IN VOID *OldInterface,
693 1.1 jakllsch IN VOID *NewInterface
694 1.1 jakllsch );
695 1.1 jakllsch
696 1.1 jakllsch typedef
697 1.1 jakllsch EFI_STATUS
698 1.1 jakllsch (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
699 1.1 jakllsch IN EFI_HANDLE Handle,
700 1.1 jakllsch IN EFI_GUID *Protocol,
701 1.1 jakllsch IN VOID *Interface
702 1.1 jakllsch );
703 1.1 jakllsch
704 1.1 jakllsch typedef
705 1.1 jakllsch EFI_STATUS
706 1.1 jakllsch (EFIAPI *EFI_HANDLE_PROTOCOL) (
707 1.1 jakllsch IN EFI_HANDLE Handle,
708 1.1 jakllsch IN EFI_GUID *Protocol,
709 1.1 jakllsch OUT VOID **Interface
710 1.1 jakllsch );
711 1.1 jakllsch
712 1.1 jakllsch typedef
713 1.1 jakllsch EFI_STATUS
714 1.1 jakllsch (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
715 1.1 jakllsch IN EFI_GUID *Protocol,
716 1.1 jakllsch IN EFI_EVENT Event,
717 1.1 jakllsch OUT VOID **Registration
718 1.1 jakllsch );
719 1.1 jakllsch
720 1.1 jakllsch typedef
721 1.1 jakllsch EFI_STATUS
722 1.1 jakllsch (EFIAPI *EFI_LOCATE_HANDLE) (
723 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
724 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
725 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
726 1.1 jakllsch IN OUT UINTN *BufferSize,
727 1.1 jakllsch OUT EFI_HANDLE *Buffer
728 1.1 jakllsch );
729 1.1 jakllsch
730 1.1 jakllsch typedef
731 1.1 jakllsch EFI_STATUS
732 1.1 jakllsch (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
733 1.1 jakllsch IN EFI_GUID *Protocol,
734 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath,
735 1.1 jakllsch OUT EFI_HANDLE *Device
736 1.1 jakllsch );
737 1.1 jakllsch
738 1.1 jakllsch typedef
739 1.1 jakllsch EFI_STATUS
740 1.1 jakllsch (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
741 1.1 jakllsch IN EFI_GUID *Guid,
742 1.1 jakllsch IN VOID *Table
743 1.1 jakllsch );
744 1.1 jakllsch
745 1.1 jakllsch typedef
746 1.1 jakllsch EFI_STATUS
747 1.1 jakllsch (EFIAPI *EFI_RESERVED_SERVICE) (
748 1.1 jakllsch );
749 1.1 jakllsch
750 1.1 jakllsch //
751 1.1 jakllsch // Standard EFI table header
752 1.1 jakllsch //
753 1.1 jakllsch
754 1.3 jmcneill typedef struct _EFI_TABLE_HEADER {
755 1.1 jakllsch UINT64 Signature;
756 1.1 jakllsch UINT32 Revision;
757 1.1 jakllsch UINT32 HeaderSize;
758 1.1 jakllsch UINT32 CRC32;
759 1.1 jakllsch UINT32 Reserved;
760 1.1 jakllsch } EFI_TABLE_HEADER;
761 1.1 jakllsch
762 1.1 jakllsch
763 1.1 jakllsch //
764 1.1 jakllsch // EFI Runtime Serivces Table
765 1.1 jakllsch //
766 1.1 jakllsch
767 1.1 jakllsch #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
768 1.1 jakllsch #define EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
769 1.1 jakllsch
770 1.1 jakllsch typedef struct {
771 1.1 jakllsch EFI_TABLE_HEADER Hdr;
772 1.1 jakllsch
773 1.1 jakllsch //
774 1.1 jakllsch // Time services
775 1.1 jakllsch //
776 1.1 jakllsch
777 1.1 jakllsch EFI_GET_TIME GetTime;
778 1.1 jakllsch EFI_SET_TIME SetTime;
779 1.1 jakllsch EFI_GET_WAKEUP_TIME GetWakeupTime;
780 1.1 jakllsch EFI_SET_WAKEUP_TIME SetWakeupTime;
781 1.1 jakllsch
782 1.1 jakllsch //
783 1.1 jakllsch // Virtual memory services
784 1.1 jakllsch //
785 1.1 jakllsch
786 1.1 jakllsch EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
787 1.1 jakllsch EFI_CONVERT_POINTER ConvertPointer;
788 1.1 jakllsch
789 1.1 jakllsch //
790 1.1 jakllsch // Variable serviers
791 1.1 jakllsch //
792 1.1 jakllsch
793 1.1 jakllsch EFI_GET_VARIABLE GetVariable;
794 1.1 jakllsch EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
795 1.1 jakllsch EFI_SET_VARIABLE SetVariable;
796 1.1 jakllsch
797 1.1 jakllsch //
798 1.1 jakllsch // Misc
799 1.1 jakllsch //
800 1.1 jakllsch
801 1.1 jakllsch EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
802 1.1 jakllsch EFI_RESET_SYSTEM ResetSystem;
803 1.1 jakllsch
804 1.3 jmcneill EFI_UPDATE_CAPSULE UpdateCapsule;
805 1.3 jmcneill EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
806 1.3 jmcneill EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
807 1.1 jakllsch } EFI_RUNTIME_SERVICES;
808 1.1 jakllsch
809 1.1 jakllsch
810 1.1 jakllsch //
811 1.1 jakllsch // EFI Boot Services Table
812 1.1 jakllsch //
813 1.1 jakllsch
814 1.1 jakllsch #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
815 1.1 jakllsch #define EFI_BOOT_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
816 1.1 jakllsch
817 1.1 jakllsch typedef struct _EFI_BOOT_SERVICES {
818 1.1 jakllsch
819 1.1 jakllsch EFI_TABLE_HEADER Hdr;
820 1.1 jakllsch
821 1.1 jakllsch //
822 1.1 jakllsch // Task priority functions
823 1.1 jakllsch //
824 1.1 jakllsch
825 1.1 jakllsch EFI_RAISE_TPL RaiseTPL;
826 1.1 jakllsch EFI_RESTORE_TPL RestoreTPL;
827 1.1 jakllsch
828 1.1 jakllsch //
829 1.1 jakllsch // Memory functions
830 1.1 jakllsch //
831 1.1 jakllsch
832 1.1 jakllsch EFI_ALLOCATE_PAGES AllocatePages;
833 1.1 jakllsch EFI_FREE_PAGES FreePages;
834 1.1 jakllsch EFI_GET_MEMORY_MAP GetMemoryMap;
835 1.1 jakllsch EFI_ALLOCATE_POOL AllocatePool;
836 1.1 jakllsch EFI_FREE_POOL FreePool;
837 1.1 jakllsch
838 1.1 jakllsch //
839 1.1 jakllsch // Event & timer functions
840 1.1 jakllsch //
841 1.1 jakllsch
842 1.1 jakllsch EFI_CREATE_EVENT CreateEvent;
843 1.1 jakllsch EFI_SET_TIMER SetTimer;
844 1.1 jakllsch EFI_WAIT_FOR_EVENT WaitForEvent;
845 1.1 jakllsch EFI_SIGNAL_EVENT SignalEvent;
846 1.1 jakllsch EFI_CLOSE_EVENT CloseEvent;
847 1.1 jakllsch EFI_CHECK_EVENT CheckEvent;
848 1.1 jakllsch
849 1.1 jakllsch //
850 1.1 jakllsch // Protocol handler functions
851 1.1 jakllsch //
852 1.1 jakllsch
853 1.1 jakllsch EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
854 1.1 jakllsch EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
855 1.1 jakllsch EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
856 1.1 jakllsch EFI_HANDLE_PROTOCOL HandleProtocol;
857 1.1 jakllsch EFI_HANDLE_PROTOCOL PCHandleProtocol;
858 1.1 jakllsch EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
859 1.1 jakllsch EFI_LOCATE_HANDLE LocateHandle;
860 1.1 jakllsch EFI_LOCATE_DEVICE_PATH LocateDevicePath;
861 1.1 jakllsch EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
862 1.1 jakllsch
863 1.1 jakllsch //
864 1.1 jakllsch // Image functions
865 1.1 jakllsch //
866 1.1 jakllsch
867 1.1 jakllsch EFI_IMAGE_LOAD LoadImage;
868 1.1 jakllsch EFI_IMAGE_START StartImage;
869 1.1 jakllsch EFI_EXIT Exit;
870 1.1 jakllsch EFI_IMAGE_UNLOAD UnloadImage;
871 1.1 jakllsch EFI_EXIT_BOOT_SERVICES ExitBootServices;
872 1.1 jakllsch
873 1.1 jakllsch //
874 1.1 jakllsch // Misc functions
875 1.1 jakllsch //
876 1.1 jakllsch
877 1.1 jakllsch EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
878 1.1 jakllsch EFI_STALL Stall;
879 1.1 jakllsch EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
880 1.1 jakllsch
881 1.1 jakllsch //
882 1.1 jakllsch // DriverSupport Services
883 1.1 jakllsch //
884 1.1 jakllsch
885 1.1 jakllsch EFI_CONNECT_CONTROLLER ConnectController;
886 1.1 jakllsch EFI_DISCONNECT_CONTROLLER DisconnectController;
887 1.1 jakllsch
888 1.1 jakllsch //
889 1.1 jakllsch // Open and Close Protocol Services
890 1.1 jakllsch //
891 1.1 jakllsch EFI_OPEN_PROTOCOL OpenProtocol;
892 1.1 jakllsch EFI_CLOSE_PROTOCOL CloseProtocol;
893 1.1 jakllsch EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
894 1.1 jakllsch
895 1.1 jakllsch //
896 1.1 jakllsch // Library Services
897 1.1 jakllsch //
898 1.1 jakllsch EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
899 1.1 jakllsch EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
900 1.1 jakllsch EFI_LOCATE_PROTOCOL LocateProtocol;
901 1.1 jakllsch EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
902 1.1 jakllsch EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
903 1.1 jakllsch
904 1.1 jakllsch //
905 1.1 jakllsch // 32-bit CRC Services
906 1.1 jakllsch //
907 1.1 jakllsch EFI_CALCULATE_CRC32 CalculateCrc32;
908 1.1 jakllsch
909 1.1 jakllsch //
910 1.1 jakllsch // Misc Services
911 1.1 jakllsch //
912 1.1 jakllsch EFI_COPY_MEM CopyMem;
913 1.1 jakllsch EFI_SET_MEM SetMem;
914 1.1 jakllsch EFI_CREATE_EVENT_EX CreateEventEx;
915 1.1 jakllsch } EFI_BOOT_SERVICES;
916 1.1 jakllsch
917 1.1 jakllsch
918 1.1 jakllsch //
919 1.1 jakllsch // EFI Configuration Table and GUID definitions
920 1.1 jakllsch //
921 1.1 jakllsch
922 1.1 jakllsch #define MPS_TABLE_GUID \
923 1.1 jakllsch { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
924 1.1 jakllsch
925 1.1 jakllsch #define ACPI_TABLE_GUID \
926 1.1 jakllsch { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
927 1.1 jakllsch
928 1.1 jakllsch #define ACPI_20_TABLE_GUID \
929 1.1 jakllsch { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
930 1.1 jakllsch
931 1.1 jakllsch #define SMBIOS_TABLE_GUID \
932 1.1 jakllsch { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
933 1.1 jakllsch
934 1.3 jmcneill #define SMBIOS3_TABLE_GUID \
935 1.3 jmcneill { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
936 1.3 jmcneill
937 1.1 jakllsch #define SAL_SYSTEM_TABLE_GUID \
938 1.1 jakllsch { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
939 1.1 jakllsch
940 1.2 scole /* DIG64 Headless Console & Debug Port Table. */
941 1.2 scole #define HCDP_TABLE_GUID \
942 1.2 scole { 0xf951938d, 0x620b, 0x42ef, {0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98} }
943 1.1 jakllsch
944 1.4 jmcneill #define EFI_DTB_TABLE_GUID \
945 1.4 jmcneill { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
946 1.4 jmcneill
947 1.1 jakllsch typedef struct _EFI_CONFIGURATION_TABLE {
948 1.1 jakllsch EFI_GUID VendorGuid;
949 1.1 jakllsch VOID *VendorTable;
950 1.1 jakllsch } EFI_CONFIGURATION_TABLE;
951 1.1 jakllsch
952 1.1 jakllsch
953 1.1 jakllsch //
954 1.1 jakllsch // EFI System Table
955 1.1 jakllsch //
956 1.1 jakllsch
957 1.1 jakllsch
958 1.1 jakllsch
959 1.1 jakllsch
960 1.1 jakllsch #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
961 1.1 jakllsch #define EFI_SYSTEM_TABLE_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
962 1.1 jakllsch
963 1.1 jakllsch typedef struct _EFI_SYSTEM_TABLE {
964 1.1 jakllsch EFI_TABLE_HEADER Hdr;
965 1.1 jakllsch
966 1.1 jakllsch CHAR16 *FirmwareVendor;
967 1.1 jakllsch UINT32 FirmwareRevision;
968 1.1 jakllsch
969 1.1 jakllsch EFI_HANDLE ConsoleInHandle;
970 1.1 jakllsch SIMPLE_INPUT_INTERFACE *ConIn;
971 1.1 jakllsch
972 1.1 jakllsch EFI_HANDLE ConsoleOutHandle;
973 1.1 jakllsch SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
974 1.1 jakllsch
975 1.1 jakllsch EFI_HANDLE StandardErrorHandle;
976 1.1 jakllsch SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
977 1.1 jakllsch
978 1.1 jakllsch EFI_RUNTIME_SERVICES *RuntimeServices;
979 1.1 jakllsch EFI_BOOT_SERVICES *BootServices;
980 1.1 jakllsch
981 1.1 jakllsch UINTN NumberOfTableEntries;
982 1.1 jakllsch EFI_CONFIGURATION_TABLE *ConfigurationTable;
983 1.1 jakllsch
984 1.1 jakllsch } EFI_SYSTEM_TABLE;
985 1.1 jakllsch
986 1.1 jakllsch #endif
987 1.1 jakllsch
988