Warning: This file is not a C or C++ file. It does not have highlighting.
| 1 | //===-- Definition of EFI_BOOT_SERVICES type ------------------------------===// |
|---|---|
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #ifndef LLVM_LIBC_TYPES_EFI_BOOT_SERVICES_H |
| 10 | #define LLVM_LIBC_TYPES_EFI_BOOT_SERVICES_H |
| 11 | |
| 12 | #include "../llvm-libc-macros/EFIAPI-macros.h" |
| 13 | #include "EFI_ALLOCATE_TYPE.h" |
| 14 | #include "EFI_DEVICE_PATH_PROTOCOL.h" |
| 15 | #include "EFI_EVENT.h" |
| 16 | #include "EFI_GUID.h" |
| 17 | #include "EFI_INTERFACE_TYPE.h" |
| 18 | #include "EFI_LOCATE_SEARCH_TYPE.h" |
| 19 | #include "EFI_MEMORY_DESCRIPTOR.h" |
| 20 | #include "EFI_MEMORY_TYPE.h" |
| 21 | #include "EFI_OPEN_PROTOCOL_INFORMATION_ENTRY.h" |
| 22 | #include "EFI_PHYSICAL_ADDRESS.h" |
| 23 | #include "EFI_STATUS.h" |
| 24 | #include "EFI_TABLE_HEADER.h" |
| 25 | #include "EFI_TIMER_DELAY.h" |
| 26 | #include "EFI_TPL.h" |
| 27 | #include "char16_t.h" |
| 28 | #include "size_t.h" |
| 29 | |
| 30 | #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 |
| 31 | #define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION |
| 32 | |
| 33 | typedef EFI_TPL(EFIAPI *EFI_RAISE_TPL)(EFI_TPL NewTpl); |
| 34 | typedef void(EFIAPI *EFI_RESTORE_TPL)(EFI_TPL OldTpl); |
| 35 | |
| 36 | typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_PAGES)(EFI_ALLOCATE_TYPE Type, |
| 37 | EFI_MEMORY_TYPE MemoryType, |
| 38 | size_t Pages, |
| 39 | EFI_PHYSICAL_ADDRESS *Memory); |
| 40 | typedef EFI_STATUS(EFIAPI *EFI_FREE_PAGES)(EFI_PHYSICAL_ADDRESS Memory, |
| 41 | size_t Pages); |
| 42 | typedef EFI_STATUS(EFIAPI *EFI_GET_MEMORY_MAP)(size_t *MemoryMapSize, |
| 43 | EFI_MEMORY_DESCRIPTOR *MemoryMap, |
| 44 | size_t *MapKey, |
| 45 | size_t *DescriptorSize, |
| 46 | uint32_t *DescriptorVersion); |
| 47 | |
| 48 | typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_POOL)(EFI_MEMORY_TYPE PoolType, |
| 49 | size_t Size, void **Buffer); |
| 50 | typedef EFI_STATUS(EFIAPI *EFI_FREE_POOL)(void *Buffer); |
| 51 | |
| 52 | typedef void(EFIAPI *EFI_EVENT_NOTIFY)(EFI_EVENT Event, void *Context); |
| 53 | |
| 54 | typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT)(uint32_t Type, EFI_TPL NotifyTpl, |
| 55 | EFI_EVENT_NOTIFY NotifyFunction, |
| 56 | void *NotifyContext, |
| 57 | EFI_EVENT *Event); |
| 58 | typedef EFI_STATUS(EFIAPI *EFI_SET_TIMER)(EFI_EVENT Event, EFI_TIMER_DELAY Type, |
| 59 | uint64_t TriggerTime); |
| 60 | typedef EFI_STATUS(EFIAPI *EFI_WAIT_FOR_EVENT)(size_t NumberOfEvents, |
| 61 | EFI_EVENT *Event, size_t *Index); |
| 62 | typedef EFI_STATUS(EFIAPI *EFI_SIGNAL_EVENT)(EFI_EVENT Event); |
| 63 | typedef EFI_STATUS(EFIAPI *EFI_CLOSE_EVENT)(EFI_EVENT Event); |
| 64 | typedef EFI_STATUS(EFIAPI *EFI_CHECK_EVENT)(EFI_EVENT Event); |
| 65 | |
| 66 | typedef EFI_STATUS(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)( |
| 67 | EFI_HANDLE *Handle, EFI_GUID *Protocol, EFI_INTERFACE_TYPE InterfaceType, |
| 68 | void *Interface); |
| 69 | typedef EFI_STATUS(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)( |
| 70 | EFI_HANDLE Handle, EFI_GUID *Protocol, void *OldInterface, |
| 71 | void *NewInterface); |
| 72 | typedef EFI_STATUS(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(EFI_HANDLE Handle, |
| 73 | EFI_GUID *Protocol, |
| 74 | void *Interface); |
| 75 | |
| 76 | typedef EFI_STATUS(EFIAPI *EFI_HANDLE_PROTOCOL)(EFI_HANDLE Handle, |
| 77 | EFI_GUID *Protocol, |
| 78 | void **Interface); |
| 79 | typedef EFI_STATUS(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(EFI_GUID *Protocol, |
| 80 | EFI_EVENT Event, |
| 81 | void **Registration); |
| 82 | |
| 83 | typedef EFI_STATUS(EFIAPI *EFI_LOCATE_HANDLE)(EFI_LOCATE_SEARCH_TYPE SearchType, |
| 84 | EFI_GUID *Protocol, |
| 85 | void *SearchKey, |
| 86 | size_t *BufferSize, |
| 87 | EFI_HANDLE *Buffer); |
| 88 | typedef EFI_STATUS(EFIAPI *EFI_LOCATE_DEVICE_PATH)( |
| 89 | EFI_GUID *Protocol, EFI_DEVICE_PATH_PROTOCOL **DevicePath, |
| 90 | EFI_HANDLE *Device); |
| 91 | |
| 92 | typedef EFI_STATUS(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(EFI_GUID *Guid, |
| 93 | void *Table); |
| 94 | typedef EFI_STATUS(EFIAPI *EFI_IMAGE_UNLOAD)(EFI_HANDLE ImageHandle); |
| 95 | typedef EFI_STATUS(EFIAPI *EFI_IMAGE_START)(EFI_HANDLE ImageHandle, |
| 96 | size_t *ExitDataSize, |
| 97 | char16_t **ExitData); |
| 98 | |
| 99 | typedef EFI_STATUS(EFIAPI *EFI_EXIT)(EFI_HANDLE ImageHandle, |
| 100 | EFI_STATUS ExitStatus, size_t ExitDataSize, |
| 101 | char16_t *ExitData); |
| 102 | typedef EFI_STATUS(EFIAPI *EFI_EXIT_BOOT_SERVICES)(EFI_HANDLE ImageHandle, |
| 103 | size_t MapKey); |
| 104 | typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(uint64_t *Count); |
| 105 | typedef EFI_STATUS(EFIAPI *EFI_STALL)(size_t Microseconds); |
| 106 | typedef EFI_STATUS(EFIAPI *EFI_SET_WATCHDOG_TIMER)(size_t Timeout, |
| 107 | uint64_t WatchdogCode, |
| 108 | size_t DataSize, |
| 109 | char16_t *WatchdogData); |
| 110 | |
| 111 | typedef EFI_STATUS(EFIAPI *EFI_CONNECT_CONTROLLER)( |
| 112 | EFI_HANDLE ControllerHandle, EFI_HANDLE *DriverImageHandle, |
| 113 | EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, bool Recursive); |
| 114 | |
| 115 | typedef EFI_STATUS(EFIAPI *EFI_DISCONNECT_CONTROLLER)( |
| 116 | EFI_HANDLE ControllerHandle, EFI_HANDLE DriverImageHandle, |
| 117 | EFI_HANDLE ChildHandle); |
| 118 | |
| 119 | typedef EFI_STATUS(EFIAPI *EFI_OPEN_PROTOCOL)( |
| 120 | EFI_HANDLE Handle, EFI_GUID *Protocol, void **Interface, |
| 121 | EFI_HANDLE AgentHandle, EFI_HANDLE ControllerHandle, uint32_t Attributes); |
| 122 | |
| 123 | typedef EFI_STATUS(EFIAPI *EFI_CLOSE_PROTOCOL)(EFI_HANDLE Handle, |
| 124 | EFI_GUID *Protocol, |
| 125 | EFI_HANDLE AgentHandle, |
| 126 | EFI_HANDLE ControllerHandle); |
| 127 | |
| 128 | typedef EFI_STATUS(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)( |
| 129 | EFI_HANDLE Handle, EFI_GUID *Protocol, |
| 130 | EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, size_t *EntryCount); |
| 131 | |
| 132 | typedef EFI_STATUS(EFIAPI *EFI_PROTOCOLS_PER_HANDLE)( |
| 133 | EFI_HANDLE Handle, EFI_GUID ***ProtocolBuffer, size_t *ProtocolBufferCount); |
| 134 | |
| 135 | typedef EFI_STATUS(EFIAPI *EFI_LOCATE_HANDLE_BUFFER)( |
| 136 | EFI_LOCATE_SEARCH_TYPE SearchType, EFI_GUID *Protocol, void *SearchKey, |
| 137 | size_t *NoHandles, EFI_HANDLE **Buffer); |
| 138 | |
| 139 | typedef EFI_STATUS(EFIAPI *EFI_LOCATE_PROTOCOL)(EFI_GUID *Protocol, |
| 140 | void *Registration, |
| 141 | void **Interface); |
| 142 | |
| 143 | typedef EFI_STATUS(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)( |
| 144 | EFI_HANDLE Handle, ...); |
| 145 | typedef EFI_STATUS(EFIAPI *EFI_CALCULATE_CRC32)(void *Data, size_t DataSize, |
| 146 | uint32_t *Crc32); |
| 147 | |
| 148 | typedef void(EFIAPI *EFI_COPY_MEM)(void *Destination, void *Source, |
| 149 | size_t Length); |
| 150 | typedef void(EFIAPI *EFI_SET_MEM)(void *Buffer, size_t Size, uint8_t Value); |
| 151 | |
| 152 | typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT_EX)( |
| 153 | uint32_t Type, EFI_TPL NotifyTpl, EFI_EVENT_NOTIFY NotifyFunction, |
| 154 | const void *NotifyContext, const EFI_GUID *EventGroup, EFI_EVENT *Event); |
| 155 | |
| 156 | typedef struct { |
| 157 | EFI_TABLE_HEADER Hdr; |
| 158 | |
| 159 | // |
| 160 | // Task Priority Services |
| 161 | // |
| 162 | EFI_RAISE_TPL RaiseTPL; // EFI 1.0+ |
| 163 | EFI_RESTORE_TPL RestoreTPL; // EFI 1.0+ |
| 164 | |
| 165 | // |
| 166 | // Memory Services |
| 167 | // |
| 168 | EFI_ALLOCATE_PAGES AllocatePages; // EFI 1.0+ |
| 169 | EFI_FREE_PAGES FreePages; // EFI 1.0+ |
| 170 | EFI_GET_MEMORY_MAP GetMemoryMap; // EFI 1.0+ |
| 171 | EFI_ALLOCATE_POOL AllocatePool; // EFI 1.0+ |
| 172 | EFI_FREE_POOL FreePool; // EFI 1.0+ |
| 173 | |
| 174 | // |
| 175 | // Event & Timer Services |
| 176 | // |
| 177 | EFI_CREATE_EVENT CreateEvent; // EFI 1.0+ |
| 178 | EFI_SET_TIMER SetTimer; // EFI 1.0+ |
| 179 | EFI_WAIT_FOR_EVENT WaitForEvent; // EFI 1.0+ |
| 180 | EFI_SIGNAL_EVENT SignalEvent; // EFI 1.0+ |
| 181 | EFI_CLOSE_EVENT CloseEvent; // EFI 1.0+ |
| 182 | EFI_CHECK_EVENT CheckEvent; // EFI 1.0+ |
| 183 | |
| 184 | // |
| 185 | // Protocol Handler Services |
| 186 | // |
| 187 | EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; // EFI 1.0+ |
| 188 | EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; // EFI 1.0+ |
| 189 | EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; // EFI 1.0+ |
| 190 | EFI_HANDLE_PROTOCOL HandleProtocol; // EFI 1.0+ |
| 191 | void *Reserved; // EFI 1.0+ |
| 192 | EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; // EFI 1.0+ |
| 193 | EFI_LOCATE_HANDLE LocateHandle; // EFI 1.+ |
| 194 | EFI_LOCATE_DEVICE_PATH LocateDevicePath; // EFI 1.0+ |
| 195 | EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; // EFI 1.0+ |
| 196 | |
| 197 | // |
| 198 | // Image Services |
| 199 | // |
| 200 | EFI_IMAGE_UNLOAD LoadImage; // EFI 1.0+ |
| 201 | EFI_IMAGE_START StartImage; // EFI 1.0+ |
| 202 | EFI_EXIT Exit; // EFI 1.0+ |
| 203 | EFI_IMAGE_UNLOAD UnloadImage; // EFI 1.0+ |
| 204 | EFI_EXIT_BOOT_SERVICES ExitBootServices; // EFI 1.0+ |
| 205 | |
| 206 | // |
| 207 | // Miscellaneous Services |
| 208 | // |
| 209 | EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; // EFI 1.0+ |
| 210 | EFI_STALL Stall; // EFI 1.0+ |
| 211 | EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; // EFI 1.0+ |
| 212 | |
| 213 | // |
| 214 | // DriverSupport Services |
| 215 | // |
| 216 | EFI_CONNECT_CONTROLLER ConnectController; // EFI 1.1 |
| 217 | EFI_DISCONNECT_CONTROLLER DisconnectController; // EFI 1.1+ |
| 218 | |
| 219 | // |
| 220 | // Open and Close Protocol Services |
| 221 | // |
| 222 | EFI_OPEN_PROTOCOL OpenProtocol; // EFI 1.1+ |
| 223 | EFI_CLOSE_PROTOCOL CloseProtocol; // EFI 1.1+ |
| 224 | EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; // EFI 1.1+ |
| 225 | |
| 226 | // |
| 227 | // Library Services |
| 228 | // |
| 229 | EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; // EFI 1.1+ |
| 230 | EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; // EFI 1.1+ |
| 231 | EFI_LOCATE_PROTOCOL LocateProtocol; // EFI 1.1+ |
| 232 | EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES |
| 233 | InstallMultipleProtocolInterfaces; // EFI 1.1+ |
| 234 | EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES |
| 235 | UninstallMultipleProtocolInterfaces; // EFI 1.1+* |
| 236 | |
| 237 | // |
| 238 | // 32-bit CRC Services |
| 239 | // |
| 240 | EFI_CALCULATE_CRC32 CalculateCrc32; // EFI 1.1+ |
| 241 | |
| 242 | // |
| 243 | // Miscellaneous Services |
| 244 | // |
| 245 | EFI_COPY_MEM CopyMem; // EFI 1.1+ |
| 246 | EFI_SET_MEM SetMem; // EFI 1.1+ |
| 247 | EFI_CREATE_EVENT_EX CreateEventEx; // UEFI 2.0+ |
| 248 | } EFI_BOOT_SERVICES; |
| 249 | |
| 250 | #endif // LLVM_LIBC_TYPES_EFI_BOOT_SERVICES_H |
| 251 |
Warning: This file is not a C or C++ file. It does not have highlighting.
