1 | #ifndef _EFI_API_H
|
---|
2 | #define _EFI_API_H
|
---|
3 |
|
---|
4 | /*++
|
---|
5 |
|
---|
6 | Copyright (c) 1998 Intel Corporation
|
---|
7 |
|
---|
8 | Module Name:
|
---|
9 |
|
---|
10 | efiapi.h
|
---|
11 |
|
---|
12 | Abstract:
|
---|
13 |
|
---|
14 | Global EFI runtime & boot service interfaces
|
---|
15 |
|
---|
16 |
|
---|
17 |
|
---|
18 |
|
---|
19 | Revision History
|
---|
20 |
|
---|
21 | --*/
|
---|
22 |
|
---|
23 | //
|
---|
24 | // EFI Specification Revision
|
---|
25 | //
|
---|
26 |
|
---|
27 | #define EFI_SPECIFICATION_MAJOR_REVISION 1
|
---|
28 | #define EFI_SPECIFICATION_MINOR_REVISION 02
|
---|
29 |
|
---|
30 | //
|
---|
31 | // Declare forward referenced data structures
|
---|
32 | //
|
---|
33 |
|
---|
34 | INTERFACE_DECL(_EFI_SYSTEM_TABLE);
|
---|
35 |
|
---|
36 | //
|
---|
37 | // EFI Memory
|
---|
38 | //
|
---|
39 |
|
---|
40 | typedef
|
---|
41 | EFI_STATUS
|
---|
42 | (EFIAPI *EFI_ALLOCATE_PAGES) (
|
---|
43 | IN EFI_ALLOCATE_TYPE Type,
|
---|
44 | IN EFI_MEMORY_TYPE MemoryType,
|
---|
45 | IN UINTN NoPages,
|
---|
46 | OUT EFI_PHYSICAL_ADDRESS *Memory
|
---|
47 | );
|
---|
48 |
|
---|
49 | typedef
|
---|
50 | EFI_STATUS
|
---|
51 | (EFIAPI *EFI_FREE_PAGES) (
|
---|
52 | IN EFI_PHYSICAL_ADDRESS Memory,
|
---|
53 | IN UINTN NoPages
|
---|
54 | );
|
---|
55 |
|
---|
56 | typedef
|
---|
57 | EFI_STATUS
|
---|
58 | (EFIAPI *EFI_GET_MEMORY_MAP) (
|
---|
59 | IN OUT UINTN *MemoryMapSize,
|
---|
60 | IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
---|
61 | OUT UINTN *MapKey,
|
---|
62 | OUT UINTN *DescriptorSize,
|
---|
63 | OUT UINT32 *DescriptorVersion
|
---|
64 | );
|
---|
65 |
|
---|
66 | #define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
|
---|
67 |
|
---|
68 |
|
---|
69 | typedef
|
---|
70 | EFI_STATUS
|
---|
71 | (EFIAPI *EFI_ALLOCATE_POOL) (
|
---|
72 | IN EFI_MEMORY_TYPE PoolType,
|
---|
73 | IN UINTN Size,
|
---|
74 | OUT VOID **Buffer
|
---|
75 | );
|
---|
76 |
|
---|
77 | typedef
|
---|
78 | EFI_STATUS
|
---|
79 | (EFIAPI *EFI_FREE_POOL) (
|
---|
80 | IN VOID *Buffer
|
---|
81 | );
|
---|
82 |
|
---|
83 | typedef
|
---|
84 | EFI_STATUS
|
---|
85 | (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
|
---|
86 | IN UINTN MemoryMapSize,
|
---|
87 | IN UINTN DescriptorSize,
|
---|
88 | IN UINT32 DescriptorVersion,
|
---|
89 | IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
---|
90 | );
|
---|
91 |
|
---|
92 |
|
---|
93 | #define EFI_OPTIONAL_PTR 0x00000001
|
---|
94 | #define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc
|
---|
95 | #define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data
|
---|
96 |
|
---|
97 |
|
---|
98 | typedef
|
---|
99 | EFI_STATUS
|
---|
100 | (EFIAPI *EFI_CONVERT_POINTER) (
|
---|
101 | IN UINTN DebugDisposition,
|
---|
102 | IN OUT VOID **Address
|
---|
103 | );
|
---|
104 |
|
---|
105 |
|
---|
106 | //
|
---|
107 | // EFI Events
|
---|
108 | //
|
---|
109 |
|
---|
110 |
|
---|
111 |
|
---|
112 | #define EVT_TIMER 0x80000000
|
---|
113 | #define EVT_RUNTIME 0x40000000
|
---|
114 | #define EVT_RUNTIME_CONTEXT 0x20000000
|
---|
115 |
|
---|
116 | #define EVT_NOTIFY_WAIT 0x00000100
|
---|
117 | #define EVT_NOTIFY_SIGNAL 0x00000200
|
---|
118 |
|
---|
119 | #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
|
---|
120 | #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
|
---|
121 |
|
---|
122 | #define EVT_EFI_SIGNAL_MASK 0x000000FF
|
---|
123 | #define EVT_EFI_SIGNAL_MAX 2
|
---|
124 |
|
---|
125 | typedef
|
---|
126 | VOID
|
---|
127 | (EFIAPI *EFI_EVENT_NOTIFY) (
|
---|
128 | IN EFI_EVENT Event,
|
---|
129 | IN VOID *Context
|
---|
130 | );
|
---|
131 |
|
---|
132 | typedef
|
---|
133 | EFI_STATUS
|
---|
134 | (EFIAPI *EFI_CREATE_EVENT) (
|
---|
135 | IN UINT32 Type,
|
---|
136 | IN EFI_TPL NotifyTpl,
|
---|
137 | IN EFI_EVENT_NOTIFY NotifyFunction,
|
---|
138 | IN VOID *NotifyContext,
|
---|
139 | OUT EFI_EVENT *Event
|
---|
140 | );
|
---|
141 |
|
---|
142 | typedef enum {
|
---|
143 | TimerCancel,
|
---|
144 | TimerPeriodic,
|
---|
145 | TimerRelative,
|
---|
146 | TimerTypeMax
|
---|
147 | } EFI_TIMER_DELAY;
|
---|
148 |
|
---|
149 | typedef
|
---|
150 | EFI_STATUS
|
---|
151 | (EFIAPI *EFI_SET_TIMER) (
|
---|
152 | IN EFI_EVENT Event,
|
---|
153 | IN EFI_TIMER_DELAY Type,
|
---|
154 | IN UINT64 TriggerTime
|
---|
155 | );
|
---|
156 |
|
---|
157 | typedef
|
---|
158 | EFI_STATUS
|
---|
159 | (EFIAPI *EFI_SIGNAL_EVENT) (
|
---|
160 | IN EFI_EVENT Event
|
---|
161 | );
|
---|
162 |
|
---|
163 | typedef
|
---|
164 | EFI_STATUS
|
---|
165 | (EFIAPI *EFI_WAIT_FOR_EVENT) (
|
---|
166 | IN UINTN NumberOfEvents,
|
---|
167 | IN EFI_EVENT *Event,
|
---|
168 | OUT UINTN *Index
|
---|
169 | );
|
---|
170 |
|
---|
171 | typedef
|
---|
172 | EFI_STATUS
|
---|
173 | (EFIAPI *EFI_CLOSE_EVENT) (
|
---|
174 | IN EFI_EVENT Event
|
---|
175 | );
|
---|
176 |
|
---|
177 | typedef
|
---|
178 | EFI_STATUS
|
---|
179 | (EFIAPI *EFI_CHECK_EVENT) (
|
---|
180 | IN EFI_EVENT Event
|
---|
181 | );
|
---|
182 |
|
---|
183 | //
|
---|
184 | // Task priority level
|
---|
185 | //
|
---|
186 |
|
---|
187 | #define TPL_APPLICATION 4
|
---|
188 | #define TPL_CALLBACK 8
|
---|
189 | #define TPL_NOTIFY 16
|
---|
190 | #define TPL_HIGH_LEVEL 31
|
---|
191 |
|
---|
192 | typedef
|
---|
193 | EFI_TPL
|
---|
194 | (EFIAPI *EFI_RAISE_TPL) (
|
---|
195 | IN EFI_TPL NewTpl
|
---|
196 | );
|
---|
197 |
|
---|
198 | typedef
|
---|
199 | VOID
|
---|
200 | (EFIAPI *EFI_RESTORE_TPL) (
|
---|
201 | IN EFI_TPL OldTpl
|
---|
202 | );
|
---|
203 |
|
---|
204 |
|
---|
205 | //
|
---|
206 | // EFI platform varibles
|
---|
207 | //
|
---|
208 |
|
---|
209 | #define EFI_GLOBAL_VARIABLE \
|
---|
210 | { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
|
---|
211 |
|
---|
212 | // Variable attributes
|
---|
213 | #define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
---|
214 | #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
---|
215 | #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
---|
216 |
|
---|
217 | // Variable size limitation
|
---|
218 | #define EFI_MAXIMUM_VARIABLE_SIZE 1024
|
---|
219 |
|
---|
220 | typedef
|
---|
221 | EFI_STATUS
|
---|
222 | (EFIAPI *EFI_GET_VARIABLE) (
|
---|
223 | IN CHAR16 *VariableName,
|
---|
224 | IN EFI_GUID *VendorGuid,
|
---|
225 | OUT UINT32 *Attributes OPTIONAL,
|
---|
226 | IN OUT UINTN *DataSize,
|
---|
227 | OUT VOID *Data
|
---|
228 | );
|
---|
229 |
|
---|
230 | typedef
|
---|
231 | EFI_STATUS
|
---|
232 | (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
|
---|
233 | IN OUT UINTN *VariableNameSize,
|
---|
234 | IN OUT CHAR16 *VariableName,
|
---|
235 | IN OUT EFI_GUID *VendorGuid
|
---|
236 | );
|
---|
237 |
|
---|
238 |
|
---|
239 | typedef
|
---|
240 | EFI_STATUS
|
---|
241 | (EFIAPI *EFI_SET_VARIABLE) (
|
---|
242 | IN CHAR16 *VariableName,
|
---|
243 | IN EFI_GUID *VendorGuid,
|
---|
244 | IN UINT32 Attributes,
|
---|
245 | IN UINTN DataSize,
|
---|
246 | IN VOID *Data
|
---|
247 | );
|
---|
248 |
|
---|
249 |
|
---|
250 | //
|
---|
251 | // EFI Time
|
---|
252 | //
|
---|
253 |
|
---|
254 | typedef struct {
|
---|
255 | UINT32 Resolution; // 1e-6 parts per million
|
---|
256 | UINT32 Accuracy; // hertz
|
---|
257 | BOOLEAN SetsToZero; // Set clears sub-second time
|
---|
258 | } EFI_TIME_CAPABILITIES;
|
---|
259 |
|
---|
260 |
|
---|
261 | typedef
|
---|
262 | EFI_STATUS
|
---|
263 | (EFIAPI *EFI_GET_TIME) (
|
---|
264 | OUT EFI_TIME *Time,
|
---|
265 | OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
---|
266 | );
|
---|
267 |
|
---|
268 | typedef
|
---|
269 | EFI_STATUS
|
---|
270 | (EFIAPI *EFI_SET_TIME) (
|
---|
271 | IN EFI_TIME *Time
|
---|
272 | );
|
---|
273 |
|
---|
274 | typedef
|
---|
275 | EFI_STATUS
|
---|
276 | (EFIAPI *EFI_GET_WAKEUP_TIME) (
|
---|
277 | OUT BOOLEAN *Enabled,
|
---|
278 | OUT BOOLEAN *Pending,
|
---|
279 | OUT EFI_TIME *Time
|
---|
280 | );
|
---|
281 |
|
---|
282 | typedef
|
---|
283 | EFI_STATUS
|
---|
284 | (EFIAPI *EFI_SET_WAKEUP_TIME) (
|
---|
285 | IN BOOLEAN Enable,
|
---|
286 | IN EFI_TIME *Time OPTIONAL
|
---|
287 | );
|
---|
288 |
|
---|
289 |
|
---|
290 | //
|
---|
291 | // Image functions
|
---|
292 | //
|
---|
293 |
|
---|
294 |
|
---|
295 | // PE32+ Subsystem type for EFI images
|
---|
296 |
|
---|
297 | #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
|
---|
298 | #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
|
---|
299 | #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
|
---|
300 | #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
|
---|
301 | #endif
|
---|
302 |
|
---|
303 | // PE32+ Machine type for EFI images
|
---|
304 |
|
---|
305 | #if !defined(EFI_IMAGE_MACHINE_IA32)
|
---|
306 | #define EFI_IMAGE_MACHINE_IA32 0x014c
|
---|
307 | #endif
|
---|
308 |
|
---|
309 | #if !defined(EFI_IMAGE_MACHINE_IA64)
|
---|
310 | #define EFI_IMAGE_MACHINE_IA64 0x0200
|
---|
311 | #endif
|
---|
312 |
|
---|
313 | // Image Entry prototype
|
---|
314 |
|
---|
315 | typedef
|
---|
316 | EFI_STATUS
|
---|
317 | (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
|
---|
318 | IN EFI_HANDLE ImageHandle,
|
---|
319 | IN struct _EFI_SYSTEM_TABLE *SystemTable
|
---|
320 | );
|
---|
321 |
|
---|
322 | typedef
|
---|
323 | EFI_STATUS
|
---|
324 | (EFIAPI *EFI_IMAGE_LOAD) (
|
---|
325 | IN BOOLEAN BootPolicy,
|
---|
326 | IN EFI_HANDLE ParentImageHandle,
|
---|
327 | IN EFI_DEVICE_PATH *FilePath,
|
---|
328 | IN VOID *SourceBuffer OPTIONAL,
|
---|
329 | IN UINTN SourceSize,
|
---|
330 | OUT EFI_HANDLE *ImageHandle
|
---|
331 | );
|
---|
332 |
|
---|
333 | typedef
|
---|
334 | EFI_STATUS
|
---|
335 | (EFIAPI *EFI_IMAGE_START) (
|
---|
336 | IN EFI_HANDLE ImageHandle,
|
---|
337 | OUT UINTN *ExitDataSize,
|
---|
338 | OUT CHAR16 **ExitData OPTIONAL
|
---|
339 | );
|
---|
340 |
|
---|
341 | typedef
|
---|
342 | EFI_STATUS
|
---|
343 | (EFIAPI *EFI_EXIT) (
|
---|
344 | IN EFI_HANDLE ImageHandle,
|
---|
345 | IN EFI_STATUS ExitStatus,
|
---|
346 | IN UINTN ExitDataSize,
|
---|
347 | IN CHAR16 *ExitData OPTIONAL
|
---|
348 | );
|
---|
349 |
|
---|
350 | typedef
|
---|
351 | EFI_STATUS
|
---|
352 | (EFIAPI *EFI_IMAGE_UNLOAD) (
|
---|
353 | IN EFI_HANDLE ImageHandle
|
---|
354 | );
|
---|
355 |
|
---|
356 |
|
---|
357 | // Image handle
|
---|
358 | #define LOADED_IMAGE_PROTOCOL \
|
---|
359 | { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
|
---|
360 |
|
---|
361 | #define EFI_IMAGE_INFORMATION_REVISION 0x1000
|
---|
362 | typedef struct {
|
---|
363 | UINT32 Revision;
|
---|
364 | EFI_HANDLE ParentHandle;
|
---|
365 | struct _EFI_SYSTEM_TABLE *SystemTable;
|
---|
366 |
|
---|
367 | // Source location of image
|
---|
368 | EFI_HANDLE DeviceHandle;
|
---|
369 | EFI_DEVICE_PATH *FilePath;
|
---|
370 | VOID *Reserved;
|
---|
371 |
|
---|
372 | // Images load options
|
---|
373 | UINT32 LoadOptionsSize;
|
---|
374 | VOID *LoadOptions;
|
---|
375 |
|
---|
376 | // Location of where image was loaded
|
---|
377 | VOID *ImageBase;
|
---|
378 | UINT64 ImageSize;
|
---|
379 | EFI_MEMORY_TYPE ImageCodeType;
|
---|
380 | EFI_MEMORY_TYPE ImageDataType;
|
---|
381 |
|
---|
382 | // If the driver image supports a dynamic unload request
|
---|
383 | EFI_IMAGE_UNLOAD Unload;
|
---|
384 |
|
---|
385 | } EFI_LOADED_IMAGE;
|
---|
386 |
|
---|
387 |
|
---|
388 | typedef
|
---|
389 | EFI_STATUS
|
---|
390 | (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
|
---|
391 | IN EFI_HANDLE ImageHandle,
|
---|
392 | IN UINTN MapKey
|
---|
393 | );
|
---|
394 |
|
---|
395 | //
|
---|
396 | // Misc
|
---|
397 | //
|
---|
398 |
|
---|
399 |
|
---|
400 | typedef
|
---|
401 | EFI_STATUS
|
---|
402 | (EFIAPI *EFI_STALL) (
|
---|
403 | IN UINTN Microseconds
|
---|
404 | );
|
---|
405 |
|
---|
406 | typedef
|
---|
407 | EFI_STATUS
|
---|
408 | (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
|
---|
409 | IN UINTN Timeout,
|
---|
410 | IN UINT64 WatchdogCode,
|
---|
411 | IN UINTN DataSize,
|
---|
412 | IN CHAR16 *WatchdogData OPTIONAL
|
---|
413 | );
|
---|
414 |
|
---|
415 |
|
---|
416 | typedef enum {
|
---|
417 | EfiResetCold,
|
---|
418 | EfiResetWarm
|
---|
419 | } EFI_RESET_TYPE;
|
---|
420 |
|
---|
421 | typedef
|
---|
422 | EFI_STATUS
|
---|
423 | (EFIAPI *EFI_RESET_SYSTEM) (
|
---|
424 | IN EFI_RESET_TYPE ResetType,
|
---|
425 | IN EFI_STATUS ResetStatus,
|
---|
426 | IN UINTN DataSize,
|
---|
427 | IN CHAR16 *ResetData OPTIONAL
|
---|
428 | );
|
---|
429 |
|
---|
430 | typedef
|
---|
431 | EFI_STATUS
|
---|
432 | (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
|
---|
433 | OUT UINT64 *Count
|
---|
434 | );
|
---|
435 |
|
---|
436 | typedef
|
---|
437 | EFI_STATUS
|
---|
438 | (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
|
---|
439 | OUT UINT32 *HighCount
|
---|
440 | );
|
---|
441 |
|
---|
442 | //
|
---|
443 | // Protocol handler functions
|
---|
444 | //
|
---|
445 |
|
---|
446 | typedef enum {
|
---|
447 | EFI_NATIVE_INTERFACE,
|
---|
448 | EFI_PCODE_INTERFACE
|
---|
449 | } EFI_INTERFACE_TYPE;
|
---|
450 |
|
---|
451 | typedef
|
---|
452 | EFI_STATUS
|
---|
453 | (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
|
---|
454 | IN OUT EFI_HANDLE *Handle,
|
---|
455 | IN EFI_GUID *Protocol,
|
---|
456 | IN EFI_INTERFACE_TYPE InterfaceType,
|
---|
457 | IN VOID *Interface
|
---|
458 | );
|
---|
459 |
|
---|
460 | typedef
|
---|
461 | EFI_STATUS
|
---|
462 | (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
|
---|
463 | IN EFI_HANDLE Handle,
|
---|
464 | IN EFI_GUID *Protocol,
|
---|
465 | IN VOID *OldInterface,
|
---|
466 | IN VOID *NewInterface
|
---|
467 | );
|
---|
468 |
|
---|
469 | typedef
|
---|
470 | EFI_STATUS
|
---|
471 | (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
|
---|
472 | IN EFI_HANDLE Handle,
|
---|
473 | IN EFI_GUID *Protocol,
|
---|
474 | IN VOID *Interface
|
---|
475 | );
|
---|
476 |
|
---|
477 | typedef
|
---|
478 | EFI_STATUS
|
---|
479 | (EFIAPI *EFI_HANDLE_PROTOCOL) (
|
---|
480 | IN EFI_HANDLE Handle,
|
---|
481 | IN EFI_GUID *Protocol,
|
---|
482 | OUT VOID **Interface
|
---|
483 | );
|
---|
484 |
|
---|
485 | typedef
|
---|
486 | EFI_STATUS
|
---|
487 | (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
|
---|
488 | IN EFI_GUID *Protocol,
|
---|
489 | IN EFI_EVENT Event,
|
---|
490 | OUT VOID **Registration
|
---|
491 | );
|
---|
492 |
|
---|
493 | typedef enum {
|
---|
494 | AllHandles,
|
---|
495 | ByRegisterNotify,
|
---|
496 | ByProtocol
|
---|
497 | } EFI_LOCATE_SEARCH_TYPE;
|
---|
498 |
|
---|
499 | typedef
|
---|
500 | EFI_STATUS
|
---|
501 | (EFIAPI *EFI_LOCATE_HANDLE) (
|
---|
502 | IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
---|
503 | IN EFI_GUID *Protocol OPTIONAL,
|
---|
504 | IN VOID *SearchKey OPTIONAL,
|
---|
505 | IN OUT UINTN *BufferSize,
|
---|
506 | OUT EFI_HANDLE *Buffer
|
---|
507 | );
|
---|
508 |
|
---|
509 | typedef
|
---|
510 | EFI_STATUS
|
---|
511 | (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
|
---|
512 | IN EFI_GUID *Protocol,
|
---|
513 | IN OUT EFI_DEVICE_PATH **DevicePath,
|
---|
514 | OUT EFI_HANDLE *Device
|
---|
515 | );
|
---|
516 |
|
---|
517 | typedef
|
---|
518 | EFI_STATUS
|
---|
519 | (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
|
---|
520 | IN EFI_GUID *Guid,
|
---|
521 | IN VOID *Table
|
---|
522 | );
|
---|
523 |
|
---|
524 | typedef
|
---|
525 | EFI_STATUS
|
---|
526 | (EFIAPI *EFI_RESERVED_SERVICE) (
|
---|
527 | );
|
---|
528 |
|
---|
529 | //
|
---|
530 | // Standard EFI table header
|
---|
531 | //
|
---|
532 |
|
---|
533 | typedef struct _EFI_TABLE_HEARDER {
|
---|
534 | UINT64 Signature;
|
---|
535 | UINT32 Revision;
|
---|
536 | UINT32 HeaderSize;
|
---|
537 | UINT32 CRC32;
|
---|
538 | UINT32 Reserved;
|
---|
539 | } EFI_TABLE_HEADER;
|
---|
540 |
|
---|
541 |
|
---|
542 | //
|
---|
543 | // EFI Runtime Serivces Table
|
---|
544 | //
|
---|
545 |
|
---|
546 | #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
|
---|
547 | #define EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
---|
548 |
|
---|
549 | typedef struct {
|
---|
550 | EFI_TABLE_HEADER Hdr;
|
---|
551 |
|
---|
552 | //
|
---|
553 | // Time services
|
---|
554 | //
|
---|
555 |
|
---|
556 | EFI_GET_TIME GetTime;
|
---|
557 | EFI_SET_TIME SetTime;
|
---|
558 | EFI_GET_WAKEUP_TIME GetWakeupTime;
|
---|
559 | EFI_SET_WAKEUP_TIME SetWakeupTime;
|
---|
560 |
|
---|
561 | //
|
---|
562 | // Virtual memory services
|
---|
563 | //
|
---|
564 |
|
---|
565 | EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
---|
566 | EFI_CONVERT_POINTER ConvertPointer;
|
---|
567 |
|
---|
568 | //
|
---|
569 | // Variable serviers
|
---|
570 | //
|
---|
571 |
|
---|
572 | EFI_GET_VARIABLE GetVariable;
|
---|
573 | EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
---|
574 | EFI_SET_VARIABLE SetVariable;
|
---|
575 |
|
---|
576 | //
|
---|
577 | // Misc
|
---|
578 | //
|
---|
579 |
|
---|
580 | EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
---|
581 | EFI_RESET_SYSTEM ResetSystem;
|
---|
582 |
|
---|
583 | } EFI_RUNTIME_SERVICES;
|
---|
584 |
|
---|
585 |
|
---|
586 | //
|
---|
587 | // EFI Boot Services Table
|
---|
588 | //
|
---|
589 |
|
---|
590 | #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
|
---|
591 | #define EFI_BOOT_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
---|
592 |
|
---|
593 | typedef struct _EFI_BOOT_SERVICES {
|
---|
594 |
|
---|
595 | EFI_TABLE_HEADER Hdr;
|
---|
596 |
|
---|
597 | //
|
---|
598 | // Task priority functions
|
---|
599 | //
|
---|
600 |
|
---|
601 | EFI_RAISE_TPL RaiseTPL;
|
---|
602 | EFI_RESTORE_TPL RestoreTPL;
|
---|
603 |
|
---|
604 | //
|
---|
605 | // Memory functions
|
---|
606 | //
|
---|
607 |
|
---|
608 | EFI_ALLOCATE_PAGES AllocatePages;
|
---|
609 | EFI_FREE_PAGES FreePages;
|
---|
610 | EFI_GET_MEMORY_MAP GetMemoryMap;
|
---|
611 | EFI_ALLOCATE_POOL AllocatePool;
|
---|
612 | EFI_FREE_POOL FreePool;
|
---|
613 |
|
---|
614 | //
|
---|
615 | // Event & timer functions
|
---|
616 | //
|
---|
617 |
|
---|
618 | EFI_CREATE_EVENT CreateEvent;
|
---|
619 | EFI_SET_TIMER SetTimer;
|
---|
620 | EFI_WAIT_FOR_EVENT WaitForEvent;
|
---|
621 | EFI_SIGNAL_EVENT SignalEvent;
|
---|
622 | EFI_CLOSE_EVENT CloseEvent;
|
---|
623 | EFI_CHECK_EVENT CheckEvent;
|
---|
624 |
|
---|
625 | //
|
---|
626 | // Protocol handler functions
|
---|
627 | //
|
---|
628 |
|
---|
629 | EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
---|
630 | EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
---|
631 | EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
---|
632 | EFI_HANDLE_PROTOCOL HandleProtocol;
|
---|
633 | EFI_HANDLE_PROTOCOL PCHandleProtocol;
|
---|
634 | EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
---|
635 | EFI_LOCATE_HANDLE LocateHandle;
|
---|
636 | EFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
---|
637 | EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
---|
638 |
|
---|
639 | //
|
---|
640 | // Image functions
|
---|
641 | //
|
---|
642 |
|
---|
643 | EFI_IMAGE_LOAD LoadImage;
|
---|
644 | EFI_IMAGE_START StartImage;
|
---|
645 | EFI_EXIT Exit;
|
---|
646 | EFI_IMAGE_UNLOAD UnloadImage;
|
---|
647 | EFI_EXIT_BOOT_SERVICES ExitBootServices;
|
---|
648 |
|
---|
649 | //
|
---|
650 | // Misc functions
|
---|
651 | //
|
---|
652 |
|
---|
653 | EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
---|
654 | EFI_STALL Stall;
|
---|
655 | EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
---|
656 |
|
---|
657 | } EFI_BOOT_SERVICES;
|
---|
658 |
|
---|
659 |
|
---|
660 | //
|
---|
661 | // EFI Configuration Table and GUID definitions
|
---|
662 | //
|
---|
663 |
|
---|
664 | #define MPS_TABLE_GUID \
|
---|
665 | { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
|
---|
666 |
|
---|
667 | #define ACPI_TABLE_GUID \
|
---|
668 | { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
|
---|
669 |
|
---|
670 | #define ACPI_20_TABLE_GUID \
|
---|
671 | { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
|
---|
672 |
|
---|
673 | #define SMBIOS_TABLE_GUID \
|
---|
674 | { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
|
---|
675 |
|
---|
676 | #define SAL_SYSTEM_TABLE_GUID \
|
---|
677 | { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
|
---|
678 |
|
---|
679 |
|
---|
680 | typedef struct _EFI_CONFIGURATION_TABLE {
|
---|
681 | EFI_GUID VendorGuid;
|
---|
682 | VOID *VendorTable;
|
---|
683 | } EFI_CONFIGURATION_TABLE;
|
---|
684 |
|
---|
685 |
|
---|
686 | //
|
---|
687 | // EFI System Table
|
---|
688 | //
|
---|
689 |
|
---|
690 |
|
---|
691 |
|
---|
692 |
|
---|
693 | #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
|
---|
694 | #define EFI_SYSTEM_TABLE_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
---|
695 |
|
---|
696 | typedef struct _EFI_SYSTEM_TABLE {
|
---|
697 | EFI_TABLE_HEADER Hdr;
|
---|
698 |
|
---|
699 | CHAR16 *FirmwareVendor;
|
---|
700 | UINT32 FirmwareRevision;
|
---|
701 |
|
---|
702 | EFI_HANDLE ConsoleInHandle;
|
---|
703 | SIMPLE_INPUT_INTERFACE *ConIn;
|
---|
704 |
|
---|
705 | EFI_HANDLE ConsoleOutHandle;
|
---|
706 | SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
|
---|
707 |
|
---|
708 | EFI_HANDLE StandardErrorHandle;
|
---|
709 | SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
|
---|
710 |
|
---|
711 | EFI_RUNTIME_SERVICES *RuntimeServices;
|
---|
712 | EFI_BOOT_SERVICES *BootServices;
|
---|
713 |
|
---|
714 | UINTN NumberOfTableEntries;
|
---|
715 | EFI_CONFIGURATION_TABLE *ConfigurationTable;
|
---|
716 |
|
---|
717 | } EFI_SYSTEM_TABLE;
|
---|
718 |
|
---|
719 | #endif
|
---|
720 |
|
---|