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