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 UINT16 CHAR16; 24 typedef UINT8 CHAR8; 25 typedef 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 38 typedef UINTN EFI_STATUS; 39 typedef UINT64 EFI_LBA; 40 typedef UINTN EFI_TPL; 41 typedef VOID *EFI_HANDLE; 42 typedef 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 65 typedef struct { 66 UINT32 Data1; 67 UINT16 Data2; 68 UINT16 Data3; 69 UINT8 Data4[8]; 70 } EFI_GUID; 71 72 73 // 74 // Time 75 // 76 77 typedef 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 104 typedef struct { 105 UINT8 Addr[4]; 106 } EFI_IPv4_ADDRESS; 107 108 typedef struct { 109 UINT8 Addr[16]; 110 } EFI_IPv6_ADDRESS; 111 112 typedef struct { 113 UINT8 Addr[32]; 114 } EFI_MAC_ADDRESS; 115 116 typedef 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 133 typedef UINT64 EFI_PHYSICAL_ADDRESS; 134 typedef UINT64 EFI_VIRTUAL_ADDRESS; 135 136 typedef 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 150 typedef 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 184 typedef 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 197 typedef 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 212