efiapi.h revision 1.3 1 1.3 jmcneill /* $NetBSD: efiapi.h,v 1.3 2018/08/16 18:22:05 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.1 jakllsch // Image Entry prototype
348 1.1 jakllsch
349 1.1 jakllsch typedef
350 1.1 jakllsch EFI_STATUS
351 1.1 jakllsch (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
352 1.1 jakllsch IN EFI_HANDLE ImageHandle,
353 1.1 jakllsch IN struct _EFI_SYSTEM_TABLE *SystemTable
354 1.1 jakllsch );
355 1.1 jakllsch
356 1.1 jakllsch typedef
357 1.1 jakllsch EFI_STATUS
358 1.1 jakllsch (EFIAPI *EFI_IMAGE_LOAD) (
359 1.1 jakllsch IN BOOLEAN BootPolicy,
360 1.1 jakllsch IN EFI_HANDLE ParentImageHandle,
361 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
362 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL,
363 1.1 jakllsch IN UINTN SourceSize,
364 1.1 jakllsch OUT EFI_HANDLE *ImageHandle
365 1.1 jakllsch );
366 1.1 jakllsch
367 1.1 jakllsch typedef
368 1.1 jakllsch EFI_STATUS
369 1.1 jakllsch (EFIAPI *EFI_IMAGE_START) (
370 1.1 jakllsch IN EFI_HANDLE ImageHandle,
371 1.1 jakllsch OUT UINTN *ExitDataSize,
372 1.1 jakllsch OUT CHAR16 **ExitData OPTIONAL
373 1.1 jakllsch );
374 1.1 jakllsch
375 1.1 jakllsch typedef
376 1.1 jakllsch EFI_STATUS
377 1.1 jakllsch (EFIAPI *EFI_EXIT) (
378 1.1 jakllsch IN EFI_HANDLE ImageHandle,
379 1.1 jakllsch IN EFI_STATUS ExitStatus,
380 1.1 jakllsch IN UINTN ExitDataSize,
381 1.1 jakllsch IN CHAR16 *ExitData OPTIONAL
382 1.1 jakllsch );
383 1.1 jakllsch
384 1.1 jakllsch
385 1.1 jakllsch // Image handle
386 1.3 jmcneill /*#define LOADED_IMAGE_PROTOCOL \
387 1.1 jakllsch { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
388 1.1 jakllsch
389 1.1 jakllsch #define EFI_IMAGE_INFORMATION_REVISION 0x1000
390 1.1 jakllsch typedef struct {
391 1.1 jakllsch UINT32 Revision;
392 1.1 jakllsch EFI_HANDLE ParentHandle;
393 1.1 jakllsch struct _EFI_SYSTEM_TABLE *SystemTable;
394 1.1 jakllsch
395 1.1 jakllsch // Source location of image
396 1.1 jakllsch EFI_HANDLE DeviceHandle;
397 1.1 jakllsch EFI_DEVICE_PATH *FilePath;
398 1.1 jakllsch VOID *Reserved;
399 1.1 jakllsch
400 1.1 jakllsch // Images load options
401 1.1 jakllsch UINT32 LoadOptionsSize;
402 1.1 jakllsch VOID *LoadOptions;
403 1.1 jakllsch
404 1.1 jakllsch // Location of where image was loaded
405 1.1 jakllsch VOID *ImageBase;
406 1.1 jakllsch UINT64 ImageSize;
407 1.1 jakllsch EFI_MEMORY_TYPE ImageCodeType;
408 1.1 jakllsch EFI_MEMORY_TYPE ImageDataType;
409 1.1 jakllsch
410 1.1 jakllsch // If the driver image supports a dynamic unload request
411 1.1 jakllsch EFI_IMAGE_UNLOAD Unload;
412 1.1 jakllsch
413 1.3 jmcneill } EFI_LOADED_IMAGE;*/
414 1.1 jakllsch
415 1.1 jakllsch
416 1.1 jakllsch typedef
417 1.1 jakllsch EFI_STATUS
418 1.1 jakllsch (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
419 1.1 jakllsch IN EFI_HANDLE ImageHandle,
420 1.1 jakllsch IN UINTN MapKey
421 1.1 jakllsch );
422 1.1 jakllsch
423 1.1 jakllsch //
424 1.1 jakllsch // Misc
425 1.1 jakllsch //
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_STALL) (
431 1.1 jakllsch IN UINTN Microseconds
432 1.1 jakllsch );
433 1.1 jakllsch
434 1.1 jakllsch typedef
435 1.1 jakllsch EFI_STATUS
436 1.1 jakllsch (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
437 1.1 jakllsch IN UINTN Timeout,
438 1.1 jakllsch IN UINT64 WatchdogCode,
439 1.1 jakllsch IN UINTN DataSize,
440 1.1 jakllsch IN CHAR16 *WatchdogData OPTIONAL
441 1.1 jakllsch );
442 1.1 jakllsch
443 1.1 jakllsch typedef
444 1.1 jakllsch EFI_STATUS
445 1.1 jakllsch (EFIAPI *EFI_CONNECT_CONTROLLER) (
446 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
447 1.1 jakllsch IN EFI_HANDLE *DriverImageHandle OPTIONAL,
448 1.1 jakllsch IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL,
449 1.1 jakllsch IN BOOLEAN Recursive
450 1.1 jakllsch );
451 1.1 jakllsch
452 1.1 jakllsch typedef
453 1.1 jakllsch EFI_STATUS
454 1.1 jakllsch (EFIAPI *EFI_DISCONNECT_CONTROLLER) (
455 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
456 1.1 jakllsch IN EFI_HANDLE DriverImageHandle OPTIONAL,
457 1.1 jakllsch IN EFI_HANDLE ChildHandle OPTIONAL
458 1.1 jakllsch );
459 1.1 jakllsch
460 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
461 1.1 jakllsch #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
462 1.1 jakllsch #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
463 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
464 1.1 jakllsch #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
465 1.1 jakllsch #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
466 1.1 jakllsch
467 1.1 jakllsch typedef
468 1.1 jakllsch EFI_STATUS
469 1.1 jakllsch (EFIAPI *EFI_OPEN_PROTOCOL) (
470 1.1 jakllsch IN EFI_HANDLE Handle,
471 1.1 jakllsch IN EFI_GUID *Protocol,
472 1.1 jakllsch OUT VOID **Interface OPTIONAL,
473 1.1 jakllsch IN EFI_HANDLE AgentHandle,
474 1.1 jakllsch IN EFI_HANDLE ControllerHandle,
475 1.1 jakllsch IN UINT32 Attributes
476 1.1 jakllsch );
477 1.1 jakllsch
478 1.1 jakllsch typedef
479 1.1 jakllsch EFI_STATUS
480 1.1 jakllsch (EFIAPI *EFI_CLOSE_PROTOCOL) (
481 1.1 jakllsch IN EFI_HANDLE Handle,
482 1.1 jakllsch IN EFI_GUID *Protocol,
483 1.1 jakllsch IN EFI_HANDLE AgentHandle,
484 1.1 jakllsch IN EFI_HANDLE ControllerHandle
485 1.1 jakllsch );
486 1.1 jakllsch
487 1.1 jakllsch typedef struct {
488 1.1 jakllsch EFI_HANDLE AgentHandle;
489 1.1 jakllsch EFI_HANDLE ControllerHandle;
490 1.1 jakllsch UINT32 Attributes;
491 1.1 jakllsch UINT32 OpenCount;
492 1.1 jakllsch } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
493 1.1 jakllsch
494 1.1 jakllsch typedef
495 1.1 jakllsch EFI_STATUS
496 1.1 jakllsch (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
497 1.1 jakllsch IN EFI_HANDLE Handle,
498 1.1 jakllsch IN EFI_GUID *Protocol,
499 1.1 jakllsch OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
500 1.1 jakllsch OUT UINTN *EntryCount
501 1.1 jakllsch );
502 1.1 jakllsch
503 1.1 jakllsch typedef
504 1.1 jakllsch EFI_STATUS
505 1.1 jakllsch (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
506 1.1 jakllsch IN EFI_HANDLE Handle,
507 1.1 jakllsch OUT EFI_GUID ***ProtocolBuffer,
508 1.1 jakllsch OUT UINTN *ProtocolBufferCount
509 1.1 jakllsch );
510 1.1 jakllsch
511 1.1 jakllsch typedef enum {
512 1.1 jakllsch AllHandles,
513 1.1 jakllsch ByRegisterNotify,
514 1.1 jakllsch ByProtocol
515 1.1 jakllsch } EFI_LOCATE_SEARCH_TYPE;
516 1.1 jakllsch
517 1.1 jakllsch typedef
518 1.1 jakllsch EFI_STATUS
519 1.1 jakllsch (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
520 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
521 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
522 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
523 1.1 jakllsch IN OUT UINTN *NoHandles,
524 1.1 jakllsch OUT EFI_HANDLE **Buffer
525 1.1 jakllsch );
526 1.1 jakllsch
527 1.1 jakllsch typedef
528 1.1 jakllsch EFI_STATUS
529 1.1 jakllsch (EFIAPI *EFI_LOCATE_PROTOCOL) (
530 1.1 jakllsch IN EFI_GUID *Protocol,
531 1.1 jakllsch IN VOID *Registration OPTIONAL,
532 1.1 jakllsch OUT VOID **Interface
533 1.1 jakllsch );
534 1.1 jakllsch
535 1.1 jakllsch typedef
536 1.1 jakllsch EFI_STATUS
537 1.1 jakllsch (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
538 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
539 1.1 jakllsch ...
540 1.1 jakllsch );
541 1.1 jakllsch
542 1.1 jakllsch typedef
543 1.1 jakllsch EFI_STATUS
544 1.1 jakllsch (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
545 1.1 jakllsch IN OUT EFI_HANDLE Handle,
546 1.1 jakllsch ...
547 1.1 jakllsch );
548 1.1 jakllsch
549 1.1 jakllsch typedef
550 1.1 jakllsch EFI_STATUS
551 1.1 jakllsch (EFIAPI *EFI_CALCULATE_CRC32) (
552 1.1 jakllsch IN VOID *Data,
553 1.1 jakllsch IN UINTN DataSize,
554 1.1 jakllsch OUT UINT32 *Crc32
555 1.1 jakllsch );
556 1.1 jakllsch
557 1.1 jakllsch typedef
558 1.1 jakllsch VOID
559 1.1 jakllsch (EFIAPI *EFI_COPY_MEM) (
560 1.1 jakllsch IN VOID *Destination,
561 1.1 jakllsch IN VOID *Source,
562 1.1 jakllsch IN UINTN Length
563 1.1 jakllsch );
564 1.1 jakllsch
565 1.1 jakllsch typedef
566 1.1 jakllsch VOID
567 1.1 jakllsch (EFIAPI *EFI_SET_MEM) (
568 1.1 jakllsch IN VOID *Buffer,
569 1.1 jakllsch IN UINTN Size,
570 1.1 jakllsch IN UINT8 Value
571 1.1 jakllsch );
572 1.1 jakllsch
573 1.1 jakllsch
574 1.1 jakllsch typedef
575 1.1 jakllsch EFI_STATUS
576 1.1 jakllsch (EFIAPI *EFI_CREATE_EVENT_EX) (
577 1.1 jakllsch IN UINT32 Type,
578 1.1 jakllsch IN EFI_TPL NotifyTpl,
579 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
580 1.1 jakllsch IN const VOID *NotifyContext OPTIONAL,
581 1.1 jakllsch IN const EFI_GUID EventGroup OPTIONAL,
582 1.1 jakllsch OUT EFI_EVENT *Event
583 1.1 jakllsch );
584 1.1 jakllsch
585 1.1 jakllsch typedef enum {
586 1.1 jakllsch EfiResetCold,
587 1.1 jakllsch EfiResetWarm,
588 1.1 jakllsch EfiResetShutdown
589 1.1 jakllsch } EFI_RESET_TYPE;
590 1.1 jakllsch
591 1.1 jakllsch typedef
592 1.1 jakllsch EFI_STATUS
593 1.1 jakllsch (EFIAPI *EFI_RESET_SYSTEM) (
594 1.1 jakllsch IN EFI_RESET_TYPE ResetType,
595 1.1 jakllsch IN EFI_STATUS ResetStatus,
596 1.1 jakllsch IN UINTN DataSize,
597 1.1 jakllsch IN CHAR16 *ResetData OPTIONAL
598 1.1 jakllsch );
599 1.1 jakllsch
600 1.1 jakllsch typedef
601 1.1 jakllsch EFI_STATUS
602 1.1 jakllsch (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
603 1.1 jakllsch OUT UINT64 *Count
604 1.1 jakllsch );
605 1.1 jakllsch
606 1.1 jakllsch typedef
607 1.1 jakllsch EFI_STATUS
608 1.1 jakllsch (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
609 1.1 jakllsch OUT UINT32 *HighCount
610 1.1 jakllsch );
611 1.1 jakllsch
612 1.3 jmcneill typedef struct {
613 1.3 jmcneill UINT64 Length;
614 1.3 jmcneill union {
615 1.3 jmcneill EFI_PHYSICAL_ADDRESS DataBlock;
616 1.3 jmcneill EFI_PHYSICAL_ADDRESS ContinuationPointer;
617 1.3 jmcneill } Union;
618 1.3 jmcneill } EFI_CAPSULE_BLOCK_DESCRIPTOR;
619 1.3 jmcneill
620 1.3 jmcneill typedef struct {
621 1.3 jmcneill EFI_GUID CapsuleGuid;
622 1.3 jmcneill UINT32 HeaderSize;
623 1.3 jmcneill UINT32 Flags;
624 1.3 jmcneill UINT32 CapsuleImageSize;
625 1.3 jmcneill } EFI_CAPSULE_HEADER;
626 1.3 jmcneill
627 1.3 jmcneill #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
628 1.3 jmcneill #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
629 1.3 jmcneill #define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
630 1.3 jmcneill
631 1.3 jmcneill typedef
632 1.3 jmcneill EFI_STATUS
633 1.3 jmcneill (EFIAPI *EFI_UPDATE_CAPSULE) (
634 1.3 jmcneill IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
635 1.3 jmcneill IN UINTN CapsuleCount,
636 1.3 jmcneill IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
637 1.3 jmcneill );
638 1.3 jmcneill
639 1.3 jmcneill typedef
640 1.3 jmcneill EFI_STATUS
641 1.3 jmcneill (EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES) (
642 1.3 jmcneill IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
643 1.3 jmcneill IN UINTN CapsuleCount,
644 1.3 jmcneill OUT UINT64 *MaximumCapsuleSize,
645 1.3 jmcneill OUT EFI_RESET_TYPE *ResetType
646 1.3 jmcneill );
647 1.3 jmcneill
648 1.3 jmcneill typedef
649 1.3 jmcneill EFI_STATUS
650 1.3 jmcneill (EFIAPI *EFI_QUERY_VARIABLE_INFO) (
651 1.3 jmcneill IN UINT32 Attributes,
652 1.3 jmcneill OUT UINT64 *MaximumVariableStorageSize,
653 1.3 jmcneill OUT UINT64 *RemainingVariableStorageSize,
654 1.3 jmcneill OUT UINT64 *MaximumVariableSize
655 1.3 jmcneill );
656 1.3 jmcneill
657 1.1 jakllsch //
658 1.1 jakllsch // Protocol handler functions
659 1.1 jakllsch //
660 1.1 jakllsch
661 1.1 jakllsch typedef enum {
662 1.1 jakllsch EFI_NATIVE_INTERFACE,
663 1.1 jakllsch EFI_PCODE_INTERFACE
664 1.1 jakllsch } EFI_INTERFACE_TYPE;
665 1.1 jakllsch
666 1.1 jakllsch typedef
667 1.1 jakllsch EFI_STATUS
668 1.1 jakllsch (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
669 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
670 1.1 jakllsch IN EFI_GUID *Protocol,
671 1.1 jakllsch IN EFI_INTERFACE_TYPE InterfaceType,
672 1.1 jakllsch IN VOID *Interface
673 1.1 jakllsch );
674 1.1 jakllsch
675 1.1 jakllsch typedef
676 1.1 jakllsch EFI_STATUS
677 1.1 jakllsch (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
678 1.1 jakllsch IN EFI_HANDLE Handle,
679 1.1 jakllsch IN EFI_GUID *Protocol,
680 1.1 jakllsch IN VOID *OldInterface,
681 1.1 jakllsch IN VOID *NewInterface
682 1.1 jakllsch );
683 1.1 jakllsch
684 1.1 jakllsch typedef
685 1.1 jakllsch EFI_STATUS
686 1.1 jakllsch (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
687 1.1 jakllsch IN EFI_HANDLE Handle,
688 1.1 jakllsch IN EFI_GUID *Protocol,
689 1.1 jakllsch IN VOID *Interface
690 1.1 jakllsch );
691 1.1 jakllsch
692 1.1 jakllsch typedef
693 1.1 jakllsch EFI_STATUS
694 1.1 jakllsch (EFIAPI *EFI_HANDLE_PROTOCOL) (
695 1.1 jakllsch IN EFI_HANDLE Handle,
696 1.1 jakllsch IN EFI_GUID *Protocol,
697 1.1 jakllsch OUT VOID **Interface
698 1.1 jakllsch );
699 1.1 jakllsch
700 1.1 jakllsch typedef
701 1.1 jakllsch EFI_STATUS
702 1.1 jakllsch (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
703 1.1 jakllsch IN EFI_GUID *Protocol,
704 1.1 jakllsch IN EFI_EVENT Event,
705 1.1 jakllsch OUT VOID **Registration
706 1.1 jakllsch );
707 1.1 jakllsch
708 1.1 jakllsch typedef
709 1.1 jakllsch EFI_STATUS
710 1.1 jakllsch (EFIAPI *EFI_LOCATE_HANDLE) (
711 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
712 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
713 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
714 1.1 jakllsch IN OUT UINTN *BufferSize,
715 1.1 jakllsch OUT EFI_HANDLE *Buffer
716 1.1 jakllsch );
717 1.1 jakllsch
718 1.1 jakllsch typedef
719 1.1 jakllsch EFI_STATUS
720 1.1 jakllsch (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
721 1.1 jakllsch IN EFI_GUID *Protocol,
722 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath,
723 1.1 jakllsch OUT EFI_HANDLE *Device
724 1.1 jakllsch );
725 1.1 jakllsch
726 1.1 jakllsch typedef
727 1.1 jakllsch EFI_STATUS
728 1.1 jakllsch (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
729 1.1 jakllsch IN EFI_GUID *Guid,
730 1.1 jakllsch IN VOID *Table
731 1.1 jakllsch );
732 1.1 jakllsch
733 1.1 jakllsch typedef
734 1.1 jakllsch EFI_STATUS
735 1.1 jakllsch (EFIAPI *EFI_RESERVED_SERVICE) (
736 1.1 jakllsch );
737 1.1 jakllsch
738 1.1 jakllsch //
739 1.1 jakllsch // Standard EFI table header
740 1.1 jakllsch //
741 1.1 jakllsch
742 1.3 jmcneill typedef struct _EFI_TABLE_HEADER {
743 1.1 jakllsch UINT64 Signature;
744 1.1 jakllsch UINT32 Revision;
745 1.1 jakllsch UINT32 HeaderSize;
746 1.1 jakllsch UINT32 CRC32;
747 1.1 jakllsch UINT32 Reserved;
748 1.1 jakllsch } EFI_TABLE_HEADER;
749 1.1 jakllsch
750 1.1 jakllsch
751 1.1 jakllsch //
752 1.1 jakllsch // EFI Runtime Serivces Table
753 1.1 jakllsch //
754 1.1 jakllsch
755 1.1 jakllsch #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
756 1.1 jakllsch #define EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
757 1.1 jakllsch
758 1.1 jakllsch typedef struct {
759 1.1 jakllsch EFI_TABLE_HEADER Hdr;
760 1.1 jakllsch
761 1.1 jakllsch //
762 1.1 jakllsch // Time services
763 1.1 jakllsch //
764 1.1 jakllsch
765 1.1 jakllsch EFI_GET_TIME GetTime;
766 1.1 jakllsch EFI_SET_TIME SetTime;
767 1.1 jakllsch EFI_GET_WAKEUP_TIME GetWakeupTime;
768 1.1 jakllsch EFI_SET_WAKEUP_TIME SetWakeupTime;
769 1.1 jakllsch
770 1.1 jakllsch //
771 1.1 jakllsch // Virtual memory services
772 1.1 jakllsch //
773 1.1 jakllsch
774 1.1 jakllsch EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
775 1.1 jakllsch EFI_CONVERT_POINTER ConvertPointer;
776 1.1 jakllsch
777 1.1 jakllsch //
778 1.1 jakllsch // Variable serviers
779 1.1 jakllsch //
780 1.1 jakllsch
781 1.1 jakllsch EFI_GET_VARIABLE GetVariable;
782 1.1 jakllsch EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
783 1.1 jakllsch EFI_SET_VARIABLE SetVariable;
784 1.1 jakllsch
785 1.1 jakllsch //
786 1.1 jakllsch // Misc
787 1.1 jakllsch //
788 1.1 jakllsch
789 1.1 jakllsch EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
790 1.1 jakllsch EFI_RESET_SYSTEM ResetSystem;
791 1.1 jakllsch
792 1.3 jmcneill EFI_UPDATE_CAPSULE UpdateCapsule;
793 1.3 jmcneill EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
794 1.3 jmcneill EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
795 1.1 jakllsch } EFI_RUNTIME_SERVICES;
796 1.1 jakllsch
797 1.1 jakllsch
798 1.1 jakllsch //
799 1.1 jakllsch // EFI Boot Services Table
800 1.1 jakllsch //
801 1.1 jakllsch
802 1.1 jakllsch #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
803 1.1 jakllsch #define EFI_BOOT_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
804 1.1 jakllsch
805 1.1 jakllsch typedef struct _EFI_BOOT_SERVICES {
806 1.1 jakllsch
807 1.1 jakllsch EFI_TABLE_HEADER Hdr;
808 1.1 jakllsch
809 1.1 jakllsch //
810 1.1 jakllsch // Task priority functions
811 1.1 jakllsch //
812 1.1 jakllsch
813 1.1 jakllsch EFI_RAISE_TPL RaiseTPL;
814 1.1 jakllsch EFI_RESTORE_TPL RestoreTPL;
815 1.1 jakllsch
816 1.1 jakllsch //
817 1.1 jakllsch // Memory functions
818 1.1 jakllsch //
819 1.1 jakllsch
820 1.1 jakllsch EFI_ALLOCATE_PAGES AllocatePages;
821 1.1 jakllsch EFI_FREE_PAGES FreePages;
822 1.1 jakllsch EFI_GET_MEMORY_MAP GetMemoryMap;
823 1.1 jakllsch EFI_ALLOCATE_POOL AllocatePool;
824 1.1 jakllsch EFI_FREE_POOL FreePool;
825 1.1 jakllsch
826 1.1 jakllsch //
827 1.1 jakllsch // Event & timer functions
828 1.1 jakllsch //
829 1.1 jakllsch
830 1.1 jakllsch EFI_CREATE_EVENT CreateEvent;
831 1.1 jakllsch EFI_SET_TIMER SetTimer;
832 1.1 jakllsch EFI_WAIT_FOR_EVENT WaitForEvent;
833 1.1 jakllsch EFI_SIGNAL_EVENT SignalEvent;
834 1.1 jakllsch EFI_CLOSE_EVENT CloseEvent;
835 1.1 jakllsch EFI_CHECK_EVENT CheckEvent;
836 1.1 jakllsch
837 1.1 jakllsch //
838 1.1 jakllsch // Protocol handler functions
839 1.1 jakllsch //
840 1.1 jakllsch
841 1.1 jakllsch EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
842 1.1 jakllsch EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
843 1.1 jakllsch EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
844 1.1 jakllsch EFI_HANDLE_PROTOCOL HandleProtocol;
845 1.1 jakllsch EFI_HANDLE_PROTOCOL PCHandleProtocol;
846 1.1 jakllsch EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
847 1.1 jakllsch EFI_LOCATE_HANDLE LocateHandle;
848 1.1 jakllsch EFI_LOCATE_DEVICE_PATH LocateDevicePath;
849 1.1 jakllsch EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
850 1.1 jakllsch
851 1.1 jakllsch //
852 1.1 jakllsch // Image functions
853 1.1 jakllsch //
854 1.1 jakllsch
855 1.1 jakllsch EFI_IMAGE_LOAD LoadImage;
856 1.1 jakllsch EFI_IMAGE_START StartImage;
857 1.1 jakllsch EFI_EXIT Exit;
858 1.1 jakllsch EFI_IMAGE_UNLOAD UnloadImage;
859 1.1 jakllsch EFI_EXIT_BOOT_SERVICES ExitBootServices;
860 1.1 jakllsch
861 1.1 jakllsch //
862 1.1 jakllsch // Misc functions
863 1.1 jakllsch //
864 1.1 jakllsch
865 1.1 jakllsch EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
866 1.1 jakllsch EFI_STALL Stall;
867 1.1 jakllsch EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
868 1.1 jakllsch
869 1.1 jakllsch //
870 1.1 jakllsch // DriverSupport Services
871 1.1 jakllsch //
872 1.1 jakllsch
873 1.1 jakllsch EFI_CONNECT_CONTROLLER ConnectController;
874 1.1 jakllsch EFI_DISCONNECT_CONTROLLER DisconnectController;
875 1.1 jakllsch
876 1.1 jakllsch //
877 1.1 jakllsch // Open and Close Protocol Services
878 1.1 jakllsch //
879 1.1 jakllsch EFI_OPEN_PROTOCOL OpenProtocol;
880 1.1 jakllsch EFI_CLOSE_PROTOCOL CloseProtocol;
881 1.1 jakllsch EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
882 1.1 jakllsch
883 1.1 jakllsch //
884 1.1 jakllsch // Library Services
885 1.1 jakllsch //
886 1.1 jakllsch EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
887 1.1 jakllsch EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
888 1.1 jakllsch EFI_LOCATE_PROTOCOL LocateProtocol;
889 1.1 jakllsch EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
890 1.1 jakllsch EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
891 1.1 jakllsch
892 1.1 jakllsch //
893 1.1 jakllsch // 32-bit CRC Services
894 1.1 jakllsch //
895 1.1 jakllsch EFI_CALCULATE_CRC32 CalculateCrc32;
896 1.1 jakllsch
897 1.1 jakllsch //
898 1.1 jakllsch // Misc Services
899 1.1 jakllsch //
900 1.1 jakllsch EFI_COPY_MEM CopyMem;
901 1.1 jakllsch EFI_SET_MEM SetMem;
902 1.1 jakllsch EFI_CREATE_EVENT_EX CreateEventEx;
903 1.1 jakllsch } EFI_BOOT_SERVICES;
904 1.1 jakllsch
905 1.1 jakllsch
906 1.1 jakllsch //
907 1.1 jakllsch // EFI Configuration Table and GUID definitions
908 1.1 jakllsch //
909 1.1 jakllsch
910 1.1 jakllsch #define MPS_TABLE_GUID \
911 1.1 jakllsch { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
912 1.1 jakllsch
913 1.1 jakllsch #define ACPI_TABLE_GUID \
914 1.1 jakllsch { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
915 1.1 jakllsch
916 1.1 jakllsch #define ACPI_20_TABLE_GUID \
917 1.1 jakllsch { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
918 1.1 jakllsch
919 1.1 jakllsch #define SMBIOS_TABLE_GUID \
920 1.1 jakllsch { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
921 1.1 jakllsch
922 1.3 jmcneill #define SMBIOS3_TABLE_GUID \
923 1.3 jmcneill { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
924 1.3 jmcneill
925 1.1 jakllsch #define SAL_SYSTEM_TABLE_GUID \
926 1.1 jakllsch { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
927 1.1 jakllsch
928 1.2 scole /* DIG64 Headless Console & Debug Port Table. */
929 1.2 scole #define HCDP_TABLE_GUID \
930 1.2 scole { 0xf951938d, 0x620b, 0x42ef, {0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98} }
931 1.1 jakllsch
932 1.1 jakllsch typedef struct _EFI_CONFIGURATION_TABLE {
933 1.1 jakllsch EFI_GUID VendorGuid;
934 1.1 jakllsch VOID *VendorTable;
935 1.1 jakllsch } EFI_CONFIGURATION_TABLE;
936 1.1 jakllsch
937 1.1 jakllsch
938 1.1 jakllsch //
939 1.1 jakllsch // EFI System Table
940 1.1 jakllsch //
941 1.1 jakllsch
942 1.1 jakllsch
943 1.1 jakllsch
944 1.1 jakllsch
945 1.1 jakllsch #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
946 1.1 jakllsch #define EFI_SYSTEM_TABLE_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
947 1.1 jakllsch
948 1.1 jakllsch typedef struct _EFI_SYSTEM_TABLE {
949 1.1 jakllsch EFI_TABLE_HEADER Hdr;
950 1.1 jakllsch
951 1.1 jakllsch CHAR16 *FirmwareVendor;
952 1.1 jakllsch UINT32 FirmwareRevision;
953 1.1 jakllsch
954 1.1 jakllsch EFI_HANDLE ConsoleInHandle;
955 1.1 jakllsch SIMPLE_INPUT_INTERFACE *ConIn;
956 1.1 jakllsch
957 1.1 jakllsch EFI_HANDLE ConsoleOutHandle;
958 1.1 jakllsch SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
959 1.1 jakllsch
960 1.1 jakllsch EFI_HANDLE StandardErrorHandle;
961 1.1 jakllsch SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
962 1.1 jakllsch
963 1.1 jakllsch EFI_RUNTIME_SERVICES *RuntimeServices;
964 1.1 jakllsch EFI_BOOT_SERVICES *BootServices;
965 1.1 jakllsch
966 1.1 jakllsch UINTN NumberOfTableEntries;
967 1.1 jakllsch EFI_CONFIGURATION_TABLE *ConfigurationTable;
968 1.1 jakllsch
969 1.1 jakllsch } EFI_SYSTEM_TABLE;
970 1.1 jakllsch
971 1.1 jakllsch #endif
972 1.1 jakllsch
973