xref: /freebsd-src/stand/efi/include/efiapi.h (revision 2a63c3be158216222d89a073dcbd6a72ee4aab5a)
1ca987d46SWarner Losh #ifndef _EFI_API_H
2ca987d46SWarner Losh #define _EFI_API_H
3ca987d46SWarner Losh 
4ca987d46SWarner Losh /*++
5ca987d46SWarner Losh 
6ca987d46SWarner Losh Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
7ca987d46SWarner Losh This software and associated documentation (if any) is furnished
8ca987d46SWarner Losh under a license and may only be used or copied in accordance
9ca987d46SWarner Losh with the terms of the license. Except as permitted by such
10ca987d46SWarner Losh license, no part of this software or documentation may be
11ca987d46SWarner Losh reproduced, stored in a retrieval system, or transmitted in any
12ca987d46SWarner Losh form or by any means without the express written consent of
13ca987d46SWarner Losh Intel Corporation.
14ca987d46SWarner Losh 
15ca987d46SWarner Losh Module Name:
16ca987d46SWarner Losh 
17ca987d46SWarner Losh     efiapi.h
18ca987d46SWarner Losh 
19ca987d46SWarner Losh Abstract:
20ca987d46SWarner Losh 
21ca987d46SWarner Losh     Global EFI runtime & boot service interfaces
22ca987d46SWarner Losh 
23ca987d46SWarner Losh 
24ca987d46SWarner Losh 
25ca987d46SWarner Losh 
26ca987d46SWarner Losh Revision History
27ca987d46SWarner Losh 
28ca987d46SWarner Losh --*/
29ca987d46SWarner Losh 
30ca987d46SWarner Losh //
31ca987d46SWarner Losh // EFI Specification Revision
32ca987d46SWarner Losh //
33ca987d46SWarner Losh 
34ca987d46SWarner Losh #define EFI_SPECIFICATION_MAJOR_REVISION 1
35ca987d46SWarner Losh #define EFI_SPECIFICATION_MINOR_REVISION 10
36ca987d46SWarner Losh 
37ca987d46SWarner Losh //
38ca987d46SWarner Losh // Declare forward referenced data structures
39ca987d46SWarner Losh //
40ca987d46SWarner Losh 
41ca987d46SWarner Losh INTERFACE_DECL(_EFI_SYSTEM_TABLE);
42ca987d46SWarner Losh 
43ca987d46SWarner Losh //
44ca987d46SWarner Losh // EFI Memory
45ca987d46SWarner Losh //
46ca987d46SWarner Losh 
47ca987d46SWarner Losh typedef
48ca987d46SWarner Losh EFI_STATUS
49ca987d46SWarner Losh (EFIAPI *EFI_ALLOCATE_PAGES) (
50ca987d46SWarner Losh     IN EFI_ALLOCATE_TYPE            Type,
51ca987d46SWarner Losh     IN EFI_MEMORY_TYPE              MemoryType,
52ca987d46SWarner Losh     IN UINTN                        NoPages,
53ca987d46SWarner Losh     OUT EFI_PHYSICAL_ADDRESS        *Memory
54ca987d46SWarner Losh     );
55ca987d46SWarner Losh 
56ca987d46SWarner Losh typedef
57ca987d46SWarner Losh EFI_STATUS
58ca987d46SWarner Losh (EFIAPI *EFI_FREE_PAGES) (
59ca987d46SWarner Losh     IN EFI_PHYSICAL_ADDRESS         Memory,
60ca987d46SWarner Losh     IN UINTN                        NoPages
61ca987d46SWarner Losh     );
62ca987d46SWarner Losh 
63ca987d46SWarner Losh typedef
64ca987d46SWarner Losh EFI_STATUS
65ca987d46SWarner Losh (EFIAPI *EFI_GET_MEMORY_MAP) (
66ca987d46SWarner Losh     IN OUT UINTN                    *MemoryMapSize,
67ca987d46SWarner Losh     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
68ca987d46SWarner Losh     OUT UINTN                       *MapKey,
69ca987d46SWarner Losh     OUT UINTN                       *DescriptorSize,
70ca987d46SWarner Losh     OUT UINT32                      *DescriptorVersion
71ca987d46SWarner Losh     );
72ca987d46SWarner Losh 
73ca987d46SWarner Losh #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
74ca987d46SWarner Losh 
75ca987d46SWarner Losh 
76ca987d46SWarner Losh typedef
77ca987d46SWarner Losh EFI_STATUS
78ca987d46SWarner Losh (EFIAPI *EFI_ALLOCATE_POOL) (
79ca987d46SWarner Losh     IN EFI_MEMORY_TYPE              PoolType,
80ca987d46SWarner Losh     IN UINTN                        Size,
81ca987d46SWarner Losh     OUT VOID                        **Buffer
82ca987d46SWarner Losh     );
83ca987d46SWarner Losh 
84ca987d46SWarner Losh typedef
85ca987d46SWarner Losh EFI_STATUS
86ca987d46SWarner Losh (EFIAPI *EFI_FREE_POOL) (
87ca987d46SWarner Losh     IN VOID                         *Buffer
88ca987d46SWarner Losh     );
89ca987d46SWarner Losh 
90ca987d46SWarner Losh typedef
91ca987d46SWarner Losh EFI_STATUS
92ca987d46SWarner Losh (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
93ca987d46SWarner Losh     IN UINTN                        MemoryMapSize,
94ca987d46SWarner Losh     IN UINTN                        DescriptorSize,
95ca987d46SWarner Losh     IN UINT32                       DescriptorVersion,
96ca987d46SWarner Losh     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
97ca987d46SWarner Losh     );
98ca987d46SWarner Losh 
99ca987d46SWarner Losh 
100ca987d46SWarner Losh #define EFI_OPTIONAL_PTR            0x00000001
101ca987d46SWarner Losh #define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
102ca987d46SWarner Losh #define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
103ca987d46SWarner Losh 
104ca987d46SWarner Losh 
105ca987d46SWarner Losh typedef
106ca987d46SWarner Losh EFI_STATUS
107ca987d46SWarner Losh (EFIAPI *EFI_CONVERT_POINTER) (
108ca987d46SWarner Losh     IN UINTN                        DebugDisposition,
109ca987d46SWarner Losh     IN OUT VOID                     **Address
110ca987d46SWarner Losh     );
111ca987d46SWarner Losh 
112ca987d46SWarner Losh 
113ca987d46SWarner Losh //
114ca987d46SWarner Losh // EFI Events
115ca987d46SWarner Losh //
116ca987d46SWarner Losh 
117ca987d46SWarner Losh 
118ca987d46SWarner Losh 
119ca987d46SWarner Losh #define EVT_TIMER                           0x80000000
120ca987d46SWarner Losh #define EVT_RUNTIME                         0x40000000
121ca987d46SWarner Losh #define EVT_RUNTIME_CONTEXT                 0x20000000
122ca987d46SWarner Losh 
123ca987d46SWarner Losh #define EVT_NOTIFY_WAIT                     0x00000100
124ca987d46SWarner Losh #define EVT_NOTIFY_SIGNAL                   0x00000200
125ca987d46SWarner Losh 
126ca987d46SWarner Losh #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
127ca987d46SWarner Losh #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
128ca987d46SWarner Losh 
129ca987d46SWarner Losh #define EVT_EFI_SIGNAL_MASK                 0x000000FF
130ca987d46SWarner Losh #define EVT_EFI_SIGNAL_MAX                  2
131ca987d46SWarner Losh 
132ca987d46SWarner Losh typedef
133ca987d46SWarner Losh VOID
134ca987d46SWarner Losh (EFIAPI *EFI_EVENT_NOTIFY) (
135ca987d46SWarner Losh     IN EFI_EVENT                Event,
136ca987d46SWarner Losh     IN VOID                     *Context
137ca987d46SWarner Losh     );
138ca987d46SWarner Losh 
139ca987d46SWarner Losh typedef
140ca987d46SWarner Losh EFI_STATUS
141ca987d46SWarner Losh (EFIAPI *EFI_CREATE_EVENT) (
142ca987d46SWarner Losh     IN UINT32                       Type,
143ca987d46SWarner Losh     IN EFI_TPL                      NotifyTpl,
144ca987d46SWarner Losh     IN EFI_EVENT_NOTIFY             NotifyFunction,
145ca987d46SWarner Losh     IN VOID                         *NotifyContext,
146ca987d46SWarner Losh     OUT EFI_EVENT                   *Event
147ca987d46SWarner Losh     );
148ca987d46SWarner Losh 
149ca987d46SWarner Losh typedef enum {
150ca987d46SWarner Losh     TimerCancel,
151ca987d46SWarner Losh     TimerPeriodic,
152ca987d46SWarner Losh     TimerRelative,
153ca987d46SWarner Losh     TimerTypeMax
154ca987d46SWarner Losh } EFI_TIMER_DELAY;
155ca987d46SWarner Losh 
156ca987d46SWarner Losh typedef
157ca987d46SWarner Losh EFI_STATUS
158ca987d46SWarner Losh (EFIAPI *EFI_SET_TIMER) (
159ca987d46SWarner Losh     IN EFI_EVENT                Event,
160ca987d46SWarner Losh     IN EFI_TIMER_DELAY          Type,
161ca987d46SWarner Losh     IN UINT64                   TriggerTime
162ca987d46SWarner Losh     );
163ca987d46SWarner Losh 
164ca987d46SWarner Losh typedef
165ca987d46SWarner Losh EFI_STATUS
166ca987d46SWarner Losh (EFIAPI *EFI_SIGNAL_EVENT) (
167ca987d46SWarner Losh     IN EFI_EVENT                Event
168ca987d46SWarner Losh     );
169ca987d46SWarner Losh 
170ca987d46SWarner Losh typedef
171ca987d46SWarner Losh EFI_STATUS
172ca987d46SWarner Losh (EFIAPI *EFI_WAIT_FOR_EVENT) (
173ca987d46SWarner Losh     IN UINTN                    NumberOfEvents,
174ca987d46SWarner Losh     IN EFI_EVENT                *Event,
175ca987d46SWarner Losh     OUT UINTN                   *Index
176ca987d46SWarner Losh     );
177ca987d46SWarner Losh 
178ca987d46SWarner Losh typedef
179ca987d46SWarner Losh EFI_STATUS
180ca987d46SWarner Losh (EFIAPI *EFI_CLOSE_EVENT) (
181ca987d46SWarner Losh     IN EFI_EVENT                Event
182ca987d46SWarner Losh     );
183ca987d46SWarner Losh 
184ca987d46SWarner Losh typedef
185ca987d46SWarner Losh EFI_STATUS
186ca987d46SWarner Losh (EFIAPI *EFI_CHECK_EVENT) (
187ca987d46SWarner Losh     IN EFI_EVENT                Event
188ca987d46SWarner Losh     );
189ca987d46SWarner Losh 
190ca987d46SWarner Losh //
191ca987d46SWarner Losh // Task priority level
192ca987d46SWarner Losh //
193ca987d46SWarner Losh 
194ca987d46SWarner Losh #define TPL_APPLICATION    4
195ca987d46SWarner Losh #define TPL_CALLBACK       8
196ca987d46SWarner Losh #define TPL_NOTIFY        16
197ca987d46SWarner Losh #define TPL_HIGH_LEVEL    31
198ca987d46SWarner Losh 
199ca987d46SWarner Losh typedef
200ca987d46SWarner Losh EFI_TPL
201ca987d46SWarner Losh (EFIAPI *EFI_RAISE_TPL) (
202ca987d46SWarner Losh     IN EFI_TPL      NewTpl
203ca987d46SWarner Losh     );
204ca987d46SWarner Losh 
205ca987d46SWarner Losh typedef
206ca987d46SWarner Losh VOID
207ca987d46SWarner Losh (EFIAPI *EFI_RESTORE_TPL) (
208ca987d46SWarner Losh     IN EFI_TPL      OldTpl
209ca987d46SWarner Losh     );
210ca987d46SWarner Losh 
211ca987d46SWarner Losh 
212ca987d46SWarner Losh //
213ca987d46SWarner Losh // EFI platform varibles
214ca987d46SWarner Losh //
215ca987d46SWarner Losh 
216ca987d46SWarner Losh #define EFI_GLOBAL_VARIABLE \
217ca987d46SWarner Losh     { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
218ca987d46SWarner Losh 
219ca987d46SWarner Losh // Variable attributes
220ca987d46SWarner Losh #define EFI_VARIABLE_NON_VOLATILE		0x00000001
221ca987d46SWarner Losh #define EFI_VARIABLE_BOOTSERVICE_ACCESS		0x00000002
222ca987d46SWarner Losh #define EFI_VARIABLE_RUNTIME_ACCESS		0x00000004
22365641822SToomas Soome #define	EFI_VARIABLE_HARDWARE_ERROR_RECORD	0x00000008
22465641822SToomas Soome #define	EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS	0x00000010
22565641822SToomas Soome #define	EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS	0x00000020
22665641822SToomas Soome #define	EFI_VARIABLE_APPEND_WRITE		0x00000040
227ca987d46SWarner Losh 
228ca987d46SWarner Losh // Variable size limitation
229ca987d46SWarner Losh #define EFI_MAXIMUM_VARIABLE_SIZE           1024
230ca987d46SWarner Losh 
231ca987d46SWarner Losh typedef
232ca987d46SWarner Losh EFI_STATUS
233ca987d46SWarner Losh (EFIAPI *EFI_GET_VARIABLE) (
234ca987d46SWarner Losh     IN CHAR16                       *VariableName,
235ca987d46SWarner Losh     IN EFI_GUID                     *VendorGuid,
236ca987d46SWarner Losh     OUT UINT32                      *Attributes OPTIONAL,
237ca987d46SWarner Losh     IN OUT UINTN                    *DataSize,
238ca987d46SWarner Losh     OUT VOID                        *Data
239ca987d46SWarner Losh     );
240ca987d46SWarner Losh 
241ca987d46SWarner Losh typedef
242ca987d46SWarner Losh EFI_STATUS
243ca987d46SWarner Losh (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
244ca987d46SWarner Losh     IN OUT UINTN                    *VariableNameSize,
245ca987d46SWarner Losh     IN OUT CHAR16                   *VariableName,
246ca987d46SWarner Losh     IN OUT EFI_GUID                 *VendorGuid
247ca987d46SWarner Losh     );
248ca987d46SWarner Losh 
249ca987d46SWarner Losh 
250ca987d46SWarner Losh typedef
251ca987d46SWarner Losh EFI_STATUS
252ca987d46SWarner Losh (EFIAPI *EFI_SET_VARIABLE) (
253ca987d46SWarner Losh     IN const CHAR16                 *VariableName,
254ca987d46SWarner Losh     IN EFI_GUID                     *VendorGuid,
255ca987d46SWarner Losh     IN UINT32                       Attributes,
256ca987d46SWarner Losh     IN UINTN                        DataSize,
257ca987d46SWarner Losh     IN VOID                         *Data
258ca987d46SWarner Losh     );
259ca987d46SWarner Losh 
260ca987d46SWarner Losh 
261ca987d46SWarner Losh //
262ca987d46SWarner Losh // EFI Time
263ca987d46SWarner Losh //
264ca987d46SWarner Losh 
265ca987d46SWarner Losh typedef struct {
266ca987d46SWarner Losh         UINT32                      Resolution;     // 1e-6 parts per million
267ca987d46SWarner Losh         UINT32                      Accuracy;       // hertz
268ca987d46SWarner Losh         BOOLEAN                     SetsToZero;     // Set clears sub-second time
269ca987d46SWarner Losh } EFI_TIME_CAPABILITIES;
270ca987d46SWarner Losh 
271ca987d46SWarner Losh 
272ca987d46SWarner Losh typedef
273ca987d46SWarner Losh EFI_STATUS
274ca987d46SWarner Losh (EFIAPI *EFI_GET_TIME) (
275ca987d46SWarner Losh     OUT EFI_TIME                    *Time,
276ca987d46SWarner Losh     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
277ca987d46SWarner Losh     );
278ca987d46SWarner Losh 
279ca987d46SWarner Losh typedef
280ca987d46SWarner Losh EFI_STATUS
281ca987d46SWarner Losh (EFIAPI *EFI_SET_TIME) (
282ca987d46SWarner Losh     IN EFI_TIME                     *Time
283ca987d46SWarner Losh     );
284ca987d46SWarner Losh 
285ca987d46SWarner Losh typedef
286ca987d46SWarner Losh EFI_STATUS
287ca987d46SWarner Losh (EFIAPI *EFI_GET_WAKEUP_TIME) (
288ca987d46SWarner Losh     OUT BOOLEAN                     *Enabled,
289ca987d46SWarner Losh     OUT BOOLEAN                     *Pending,
290ca987d46SWarner Losh     OUT EFI_TIME                    *Time
291ca987d46SWarner Losh     );
292ca987d46SWarner Losh 
293ca987d46SWarner Losh typedef
294ca987d46SWarner Losh EFI_STATUS
295ca987d46SWarner Losh (EFIAPI *EFI_SET_WAKEUP_TIME) (
296ca987d46SWarner Losh     IN BOOLEAN                      Enable,
297ca987d46SWarner Losh     IN EFI_TIME                     *Time OPTIONAL
298ca987d46SWarner Losh     );
299ca987d46SWarner Losh 
300ca987d46SWarner Losh 
301ca987d46SWarner Losh //
302ca987d46SWarner Losh // Image functions
303ca987d46SWarner Losh //
304ca987d46SWarner Losh 
305ca987d46SWarner Losh 
306ca987d46SWarner Losh // PE32+ Subsystem type for EFI images
307ca987d46SWarner Losh 
308ca987d46SWarner Losh #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
309ca987d46SWarner Losh #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
310ca987d46SWarner Losh #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
311ca987d46SWarner Losh #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
312ca987d46SWarner Losh #endif
313ca987d46SWarner Losh 
314ca987d46SWarner Losh // PE32+ Machine type for EFI images
315ca987d46SWarner Losh 
316ca987d46SWarner Losh #if !defined(EFI_IMAGE_MACHINE_IA32)
317ca987d46SWarner Losh #define EFI_IMAGE_MACHINE_IA32      0x014c
318ca987d46SWarner Losh #endif
319ca987d46SWarner Losh 
320ca987d46SWarner Losh #if !defined(EFI_IMAGE_MACHINE_EBC)
321ca987d46SWarner Losh #define EFI_IMAGE_MACHINE_EBC       0x0EBC
322ca987d46SWarner Losh #endif
323ca987d46SWarner Losh 
324ca987d46SWarner Losh // Image Entry prototype
325ca987d46SWarner Losh 
326ca987d46SWarner Losh typedef
327ca987d46SWarner Losh EFI_STATUS
328ca987d46SWarner Losh (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
329ca987d46SWarner Losh     IN EFI_HANDLE                   ImageHandle,
330ca987d46SWarner Losh     IN struct _EFI_SYSTEM_TABLE     *SystemTable
331ca987d46SWarner Losh     );
332ca987d46SWarner Losh 
333ca987d46SWarner Losh typedef
334ca987d46SWarner Losh EFI_STATUS
335ca987d46SWarner Losh (EFIAPI *EFI_IMAGE_LOAD) (
336ca987d46SWarner Losh     IN BOOLEAN                      BootPolicy,
337ca987d46SWarner Losh     IN EFI_HANDLE                   ParentImageHandle,
338ca987d46SWarner Losh     IN EFI_DEVICE_PATH              *FilePath,
339ca987d46SWarner Losh     IN VOID                         *SourceBuffer   OPTIONAL,
340ca987d46SWarner Losh     IN UINTN                        SourceSize,
341ca987d46SWarner Losh     OUT EFI_HANDLE                  *ImageHandle
342ca987d46SWarner Losh     );
343ca987d46SWarner Losh 
344ca987d46SWarner Losh typedef
345ca987d46SWarner Losh EFI_STATUS
346ca987d46SWarner Losh (EFIAPI *EFI_IMAGE_START) (
347ca987d46SWarner Losh     IN EFI_HANDLE                   ImageHandle,
348ca987d46SWarner Losh     OUT UINTN                       *ExitDataSize,
349ca987d46SWarner Losh     OUT CHAR16                      **ExitData  OPTIONAL
350ca987d46SWarner Losh     );
351ca987d46SWarner Losh 
352ca987d46SWarner Losh typedef
353ca987d46SWarner Losh EFI_STATUS
354ca987d46SWarner Losh (EFIAPI *EFI_EXIT) (
355ca987d46SWarner Losh     IN EFI_HANDLE                   ImageHandle,
356ca987d46SWarner Losh     IN EFI_STATUS                   ExitStatus,
357ca987d46SWarner Losh     IN UINTN                        ExitDataSize,
358ca987d46SWarner Losh     IN CHAR16                       *ExitData OPTIONAL
359ca987d46SWarner Losh     ) __dead2;
360ca987d46SWarner Losh 
361ca987d46SWarner Losh typedef
362ca987d46SWarner Losh EFI_STATUS
363ca987d46SWarner Losh (EFIAPI *EFI_IMAGE_UNLOAD) (
364ca987d46SWarner Losh     IN EFI_HANDLE                   ImageHandle
365ca987d46SWarner Losh     );
366ca987d46SWarner Losh 
367ca987d46SWarner Losh 
368ca987d46SWarner Losh // Image handle
369ca987d46SWarner Losh #define LOADED_IMAGE_PROTOCOL \
370ca987d46SWarner Losh     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
371ca987d46SWarner Losh 
372ca987d46SWarner Losh #define EFI_LOADED_IMAGE_INFORMATION_REVISION      0x1000
373ca987d46SWarner Losh typedef struct {
374ca987d46SWarner Losh     UINT32                          Revision;
375ca987d46SWarner Losh     EFI_HANDLE                      ParentHandle;
376ca987d46SWarner Losh     struct _EFI_SYSTEM_TABLE        *SystemTable;
377ca987d46SWarner Losh 
378ca987d46SWarner Losh     // Source location of image
379ca987d46SWarner Losh     EFI_HANDLE                      DeviceHandle;
380ca987d46SWarner Losh     EFI_DEVICE_PATH                 *FilePath;
381ca987d46SWarner Losh     VOID                            *Reserved;
382ca987d46SWarner Losh 
383ca987d46SWarner Losh     // Images load options
384ca987d46SWarner Losh     UINT32                          LoadOptionsSize;
385ca987d46SWarner Losh     VOID                            *LoadOptions;
386ca987d46SWarner Losh 
387ca987d46SWarner Losh     // Location of where image was loaded
388ca987d46SWarner Losh     VOID                            *ImageBase;
389ca987d46SWarner Losh     UINT64                          ImageSize;
390ca987d46SWarner Losh     EFI_MEMORY_TYPE                 ImageCodeType;
391ca987d46SWarner Losh     EFI_MEMORY_TYPE                 ImageDataType;
392ca987d46SWarner Losh 
393ca987d46SWarner Losh     // If the driver image supports a dynamic unload request
394ca987d46SWarner Losh     EFI_IMAGE_UNLOAD                Unload;
395ca987d46SWarner Losh 
396ca987d46SWarner Losh } EFI_LOADED_IMAGE;
397ca987d46SWarner Losh 
398ca987d46SWarner Losh 
399ca987d46SWarner Losh typedef
400ca987d46SWarner Losh EFI_STATUS
401ca987d46SWarner Losh (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
402ca987d46SWarner Losh     IN EFI_HANDLE                   ImageHandle,
403ca987d46SWarner Losh     IN UINTN                        MapKey
404ca987d46SWarner Losh     );
405ca987d46SWarner Losh 
406ca987d46SWarner Losh //
407ca987d46SWarner Losh // Misc
408ca987d46SWarner Losh //
409ca987d46SWarner Losh 
410ca987d46SWarner Losh 
411ca987d46SWarner Losh typedef
412ca987d46SWarner Losh EFI_STATUS
413ca987d46SWarner Losh (EFIAPI *EFI_STALL) (
414ca987d46SWarner Losh     IN UINTN                    Microseconds
415ca987d46SWarner Losh     );
416ca987d46SWarner Losh 
417ca987d46SWarner Losh typedef
418ca987d46SWarner Losh EFI_STATUS
419ca987d46SWarner Losh (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
420ca987d46SWarner Losh     IN UINTN                    Timeout,
421ca987d46SWarner Losh     IN UINT64                   WatchdogCode,
422ca987d46SWarner Losh     IN UINTN                    DataSize,
423ca987d46SWarner Losh     IN CHAR16                   *WatchdogData OPTIONAL
424ca987d46SWarner Losh     );
425ca987d46SWarner Losh 
426ca987d46SWarner Losh 
427ca987d46SWarner Losh typedef enum {
428ca987d46SWarner Losh     EfiResetCold,
429ca987d46SWarner Losh     EfiResetWarm,
430ca987d46SWarner Losh     EfiResetShutdown
431ca987d46SWarner Losh } EFI_RESET_TYPE;
432ca987d46SWarner Losh 
433ca987d46SWarner Losh typedef
434ca987d46SWarner Losh VOID
435ca987d46SWarner Losh (EFIAPI *EFI_RESET_SYSTEM) (
436ca987d46SWarner Losh     IN EFI_RESET_TYPE           ResetType,
437ca987d46SWarner Losh     IN EFI_STATUS               ResetStatus,
438ca987d46SWarner Losh     IN UINTN                    DataSize,
439ca987d46SWarner Losh     IN CHAR16                   *ResetData OPTIONAL
440*a2e02d9dSToomas Soome     ) __dead2;
441ca987d46SWarner Losh 
442ca987d46SWarner Losh typedef
443ca987d46SWarner Losh EFI_STATUS
444ca987d46SWarner Losh (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
445ca987d46SWarner Losh     OUT UINT64                  *Count
446ca987d46SWarner Losh     );
447ca987d46SWarner Losh 
448ca987d46SWarner Losh typedef
449ca987d46SWarner Losh EFI_STATUS
450ca987d46SWarner Losh (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
451ca987d46SWarner Losh     OUT UINT32                  *HighCount
452ca987d46SWarner Losh     );
453ca987d46SWarner Losh 
454ca987d46SWarner Losh //
455ca987d46SWarner Losh // Protocol handler functions
456ca987d46SWarner Losh //
457ca987d46SWarner Losh 
458ca987d46SWarner Losh typedef enum {
459ca987d46SWarner Losh     EFI_NATIVE_INTERFACE
460ca987d46SWarner Losh } EFI_INTERFACE_TYPE;
461ca987d46SWarner Losh 
462ca987d46SWarner Losh typedef
463ca987d46SWarner Losh EFI_STATUS
464ca987d46SWarner Losh (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
465ca987d46SWarner Losh     IN OUT EFI_HANDLE           *Handle,
466ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
467ca987d46SWarner Losh     IN EFI_INTERFACE_TYPE       InterfaceType,
468ca987d46SWarner Losh     IN VOID                     *Interface
469ca987d46SWarner Losh     );
470ca987d46SWarner Losh 
471ca987d46SWarner Losh typedef
472ca987d46SWarner Losh EFI_STATUS
473ca987d46SWarner Losh (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
474ca987d46SWarner Losh     IN EFI_HANDLE               Handle,
475ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
476ca987d46SWarner Losh     IN VOID                     *OldInterface,
477ca987d46SWarner Losh     IN VOID                     *NewInterface
478ca987d46SWarner Losh     );
479ca987d46SWarner Losh 
480ca987d46SWarner Losh typedef
481ca987d46SWarner Losh EFI_STATUS
482ca987d46SWarner Losh (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
483ca987d46SWarner Losh     IN EFI_HANDLE               Handle,
484ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
485ca987d46SWarner Losh     IN VOID                     *Interface
486ca987d46SWarner Losh     );
487ca987d46SWarner Losh 
488ca987d46SWarner Losh typedef
489ca987d46SWarner Losh EFI_STATUS
490ca987d46SWarner Losh (EFIAPI *EFI_HANDLE_PROTOCOL) (
491ca987d46SWarner Losh     IN EFI_HANDLE               Handle,
492ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
493ca987d46SWarner Losh     OUT VOID                    **Interface
494ca987d46SWarner Losh     );
495ca987d46SWarner Losh 
496ca987d46SWarner Losh typedef
497ca987d46SWarner Losh EFI_STATUS
498ca987d46SWarner Losh (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
499ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
500ca987d46SWarner Losh     IN EFI_EVENT                Event,
501ca987d46SWarner Losh     OUT VOID                    **Registration
502ca987d46SWarner Losh     );
503ca987d46SWarner Losh 
504ca987d46SWarner Losh typedef enum {
505ca987d46SWarner Losh     AllHandles,
506ca987d46SWarner Losh     ByRegisterNotify,
507ca987d46SWarner Losh     ByProtocol
508ca987d46SWarner Losh } EFI_LOCATE_SEARCH_TYPE;
509ca987d46SWarner Losh 
510ca987d46SWarner Losh typedef
511ca987d46SWarner Losh EFI_STATUS
512ca987d46SWarner Losh (EFIAPI *EFI_LOCATE_HANDLE) (
513ca987d46SWarner Losh     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
514ca987d46SWarner Losh     IN EFI_GUID                 *Protocol OPTIONAL,
515ca987d46SWarner Losh     IN VOID                     *SearchKey OPTIONAL,
516ca987d46SWarner Losh     IN OUT UINTN                *BufferSize,
517ca987d46SWarner Losh     OUT EFI_HANDLE              *Buffer
518ca987d46SWarner Losh     );
519ca987d46SWarner Losh 
520ca987d46SWarner Losh typedef
521ca987d46SWarner Losh EFI_STATUS
522ca987d46SWarner Losh (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
523ca987d46SWarner Losh     IN EFI_GUID                 *Protocol,
524ca987d46SWarner Losh     IN OUT EFI_DEVICE_PATH      **DevicePath,
525ca987d46SWarner Losh     OUT EFI_HANDLE              *Device
526ca987d46SWarner Losh     );
527ca987d46SWarner Losh 
528ca987d46SWarner Losh typedef
529ca987d46SWarner Losh EFI_STATUS
530ca987d46SWarner Losh (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
531ca987d46SWarner Losh     IN EFI_GUID                 *Guid,
532ca987d46SWarner Losh     IN VOID                     *Table
533ca987d46SWarner Losh     );
534ca987d46SWarner Losh 
535ca987d46SWarner Losh typedef
536ca987d46SWarner Losh EFI_STATUS
537ca987d46SWarner Losh (EFIAPI *EFI_RESERVED_SERVICE) (
538ca987d46SWarner Losh     VOID
539ca987d46SWarner Losh     );
540ca987d46SWarner Losh 
541ca987d46SWarner Losh typedef
542ca987d46SWarner Losh EFI_STATUS
543ca987d46SWarner Losh (EFIAPI *EFI_CONNECT_CONTROLLER) (
544ca987d46SWarner Losh   IN  EFI_HANDLE                    ControllerHandle,
545ca987d46SWarner Losh   IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
546ca987d46SWarner Losh   IN  EFI_DEVICE_PATH               *RemainingDevicePath  OPTIONAL,
547ca987d46SWarner Losh   IN  BOOLEAN                       Recursive
548ca987d46SWarner Losh   );
549ca987d46SWarner Losh 
550ca987d46SWarner Losh typedef
551ca987d46SWarner Losh EFI_STATUS
552ca987d46SWarner Losh (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
553ca987d46SWarner Losh   IN EFI_HANDLE           ControllerHandle,
554ca987d46SWarner Losh   IN EFI_HANDLE           DriverImageHandle, OPTIONAL
555ca987d46SWarner Losh   IN EFI_HANDLE           ChildHandle        OPTIONAL
556ca987d46SWarner Losh   );
557ca987d46SWarner Losh 
558ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL	 0x00000001
559ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_GET_PROTOCOL	       0x00000002
560ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
561ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
562ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
563ca987d46SWarner Losh #define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
564ca987d46SWarner Losh 
565ca987d46SWarner Losh typedef
566ca987d46SWarner Losh EFI_STATUS
567ca987d46SWarner Losh (EFIAPI *EFI_OPEN_PROTOCOL) (
568ca987d46SWarner Losh   IN EFI_HANDLE                 Handle,
569ca987d46SWarner Losh   IN EFI_GUID                   *Protocol,
570ca987d46SWarner Losh   OUT VOID                      **Interface,
571ca987d46SWarner Losh   IN  EFI_HANDLE                ImageHandle,
572ca987d46SWarner Losh   IN  EFI_HANDLE                ControllerHandle, OPTIONAL
573ca987d46SWarner Losh   IN  UINT32                    Attributes
574ca987d46SWarner Losh   );
575ca987d46SWarner Losh 
576ca987d46SWarner Losh typedef
577ca987d46SWarner Losh EFI_STATUS
578ca987d46SWarner Losh (EFIAPI *EFI_CLOSE_PROTOCOL) (
579ca987d46SWarner Losh   IN EFI_HANDLE               Handle,
580ca987d46SWarner Losh   IN EFI_GUID                 *Protocol,
581ca987d46SWarner Losh   IN EFI_HANDLE               ImageHandle,
582ca987d46SWarner Losh   IN EFI_HANDLE               DeviceHandle
583ca987d46SWarner Losh   );
584ca987d46SWarner Losh 
585ca987d46SWarner Losh typedef struct {
586ca987d46SWarner Losh   EFI_HANDLE                  AgentHandle;
587ca987d46SWarner Losh   EFI_HANDLE                  ControllerHandle;
588ca987d46SWarner Losh   UINT32                      Attributes;
589ca987d46SWarner Losh   UINT32                      OpenCount;
590ca987d46SWarner Losh } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
591ca987d46SWarner Losh 
592ca987d46SWarner Losh typedef
593ca987d46SWarner Losh EFI_STATUS
594ca987d46SWarner Losh (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
595ca987d46SWarner Losh   IN  EFI_HANDLE                          UserHandle,
596ca987d46SWarner Losh   IN  EFI_GUID                            *Protocol,
597ca987d46SWarner Losh   IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
598ca987d46SWarner Losh   OUT UINTN                               *EntryCount
599ca987d46SWarner Losh   );
600ca987d46SWarner Losh 
601ca987d46SWarner Losh typedef
602ca987d46SWarner Losh EFI_STATUS
603ca987d46SWarner Losh (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
604ca987d46SWarner Losh   IN EFI_HANDLE       UserHandle,
605ca987d46SWarner Losh   OUT EFI_GUID        ***ProtocolBuffer,
606ca987d46SWarner Losh   OUT UINTN           *ProtocolBufferCount
607ca987d46SWarner Losh   );
608ca987d46SWarner Losh 
609ca987d46SWarner Losh typedef
610ca987d46SWarner Losh EFI_STATUS
611ca987d46SWarner Losh (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
612ca987d46SWarner Losh   IN EFI_LOCATE_SEARCH_TYPE       SearchType,
613ca987d46SWarner Losh   IN EFI_GUID                     *Protocol OPTIONAL,
614ca987d46SWarner Losh   IN VOID                         *SearchKey OPTIONAL,
615ca987d46SWarner Losh   IN OUT UINTN                    *NumberHandles,
616ca987d46SWarner Losh   OUT EFI_HANDLE                  **Buffer
617ca987d46SWarner Losh   );
618ca987d46SWarner Losh 
619ca987d46SWarner Losh typedef
620ca987d46SWarner Losh EFI_STATUS
621ca987d46SWarner Losh (EFIAPI *EFI_LOCATE_PROTOCOL) (
622ca987d46SWarner Losh   EFI_GUID  *Protocol,
623ca987d46SWarner Losh   VOID      *Registration, OPTIONAL
624ca987d46SWarner Losh   VOID      **Interface
625ca987d46SWarner Losh   );
626ca987d46SWarner Losh 
627ca987d46SWarner Losh typedef
628ca987d46SWarner Losh EFI_STATUS
629ca987d46SWarner Losh (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
630ca987d46SWarner Losh   IN OUT EFI_HANDLE           *Handle,
631ca987d46SWarner Losh   ...
632ca987d46SWarner Losh   );
633ca987d46SWarner Losh 
634ca987d46SWarner Losh typedef
635ca987d46SWarner Losh EFI_STATUS
636ca987d46SWarner Losh (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
637ca987d46SWarner Losh   IN EFI_HANDLE           Handle,
638ca987d46SWarner Losh   ...
639ca987d46SWarner Losh   );
640ca987d46SWarner Losh 
641ca987d46SWarner Losh typedef
642ca987d46SWarner Losh EFI_STATUS
643ca987d46SWarner Losh (EFIAPI *EFI_CALCULATE_CRC32) (
644ca987d46SWarner Losh   IN  VOID                              *Data,
645ca987d46SWarner Losh   IN  UINTN                             DataSize,
646ca987d46SWarner Losh   OUT UINT32                            *Crc32
647ca987d46SWarner Losh   );
648ca987d46SWarner Losh 
649ca987d46SWarner Losh typedef
650ca987d46SWarner Losh VOID
651ca987d46SWarner Losh (EFIAPI *EFI_COPY_MEM) (
652ca987d46SWarner Losh   IN VOID     *Destination,
653ca987d46SWarner Losh   IN VOID     *Source,
654ca987d46SWarner Losh   IN UINTN    Length
655ca987d46SWarner Losh   );
656ca987d46SWarner Losh 
657ca987d46SWarner Losh typedef
658ca987d46SWarner Losh VOID
659ca987d46SWarner Losh (EFIAPI *EFI_SET_MEM) (
660ca987d46SWarner Losh   IN VOID     *Buffer,
661ca987d46SWarner Losh   IN UINTN    Size,
662ca987d46SWarner Losh   IN UINT8    Value
663ca987d46SWarner Losh   );
664ca987d46SWarner Losh 
665ca987d46SWarner Losh //
666ca987d46SWarner Losh // Standard EFI table header
667ca987d46SWarner Losh //
668ca987d46SWarner Losh 
669ca987d46SWarner Losh typedef struct _EFI_TABLE_HEARDER {
670ca987d46SWarner Losh   UINT64                      Signature;
671ca987d46SWarner Losh   UINT32                      Revision;
672ca987d46SWarner Losh   UINT32                      HeaderSize;
673ca987d46SWarner Losh   UINT32                      CRC32;
674ca987d46SWarner Losh   UINT32                      Reserved;
675ca987d46SWarner Losh } EFI_TABLE_HEADER;
676ca987d46SWarner Losh 
677ca987d46SWarner Losh 
678ca987d46SWarner Losh //
679ca987d46SWarner Losh // EFI Runtime Serivces Table
680ca987d46SWarner Losh //
681ca987d46SWarner Losh 
682ca987d46SWarner Losh #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
683ca987d46SWarner Losh #define EFI_RUNTIME_SERVICES_REVISION   ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
684ca987d46SWarner Losh 
685ca987d46SWarner Losh typedef struct  {
686ca987d46SWarner Losh   EFI_TABLE_HEADER                Hdr;
687ca987d46SWarner Losh 
688ca987d46SWarner Losh   //
689ca987d46SWarner Losh   // Time services
690ca987d46SWarner Losh   //
691ca987d46SWarner Losh 
692ca987d46SWarner Losh   EFI_GET_TIME                    GetTime;
693ca987d46SWarner Losh   EFI_SET_TIME                    SetTime;
694ca987d46SWarner Losh   EFI_GET_WAKEUP_TIME             GetWakeupTime;
695ca987d46SWarner Losh   EFI_SET_WAKEUP_TIME             SetWakeupTime;
696ca987d46SWarner Losh 
697ca987d46SWarner Losh   //
698ca987d46SWarner Losh   // Virtual memory services
699ca987d46SWarner Losh   //
700ca987d46SWarner Losh 
701ca987d46SWarner Losh   EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
702ca987d46SWarner Losh   EFI_CONVERT_POINTER             ConvertPointer;
703ca987d46SWarner Losh 
704ca987d46SWarner Losh   //
705ca987d46SWarner Losh   // Variable serviers
706ca987d46SWarner Losh   //
707ca987d46SWarner Losh 
708ca987d46SWarner Losh   EFI_GET_VARIABLE                GetVariable;
709ca987d46SWarner Losh   EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
710ca987d46SWarner Losh   EFI_SET_VARIABLE                SetVariable;
711ca987d46SWarner Losh 
712ca987d46SWarner Losh   //
713ca987d46SWarner Losh   // Misc
714ca987d46SWarner Losh   //
715ca987d46SWarner Losh 
716ca987d46SWarner Losh   EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
717ca987d46SWarner Losh   EFI_RESET_SYSTEM                ResetSystem;
718ca987d46SWarner Losh 
719ca987d46SWarner Losh } EFI_RUNTIME_SERVICES;
720ca987d46SWarner Losh 
721ca987d46SWarner Losh 
722ca987d46SWarner Losh //
723ca987d46SWarner Losh // EFI Boot Services Table
724ca987d46SWarner Losh //
725ca987d46SWarner Losh 
726ca987d46SWarner Losh #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
727ca987d46SWarner Losh #define EFI_BOOT_SERVICES_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
728ca987d46SWarner Losh 
729ca987d46SWarner Losh typedef struct {
730ca987d46SWarner Losh 
731ca987d46SWarner Losh   EFI_TABLE_HEADER                Hdr;
732ca987d46SWarner Losh 
733ca987d46SWarner Losh   //
734ca987d46SWarner Losh   // Task priority functions
735ca987d46SWarner Losh   //
736ca987d46SWarner Losh 
737ca987d46SWarner Losh   EFI_RAISE_TPL                   RaiseTPL;
738ca987d46SWarner Losh   EFI_RESTORE_TPL                 RestoreTPL;
739ca987d46SWarner Losh 
740ca987d46SWarner Losh   //
741ca987d46SWarner Losh   // Memory functions
742ca987d46SWarner Losh   //
743ca987d46SWarner Losh 
744ca987d46SWarner Losh   EFI_ALLOCATE_PAGES              AllocatePages;
745ca987d46SWarner Losh   EFI_FREE_PAGES                  FreePages;
746ca987d46SWarner Losh   EFI_GET_MEMORY_MAP              GetMemoryMap;
747ca987d46SWarner Losh   EFI_ALLOCATE_POOL               AllocatePool;
748ca987d46SWarner Losh   EFI_FREE_POOL                   FreePool;
749ca987d46SWarner Losh 
750ca987d46SWarner Losh   //
751ca987d46SWarner Losh   // Event & timer functions
752ca987d46SWarner Losh   //
753ca987d46SWarner Losh 
754ca987d46SWarner Losh   EFI_CREATE_EVENT                CreateEvent;
755ca987d46SWarner Losh   EFI_SET_TIMER                   SetTimer;
756ca987d46SWarner Losh   EFI_WAIT_FOR_EVENT              WaitForEvent;
757ca987d46SWarner Losh   EFI_SIGNAL_EVENT                SignalEvent;
758ca987d46SWarner Losh   EFI_CLOSE_EVENT                 CloseEvent;
759ca987d46SWarner Losh   EFI_CHECK_EVENT                 CheckEvent;
760ca987d46SWarner Losh 
761ca987d46SWarner Losh   //
762ca987d46SWarner Losh   // Protocol handler functions
763ca987d46SWarner Losh   //
764ca987d46SWarner Losh 
765ca987d46SWarner Losh   EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
766ca987d46SWarner Losh   EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
767ca987d46SWarner Losh   EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
768ca987d46SWarner Losh   EFI_HANDLE_PROTOCOL             HandleProtocol;
769ca987d46SWarner Losh   VOID                            *Reserved;
770ca987d46SWarner Losh   EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
771ca987d46SWarner Losh   EFI_LOCATE_HANDLE               LocateHandle;
772ca987d46SWarner Losh   EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
773ca987d46SWarner Losh   EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
774ca987d46SWarner Losh 
775ca987d46SWarner Losh   //
776ca987d46SWarner Losh   // Image functions
777ca987d46SWarner Losh   //
778ca987d46SWarner Losh 
779ca987d46SWarner Losh   EFI_IMAGE_LOAD                  LoadImage;
780ca987d46SWarner Losh   EFI_IMAGE_START                 StartImage;
781ca987d46SWarner Losh   EFI_EXIT                        Exit;
782ca987d46SWarner Losh   EFI_IMAGE_UNLOAD                UnloadImage;
783ca987d46SWarner Losh   EFI_EXIT_BOOT_SERVICES          ExitBootServices;
784ca987d46SWarner Losh 
785ca987d46SWarner Losh   //
786ca987d46SWarner Losh   // Misc functions
787ca987d46SWarner Losh   //
788ca987d46SWarner Losh 
789ca987d46SWarner Losh   EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
790ca987d46SWarner Losh   EFI_STALL                       Stall;
791ca987d46SWarner Losh   EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
792ca987d46SWarner Losh 
793ca987d46SWarner Losh   //
794ca987d46SWarner Losh   // DriverSupport Services
795ca987d46SWarner Losh   //
796ca987d46SWarner Losh   EFI_CONNECT_CONTROLLER	        ConnectController;
797ca987d46SWarner Losh   EFI_DISCONNECT_CONTROLLER       DisconnectController;
798ca987d46SWarner Losh 
799ca987d46SWarner Losh   //
800ca987d46SWarner Losh   // Open and Close Protocol Services
801ca987d46SWarner Losh   //
802ca987d46SWarner Losh   EFI_OPEN_PROTOCOL               OpenProtocol;
803ca987d46SWarner Losh   EFI_CLOSE_PROTOCOL              CloseProtocol;
804ca987d46SWarner Losh   EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
805ca987d46SWarner Losh 
806ca987d46SWarner Losh   //
807ca987d46SWarner Losh   // Library Services to reduce size of drivers
808ca987d46SWarner Losh   //
809ca987d46SWarner Losh   EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
810ca987d46SWarner Losh   EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
811ca987d46SWarner Losh   EFI_LOCATE_PROTOCOL             LocateProtocol;
812ca987d46SWarner Losh 
813ca987d46SWarner Losh   EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
814ca987d46SWarner Losh   EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
815ca987d46SWarner Losh 
816ca987d46SWarner Losh   //
817ca987d46SWarner Losh   // CRC32 services
818ca987d46SWarner Losh   //
819ca987d46SWarner Losh   EFI_CALCULATE_CRC32             CalculateCrc32;
820ca987d46SWarner Losh 
821ca987d46SWarner Losh   //
822ca987d46SWarner Losh   // Memory Utility Services
823ca987d46SWarner Losh   //
824ca987d46SWarner Losh   EFI_COPY_MEM                    CopyMem;
825ca987d46SWarner Losh   EFI_SET_MEM                     SetMem;
826ca987d46SWarner Losh 
827ca987d46SWarner Losh } EFI_BOOT_SERVICES;
828ca987d46SWarner Losh 
829ca987d46SWarner Losh 
830ca987d46SWarner Losh //
831ca987d46SWarner Losh // EFI Configuration Table and GUID definitions
832ca987d46SWarner Losh //
833ca987d46SWarner Losh 
834ca987d46SWarner Losh #define MPS_TABLE_GUID \
835ca987d46SWarner Losh     { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
836ca987d46SWarner Losh 
837ca987d46SWarner Losh #define ACPI_TABLE_GUID \
838ca987d46SWarner Losh     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
839ca987d46SWarner Losh 
840ca987d46SWarner Losh #define ACPI_20_TABLE_GUID \
841ca987d46SWarner Losh     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
842ca987d46SWarner Losh 
843ca987d46SWarner Losh #define SMBIOS_TABLE_GUID \
844ca987d46SWarner Losh     { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
845ca987d46SWarner Losh 
8469b2ff7dbSEd Maste #define SMBIOS3_TABLE_GUID \
8479b2ff7dbSEd Maste 	{ 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
8489b2ff7dbSEd Maste 
849ca987d46SWarner Losh #define SAL_SYSTEM_TABLE_GUID  \
850ca987d46SWarner Losh     { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
851ca987d46SWarner Losh 
852ca987d46SWarner Losh #define FDT_TABLE_GUID \
853ca987d46SWarner Losh     { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
854ca987d46SWarner Losh 
855ca987d46SWarner Losh #define DXE_SERVICES_TABLE_GUID \
856ca987d46SWarner Losh     { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
857ca987d46SWarner Losh 
858ca987d46SWarner Losh #define HOB_LIST_TABLE_GUID \
859ca987d46SWarner Losh     { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
860ca987d46SWarner Losh 
8619b2ff7dbSEd Maste #define LZMA_DECOMPRESSION_GUID \
8629b2ff7dbSEd Maste 	{ 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x3, 0xcf} }
8639b2ff7dbSEd Maste 
8649b2ff7dbSEd Maste #define ARM_MP_CORE_INFO_TABLE_GUID \
8659b2ff7dbSEd Maste 	{ 0xa4ee0728, 0xe5d7, 0x4ac5, {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
8669b2ff7dbSEd Maste 
8679b2ff7dbSEd Maste #define ESRT_TABLE_GUID \
8689b2ff7dbSEd Maste 	{ 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80} }
8699b2ff7dbSEd Maste 
870ca987d46SWarner Losh #define MEMORY_TYPE_INFORMATION_TABLE_GUID \
871ca987d46SWarner Losh     { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
872ca987d46SWarner Losh 
873ca987d46SWarner Losh #define DEBUG_IMAGE_INFO_TABLE_GUID \
874ca987d46SWarner Losh     { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
875ca987d46SWarner Losh 
876ca987d46SWarner Losh typedef struct _EFI_CONFIGURATION_TABLE {
877ca987d46SWarner Losh   EFI_GUID                VendorGuid;
878ca987d46SWarner Losh   VOID                    *VendorTable;
879ca987d46SWarner Losh } EFI_CONFIGURATION_TABLE;
880ca987d46SWarner Losh 
881ca987d46SWarner Losh 
882ca987d46SWarner Losh //
883ca987d46SWarner Losh // EFI System Table
884ca987d46SWarner Losh //
885ca987d46SWarner Losh 
886ca987d46SWarner Losh 
887ca987d46SWarner Losh 
888ca987d46SWarner Losh 
889ca987d46SWarner Losh #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
890ca987d46SWarner Losh #define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
891ca987d46SWarner Losh #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
892ca987d46SWarner Losh #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
893ca987d46SWarner Losh 
894ca987d46SWarner Losh typedef struct _EFI_SYSTEM_TABLE {
895ca987d46SWarner Losh   EFI_TABLE_HEADER                Hdr;
896ca987d46SWarner Losh 
897ca987d46SWarner Losh   CHAR16                          *FirmwareVendor;
898ca987d46SWarner Losh   UINT32                          FirmwareRevision;
899ca987d46SWarner Losh 
900ca987d46SWarner Losh   EFI_HANDLE                      ConsoleInHandle;
901ca987d46SWarner Losh   SIMPLE_INPUT_INTERFACE          *ConIn;
902ca987d46SWarner Losh 
903ca987d46SWarner Losh   EFI_HANDLE                      ConsoleOutHandle;
904ca987d46SWarner Losh   SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
905ca987d46SWarner Losh 
906ca987d46SWarner Losh   EFI_HANDLE                      StandardErrorHandle;
907ca987d46SWarner Losh   SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
908ca987d46SWarner Losh 
909ca987d46SWarner Losh   EFI_RUNTIME_SERVICES            *RuntimeServices;
910ca987d46SWarner Losh   EFI_BOOT_SERVICES               *BootServices;
911ca987d46SWarner Losh 
912ca987d46SWarner Losh   UINTN                           NumberOfTableEntries;
913ca987d46SWarner Losh   EFI_CONFIGURATION_TABLE         *ConfigurationTable;
914ca987d46SWarner Losh 
915ca987d46SWarner Losh } EFI_SYSTEM_TABLE;
916ca987d46SWarner Losh 
91765641822SToomas Soome /*
91865641822SToomas Soome  * unlisted GUID's..
91965641822SToomas Soome  */
92065641822SToomas Soome #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
92165641822SToomas Soome { 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
92265641822SToomas Soome 
92365641822SToomas Soome #define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
92465641822SToomas Soome { 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
92565641822SToomas Soome 
92665641822SToomas Soome #define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
92765641822SToomas Soome { 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
92865641822SToomas Soome 
92965641822SToomas Soome #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
93065641822SToomas Soome   { 0x18A031AB, 0xB443, 0x4D1A, \
93165641822SToomas Soome     { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
93265641822SToomas Soome   }
93365641822SToomas Soome 
93465641822SToomas Soome #define EFI_TAPE_IO_PROTOCOL_GUID \
93565641822SToomas Soome   { 0x1e93e633, 0xd65a, 0x459e, \
93665641822SToomas Soome     { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
93765641822SToomas Soome   }
93865641822SToomas Soome 
93965641822SToomas Soome #define EFI_SCSI_IO_PROTOCOL_GUID \
94065641822SToomas Soome   { 0x932f47e6, 0x2362, 0x4002, \
94165641822SToomas Soome     { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
94265641822SToomas Soome   }
94365641822SToomas Soome 
94465641822SToomas Soome #define EFI_USB2_HC_PROTOCOL_GUID \
94565641822SToomas Soome   { 0x3e745226, 0x9818, 0x45b6, \
94665641822SToomas Soome     { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
94765641822SToomas Soome   }
94865641822SToomas Soome 
94965641822SToomas Soome #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
95065641822SToomas Soome   { 0x2755590C, 0x6F3C, 0x42FA, \
95165641822SToomas Soome     { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
95265641822SToomas Soome   }
95365641822SToomas Soome 
95465641822SToomas Soome #define EFI_DEBUGPORT_PROTOCOL_GUID \
95565641822SToomas Soome   { 0xEBA4E8D2, 0x3858, 0x41EC, \
95665641822SToomas Soome     { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
95765641822SToomas Soome   }
95865641822SToomas Soome 
95965641822SToomas Soome #define EFI_DECOMPRESS_PROTOCOL_GUID \
96065641822SToomas Soome   { 0xd8117cfe, 0x94a6, 0x11d4, \
96165641822SToomas Soome     { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
96265641822SToomas Soome   }
96365641822SToomas Soome 
96465641822SToomas Soome #define EFI_ACPI_TABLE_PROTOCOL_GUID \
96565641822SToomas Soome   { 0xffe06bdd, 0x6107, 0x46a6, \
96665641822SToomas Soome     { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
96765641822SToomas Soome   }
96865641822SToomas Soome 
96965641822SToomas Soome #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
97065641822SToomas Soome   { 0x587e72d7, 0xcc50, 0x4f79, \
97165641822SToomas Soome     { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
97265641822SToomas Soome   }
97365641822SToomas Soome 
97465641822SToomas Soome #define EFI_HII_DATABASE_PROTOCOL_GUID \
97565641822SToomas Soome   { 0xef9fc172, 0xa1b2, 0x4693, \
97665641822SToomas Soome     { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
97765641822SToomas Soome   }
97865641822SToomas Soome 
97965641822SToomas Soome #define EFI_HII_STRING_PROTOCOL_GUID \
98065641822SToomas Soome   { 0xfd96974, 0x23aa, 0x4cdc, \
98165641822SToomas Soome     { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
98265641822SToomas Soome   }
98365641822SToomas Soome 
98465641822SToomas Soome #define EFI_HII_IMAGE_PROTOCOL_GUID \
98565641822SToomas Soome   { 0x31a6406a, 0x6bdf, 0x4e46, \
98665641822SToomas Soome     { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
98765641822SToomas Soome   }
98865641822SToomas Soome 
98965641822SToomas Soome #define EFI_HII_FONT_PROTOCOL_GUID \
99065641822SToomas Soome   { 0xe9ca4775, 0x8657, 0x47fc, \
99165641822SToomas Soome     { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
99265641822SToomas Soome   }
99365641822SToomas Soome #define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
99465641822SToomas Soome   { 0x330d4706, 0xf2a0, 0x4e4f, \
99565641822SToomas Soome     { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
99665641822SToomas Soome   }
99765641822SToomas Soome 
99865641822SToomas Soome #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
99965641822SToomas Soome { 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
100065641822SToomas Soome 
100165641822SToomas Soome #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
100265641822SToomas Soome   { 0x6a7a5cff, 0xe8d9, 0x4f70, \
100365641822SToomas Soome     { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
100465641822SToomas Soome   }
100565641822SToomas Soome 
100665641822SToomas Soome #define EFI_USB_IO_PROTOCOL_GUID \
100765641822SToomas Soome   { 0x2B2F68D6, 0x0CD2, 0x44cf, \
100865641822SToomas Soome     { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
100965641822SToomas Soome   }
101065641822SToomas Soome #define EFI_HCDP_TABLE_GUID \
101165641822SToomas Soome   { 0xf951938d, 0x620b, 0x42ef, \
101265641822SToomas Soome       { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
101365641822SToomas Soome   }
101465641822SToomas Soome 
101565641822SToomas Soome #define EFI_DEVICE_TREE_GUID \
101665641822SToomas Soome   { 0xb1b621d5, 0xf19c, 0x41a5, \
101765641822SToomas Soome       { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
101865641822SToomas Soome   }
101965641822SToomas Soome 
102065641822SToomas Soome #define EFI_VENDOR_APPLE_GUID \
102165641822SToomas Soome   { 0x2B0585EB, 0xD8B8, 0x49A9, \
102265641822SToomas Soome       { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
102365641822SToomas Soome   }
102465641822SToomas Soome 
102565641822SToomas Soome #define EFI_CONSOLE_IN_DEVICE_GUID    \
102665641822SToomas Soome { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
102765641822SToomas Soome 
102865641822SToomas Soome #define EFI_CONSOLE_OUT_DEVICE_GUID    \
102965641822SToomas Soome { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
103065641822SToomas Soome 
103165641822SToomas Soome #define EFI_STANDARD_ERROR_DEVICE_GUID	\
103265641822SToomas Soome { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
103365641822SToomas Soome 
103465641822SToomas Soome #define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
103565641822SToomas Soome { 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
103665641822SToomas Soome 
103765641822SToomas Soome #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
103865641822SToomas Soome { 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
103965641822SToomas Soome 
104065641822SToomas Soome #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
104165641822SToomas Soome { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
104265641822SToomas Soome 
104365641822SToomas Soome #define EFI_ARP_PROTOCOL_GUID \
104465641822SToomas Soome { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
104565641822SToomas Soome 
104665641822SToomas Soome #define EFI_IP4_CONFIG_PROTOCOL_GUID \
104765641822SToomas Soome { 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
104865641822SToomas Soome 
104965641822SToomas Soome #define EFI_IP6_CONFIG_PROTOCOL_GUID \
105065641822SToomas Soome { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
105165641822SToomas Soome 
105265641822SToomas Soome #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
105365641822SToomas Soome { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
105465641822SToomas Soome 
105565641822SToomas Soome #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
105665641822SToomas Soome { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
105765641822SToomas Soome 
105865641822SToomas Soome #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
105965641822SToomas Soome { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
106065641822SToomas Soome 
106165641822SToomas Soome #define EFI_MTFTP4_PROTOCOL_GUID \
106265641822SToomas Soome { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
106365641822SToomas Soome 
106465641822SToomas Soome #define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
106565641822SToomas Soome { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
106665641822SToomas Soome 
106765641822SToomas Soome #define EFI_MTFTP6_PROTOCOL_GUID \
106865641822SToomas Soome { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
106965641822SToomas Soome 
107065641822SToomas Soome #define EFI_DHCP4_PROTOCOL_GUID \
107165641822SToomas Soome { 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
107265641822SToomas Soome 
107365641822SToomas Soome #define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
107465641822SToomas Soome { 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
107565641822SToomas Soome 
107665641822SToomas Soome #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
107765641822SToomas Soome { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
107865641822SToomas Soome 
107965641822SToomas Soome #define EFI_DHCP6_PROTOCOL_GUID \
108065641822SToomas Soome { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
108165641822SToomas Soome 
108265641822SToomas Soome #define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
108365641822SToomas Soome { 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
108465641822SToomas Soome 
108565641822SToomas Soome #define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
108665641822SToomas Soome { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
108765641822SToomas Soome 
108865641822SToomas Soome #define EFI_DISK_INFO_PROTOCOL_GUID \
108965641822SToomas Soome { 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
109065641822SToomas Soome 
109165641822SToomas Soome #define EFI_ISA_IO_PROTOCOL_GUID \
109265641822SToomas Soome { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
109365641822SToomas Soome 
109465641822SToomas Soome #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
109565641822SToomas Soome { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
109665641822SToomas Soome 
109765641822SToomas Soome #define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
109865641822SToomas Soome { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
109965641822SToomas Soome 
110065641822SToomas Soome #define EFI_ISA_ACPI_PROTOCOL_GUID \
110165641822SToomas Soome { 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
110265641822SToomas Soome 
110365641822SToomas Soome #define EFI_PCI_ENUMERATION_COMPLETE_GUID \
110465641822SToomas Soome { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
110565641822SToomas Soome 
110665641822SToomas Soome #define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
110765641822SToomas Soome { 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
110865641822SToomas Soome 
110965641822SToomas Soome #define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
111065641822SToomas Soome { 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
111165641822SToomas Soome 
111265641822SToomas Soome #define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
111365641822SToomas Soome { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
111465641822SToomas Soome 
111565641822SToomas Soome #define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
111665641822SToomas Soome {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
111765641822SToomas Soome 
111865641822SToomas Soome #define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
111965641822SToomas Soome {0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
112065641822SToomas Soome 
112165641822SToomas Soome #define EFI_MP_SERVICES_PROTOCOL_GUID \
112265641822SToomas Soome { 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
112365641822SToomas Soome 
112465641822SToomas Soome #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
112565641822SToomas Soome { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
112665641822SToomas Soome 
112765641822SToomas Soome #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
112865641822SToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
112965641822SToomas Soome 
113065641822SToomas Soome #define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
113165641822SToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
113265641822SToomas Soome 
113365641822SToomas Soome #define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
113465641822SToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
113565641822SToomas Soome 
113665641822SToomas Soome #define EFI_BDS_ARCH_PROTOCOL_GUID \
113765641822SToomas Soome { 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
113865641822SToomas Soome 
113965641822SToomas Soome #define EFI_METRONOME_ARCH_PROTOCOL_GUID \
114065641822SToomas Soome { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
114165641822SToomas Soome 
114265641822SToomas Soome #define EFI_TIMER_ARCH_PROTOCOL_GUID \
114365641822SToomas Soome { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
114465641822SToomas Soome 
114565641822SToomas Soome #define EFI_DPC_PROTOCOL_GUID \
114665641822SToomas Soome { 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
114765641822SToomas Soome 
114865641822SToomas Soome #define EFI_PRINT2_PROTOCOL_GUID  \
114965641822SToomas Soome { 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
115065641822SToomas Soome 
115165641822SToomas Soome #define EFI_RESET_ARCH_PROTOCOL_GUID  \
115265641822SToomas Soome { 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
115365641822SToomas Soome 
115465641822SToomas Soome #define EFI_CPU_ARCH_PROTOCOL_GUID \
115565641822SToomas Soome { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
115665641822SToomas Soome 
115765641822SToomas Soome #define EFI_CPU_IO2_PROTOCOL_GUID \
115865641822SToomas Soome { 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
115965641822SToomas Soome 
116065641822SToomas Soome #define EFI_LEGACY_8259_PROTOCOL_GUID \
116165641822SToomas Soome { 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
116265641822SToomas Soome 
116365641822SToomas Soome #define EFI_SECURITY_ARCH_PROTOCOL_GUID \
116465641822SToomas Soome { 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
116565641822SToomas Soome 
116665641822SToomas Soome #define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
116765641822SToomas Soome { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
116865641822SToomas Soome 
116965641822SToomas Soome #define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
117065641822SToomas Soome { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
117165641822SToomas Soome 
117265641822SToomas Soome #define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
117365641822SToomas Soome { 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
117465641822SToomas Soome 
117565641822SToomas Soome #define EFI_DATA_HUB_PROTOCOL_GUID \
117665641822SToomas Soome { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
117765641822SToomas Soome 
117865641822SToomas Soome #define PCD_PROTOCOL_GUID \
117965641822SToomas Soome { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
118065641822SToomas Soome 
118165641822SToomas Soome #define EFI_PCD_PROTOCOL_GUID \
118265641822SToomas Soome { 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
118365641822SToomas Soome 
118465641822SToomas Soome #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
118565641822SToomas Soome { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
118665641822SToomas Soome 
118765641822SToomas Soome #define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
118865641822SToomas Soome { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
118965641822SToomas Soome 
119065641822SToomas Soome #define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
119165641822SToomas Soome { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
119265641822SToomas Soome 
119365641822SToomas Soome #define LZMA_COMPRESS_GUID \
119465641822SToomas Soome { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
1195ca987d46SWarner Losh #endif
1196