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