xref: /titanic_53/usr/src/boot/sys/boot/efi/include/efiapi.h (revision d5a0772bd7066293674d17391f116c692addc58d)
1*4a5d661aSToomas Soome #ifndef _EFI_API_H
2*4a5d661aSToomas Soome #define _EFI_API_H
3*4a5d661aSToomas Soome 
4*4a5d661aSToomas Soome /*++
5*4a5d661aSToomas Soome 
6*4a5d661aSToomas Soome Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
7*4a5d661aSToomas Soome This software and associated documentation (if any) is furnished
8*4a5d661aSToomas Soome under a license and may only be used or copied in accordance
9*4a5d661aSToomas Soome with the terms of the license. Except as permitted by such
10*4a5d661aSToomas Soome license, no part of this software or documentation may be
11*4a5d661aSToomas Soome reproduced, stored in a retrieval system, or transmitted in any
12*4a5d661aSToomas Soome form or by any means without the express written consent of
13*4a5d661aSToomas Soome Intel Corporation.
14*4a5d661aSToomas Soome 
15*4a5d661aSToomas Soome Module Name:
16*4a5d661aSToomas Soome 
17*4a5d661aSToomas Soome     efiapi.h
18*4a5d661aSToomas Soome 
19*4a5d661aSToomas Soome Abstract:
20*4a5d661aSToomas Soome 
21*4a5d661aSToomas Soome     Global EFI runtime & boot service interfaces
22*4a5d661aSToomas Soome 
23*4a5d661aSToomas Soome 
24*4a5d661aSToomas Soome 
25*4a5d661aSToomas Soome 
26*4a5d661aSToomas Soome Revision History
27*4a5d661aSToomas Soome 
28*4a5d661aSToomas Soome --*/
29*4a5d661aSToomas Soome 
30*4a5d661aSToomas Soome //
31*4a5d661aSToomas Soome // EFI Specification Revision
32*4a5d661aSToomas Soome //
33*4a5d661aSToomas Soome 
34*4a5d661aSToomas Soome #define EFI_SPECIFICATION_MAJOR_REVISION 1
35*4a5d661aSToomas Soome #define EFI_SPECIFICATION_MINOR_REVISION 10
36*4a5d661aSToomas Soome 
37*4a5d661aSToomas Soome //
38*4a5d661aSToomas Soome // Declare forward referenced data structures
39*4a5d661aSToomas Soome //
40*4a5d661aSToomas Soome 
41*4a5d661aSToomas Soome INTERFACE_DECL(_EFI_SYSTEM_TABLE);
42*4a5d661aSToomas Soome 
43*4a5d661aSToomas Soome //
44*4a5d661aSToomas Soome // EFI Memory
45*4a5d661aSToomas Soome //
46*4a5d661aSToomas Soome 
47*4a5d661aSToomas Soome typedef
48*4a5d661aSToomas Soome EFI_STATUS
49*4a5d661aSToomas Soome (EFIAPI *EFI_ALLOCATE_PAGES) (
50*4a5d661aSToomas Soome     IN EFI_ALLOCATE_TYPE            Type,
51*4a5d661aSToomas Soome     IN EFI_MEMORY_TYPE              MemoryType,
52*4a5d661aSToomas Soome     IN UINTN                        NoPages,
53*4a5d661aSToomas Soome     OUT EFI_PHYSICAL_ADDRESS        *Memory
54*4a5d661aSToomas Soome     );
55*4a5d661aSToomas Soome 
56*4a5d661aSToomas Soome typedef
57*4a5d661aSToomas Soome EFI_STATUS
58*4a5d661aSToomas Soome (EFIAPI *EFI_FREE_PAGES) (
59*4a5d661aSToomas Soome     IN EFI_PHYSICAL_ADDRESS         Memory,
60*4a5d661aSToomas Soome     IN UINTN                        NoPages
61*4a5d661aSToomas Soome     );
62*4a5d661aSToomas Soome 
63*4a5d661aSToomas Soome typedef
64*4a5d661aSToomas Soome EFI_STATUS
65*4a5d661aSToomas Soome (EFIAPI *EFI_GET_MEMORY_MAP) (
66*4a5d661aSToomas Soome     IN OUT UINTN                    *MemoryMapSize,
67*4a5d661aSToomas Soome     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
68*4a5d661aSToomas Soome     OUT UINTN                       *MapKey,
69*4a5d661aSToomas Soome     OUT UINTN                       *DescriptorSize,
70*4a5d661aSToomas Soome     OUT UINT32                      *DescriptorVersion
71*4a5d661aSToomas Soome     );
72*4a5d661aSToomas Soome 
73*4a5d661aSToomas Soome #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
74*4a5d661aSToomas Soome 
75*4a5d661aSToomas Soome 
76*4a5d661aSToomas Soome typedef
77*4a5d661aSToomas Soome EFI_STATUS
78*4a5d661aSToomas Soome (EFIAPI *EFI_ALLOCATE_POOL) (
79*4a5d661aSToomas Soome     IN EFI_MEMORY_TYPE              PoolType,
80*4a5d661aSToomas Soome     IN UINTN                        Size,
81*4a5d661aSToomas Soome     OUT VOID                        **Buffer
82*4a5d661aSToomas Soome     );
83*4a5d661aSToomas Soome 
84*4a5d661aSToomas Soome typedef
85*4a5d661aSToomas Soome EFI_STATUS
86*4a5d661aSToomas Soome (EFIAPI *EFI_FREE_POOL) (
87*4a5d661aSToomas Soome     IN VOID                         *Buffer
88*4a5d661aSToomas Soome     );
89*4a5d661aSToomas Soome 
90*4a5d661aSToomas Soome typedef
91*4a5d661aSToomas Soome EFI_STATUS
92*4a5d661aSToomas Soome (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
93*4a5d661aSToomas Soome     IN UINTN                        MemoryMapSize,
94*4a5d661aSToomas Soome     IN UINTN                        DescriptorSize,
95*4a5d661aSToomas Soome     IN UINT32                       DescriptorVersion,
96*4a5d661aSToomas Soome     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
97*4a5d661aSToomas Soome     );
98*4a5d661aSToomas Soome 
99*4a5d661aSToomas Soome 
100*4a5d661aSToomas Soome #define EFI_OPTIONAL_PTR            0x00000001
101*4a5d661aSToomas Soome #define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
102*4a5d661aSToomas Soome #define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
103*4a5d661aSToomas Soome 
104*4a5d661aSToomas Soome 
105*4a5d661aSToomas Soome typedef
106*4a5d661aSToomas Soome EFI_STATUS
107*4a5d661aSToomas Soome (EFIAPI *EFI_CONVERT_POINTER) (
108*4a5d661aSToomas Soome     IN UINTN                        DebugDisposition,
109*4a5d661aSToomas Soome     IN OUT VOID                     **Address
110*4a5d661aSToomas Soome     );
111*4a5d661aSToomas Soome 
112*4a5d661aSToomas Soome 
113*4a5d661aSToomas Soome //
114*4a5d661aSToomas Soome // EFI Events
115*4a5d661aSToomas Soome //
116*4a5d661aSToomas Soome 
117*4a5d661aSToomas Soome 
118*4a5d661aSToomas Soome 
119*4a5d661aSToomas Soome #define EVT_TIMER                           0x80000000
120*4a5d661aSToomas Soome #define EVT_RUNTIME                         0x40000000
121*4a5d661aSToomas Soome #define EVT_RUNTIME_CONTEXT                 0x20000000
122*4a5d661aSToomas Soome 
123*4a5d661aSToomas Soome #define EVT_NOTIFY_WAIT                     0x00000100
124*4a5d661aSToomas Soome #define EVT_NOTIFY_SIGNAL                   0x00000200
125*4a5d661aSToomas Soome 
126*4a5d661aSToomas Soome #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
127*4a5d661aSToomas Soome #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
128*4a5d661aSToomas Soome 
129*4a5d661aSToomas Soome #define EVT_EFI_SIGNAL_MASK                 0x000000FF
130*4a5d661aSToomas Soome #define EVT_EFI_SIGNAL_MAX                  2
131*4a5d661aSToomas Soome 
132*4a5d661aSToomas Soome typedef
133*4a5d661aSToomas Soome VOID
134*4a5d661aSToomas Soome (EFIAPI *EFI_EVENT_NOTIFY) (
135*4a5d661aSToomas Soome     IN EFI_EVENT                Event,
136*4a5d661aSToomas Soome     IN VOID                     *Context
137*4a5d661aSToomas Soome     );
138*4a5d661aSToomas Soome 
139*4a5d661aSToomas Soome typedef
140*4a5d661aSToomas Soome EFI_STATUS
141*4a5d661aSToomas Soome (EFIAPI *EFI_CREATE_EVENT) (
142*4a5d661aSToomas Soome     IN UINT32                       Type,
143*4a5d661aSToomas Soome     IN EFI_TPL                      NotifyTpl,
144*4a5d661aSToomas Soome     IN EFI_EVENT_NOTIFY             NotifyFunction,
145*4a5d661aSToomas Soome     IN VOID                         *NotifyContext,
146*4a5d661aSToomas Soome     OUT EFI_EVENT                   *Event
147*4a5d661aSToomas Soome     );
148*4a5d661aSToomas Soome 
149*4a5d661aSToomas Soome typedef enum {
150*4a5d661aSToomas Soome     TimerCancel,
151*4a5d661aSToomas Soome     TimerPeriodic,
152*4a5d661aSToomas Soome     TimerRelative,
153*4a5d661aSToomas Soome     TimerTypeMax
154*4a5d661aSToomas Soome } EFI_TIMER_DELAY;
155*4a5d661aSToomas Soome 
156*4a5d661aSToomas Soome typedef
157*4a5d661aSToomas Soome EFI_STATUS
158*4a5d661aSToomas Soome (EFIAPI *EFI_SET_TIMER) (
159*4a5d661aSToomas Soome     IN EFI_EVENT                Event,
160*4a5d661aSToomas Soome     IN EFI_TIMER_DELAY          Type,
161*4a5d661aSToomas Soome     IN UINT64                   TriggerTime
162*4a5d661aSToomas Soome     );
163*4a5d661aSToomas Soome 
164*4a5d661aSToomas Soome typedef
165*4a5d661aSToomas Soome EFI_STATUS
166*4a5d661aSToomas Soome (EFIAPI *EFI_SIGNAL_EVENT) (
167*4a5d661aSToomas Soome     IN EFI_EVENT                Event
168*4a5d661aSToomas Soome     );
169*4a5d661aSToomas Soome 
170*4a5d661aSToomas Soome typedef
171*4a5d661aSToomas Soome EFI_STATUS
172*4a5d661aSToomas Soome (EFIAPI *EFI_WAIT_FOR_EVENT) (
173*4a5d661aSToomas Soome     IN UINTN                    NumberOfEvents,
174*4a5d661aSToomas Soome     IN EFI_EVENT                *Event,
175*4a5d661aSToomas Soome     OUT UINTN                   *Index
176*4a5d661aSToomas Soome     );
177*4a5d661aSToomas Soome 
178*4a5d661aSToomas Soome typedef
179*4a5d661aSToomas Soome EFI_STATUS
180*4a5d661aSToomas Soome (EFIAPI *EFI_CLOSE_EVENT) (
181*4a5d661aSToomas Soome     IN EFI_EVENT                Event
182*4a5d661aSToomas Soome     );
183*4a5d661aSToomas Soome 
184*4a5d661aSToomas Soome typedef
185*4a5d661aSToomas Soome EFI_STATUS
186*4a5d661aSToomas Soome (EFIAPI *EFI_CHECK_EVENT) (
187*4a5d661aSToomas Soome     IN EFI_EVENT                Event
188*4a5d661aSToomas Soome     );
189*4a5d661aSToomas Soome 
190*4a5d661aSToomas Soome //
191*4a5d661aSToomas Soome // Task priority level
192*4a5d661aSToomas Soome //
193*4a5d661aSToomas Soome 
194*4a5d661aSToomas Soome #define TPL_APPLICATION    4
195*4a5d661aSToomas Soome #define TPL_CALLBACK       8
196*4a5d661aSToomas Soome #define TPL_NOTIFY        16
197*4a5d661aSToomas Soome #define TPL_HIGH_LEVEL    31
198*4a5d661aSToomas Soome 
199*4a5d661aSToomas Soome typedef
200*4a5d661aSToomas Soome EFI_TPL
201*4a5d661aSToomas Soome (EFIAPI *EFI_RAISE_TPL) (
202*4a5d661aSToomas Soome     IN EFI_TPL      NewTpl
203*4a5d661aSToomas Soome     );
204*4a5d661aSToomas Soome 
205*4a5d661aSToomas Soome typedef
206*4a5d661aSToomas Soome VOID
207*4a5d661aSToomas Soome (EFIAPI *EFI_RESTORE_TPL) (
208*4a5d661aSToomas Soome     IN EFI_TPL      OldTpl
209*4a5d661aSToomas Soome     );
210*4a5d661aSToomas Soome 
211*4a5d661aSToomas Soome 
212*4a5d661aSToomas Soome //
213*4a5d661aSToomas Soome // EFI platform varibles
214*4a5d661aSToomas Soome //
215*4a5d661aSToomas Soome 
216*4a5d661aSToomas Soome #define EFI_GLOBAL_VARIABLE \
217*4a5d661aSToomas Soome     { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
218*4a5d661aSToomas Soome 
219*4a5d661aSToomas Soome // Variable attributes
220*4a5d661aSToomas Soome #define EFI_VARIABLE_NON_VOLATILE		0x00000001
221*4a5d661aSToomas Soome #define EFI_VARIABLE_BOOTSERVICE_ACCESS		0x00000002
222*4a5d661aSToomas Soome #define EFI_VARIABLE_RUNTIME_ACCESS		0x00000004
223*4a5d661aSToomas Soome #define EFI_VARIABLE_HARDWARE_ERROR_RECORD	0x00000008
224*4a5d661aSToomas Soome #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS	0x00000010
225*4a5d661aSToomas Soome #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS	0x00000020
226*4a5d661aSToomas Soome #define EFI_VARIABLE_APPEND_WRITE		0x00000040
227*4a5d661aSToomas Soome 
228*4a5d661aSToomas Soome // Variable size limitation
229*4a5d661aSToomas Soome #define EFI_MAXIMUM_VARIABLE_SIZE           1024
230*4a5d661aSToomas Soome 
231*4a5d661aSToomas Soome typedef
232*4a5d661aSToomas Soome EFI_STATUS
233*4a5d661aSToomas Soome (EFIAPI *EFI_GET_VARIABLE) (
234*4a5d661aSToomas Soome     IN CHAR16                       *VariableName,
235*4a5d661aSToomas Soome     IN EFI_GUID                     *VendorGuid,
236*4a5d661aSToomas Soome     OUT UINT32                      *Attributes OPTIONAL,
237*4a5d661aSToomas Soome     IN OUT UINTN                    *DataSize,
238*4a5d661aSToomas Soome     OUT VOID                        *Data
239*4a5d661aSToomas Soome     );
240*4a5d661aSToomas Soome 
241*4a5d661aSToomas Soome typedef
242*4a5d661aSToomas Soome EFI_STATUS
243*4a5d661aSToomas Soome (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
244*4a5d661aSToomas Soome     IN OUT UINTN                    *VariableNameSize,
245*4a5d661aSToomas Soome     IN OUT CHAR16                   *VariableName,
246*4a5d661aSToomas Soome     IN OUT EFI_GUID                 *VendorGuid
247*4a5d661aSToomas Soome     );
248*4a5d661aSToomas Soome 
249*4a5d661aSToomas Soome 
250*4a5d661aSToomas Soome typedef
251*4a5d661aSToomas Soome EFI_STATUS
252*4a5d661aSToomas Soome (EFIAPI *EFI_SET_VARIABLE) (
253*4a5d661aSToomas Soome     IN CHAR16                       *VariableName,
254*4a5d661aSToomas Soome     IN EFI_GUID                     *VendorGuid,
255*4a5d661aSToomas Soome     IN UINT32                       Attributes,
256*4a5d661aSToomas Soome     IN UINTN                        DataSize,
257*4a5d661aSToomas Soome     IN VOID                         *Data
258*4a5d661aSToomas Soome     );
259*4a5d661aSToomas Soome 
260*4a5d661aSToomas Soome 
261*4a5d661aSToomas Soome //
262*4a5d661aSToomas Soome // EFI Time
263*4a5d661aSToomas Soome //
264*4a5d661aSToomas Soome 
265*4a5d661aSToomas Soome typedef struct {
266*4a5d661aSToomas Soome         UINT32                      Resolution;     // 1e-6 parts per million
267*4a5d661aSToomas Soome         UINT32                      Accuracy;       // hertz
268*4a5d661aSToomas Soome         BOOLEAN                     SetsToZero;     // Set clears sub-second time
269*4a5d661aSToomas Soome } EFI_TIME_CAPABILITIES;
270*4a5d661aSToomas Soome 
271*4a5d661aSToomas Soome 
272*4a5d661aSToomas Soome typedef
273*4a5d661aSToomas Soome EFI_STATUS
274*4a5d661aSToomas Soome (EFIAPI *EFI_GET_TIME) (
275*4a5d661aSToomas Soome     OUT EFI_TIME                    *Time,
276*4a5d661aSToomas Soome     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
277*4a5d661aSToomas Soome     );
278*4a5d661aSToomas Soome 
279*4a5d661aSToomas Soome typedef
280*4a5d661aSToomas Soome EFI_STATUS
281*4a5d661aSToomas Soome (EFIAPI *EFI_SET_TIME) (
282*4a5d661aSToomas Soome     IN EFI_TIME                     *Time
283*4a5d661aSToomas Soome     );
284*4a5d661aSToomas Soome 
285*4a5d661aSToomas Soome typedef
286*4a5d661aSToomas Soome EFI_STATUS
287*4a5d661aSToomas Soome (EFIAPI *EFI_GET_WAKEUP_TIME) (
288*4a5d661aSToomas Soome     OUT BOOLEAN                     *Enabled,
289*4a5d661aSToomas Soome     OUT BOOLEAN                     *Pending,
290*4a5d661aSToomas Soome     OUT EFI_TIME                    *Time
291*4a5d661aSToomas Soome     );
292*4a5d661aSToomas Soome 
293*4a5d661aSToomas Soome typedef
294*4a5d661aSToomas Soome EFI_STATUS
295*4a5d661aSToomas Soome (EFIAPI *EFI_SET_WAKEUP_TIME) (
296*4a5d661aSToomas Soome     IN BOOLEAN                      Enable,
297*4a5d661aSToomas Soome     IN EFI_TIME                     *Time OPTIONAL
298*4a5d661aSToomas Soome     );
299*4a5d661aSToomas Soome 
300*4a5d661aSToomas Soome 
301*4a5d661aSToomas Soome //
302*4a5d661aSToomas Soome // Image functions
303*4a5d661aSToomas Soome //
304*4a5d661aSToomas Soome 
305*4a5d661aSToomas Soome 
306*4a5d661aSToomas Soome // PE32+ Subsystem type for EFI images
307*4a5d661aSToomas Soome 
308*4a5d661aSToomas Soome #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
309*4a5d661aSToomas Soome #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
310*4a5d661aSToomas Soome #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
311*4a5d661aSToomas Soome #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
312*4a5d661aSToomas Soome #endif
313*4a5d661aSToomas Soome 
314*4a5d661aSToomas Soome // PE32+ Machine type for EFI images
315*4a5d661aSToomas Soome 
316*4a5d661aSToomas Soome #if !defined(EFI_IMAGE_MACHINE_IA32)
317*4a5d661aSToomas Soome #define EFI_IMAGE_MACHINE_IA32      0x014c
318*4a5d661aSToomas Soome #endif
319*4a5d661aSToomas Soome 
320*4a5d661aSToomas Soome #if !defined(EFI_IMAGE_MACHINE_EBC)
321*4a5d661aSToomas Soome #define EFI_IMAGE_MACHINE_EBC       0x0EBC
322*4a5d661aSToomas Soome #endif
323*4a5d661aSToomas Soome 
324*4a5d661aSToomas Soome // Image Entry prototype
325*4a5d661aSToomas Soome 
326*4a5d661aSToomas Soome typedef
327*4a5d661aSToomas Soome EFI_STATUS
328*4a5d661aSToomas Soome (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
329*4a5d661aSToomas Soome     IN EFI_HANDLE                   ImageHandle,
330*4a5d661aSToomas Soome     IN struct _EFI_SYSTEM_TABLE     *SystemTable
331*4a5d661aSToomas Soome     );
332*4a5d661aSToomas Soome 
333*4a5d661aSToomas Soome typedef
334*4a5d661aSToomas Soome EFI_STATUS
335*4a5d661aSToomas Soome (EFIAPI *EFI_IMAGE_LOAD) (
336*4a5d661aSToomas Soome     IN BOOLEAN                      BootPolicy,
337*4a5d661aSToomas Soome     IN EFI_HANDLE                   ParentImageHandle,
338*4a5d661aSToomas Soome     IN EFI_DEVICE_PATH              *FilePath,
339*4a5d661aSToomas Soome     IN VOID                         *SourceBuffer   OPTIONAL,
340*4a5d661aSToomas Soome     IN UINTN                        SourceSize,
341*4a5d661aSToomas Soome     OUT EFI_HANDLE                  *ImageHandle
342*4a5d661aSToomas Soome     );
343*4a5d661aSToomas Soome 
344*4a5d661aSToomas Soome typedef
345*4a5d661aSToomas Soome EFI_STATUS
346*4a5d661aSToomas Soome (EFIAPI *EFI_IMAGE_START) (
347*4a5d661aSToomas Soome     IN EFI_HANDLE                   ImageHandle,
348*4a5d661aSToomas Soome     OUT UINTN                       *ExitDataSize,
349*4a5d661aSToomas Soome     OUT CHAR16                      **ExitData  OPTIONAL
350*4a5d661aSToomas Soome     );
351*4a5d661aSToomas Soome 
352*4a5d661aSToomas Soome typedef
353*4a5d661aSToomas Soome EFI_STATUS
354*4a5d661aSToomas Soome (EFIAPI *EFI_EXIT) (
355*4a5d661aSToomas Soome     IN EFI_HANDLE                   ImageHandle,
356*4a5d661aSToomas Soome     IN EFI_STATUS                   ExitStatus,
357*4a5d661aSToomas Soome     IN UINTN                        ExitDataSize,
358*4a5d661aSToomas Soome     IN CHAR16                       *ExitData OPTIONAL
359*4a5d661aSToomas Soome     );
360*4a5d661aSToomas Soome 
361*4a5d661aSToomas Soome typedef
362*4a5d661aSToomas Soome EFI_STATUS
363*4a5d661aSToomas Soome (EFIAPI *EFI_IMAGE_UNLOAD) (
364*4a5d661aSToomas Soome     IN EFI_HANDLE                   ImageHandle
365*4a5d661aSToomas Soome     );
366*4a5d661aSToomas Soome 
367*4a5d661aSToomas Soome 
368*4a5d661aSToomas Soome // Image handle
369*4a5d661aSToomas Soome #define LOADED_IMAGE_PROTOCOL \
370*4a5d661aSToomas Soome     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
371*4a5d661aSToomas Soome 
372*4a5d661aSToomas Soome #define EFI_LOADED_IMAGE_INFORMATION_REVISION      0x1000
373*4a5d661aSToomas Soome typedef struct {
374*4a5d661aSToomas Soome     UINT32                          Revision;
375*4a5d661aSToomas Soome     EFI_HANDLE                      ParentHandle;
376*4a5d661aSToomas Soome     struct _EFI_SYSTEM_TABLE        *SystemTable;
377*4a5d661aSToomas Soome 
378*4a5d661aSToomas Soome     // Source location of image
379*4a5d661aSToomas Soome     EFI_HANDLE                      DeviceHandle;
380*4a5d661aSToomas Soome     EFI_DEVICE_PATH                 *FilePath;
381*4a5d661aSToomas Soome     VOID                            *Reserved;
382*4a5d661aSToomas Soome 
383*4a5d661aSToomas Soome     // Images load options
384*4a5d661aSToomas Soome     UINT32                          LoadOptionsSize;
385*4a5d661aSToomas Soome     VOID                            *LoadOptions;
386*4a5d661aSToomas Soome 
387*4a5d661aSToomas Soome     // Location of where image was loaded
388*4a5d661aSToomas Soome     VOID                            *ImageBase;
389*4a5d661aSToomas Soome     UINT64                          ImageSize;
390*4a5d661aSToomas Soome     EFI_MEMORY_TYPE                 ImageCodeType;
391*4a5d661aSToomas Soome     EFI_MEMORY_TYPE                 ImageDataType;
392*4a5d661aSToomas Soome 
393*4a5d661aSToomas Soome     // If the driver image supports a dynamic unload request
394*4a5d661aSToomas Soome     EFI_IMAGE_UNLOAD                Unload;
395*4a5d661aSToomas Soome 
396*4a5d661aSToomas Soome } EFI_LOADED_IMAGE;
397*4a5d661aSToomas Soome 
398*4a5d661aSToomas Soome 
399*4a5d661aSToomas Soome typedef
400*4a5d661aSToomas Soome EFI_STATUS
401*4a5d661aSToomas Soome (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
402*4a5d661aSToomas Soome     IN EFI_HANDLE                   ImageHandle,
403*4a5d661aSToomas Soome     IN UINTN                        MapKey
404*4a5d661aSToomas Soome     );
405*4a5d661aSToomas Soome 
406*4a5d661aSToomas Soome //
407*4a5d661aSToomas Soome // Misc
408*4a5d661aSToomas Soome //
409*4a5d661aSToomas Soome 
410*4a5d661aSToomas Soome 
411*4a5d661aSToomas Soome typedef
412*4a5d661aSToomas Soome EFI_STATUS
413*4a5d661aSToomas Soome (EFIAPI *EFI_STALL) (
414*4a5d661aSToomas Soome     IN UINTN                    Microseconds
415*4a5d661aSToomas Soome     );
416*4a5d661aSToomas Soome 
417*4a5d661aSToomas Soome typedef
418*4a5d661aSToomas Soome EFI_STATUS
419*4a5d661aSToomas Soome (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
420*4a5d661aSToomas Soome     IN UINTN                    Timeout,
421*4a5d661aSToomas Soome     IN UINT64                   WatchdogCode,
422*4a5d661aSToomas Soome     IN UINTN                    DataSize,
423*4a5d661aSToomas Soome     IN CHAR16                   *WatchdogData OPTIONAL
424*4a5d661aSToomas Soome     );
425*4a5d661aSToomas Soome 
426*4a5d661aSToomas Soome 
427*4a5d661aSToomas Soome typedef enum {
428*4a5d661aSToomas Soome     EfiResetCold,
429*4a5d661aSToomas Soome     EfiResetWarm,
430*4a5d661aSToomas Soome     EfiResetShutdown
431*4a5d661aSToomas Soome } EFI_RESET_TYPE;
432*4a5d661aSToomas Soome 
433*4a5d661aSToomas Soome typedef
434*4a5d661aSToomas Soome VOID
435*4a5d661aSToomas Soome (EFIAPI *EFI_RESET_SYSTEM) (
436*4a5d661aSToomas Soome     IN EFI_RESET_TYPE           ResetType,
437*4a5d661aSToomas Soome     IN EFI_STATUS               ResetStatus,
438*4a5d661aSToomas Soome     IN UINTN                    DataSize,
439*4a5d661aSToomas Soome     IN CHAR16                   *ResetData OPTIONAL
440*4a5d661aSToomas Soome     );
441*4a5d661aSToomas Soome 
442*4a5d661aSToomas Soome typedef
443*4a5d661aSToomas Soome EFI_STATUS
444*4a5d661aSToomas Soome (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
445*4a5d661aSToomas Soome     OUT UINT64                  *Count
446*4a5d661aSToomas Soome     );
447*4a5d661aSToomas Soome 
448*4a5d661aSToomas Soome typedef
449*4a5d661aSToomas Soome EFI_STATUS
450*4a5d661aSToomas Soome (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
451*4a5d661aSToomas Soome     OUT UINT32                  *HighCount
452*4a5d661aSToomas Soome     );
453*4a5d661aSToomas Soome 
454*4a5d661aSToomas Soome //
455*4a5d661aSToomas Soome // Protocol handler functions
456*4a5d661aSToomas Soome //
457*4a5d661aSToomas Soome 
458*4a5d661aSToomas Soome typedef enum {
459*4a5d661aSToomas Soome     EFI_NATIVE_INTERFACE
460*4a5d661aSToomas Soome } EFI_INTERFACE_TYPE;
461*4a5d661aSToomas Soome 
462*4a5d661aSToomas Soome typedef
463*4a5d661aSToomas Soome EFI_STATUS
464*4a5d661aSToomas Soome (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
465*4a5d661aSToomas Soome     IN OUT EFI_HANDLE           *Handle,
466*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
467*4a5d661aSToomas Soome     IN EFI_INTERFACE_TYPE       InterfaceType,
468*4a5d661aSToomas Soome     IN VOID                     *Interface
469*4a5d661aSToomas Soome     );
470*4a5d661aSToomas Soome 
471*4a5d661aSToomas Soome typedef
472*4a5d661aSToomas Soome EFI_STATUS
473*4a5d661aSToomas Soome (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
474*4a5d661aSToomas Soome     IN EFI_HANDLE               Handle,
475*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
476*4a5d661aSToomas Soome     IN VOID                     *OldInterface,
477*4a5d661aSToomas Soome     IN VOID                     *NewInterface
478*4a5d661aSToomas Soome     );
479*4a5d661aSToomas Soome 
480*4a5d661aSToomas Soome typedef
481*4a5d661aSToomas Soome EFI_STATUS
482*4a5d661aSToomas Soome (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
483*4a5d661aSToomas Soome     IN EFI_HANDLE               Handle,
484*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
485*4a5d661aSToomas Soome     IN VOID                     *Interface
486*4a5d661aSToomas Soome     );
487*4a5d661aSToomas Soome 
488*4a5d661aSToomas Soome typedef
489*4a5d661aSToomas Soome EFI_STATUS
490*4a5d661aSToomas Soome (EFIAPI *EFI_HANDLE_PROTOCOL) (
491*4a5d661aSToomas Soome     IN EFI_HANDLE               Handle,
492*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
493*4a5d661aSToomas Soome     OUT VOID                    **Interface
494*4a5d661aSToomas Soome     );
495*4a5d661aSToomas Soome 
496*4a5d661aSToomas Soome typedef
497*4a5d661aSToomas Soome EFI_STATUS
498*4a5d661aSToomas Soome (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
499*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
500*4a5d661aSToomas Soome     IN EFI_EVENT                Event,
501*4a5d661aSToomas Soome     OUT VOID                    **Registration
502*4a5d661aSToomas Soome     );
503*4a5d661aSToomas Soome 
504*4a5d661aSToomas Soome typedef enum {
505*4a5d661aSToomas Soome     AllHandles,
506*4a5d661aSToomas Soome     ByRegisterNotify,
507*4a5d661aSToomas Soome     ByProtocol
508*4a5d661aSToomas Soome } EFI_LOCATE_SEARCH_TYPE;
509*4a5d661aSToomas Soome 
510*4a5d661aSToomas Soome typedef
511*4a5d661aSToomas Soome EFI_STATUS
512*4a5d661aSToomas Soome (EFIAPI *EFI_LOCATE_HANDLE) (
513*4a5d661aSToomas Soome     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
514*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol OPTIONAL,
515*4a5d661aSToomas Soome     IN VOID                     *SearchKey OPTIONAL,
516*4a5d661aSToomas Soome     IN OUT UINTN                *BufferSize,
517*4a5d661aSToomas Soome     OUT EFI_HANDLE              *Buffer
518*4a5d661aSToomas Soome     );
519*4a5d661aSToomas Soome 
520*4a5d661aSToomas Soome typedef
521*4a5d661aSToomas Soome EFI_STATUS
522*4a5d661aSToomas Soome (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
523*4a5d661aSToomas Soome     IN EFI_GUID                 *Protocol,
524*4a5d661aSToomas Soome     IN OUT EFI_DEVICE_PATH      **DevicePath,
525*4a5d661aSToomas Soome     OUT EFI_HANDLE              *Device
526*4a5d661aSToomas Soome     );
527*4a5d661aSToomas Soome 
528*4a5d661aSToomas Soome typedef
529*4a5d661aSToomas Soome EFI_STATUS
530*4a5d661aSToomas Soome (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
531*4a5d661aSToomas Soome     IN EFI_GUID                 *Guid,
532*4a5d661aSToomas Soome     IN VOID                     *Table
533*4a5d661aSToomas Soome     );
534*4a5d661aSToomas Soome 
535*4a5d661aSToomas Soome typedef
536*4a5d661aSToomas Soome EFI_STATUS
537*4a5d661aSToomas Soome (EFIAPI *EFI_RESERVED_SERVICE) (
538*4a5d661aSToomas Soome     VOID
539*4a5d661aSToomas Soome     );
540*4a5d661aSToomas Soome 
541*4a5d661aSToomas Soome typedef
542*4a5d661aSToomas Soome EFI_STATUS
543*4a5d661aSToomas Soome (EFIAPI *EFI_CONNECT_CONTROLLER) (
544*4a5d661aSToomas Soome   IN  EFI_HANDLE                    ControllerHandle,
545*4a5d661aSToomas Soome   IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
546*4a5d661aSToomas Soome   IN  EFI_DEVICE_PATH               *RemainingDevicePath  OPTIONAL,
547*4a5d661aSToomas Soome   IN  BOOLEAN                       Recursive
548*4a5d661aSToomas Soome   );
549*4a5d661aSToomas Soome 
550*4a5d661aSToomas Soome typedef
551*4a5d661aSToomas Soome EFI_STATUS
552*4a5d661aSToomas Soome (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
553*4a5d661aSToomas Soome   IN EFI_HANDLE           ControllerHandle,
554*4a5d661aSToomas Soome   IN EFI_HANDLE           DriverImageHandle, OPTIONAL
555*4a5d661aSToomas Soome   IN EFI_HANDLE           ChildHandle        OPTIONAL
556*4a5d661aSToomas Soome   );
557*4a5d661aSToomas Soome 
558*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL	 0x00000001
559*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_GET_PROTOCOL	       0x00000002
560*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
561*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
562*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
563*4a5d661aSToomas Soome #define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
564*4a5d661aSToomas Soome 
565*4a5d661aSToomas Soome typedef
566*4a5d661aSToomas Soome EFI_STATUS
567*4a5d661aSToomas Soome (EFIAPI *EFI_OPEN_PROTOCOL) (
568*4a5d661aSToomas Soome   IN EFI_HANDLE                 Handle,
569*4a5d661aSToomas Soome   IN EFI_GUID                   *Protocol,
570*4a5d661aSToomas Soome   OUT VOID                      **Interface,
571*4a5d661aSToomas Soome   IN  EFI_HANDLE                ImageHandle,
572*4a5d661aSToomas Soome   IN  EFI_HANDLE                ControllerHandle, OPTIONAL
573*4a5d661aSToomas Soome   IN  UINT32                    Attributes
574*4a5d661aSToomas Soome   );
575*4a5d661aSToomas Soome 
576*4a5d661aSToomas Soome typedef
577*4a5d661aSToomas Soome EFI_STATUS
578*4a5d661aSToomas Soome (EFIAPI *EFI_CLOSE_PROTOCOL) (
579*4a5d661aSToomas Soome   IN EFI_HANDLE               Handle,
580*4a5d661aSToomas Soome   IN EFI_GUID                 *Protocol,
581*4a5d661aSToomas Soome   IN EFI_HANDLE               ImageHandle,
582*4a5d661aSToomas Soome   IN EFI_HANDLE               DeviceHandle
583*4a5d661aSToomas Soome   );
584*4a5d661aSToomas Soome 
585*4a5d661aSToomas Soome typedef struct {
586*4a5d661aSToomas Soome   EFI_HANDLE                  AgentHandle;
587*4a5d661aSToomas Soome   EFI_HANDLE                  ControllerHandle;
588*4a5d661aSToomas Soome   UINT32                      Attributes;
589*4a5d661aSToomas Soome   UINT32                      OpenCount;
590*4a5d661aSToomas Soome } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
591*4a5d661aSToomas Soome 
592*4a5d661aSToomas Soome typedef
593*4a5d661aSToomas Soome EFI_STATUS
594*4a5d661aSToomas Soome (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
595*4a5d661aSToomas Soome   IN  EFI_HANDLE                          UserHandle,
596*4a5d661aSToomas Soome   IN  EFI_GUID                            *Protocol,
597*4a5d661aSToomas Soome   IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
598*4a5d661aSToomas Soome   OUT UINTN                               *EntryCount
599*4a5d661aSToomas Soome   );
600*4a5d661aSToomas Soome 
601*4a5d661aSToomas Soome typedef
602*4a5d661aSToomas Soome EFI_STATUS
603*4a5d661aSToomas Soome (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
604*4a5d661aSToomas Soome   IN EFI_HANDLE       UserHandle,
605*4a5d661aSToomas Soome   OUT EFI_GUID        ***ProtocolBuffer,
606*4a5d661aSToomas Soome   OUT UINTN           *ProtocolBufferCount
607*4a5d661aSToomas Soome   );
608*4a5d661aSToomas Soome 
609*4a5d661aSToomas Soome typedef
610*4a5d661aSToomas Soome EFI_STATUS
611*4a5d661aSToomas Soome (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
612*4a5d661aSToomas Soome   IN EFI_LOCATE_SEARCH_TYPE       SearchType,
613*4a5d661aSToomas Soome   IN EFI_GUID                     *Protocol OPTIONAL,
614*4a5d661aSToomas Soome   IN VOID                         *SearchKey OPTIONAL,
615*4a5d661aSToomas Soome   IN OUT UINTN                    *NumberHandles,
616*4a5d661aSToomas Soome   OUT EFI_HANDLE                  **Buffer
617*4a5d661aSToomas Soome   );
618*4a5d661aSToomas Soome 
619*4a5d661aSToomas Soome typedef
620*4a5d661aSToomas Soome EFI_STATUS
621*4a5d661aSToomas Soome (EFIAPI *EFI_LOCATE_PROTOCOL) (
622*4a5d661aSToomas Soome   EFI_GUID  *Protocol,
623*4a5d661aSToomas Soome   VOID      *Registration, OPTIONAL
624*4a5d661aSToomas Soome   VOID      **Interface
625*4a5d661aSToomas Soome   );
626*4a5d661aSToomas Soome 
627*4a5d661aSToomas Soome typedef
628*4a5d661aSToomas Soome EFI_STATUS
629*4a5d661aSToomas Soome (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
630*4a5d661aSToomas Soome   IN OUT EFI_HANDLE           *Handle,
631*4a5d661aSToomas Soome   ...
632*4a5d661aSToomas Soome   );
633*4a5d661aSToomas Soome 
634*4a5d661aSToomas Soome typedef
635*4a5d661aSToomas Soome EFI_STATUS
636*4a5d661aSToomas Soome (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
637*4a5d661aSToomas Soome   IN EFI_HANDLE           Handle,
638*4a5d661aSToomas Soome   ...
639*4a5d661aSToomas Soome   );
640*4a5d661aSToomas Soome 
641*4a5d661aSToomas Soome typedef
642*4a5d661aSToomas Soome EFI_STATUS
643*4a5d661aSToomas Soome (EFIAPI *EFI_CALCULATE_CRC32) (
644*4a5d661aSToomas Soome   IN  VOID                              *Data,
645*4a5d661aSToomas Soome   IN  UINTN                             DataSize,
646*4a5d661aSToomas Soome   OUT UINT32                            *Crc32
647*4a5d661aSToomas Soome   );
648*4a5d661aSToomas Soome 
649*4a5d661aSToomas Soome typedef
650*4a5d661aSToomas Soome VOID
651*4a5d661aSToomas Soome (EFIAPI *EFI_COPY_MEM) (
652*4a5d661aSToomas Soome   IN VOID     *Destination,
653*4a5d661aSToomas Soome   IN VOID     *Source,
654*4a5d661aSToomas Soome   IN UINTN    Length
655*4a5d661aSToomas Soome   );
656*4a5d661aSToomas Soome 
657*4a5d661aSToomas Soome typedef
658*4a5d661aSToomas Soome VOID
659*4a5d661aSToomas Soome (EFIAPI *EFI_SET_MEM) (
660*4a5d661aSToomas Soome   IN VOID     *Buffer,
661*4a5d661aSToomas Soome   IN UINTN    Size,
662*4a5d661aSToomas Soome   IN UINT8    Value
663*4a5d661aSToomas Soome   );
664*4a5d661aSToomas Soome 
665*4a5d661aSToomas Soome //
666*4a5d661aSToomas Soome // Standard EFI table header
667*4a5d661aSToomas Soome //
668*4a5d661aSToomas Soome 
669*4a5d661aSToomas Soome typedef struct _EFI_TABLE_HEARDER {
670*4a5d661aSToomas Soome   UINT64                      Signature;
671*4a5d661aSToomas Soome   UINT32                      Revision;
672*4a5d661aSToomas Soome   UINT32                      HeaderSize;
673*4a5d661aSToomas Soome   UINT32                      CRC32;
674*4a5d661aSToomas Soome   UINT32                      Reserved;
675*4a5d661aSToomas Soome } EFI_TABLE_HEADER;
676*4a5d661aSToomas Soome 
677*4a5d661aSToomas Soome 
678*4a5d661aSToomas Soome //
679*4a5d661aSToomas Soome // EFI Runtime Serivces Table
680*4a5d661aSToomas Soome //
681*4a5d661aSToomas Soome 
682*4a5d661aSToomas Soome #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
683*4a5d661aSToomas Soome #define EFI_RUNTIME_SERVICES_REVISION   ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
684*4a5d661aSToomas Soome 
685*4a5d661aSToomas Soome typedef struct  {
686*4a5d661aSToomas Soome   EFI_TABLE_HEADER                Hdr;
687*4a5d661aSToomas Soome 
688*4a5d661aSToomas Soome   //
689*4a5d661aSToomas Soome   // Time services
690*4a5d661aSToomas Soome   //
691*4a5d661aSToomas Soome 
692*4a5d661aSToomas Soome   EFI_GET_TIME                    GetTime;
693*4a5d661aSToomas Soome   EFI_SET_TIME                    SetTime;
694*4a5d661aSToomas Soome   EFI_GET_WAKEUP_TIME             GetWakeupTime;
695*4a5d661aSToomas Soome   EFI_SET_WAKEUP_TIME             SetWakeupTime;
696*4a5d661aSToomas Soome 
697*4a5d661aSToomas Soome   //
698*4a5d661aSToomas Soome   // Virtual memory services
699*4a5d661aSToomas Soome   //
700*4a5d661aSToomas Soome 
701*4a5d661aSToomas Soome   EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
702*4a5d661aSToomas Soome   EFI_CONVERT_POINTER             ConvertPointer;
703*4a5d661aSToomas Soome 
704*4a5d661aSToomas Soome   //
705*4a5d661aSToomas Soome   // Variable serviers
706*4a5d661aSToomas Soome   //
707*4a5d661aSToomas Soome 
708*4a5d661aSToomas Soome   EFI_GET_VARIABLE                GetVariable;
709*4a5d661aSToomas Soome   EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
710*4a5d661aSToomas Soome   EFI_SET_VARIABLE                SetVariable;
711*4a5d661aSToomas Soome 
712*4a5d661aSToomas Soome   //
713*4a5d661aSToomas Soome   // Misc
714*4a5d661aSToomas Soome   //
715*4a5d661aSToomas Soome 
716*4a5d661aSToomas Soome   EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
717*4a5d661aSToomas Soome   EFI_RESET_SYSTEM                ResetSystem;
718*4a5d661aSToomas Soome 
719*4a5d661aSToomas Soome } EFI_RUNTIME_SERVICES;
720*4a5d661aSToomas Soome 
721*4a5d661aSToomas Soome 
722*4a5d661aSToomas Soome //
723*4a5d661aSToomas Soome // EFI Boot Services Table
724*4a5d661aSToomas Soome //
725*4a5d661aSToomas Soome 
726*4a5d661aSToomas Soome #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
727*4a5d661aSToomas Soome #define EFI_BOOT_SERVICES_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
728*4a5d661aSToomas Soome 
729*4a5d661aSToomas Soome typedef struct {
730*4a5d661aSToomas Soome 
731*4a5d661aSToomas Soome   EFI_TABLE_HEADER                Hdr;
732*4a5d661aSToomas Soome 
733*4a5d661aSToomas Soome   //
734*4a5d661aSToomas Soome   // Task priority functions
735*4a5d661aSToomas Soome   //
736*4a5d661aSToomas Soome 
737*4a5d661aSToomas Soome   EFI_RAISE_TPL                   RaiseTPL;
738*4a5d661aSToomas Soome   EFI_RESTORE_TPL                 RestoreTPL;
739*4a5d661aSToomas Soome 
740*4a5d661aSToomas Soome   //
741*4a5d661aSToomas Soome   // Memory functions
742*4a5d661aSToomas Soome   //
743*4a5d661aSToomas Soome 
744*4a5d661aSToomas Soome   EFI_ALLOCATE_PAGES              AllocatePages;
745*4a5d661aSToomas Soome   EFI_FREE_PAGES                  FreePages;
746*4a5d661aSToomas Soome   EFI_GET_MEMORY_MAP              GetMemoryMap;
747*4a5d661aSToomas Soome   EFI_ALLOCATE_POOL               AllocatePool;
748*4a5d661aSToomas Soome   EFI_FREE_POOL                   FreePool;
749*4a5d661aSToomas Soome 
750*4a5d661aSToomas Soome   //
751*4a5d661aSToomas Soome   // Event & timer functions
752*4a5d661aSToomas Soome   //
753*4a5d661aSToomas Soome 
754*4a5d661aSToomas Soome   EFI_CREATE_EVENT                CreateEvent;
755*4a5d661aSToomas Soome   EFI_SET_TIMER                   SetTimer;
756*4a5d661aSToomas Soome   EFI_WAIT_FOR_EVENT              WaitForEvent;
757*4a5d661aSToomas Soome   EFI_SIGNAL_EVENT                SignalEvent;
758*4a5d661aSToomas Soome   EFI_CLOSE_EVENT                 CloseEvent;
759*4a5d661aSToomas Soome   EFI_CHECK_EVENT                 CheckEvent;
760*4a5d661aSToomas Soome 
761*4a5d661aSToomas Soome   //
762*4a5d661aSToomas Soome   // Protocol handler functions
763*4a5d661aSToomas Soome   //
764*4a5d661aSToomas Soome 
765*4a5d661aSToomas Soome   EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
766*4a5d661aSToomas Soome   EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
767*4a5d661aSToomas Soome   EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
768*4a5d661aSToomas Soome   EFI_HANDLE_PROTOCOL             HandleProtocol;
769*4a5d661aSToomas Soome   VOID                            *Reserved;
770*4a5d661aSToomas Soome   EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
771*4a5d661aSToomas Soome   EFI_LOCATE_HANDLE               LocateHandle;
772*4a5d661aSToomas Soome   EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
773*4a5d661aSToomas Soome   EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
774*4a5d661aSToomas Soome 
775*4a5d661aSToomas Soome   //
776*4a5d661aSToomas Soome   // Image functions
777*4a5d661aSToomas Soome   //
778*4a5d661aSToomas Soome 
779*4a5d661aSToomas Soome   EFI_IMAGE_LOAD                  LoadImage;
780*4a5d661aSToomas Soome   EFI_IMAGE_START                 StartImage;
781*4a5d661aSToomas Soome   EFI_EXIT                        Exit;
782*4a5d661aSToomas Soome   EFI_IMAGE_UNLOAD                UnloadImage;
783*4a5d661aSToomas Soome   EFI_EXIT_BOOT_SERVICES          ExitBootServices;
784*4a5d661aSToomas Soome 
785*4a5d661aSToomas Soome   //
786*4a5d661aSToomas Soome   // Misc functions
787*4a5d661aSToomas Soome   //
788*4a5d661aSToomas Soome 
789*4a5d661aSToomas Soome   EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
790*4a5d661aSToomas Soome   EFI_STALL                       Stall;
791*4a5d661aSToomas Soome   EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
792*4a5d661aSToomas Soome 
793*4a5d661aSToomas Soome   //
794*4a5d661aSToomas Soome   // DriverSupport Services
795*4a5d661aSToomas Soome   //
796*4a5d661aSToomas Soome   EFI_CONNECT_CONTROLLER	        ConnectController;
797*4a5d661aSToomas Soome   EFI_DISCONNECT_CONTROLLER       DisconnectController;
798*4a5d661aSToomas Soome 
799*4a5d661aSToomas Soome   //
800*4a5d661aSToomas Soome   // Open and Close Protocol Services
801*4a5d661aSToomas Soome   //
802*4a5d661aSToomas Soome   EFI_OPEN_PROTOCOL               OpenProtocol;
803*4a5d661aSToomas Soome   EFI_CLOSE_PROTOCOL              CloseProtocol;
804*4a5d661aSToomas Soome   EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
805*4a5d661aSToomas Soome 
806*4a5d661aSToomas Soome   //
807*4a5d661aSToomas Soome   // Library Services to reduce size of drivers
808*4a5d661aSToomas Soome   //
809*4a5d661aSToomas Soome   EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
810*4a5d661aSToomas Soome   EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
811*4a5d661aSToomas Soome   EFI_LOCATE_PROTOCOL             LocateProtocol;
812*4a5d661aSToomas Soome 
813*4a5d661aSToomas Soome   EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
814*4a5d661aSToomas Soome   EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
815*4a5d661aSToomas Soome 
816*4a5d661aSToomas Soome   //
817*4a5d661aSToomas Soome   // CRC32 services
818*4a5d661aSToomas Soome   //
819*4a5d661aSToomas Soome   EFI_CALCULATE_CRC32             CalculateCrc32;
820*4a5d661aSToomas Soome 
821*4a5d661aSToomas Soome   //
822*4a5d661aSToomas Soome   // Memory Utility Services
823*4a5d661aSToomas Soome   //
824*4a5d661aSToomas Soome   EFI_COPY_MEM                    CopyMem;
825*4a5d661aSToomas Soome   EFI_SET_MEM                     SetMem;
826*4a5d661aSToomas Soome 
827*4a5d661aSToomas Soome } EFI_BOOT_SERVICES;
828*4a5d661aSToomas Soome 
829*4a5d661aSToomas Soome 
830*4a5d661aSToomas Soome //
831*4a5d661aSToomas Soome // EFI Configuration Table and GUID definitions
832*4a5d661aSToomas Soome //
833*4a5d661aSToomas Soome 
834*4a5d661aSToomas Soome #define MPS_TABLE_GUID \
835*4a5d661aSToomas Soome     { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
836*4a5d661aSToomas Soome 
837*4a5d661aSToomas Soome #define ACPI_TABLE_GUID \
838*4a5d661aSToomas Soome     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
839*4a5d661aSToomas Soome 
840*4a5d661aSToomas Soome #define ACPI_20_TABLE_GUID \
841*4a5d661aSToomas Soome     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
842*4a5d661aSToomas Soome 
843*4a5d661aSToomas Soome #define SMBIOS_TABLE_GUID \
844*4a5d661aSToomas Soome     { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
845*4a5d661aSToomas Soome 
846*4a5d661aSToomas Soome #define SAL_SYSTEM_TABLE_GUID  \
847*4a5d661aSToomas Soome     { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
848*4a5d661aSToomas Soome 
849*4a5d661aSToomas Soome #define SMBIOS3_TABLE_GUID    \
850*4a5d661aSToomas Soome     { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } }
851*4a5d661aSToomas Soome 
852*4a5d661aSToomas Soome #define FDT_TABLE_GUID \
853*4a5d661aSToomas Soome     { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
854*4a5d661aSToomas Soome 
855*4a5d661aSToomas Soome #define DXE_SERVICES_TABLE_GUID \
856*4a5d661aSToomas Soome     { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
857*4a5d661aSToomas Soome 
858*4a5d661aSToomas Soome #define HOB_LIST_TABLE_GUID \
859*4a5d661aSToomas Soome     { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
860*4a5d661aSToomas Soome 
861*4a5d661aSToomas Soome #define DEBUG_IMAGE_INFO_TABLE_GUID \
862*4a5d661aSToomas Soome     { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
863*4a5d661aSToomas Soome 
864*4a5d661aSToomas Soome typedef struct _EFI_CONFIGURATION_TABLE {
865*4a5d661aSToomas Soome   EFI_GUID                VendorGuid;
866*4a5d661aSToomas Soome   VOID                    *VendorTable;
867*4a5d661aSToomas Soome } EFI_CONFIGURATION_TABLE;
868*4a5d661aSToomas Soome 
869*4a5d661aSToomas Soome 
870*4a5d661aSToomas Soome //
871*4a5d661aSToomas Soome // EFI System Table
872*4a5d661aSToomas Soome //
873*4a5d661aSToomas Soome 
874*4a5d661aSToomas Soome 
875*4a5d661aSToomas Soome #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
876*4a5d661aSToomas Soome #define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
877*4a5d661aSToomas Soome #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
878*4a5d661aSToomas Soome #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
879*4a5d661aSToomas Soome 
880*4a5d661aSToomas Soome typedef struct _EFI_SYSTEM_TABLE {
881*4a5d661aSToomas Soome   EFI_TABLE_HEADER                Hdr;
882*4a5d661aSToomas Soome 
883*4a5d661aSToomas Soome   CHAR16                          *FirmwareVendor;
884*4a5d661aSToomas Soome   UINT32                          FirmwareRevision;
885*4a5d661aSToomas Soome 
886*4a5d661aSToomas Soome   EFI_HANDLE                      ConsoleInHandle;
887*4a5d661aSToomas Soome   SIMPLE_INPUT_INTERFACE          *ConIn;
888*4a5d661aSToomas Soome 
889*4a5d661aSToomas Soome   EFI_HANDLE                      ConsoleOutHandle;
890*4a5d661aSToomas Soome   SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
891*4a5d661aSToomas Soome 
892*4a5d661aSToomas Soome   EFI_HANDLE                      StandardErrorHandle;
893*4a5d661aSToomas Soome   SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
894*4a5d661aSToomas Soome 
895*4a5d661aSToomas Soome   EFI_RUNTIME_SERVICES            *RuntimeServices;
896*4a5d661aSToomas Soome   EFI_BOOT_SERVICES               *BootServices;
897*4a5d661aSToomas Soome 
898*4a5d661aSToomas Soome   UINTN                           NumberOfTableEntries;
899*4a5d661aSToomas Soome   EFI_CONFIGURATION_TABLE         *ConfigurationTable;
900*4a5d661aSToomas Soome 
901*4a5d661aSToomas Soome } EFI_SYSTEM_TABLE;
902*4a5d661aSToomas Soome 
903*4a5d661aSToomas Soome /*
904*4a5d661aSToomas Soome  * unlisted GUID's..
905*4a5d661aSToomas Soome  */
906*4a5d661aSToomas Soome #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
907*4a5d661aSToomas Soome { 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
908*4a5d661aSToomas Soome 
909*4a5d661aSToomas Soome #define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
910*4a5d661aSToomas Soome { 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
911*4a5d661aSToomas Soome 
912*4a5d661aSToomas Soome #define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
913*4a5d661aSToomas Soome { 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
914*4a5d661aSToomas Soome 
915*4a5d661aSToomas Soome #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
916*4a5d661aSToomas Soome   { 0x18A031AB, 0xB443, 0x4D1A, \
917*4a5d661aSToomas Soome     { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
918*4a5d661aSToomas Soome   }
919*4a5d661aSToomas Soome 
920*4a5d661aSToomas Soome #define EFI_TAPE_IO_PROTOCOL_GUID \
921*4a5d661aSToomas Soome   { 0x1e93e633, 0xd65a, 0x459e, \
922*4a5d661aSToomas Soome     { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
923*4a5d661aSToomas Soome   }
924*4a5d661aSToomas Soome 
925*4a5d661aSToomas Soome #define EFI_SCSI_IO_PROTOCOL_GUID \
926*4a5d661aSToomas Soome   { 0x932f47e6, 0x2362, 0x4002, \
927*4a5d661aSToomas Soome     { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
928*4a5d661aSToomas Soome   }
929*4a5d661aSToomas Soome 
930*4a5d661aSToomas Soome #define EFI_USB2_HC_PROTOCOL_GUID \
931*4a5d661aSToomas Soome   { 0x3e745226, 0x9818, 0x45b6, \
932*4a5d661aSToomas Soome     { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
933*4a5d661aSToomas Soome   }
934*4a5d661aSToomas Soome 
935*4a5d661aSToomas Soome #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
936*4a5d661aSToomas Soome   { 0x2755590C, 0x6F3C, 0x42FA, \
937*4a5d661aSToomas Soome     { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
938*4a5d661aSToomas Soome   }
939*4a5d661aSToomas Soome 
940*4a5d661aSToomas Soome #define EFI_DEBUGPORT_PROTOCOL_GUID \
941*4a5d661aSToomas Soome   { 0xEBA4E8D2, 0x3858, 0x41EC, \
942*4a5d661aSToomas Soome     { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
943*4a5d661aSToomas Soome   }
944*4a5d661aSToomas Soome 
945*4a5d661aSToomas Soome #define EFI_DECOMPRESS_PROTOCOL_GUID \
946*4a5d661aSToomas Soome   { 0xd8117cfe, 0x94a6, 0x11d4, \
947*4a5d661aSToomas Soome     { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
948*4a5d661aSToomas Soome   }
949*4a5d661aSToomas Soome 
950*4a5d661aSToomas Soome #define EFI_ACPI_TABLE_PROTOCOL_GUID \
951*4a5d661aSToomas Soome   { 0xffe06bdd, 0x6107, 0x46a6, \
952*4a5d661aSToomas Soome     { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
953*4a5d661aSToomas Soome   }
954*4a5d661aSToomas Soome 
955*4a5d661aSToomas Soome #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
956*4a5d661aSToomas Soome   { 0x587e72d7, 0xcc50, 0x4f79, \
957*4a5d661aSToomas Soome     { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
958*4a5d661aSToomas Soome   }
959*4a5d661aSToomas Soome 
960*4a5d661aSToomas Soome #define EFI_HII_DATABASE_PROTOCOL_GUID \
961*4a5d661aSToomas Soome   { 0xef9fc172, 0xa1b2, 0x4693, \
962*4a5d661aSToomas Soome     { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
963*4a5d661aSToomas Soome   }
964*4a5d661aSToomas Soome 
965*4a5d661aSToomas Soome #define EFI_HII_STRING_PROTOCOL_GUID \
966*4a5d661aSToomas Soome   { 0xfd96974, 0x23aa, 0x4cdc, \
967*4a5d661aSToomas Soome     { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
968*4a5d661aSToomas Soome   }
969*4a5d661aSToomas Soome 
970*4a5d661aSToomas Soome #define EFI_HII_IMAGE_PROTOCOL_GUID \
971*4a5d661aSToomas Soome   { 0x31a6406a, 0x6bdf, 0x4e46, \
972*4a5d661aSToomas Soome     { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
973*4a5d661aSToomas Soome   }
974*4a5d661aSToomas Soome 
975*4a5d661aSToomas Soome #define EFI_HII_FONT_PROTOCOL_GUID \
976*4a5d661aSToomas Soome   { 0xe9ca4775, 0x8657, 0x47fc, \
977*4a5d661aSToomas Soome     { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
978*4a5d661aSToomas Soome   }
979*4a5d661aSToomas Soome #define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
980*4a5d661aSToomas Soome   { 0x330d4706, 0xf2a0, 0x4e4f, \
981*4a5d661aSToomas Soome     { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
982*4a5d661aSToomas Soome   }
983*4a5d661aSToomas Soome 
984*4a5d661aSToomas Soome #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
985*4a5d661aSToomas Soome { 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
986*4a5d661aSToomas Soome 
987*4a5d661aSToomas Soome #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
988*4a5d661aSToomas Soome   { 0x6a7a5cff, 0xe8d9, 0x4f70, \
989*4a5d661aSToomas Soome     { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
990*4a5d661aSToomas Soome   }
991*4a5d661aSToomas Soome 
992*4a5d661aSToomas Soome #define EFI_USB_IO_PROTOCOL_GUID \
993*4a5d661aSToomas Soome   { 0x2B2F68D6, 0x0CD2, 0x44cf, \
994*4a5d661aSToomas Soome     { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
995*4a5d661aSToomas Soome   }
996*4a5d661aSToomas Soome #define EFI_HCDP_TABLE_GUID \
997*4a5d661aSToomas Soome   { 0xf951938d, 0x620b, 0x42ef, \
998*4a5d661aSToomas Soome       { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
999*4a5d661aSToomas Soome   }
1000*4a5d661aSToomas Soome 
1001*4a5d661aSToomas Soome #define EFI_DEVICE_TREE_GUID \
1002*4a5d661aSToomas Soome   { 0xb1b621d5, 0xf19c, 0x41a5, \
1003*4a5d661aSToomas Soome       { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
1004*4a5d661aSToomas Soome   }
1005*4a5d661aSToomas Soome 
1006*4a5d661aSToomas Soome #define EFI_VENDOR_APPLE_GUID \
1007*4a5d661aSToomas Soome   { 0x2B0585EB, 0xD8B8, 0x49A9, \
1008*4a5d661aSToomas Soome       { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
1009*4a5d661aSToomas Soome   }
1010*4a5d661aSToomas Soome 
1011*4a5d661aSToomas Soome #define EFI_CONSOLE_IN_DEVICE_GUID    \
1012*4a5d661aSToomas Soome { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1013*4a5d661aSToomas Soome 
1014*4a5d661aSToomas Soome #define EFI_CONSOLE_OUT_DEVICE_GUID    \
1015*4a5d661aSToomas Soome { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1016*4a5d661aSToomas Soome 
1017*4a5d661aSToomas Soome #define EFI_STANDARD_ERROR_DEVICE_GUID	\
1018*4a5d661aSToomas Soome { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1019*4a5d661aSToomas Soome 
1020*4a5d661aSToomas Soome #define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
1021*4a5d661aSToomas Soome { 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
1022*4a5d661aSToomas Soome 
1023*4a5d661aSToomas Soome #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
1024*4a5d661aSToomas Soome { 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
1025*4a5d661aSToomas Soome 
1026*4a5d661aSToomas Soome #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
1027*4a5d661aSToomas Soome { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
1028*4a5d661aSToomas Soome 
1029*4a5d661aSToomas Soome #define EFI_ARP_PROTOCOL_GUID \
1030*4a5d661aSToomas Soome { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
1031*4a5d661aSToomas Soome 
1032*4a5d661aSToomas Soome #define EFI_IP4_CONFIG_PROTOCOL_GUID \
1033*4a5d661aSToomas Soome { 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
1034*4a5d661aSToomas Soome 
1035*4a5d661aSToomas Soome #define EFI_IP6_CONFIG_PROTOCOL_GUID \
1036*4a5d661aSToomas Soome { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
1037*4a5d661aSToomas Soome 
1038*4a5d661aSToomas Soome #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
1039*4a5d661aSToomas Soome { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
1040*4a5d661aSToomas Soome 
1041*4a5d661aSToomas Soome #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
1042*4a5d661aSToomas Soome { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
1043*4a5d661aSToomas Soome 
1044*4a5d661aSToomas Soome #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
1045*4a5d661aSToomas Soome { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
1046*4a5d661aSToomas Soome 
1047*4a5d661aSToomas Soome #define EFI_MTFTP4_PROTOCOL_GUID \
1048*4a5d661aSToomas Soome { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
1049*4a5d661aSToomas Soome 
1050*4a5d661aSToomas Soome #define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
1051*4a5d661aSToomas Soome { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
1052*4a5d661aSToomas Soome 
1053*4a5d661aSToomas Soome #define EFI_MTFTP6_PROTOCOL_GUID \
1054*4a5d661aSToomas Soome { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
1055*4a5d661aSToomas Soome 
1056*4a5d661aSToomas Soome #define EFI_DHCP4_PROTOCOL_GUID \
1057*4a5d661aSToomas Soome { 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
1058*4a5d661aSToomas Soome 
1059*4a5d661aSToomas Soome #define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
1060*4a5d661aSToomas Soome { 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
1061*4a5d661aSToomas Soome 
1062*4a5d661aSToomas Soome #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
1063*4a5d661aSToomas Soome { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
1064*4a5d661aSToomas Soome 
1065*4a5d661aSToomas Soome #define EFI_DHCP6_PROTOCOL_GUID \
1066*4a5d661aSToomas Soome { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
1067*4a5d661aSToomas Soome 
1068*4a5d661aSToomas Soome #define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
1069*4a5d661aSToomas Soome { 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
1070*4a5d661aSToomas Soome 
1071*4a5d661aSToomas Soome #define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
1072*4a5d661aSToomas Soome { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
1073*4a5d661aSToomas Soome 
1074*4a5d661aSToomas Soome #define EFI_DISK_INFO_PROTOCOL_GUID \
1075*4a5d661aSToomas Soome { 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
1076*4a5d661aSToomas Soome 
1077*4a5d661aSToomas Soome #define EFI_ISA_IO_PROTOCOL_GUID \
1078*4a5d661aSToomas Soome { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1079*4a5d661aSToomas Soome 
1080*4a5d661aSToomas Soome #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
1081*4a5d661aSToomas Soome { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
1082*4a5d661aSToomas Soome 
1083*4a5d661aSToomas Soome #define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
1084*4a5d661aSToomas Soome { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
1085*4a5d661aSToomas Soome 
1086*4a5d661aSToomas Soome #define EFI_ISA_ACPI_PROTOCOL_GUID \
1087*4a5d661aSToomas Soome { 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
1088*4a5d661aSToomas Soome 
1089*4a5d661aSToomas Soome #define EFI_PCI_ENUMERATION_COMPLETE_GUID \
1090*4a5d661aSToomas Soome { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
1091*4a5d661aSToomas Soome 
1092*4a5d661aSToomas Soome #define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
1093*4a5d661aSToomas Soome { 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
1094*4a5d661aSToomas Soome 
1095*4a5d661aSToomas Soome #define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
1096*4a5d661aSToomas Soome { 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
1097*4a5d661aSToomas Soome 
1098*4a5d661aSToomas Soome #define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
1099*4a5d661aSToomas Soome { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
1100*4a5d661aSToomas Soome 
1101*4a5d661aSToomas Soome #define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
1102*4a5d661aSToomas Soome {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
1103*4a5d661aSToomas Soome 
1104*4a5d661aSToomas Soome #define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
1105*4a5d661aSToomas Soome {0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1106*4a5d661aSToomas Soome 
1107*4a5d661aSToomas Soome #define EFI_MP_SERVICES_PROTOCOL_GUID \
1108*4a5d661aSToomas Soome { 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
1109*4a5d661aSToomas Soome 
1110*4a5d661aSToomas Soome #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
1111*4a5d661aSToomas Soome { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1112*4a5d661aSToomas Soome 
1113*4a5d661aSToomas Soome #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
1114*4a5d661aSToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1115*4a5d661aSToomas Soome 
1116*4a5d661aSToomas Soome #define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
1117*4a5d661aSToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1118*4a5d661aSToomas Soome 
1119*4a5d661aSToomas Soome #define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
1120*4a5d661aSToomas Soome { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1121*4a5d661aSToomas Soome 
1122*4a5d661aSToomas Soome #define EFI_BDS_ARCH_PROTOCOL_GUID \
1123*4a5d661aSToomas Soome { 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1124*4a5d661aSToomas Soome 
1125*4a5d661aSToomas Soome #define EFI_METRONOME_ARCH_PROTOCOL_GUID \
1126*4a5d661aSToomas Soome { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1127*4a5d661aSToomas Soome 
1128*4a5d661aSToomas Soome #define EFI_TIMER_ARCH_PROTOCOL_GUID \
1129*4a5d661aSToomas Soome { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1130*4a5d661aSToomas Soome 
1131*4a5d661aSToomas Soome #define EFI_DPC_PROTOCOL_GUID \
1132*4a5d661aSToomas Soome { 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
1133*4a5d661aSToomas Soome 
1134*4a5d661aSToomas Soome #define EFI_PRINT2_PROTOCOL_GUID  \
1135*4a5d661aSToomas Soome { 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
1136*4a5d661aSToomas Soome 
1137*4a5d661aSToomas Soome #define EFI_RESET_ARCH_PROTOCOL_GUID  \
1138*4a5d661aSToomas Soome { 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1139*4a5d661aSToomas Soome 
1140*4a5d661aSToomas Soome #define EFI_CPU_ARCH_PROTOCOL_GUID \
1141*4a5d661aSToomas Soome { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1142*4a5d661aSToomas Soome 
1143*4a5d661aSToomas Soome #define EFI_CPU_IO2_PROTOCOL_GUID \
1144*4a5d661aSToomas Soome { 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
1145*4a5d661aSToomas Soome 
1146*4a5d661aSToomas Soome #define EFI_LEGACY_8259_PROTOCOL_GUID \
1147*4a5d661aSToomas Soome { 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
1148*4a5d661aSToomas Soome 
1149*4a5d661aSToomas Soome #define EFI_SECURITY_ARCH_PROTOCOL_GUID \
1150*4a5d661aSToomas Soome { 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
1151*4a5d661aSToomas Soome 
1152*4a5d661aSToomas Soome #define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
1153*4a5d661aSToomas Soome { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
1154*4a5d661aSToomas Soome 
1155*4a5d661aSToomas Soome #define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
1156*4a5d661aSToomas Soome { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
1157*4a5d661aSToomas Soome 
1158*4a5d661aSToomas Soome #define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
1159*4a5d661aSToomas Soome { 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
1160*4a5d661aSToomas Soome 
1161*4a5d661aSToomas Soome #define EFI_DATA_HUB_PROTOCOL_GUID \
1162*4a5d661aSToomas Soome { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
1163*4a5d661aSToomas Soome 
1164*4a5d661aSToomas Soome #define PCD_PROTOCOL_GUID \
1165*4a5d661aSToomas Soome { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
1166*4a5d661aSToomas Soome 
1167*4a5d661aSToomas Soome #define EFI_PCD_PROTOCOL_GUID \
1168*4a5d661aSToomas Soome { 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
1169*4a5d661aSToomas Soome 
1170*4a5d661aSToomas Soome #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
1171*4a5d661aSToomas Soome { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
1172*4a5d661aSToomas Soome 
1173*4a5d661aSToomas Soome #define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
1174*4a5d661aSToomas Soome { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
1175*4a5d661aSToomas Soome 
1176*4a5d661aSToomas Soome #define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
1177*4a5d661aSToomas Soome { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
1178*4a5d661aSToomas Soome 
1179*4a5d661aSToomas Soome #define LZMA_COMPRESS_GUID \
1180*4a5d661aSToomas Soome { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
1181*4a5d661aSToomas Soome 
1182*4a5d661aSToomas Soome #endif
1183