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
33typedef EFI_TPL(EFIAPI *EFI_RAISE_TPL)(EFI_TPL NewTpl);
34typedef void(EFIAPI *EFI_RESTORE_TPL)(EFI_TPL OldTpl);
35
36typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_PAGES)(EFI_ALLOCATE_TYPE Type,
37 EFI_MEMORY_TYPE MemoryType,
38 size_t Pages,
39 EFI_PHYSICAL_ADDRESS *Memory);
40typedef EFI_STATUS(EFIAPI *EFI_FREE_PAGES)(EFI_PHYSICAL_ADDRESS Memory,
41 size_t Pages);
42typedef 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
48typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_POOL)(EFI_MEMORY_TYPE PoolType,
49 size_t Size, void **Buffer);
50typedef EFI_STATUS(EFIAPI *EFI_FREE_POOL)(void *Buffer);
51
52typedef void(EFIAPI *EFI_EVENT_NOTIFY)(EFI_EVENT Event, void *Context);
53
54typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT)(uint32_t Type, EFI_TPL NotifyTpl,
55 EFI_EVENT_NOTIFY NotifyFunction,
56 void *NotifyContext,
57 EFI_EVENT *Event);
58typedef EFI_STATUS(EFIAPI *EFI_SET_TIMER)(EFI_EVENT Event, EFI_TIMER_DELAY Type,
59 uint64_t TriggerTime);
60typedef EFI_STATUS(EFIAPI *EFI_WAIT_FOR_EVENT)(size_t NumberOfEvents,
61 EFI_EVENT *Event, size_t *Index);
62typedef EFI_STATUS(EFIAPI *EFI_SIGNAL_EVENT)(EFI_EVENT Event);
63typedef EFI_STATUS(EFIAPI *EFI_CLOSE_EVENT)(EFI_EVENT Event);
64typedef EFI_STATUS(EFIAPI *EFI_CHECK_EVENT)(EFI_EVENT Event);
65
66typedef EFI_STATUS(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)(
67 EFI_HANDLE *Handle, EFI_GUID *Protocol, EFI_INTERFACE_TYPE InterfaceType,
68 void *Interface);
69typedef EFI_STATUS(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)(
70 EFI_HANDLE Handle, EFI_GUID *Protocol, void *OldInterface,
71 void *NewInterface);
72typedef EFI_STATUS(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(EFI_HANDLE Handle,
73 EFI_GUID *Protocol,
74 void *Interface);
75
76typedef EFI_STATUS(EFIAPI *EFI_HANDLE_PROTOCOL)(EFI_HANDLE Handle,
77 EFI_GUID *Protocol,
78 void **Interface);
79typedef EFI_STATUS(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(EFI_GUID *Protocol,
80 EFI_EVENT Event,
81 void **Registration);
82
83typedef 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);
88typedef EFI_STATUS(EFIAPI *EFI_LOCATE_DEVICE_PATH)(
89 EFI_GUID *Protocol, EFI_DEVICE_PATH_PROTOCOL **DevicePath,
90 EFI_HANDLE *Device);
91
92typedef EFI_STATUS(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(EFI_GUID *Guid,
93 void *Table);
94typedef EFI_STATUS(EFIAPI *EFI_IMAGE_UNLOAD)(EFI_HANDLE ImageHandle);
95typedef EFI_STATUS(EFIAPI *EFI_IMAGE_START)(EFI_HANDLE ImageHandle,
96 size_t *ExitDataSize,
97 char16_t **ExitData);
98
99typedef EFI_STATUS(EFIAPI *EFI_EXIT)(EFI_HANDLE ImageHandle,
100 EFI_STATUS ExitStatus, size_t ExitDataSize,
101 char16_t *ExitData);
102typedef EFI_STATUS(EFIAPI *EFI_EXIT_BOOT_SERVICES)(EFI_HANDLE ImageHandle,
103 size_t MapKey);
104typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(uint64_t *Count);
105typedef EFI_STATUS(EFIAPI *EFI_STALL)(size_t Microseconds);
106typedef EFI_STATUS(EFIAPI *EFI_SET_WATCHDOG_TIMER)(size_t Timeout,
107 uint64_t WatchdogCode,
108 size_t DataSize,
109 char16_t *WatchdogData);
110
111typedef EFI_STATUS(EFIAPI *EFI_CONNECT_CONTROLLER)(
112 EFI_HANDLE ControllerHandle, EFI_HANDLE *DriverImageHandle,
113 EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, bool Recursive);
114
115typedef EFI_STATUS(EFIAPI *EFI_DISCONNECT_CONTROLLER)(
116 EFI_HANDLE ControllerHandle, EFI_HANDLE DriverImageHandle,
117 EFI_HANDLE ChildHandle);
118
119typedef 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
123typedef EFI_STATUS(EFIAPI *EFI_CLOSE_PROTOCOL)(EFI_HANDLE Handle,
124 EFI_GUID *Protocol,
125 EFI_HANDLE AgentHandle,
126 EFI_HANDLE ControllerHandle);
127
128typedef 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
132typedef EFI_STATUS(EFIAPI *EFI_PROTOCOLS_PER_HANDLE)(
133 EFI_HANDLE Handle, EFI_GUID ***ProtocolBuffer, size_t *ProtocolBufferCount);
134
135typedef 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
139typedef EFI_STATUS(EFIAPI *EFI_LOCATE_PROTOCOL)(EFI_GUID *Protocol,
140 void *Registration,
141 void **Interface);
142
143typedef EFI_STATUS(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
144 EFI_HANDLE Handle, ...);
145typedef EFI_STATUS(EFIAPI *EFI_CALCULATE_CRC32)(void *Data, size_t DataSize,
146 uint32_t *Crc32);
147
148typedef void(EFIAPI *EFI_COPY_MEM)(void *Destination, void *Source,
149 size_t Length);
150typedef void(EFIAPI *EFI_SET_MEM)(void *Buffer, size_t Size, uint8_t Value);
151
152typedef 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
156typedef 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.

source code of libc/include/llvm-libc-types/EFI_BOOT_SERVICES.h