]> git.proxmox.com Git - efi-boot-shim.git/blob - gnu-efi/inc/efidef.h
a552c7d91c38ef31dc85d7eeac2f0058821ad471
[efi-boot-shim.git] / gnu-efi / inc / efidef.h
1 #ifndef _EFI_DEF_H
2 #define _EFI_DEF_H
3
4 /*++
5
6 Copyright (c) 1998 Intel Corporation
7
8 Module Name:
9
10 efidef.h
11
12 Abstract:
13
14 EFI definitions
15
16
17
18
19 Revision History
20
21 --*/
22
23 typedef unsigned char BOOLEAN;
24
25 #ifndef CONST
26 #define CONST const
27 #endif
28 #ifndef TRUE
29 #define TRUE ((BOOLEAN) 1)
30 #define FALSE ((BOOLEAN) 0)
31 #endif
32
33 #ifndef NULL
34 #define NULL ((VOID *) 0)
35 #endif
36
37 typedef UINTN EFI_STATUS;
38 typedef UINT64 EFI_LBA;
39 typedef UINTN EFI_TPL;
40 typedef VOID *EFI_HANDLE;
41 typedef VOID *EFI_EVENT;
42
43
44 //
45 // Prototype argument decoration for EFI parameters to indicate
46 // their direction
47 //
48 // IN - argument is passed into the function
49 // OUT - argument (pointer) is returned from the function
50 // OPTIONAL - argument is optional
51 //
52
53 #ifndef IN
54 #define IN
55 #define OUT
56 #define OPTIONAL
57 #endif
58
59
60 //
61 // A GUID
62 //
63
64 typedef struct {
65 UINT32 Data1;
66 UINT16 Data2;
67 UINT16 Data3;
68 UINT8 Data4[8];
69 } EFI_GUID;
70
71
72 //
73 // Time
74 //
75
76 typedef struct {
77 UINT16 Year; // 1998 - 20XX
78 UINT8 Month; // 1 - 12
79 UINT8 Day; // 1 - 31
80 UINT8 Hour; // 0 - 23
81 UINT8 Minute; // 0 - 59
82 UINT8 Second; // 0 - 59
83 UINT8 Pad1;
84 UINT32 Nanosecond; // 0 - 999,999,999
85 INT16 TimeZone; // -1440 to 1440 or 2047
86 UINT8 Daylight;
87 UINT8 Pad2;
88 } EFI_TIME;
89
90 // Bit definitions for EFI_TIME.Daylight
91 #define EFI_TIME_ADJUST_DAYLIGHT 0x01
92 #define EFI_TIME_IN_DAYLIGHT 0x02
93
94 // Value definition for EFI_TIME.TimeZone
95 #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
96
97
98
99 //
100 // Networking
101 //
102
103 typedef struct {
104 UINT8 Addr[4];
105 } EFI_IPv4_ADDRESS;
106
107 typedef struct {
108 UINT8 Addr[16];
109 } EFI_IPv6_ADDRESS;
110
111 typedef struct {
112 UINT8 Addr[32];
113 } EFI_MAC_ADDRESS;
114
115 typedef struct {
116 UINT32 ReceivedQueueTimeoutValue;
117 UINT32 TransmitQueueTimeoutValue;
118 UINT16 ProtocolTypeFilter;
119 BOOLEAN EnableUnicastReceive;
120 BOOLEAN EnableMulticastReceive;
121 BOOLEAN EnableBroadcastReceive;
122 BOOLEAN EnablePromiscuousReceive;
123 BOOLEAN FlushQueuesOnReset;
124 BOOLEAN EnableReceiveTimestamps;
125 BOOLEAN DisableBackgroundPolling;
126 } EFI_MANAGED_NETWORK_CONFIG_DATA;
127
128 //
129 // Memory
130 //
131
132 typedef UINT64 EFI_PHYSICAL_ADDRESS;
133 typedef UINT64 EFI_VIRTUAL_ADDRESS;
134
135 typedef enum {
136 AllocateAnyPages,
137 AllocateMaxAddress,
138 AllocateAddress,
139 MaxAllocateType
140 } EFI_ALLOCATE_TYPE;
141
142 //Preseve the attr on any range supplied.
143 //ConventialMemory must have WB,SR,SW when supplied.
144 //When allocating from ConventialMemory always make it WB,SR,SW
145 //When returning to ConventialMemory always make it WB,SR,SW
146 //When getting the memory map, or on RT for runtime types
147
148
149 typedef enum {
150 EfiReservedMemoryType,
151 EfiLoaderCode,
152 EfiLoaderData,
153 EfiBootServicesCode,
154 EfiBootServicesData,
155 EfiRuntimeServicesCode,
156 EfiRuntimeServicesData,
157 EfiConventionalMemory,
158 EfiUnusableMemory,
159 EfiACPIReclaimMemory,
160 EfiACPIMemoryNVS,
161 EfiMemoryMappedIO,
162 EfiMemoryMappedIOPortSpace,
163 EfiPalCode,
164 EfiMaxMemoryType
165 } EFI_MEMORY_TYPE;
166
167 // possible caching types for the memory range
168 #define EFI_MEMORY_UC 0x0000000000000001
169 #define EFI_MEMORY_WC 0x0000000000000002
170 #define EFI_MEMORY_WT 0x0000000000000004
171 #define EFI_MEMORY_WB 0x0000000000000008
172 #define EFI_MEMORY_UCE 0x0000000000000010
173
174 // physical memory protection on range
175 #define EFI_MEMORY_WP 0x0000000000001000
176 #define EFI_MEMORY_RP 0x0000000000002000
177 #define EFI_MEMORY_XP 0x0000000000004000
178
179 // range requires a runtime mapping
180 #define EFI_MEMORY_RUNTIME 0x8000000000000000
181
182 #define EFI_MEMORY_DESCRIPTOR_VERSION 1
183 typedef struct {
184 UINT32 Type; // Field size is 32 bits followed by 32 bit pad
185 UINT32 Pad;
186 EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits
187 EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits
188 UINT64 NumberOfPages; // Field size is 64 bits
189 UINT64 Attribute; // Field size is 64 bits
190 } EFI_MEMORY_DESCRIPTOR;
191
192 //
193 // International Language
194 //
195
196 typedef CHAR8 ISO_639_2;
197 #define ISO_639_2_ENTRY_SIZE 3
198
199 //
200 //
201 //
202
203 #define EFI_PAGE_SIZE 4096
204 #define EFI_PAGE_MASK 0xFFF
205 #define EFI_PAGE_SHIFT 12
206
207 #define EFI_SIZE_TO_PAGES(a) \
208 ( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )
209
210 #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
211 #define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
212 #define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED \
213 0x0000000000000004
214 #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED \
215 0x0000000000000008
216 #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED \
217 0x0000000000000010
218
219 #endif