/src/hbfa-fl/HBFA/UefiHostTestPkg/Library/UefiBootServicesTableLibHost/UefiBootServicesTableLibHost.c
Line | Count | Source (jump to first uncovered line) |
1 | | /** @file |
2 | | |
3 | | Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> |
4 | | SPDX-License-Identifier: BSD-2-Clause-Patent |
5 | | |
6 | | **/ |
7 | | |
8 | | #include <stdio.h> |
9 | | #include <stdlib.h> |
10 | | #include <string.h> |
11 | | #include <assert.h> |
12 | | |
13 | | #include <Uefi.h> |
14 | | #include <Library/DebugLib.h> |
15 | | #include <Library/BaseMemoryLib.h> |
16 | | |
17 | | #include "DxeMain.h" |
18 | | |
19 | | extern EFI_BOOT_SERVICES mBootServices; |
20 | | extern EFI_SYSTEM_TABLE mEfiSystemTableTemplate; |
21 | | |
22 | | EFI_SYSTEM_TABLE *gST = &mEfiSystemTableTemplate; |
23 | | EFI_BOOT_SERVICES *gBS = &mBootServices; |
24 | | EFI_HANDLE gImageHandle = NULL; |
25 | | |
26 | | EFI_HANDLE gDxeCoreImageHandle = NULL; |
27 | | EFI_SECURITY2_ARCH_PROTOCOL *gSecurity2; |
28 | | |
29 | | EFI_STATUS |
30 | | EFIAPI |
31 | | CoreAllocatePages ( |
32 | | IN EFI_ALLOCATE_TYPE Type, |
33 | | IN EFI_MEMORY_TYPE MemoryType, |
34 | | IN UINTN NumberOfPages, |
35 | | OUT EFI_PHYSICAL_ADDRESS *Memory |
36 | | ) |
37 | 0 | { |
38 | 0 | VOID *Buffer; |
39 | |
|
40 | 0 | Buffer = malloc (EFI_PAGES_TO_SIZE(NumberOfPages)); |
41 | 0 | if (Buffer == NULL) { |
42 | 0 | return EFI_OUT_OF_RESOURCES; |
43 | 0 | } |
44 | 0 | *Memory = (UINTN)Buffer; |
45 | 0 | return EFI_SUCCESS; |
46 | 0 | } |
47 | | |
48 | | EFI_STATUS |
49 | | EFIAPI |
50 | | CoreFreePages ( |
51 | | IN EFI_PHYSICAL_ADDRESS Memory, |
52 | | IN UINTN NumberOfPages |
53 | | ) |
54 | 0 | { |
55 | 0 | free ((VOID *)(UINTN)Memory); |
56 | 0 | return EFI_SUCCESS; |
57 | 0 | } |
58 | | |
59 | | EFI_STATUS |
60 | | EFIAPI |
61 | | CoreAllocatePool ( |
62 | | IN EFI_MEMORY_TYPE PoolType, |
63 | | IN UINTN Size, |
64 | | OUT VOID **Buffer |
65 | | ) |
66 | 0 | { |
67 | 0 | *Buffer = malloc (Size); |
68 | 0 | if (*Buffer == NULL) { |
69 | 0 | return EFI_OUT_OF_RESOURCES; |
70 | 0 | } |
71 | 0 | return EFI_SUCCESS; |
72 | 0 | } |
73 | | |
74 | | EFI_STATUS |
75 | | EFIAPI |
76 | | CoreFreePool ( |
77 | | IN VOID *Buffer |
78 | | ) |
79 | 0 | { |
80 | 0 | free (Buffer); |
81 | 0 | return EFI_SUCCESS; |
82 | 0 | } |
83 | | |
84 | | EFI_STATUS |
85 | | EFIAPI |
86 | | CoreEfiNotAvailableYetArg0 ( |
87 | | VOID |
88 | | ) |
89 | 0 | { |
90 | 0 | ASSERT(FALSE); |
91 | 0 | return EFI_UNSUPPORTED; |
92 | 0 | } |
93 | | |
94 | | EFI_STATUS |
95 | | EFIAPI |
96 | | CoreEfiNotAvailableYetArg1 ( |
97 | | UINTN Arg1 |
98 | | ) |
99 | 0 | { |
100 | 0 | ASSERT(FALSE); |
101 | 0 | return EFI_UNSUPPORTED; |
102 | 0 | } |
103 | | |
104 | | EFI_STATUS |
105 | | EFIAPI |
106 | | CoreEfiNotAvailableYetArg2 ( |
107 | | UINTN Arg1, |
108 | | UINTN Arg2 |
109 | | ) |
110 | 0 | { |
111 | 0 | ASSERT(FALSE); |
112 | 0 | return EFI_UNSUPPORTED; |
113 | 0 | } |
114 | | |
115 | | EFI_STATUS |
116 | | EFIAPI |
117 | | CoreEfiNotAvailableYetArg3 ( |
118 | | UINTN Arg1, |
119 | | UINTN Arg2, |
120 | | UINTN Arg3 |
121 | | ) |
122 | 0 | { |
123 | 0 | ASSERT(FALSE); |
124 | 0 | return EFI_UNSUPPORTED; |
125 | 0 | } |
126 | | |
127 | | EFI_STATUS |
128 | | EFIAPI |
129 | | CoreEfiNotAvailableYetArg4 ( |
130 | | UINTN Arg1, |
131 | | UINTN Arg2, |
132 | | UINTN Arg3, |
133 | | UINTN Arg4 |
134 | | ) |
135 | 0 | { |
136 | 0 | ASSERT(FALSE); |
137 | 0 | return EFI_UNSUPPORTED; |
138 | 0 | } |
139 | | |
140 | | EFI_STATUS |
141 | | EFIAPI |
142 | | CoreEfiNotAvailableYetArg5 ( |
143 | | UINTN Arg1, |
144 | | UINTN Arg2, |
145 | | UINTN Arg3, |
146 | | UINTN Arg4, |
147 | | UINTN Arg5 |
148 | | ) |
149 | 0 | { |
150 | 0 | ASSERT(FALSE); |
151 | 0 | return EFI_UNSUPPORTED; |
152 | 0 | } |
153 | | |
154 | | EFI_STATUS |
155 | | EFIAPI |
156 | | CoreEfiNotAvailableYetArg6 ( |
157 | | UINTN Arg1, |
158 | | UINTN Arg2, |
159 | | UINTN Arg3, |
160 | | UINTN Arg4, |
161 | | UINTN Arg5, |
162 | | UINTN Arg6 |
163 | | ) |
164 | 0 | { |
165 | 0 | ASSERT(FALSE); |
166 | 0 | return EFI_UNSUPPORTED; |
167 | 0 | } |
168 | | |
169 | | EFI_BOOT_SERVICES mBootServices = { |
170 | | { |
171 | | EFI_BOOT_SERVICES_SIGNATURE, // Signature |
172 | | EFI_BOOT_SERVICES_REVISION, // Revision |
173 | | sizeof (EFI_BOOT_SERVICES), // HeaderSize |
174 | | 0, // CRC32 |
175 | | 0 // Reserved |
176 | | }, |
177 | | (EFI_RAISE_TPL) CoreRaiseTpl, // RaiseTPL |
178 | | (EFI_RESTORE_TPL) CoreRestoreTpl, // RestoreTPL |
179 | | (EFI_ALLOCATE_PAGES) CoreAllocatePages, // AllocatePages |
180 | | (EFI_FREE_PAGES) CoreFreePages, // FreePages |
181 | | (EFI_GET_MEMORY_MAP) CoreEfiNotAvailableYetArg5, // GetMemoryMap |
182 | | (EFI_ALLOCATE_POOL) CoreAllocatePool, // AllocatePool |
183 | | (EFI_FREE_POOL) CoreFreePool, // FreePool |
184 | | (EFI_CREATE_EVENT) CoreEfiNotAvailableYetArg5, // CreateEvent |
185 | | (EFI_SET_TIMER) CoreEfiNotAvailableYetArg3, // SetTimer |
186 | | (EFI_WAIT_FOR_EVENT) CoreEfiNotAvailableYetArg3, // WaitForEvent |
187 | | (EFI_SIGNAL_EVENT) CoreEfiNotAvailableYetArg1, // SignalEvent |
188 | | (EFI_CLOSE_EVENT) CoreEfiNotAvailableYetArg1, // CloseEvent |
189 | | (EFI_CHECK_EVENT) CoreEfiNotAvailableYetArg1, // CheckEvent |
190 | | (EFI_INSTALL_PROTOCOL_INTERFACE) CoreInstallProtocolInterface, // InstallProtocolInterface |
191 | | (EFI_REINSTALL_PROTOCOL_INTERFACE) CoreReinstallProtocolInterface, // ReinstallProtocolInterface |
192 | | (EFI_UNINSTALL_PROTOCOL_INTERFACE) CoreUninstallProtocolInterface, // UninstallProtocolInterface |
193 | | (EFI_HANDLE_PROTOCOL) CoreHandleProtocol, // HandleProtocol |
194 | | (VOID *) NULL, // Reserved |
195 | | (EFI_REGISTER_PROTOCOL_NOTIFY) CoreRegisterProtocolNotify, // RegisterProtocolNotify |
196 | | (EFI_LOCATE_HANDLE) CoreLocateHandle, // LocateHandle |
197 | | (EFI_LOCATE_DEVICE_PATH) CoreLocateDevicePath, // LocateDevicePath |
198 | | (EFI_INSTALL_CONFIGURATION_TABLE) CoreEfiNotAvailableYetArg2, // InstallConfigurationTable |
199 | | (EFI_IMAGE_LOAD) CoreEfiNotAvailableYetArg6, // LoadImage |
200 | | (EFI_IMAGE_START) CoreEfiNotAvailableYetArg3, // StartImage |
201 | | (EFI_EXIT) CoreEfiNotAvailableYetArg4, // Exit |
202 | | (EFI_IMAGE_UNLOAD) CoreEfiNotAvailableYetArg1, // UnloadImage |
203 | | (EFI_EXIT_BOOT_SERVICES) CoreEfiNotAvailableYetArg2, // ExitBootServices |
204 | | (EFI_GET_NEXT_MONOTONIC_COUNT) CoreEfiNotAvailableYetArg1, // GetNextMonotonicCount |
205 | | (EFI_STALL) CoreEfiNotAvailableYetArg1, // Stall |
206 | | (EFI_SET_WATCHDOG_TIMER) CoreEfiNotAvailableYetArg4, // SetWatchdogTimer |
207 | | (EFI_CONNECT_CONTROLLER) CoreEfiNotAvailableYetArg4, // ConnectController |
208 | | (EFI_DISCONNECT_CONTROLLER) CoreEfiNotAvailableYetArg3, // DisconnectController |
209 | | (EFI_OPEN_PROTOCOL) CoreOpenProtocol, // OpenProtocol |
210 | | (EFI_CLOSE_PROTOCOL) CoreCloseProtocol, // CloseProtocol |
211 | | (EFI_OPEN_PROTOCOL_INFORMATION) CoreOpenProtocolInformation, // OpenProtocolInformation |
212 | | (EFI_PROTOCOLS_PER_HANDLE) CoreProtocolsPerHandle, // ProtocolsPerHandle |
213 | | (EFI_LOCATE_HANDLE_BUFFER) CoreLocateHandleBuffer, // LocateHandleBuffer |
214 | | (EFI_LOCATE_PROTOCOL) CoreLocateProtocol, // LocateProtocol |
215 | | (EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) CoreInstallMultipleProtocolInterfaces, // InstallMultipleProtocolInterfaces |
216 | | (EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) CoreUninstallMultipleProtocolInterfaces, // UninstallMultipleProtocolInterfaces |
217 | | (EFI_CALCULATE_CRC32) CoreEfiNotAvailableYetArg3, // CalculateCrc32 |
218 | | (EFI_COPY_MEM) CopyMem, // CopyMem |
219 | | (EFI_SET_MEM) SetMem, // SetMem |
220 | | (EFI_CREATE_EVENT_EX) CoreEfiNotAvailableYetArg6 // CreateEventEx |
221 | | }; |
222 | | |
223 | | EFI_STATUS |
224 | | EFIAPI |
225 | | OutputString ( |
226 | | IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, |
227 | | IN CHAR16 *String |
228 | | ) |
229 | 0 | { |
230 | 0 | DEBUG ((DEBUG_INFO, "%s", String)); |
231 | 0 | return EFI_SUCCESS; |
232 | 0 | } |
233 | | |
234 | | EFI_SIMPLE_TEXT_OUTPUT_MODE mMode = { |
235 | | 1, // MaxMode |
236 | | 0, // Mode |
237 | | 0, // Attribute |
238 | | 80, // CursorColumn |
239 | | 25, // CursorRow |
240 | | FALSE, // CursorVisible |
241 | | }; |
242 | | |
243 | | EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL mConOut = { |
244 | | (EFI_TEXT_RESET) CoreEfiNotAvailableYetArg2, // Reset |
245 | | OutputString, |
246 | | (EFI_TEXT_TEST_STRING) CoreEfiNotAvailableYetArg2, // TestString |
247 | | (EFI_TEXT_QUERY_MODE) CoreEfiNotAvailableYetArg4, // QueryMode |
248 | | (EFI_TEXT_SET_MODE) CoreEfiNotAvailableYetArg2, // SetMode |
249 | | (EFI_TEXT_SET_ATTRIBUTE) CoreEfiNotAvailableYetArg2, // SetAttribute |
250 | | (EFI_TEXT_CLEAR_SCREEN) CoreEfiNotAvailableYetArg1, // ClearScreen |
251 | | (EFI_TEXT_SET_CURSOR_POSITION) CoreEfiNotAvailableYetArg3, // SetCursorPosition |
252 | | (EFI_TEXT_ENABLE_CURSOR) CoreEfiNotAvailableYetArg2, // EnableCursor |
253 | | NULL, // Mode |
254 | | }; |
255 | | |
256 | | EFI_SYSTEM_TABLE mEfiSystemTableTemplate = { |
257 | | { |
258 | | EFI_SYSTEM_TABLE_SIGNATURE, // Signature |
259 | | EFI_SYSTEM_TABLE_REVISION, // Revision |
260 | | sizeof (EFI_SYSTEM_TABLE), // HeaderSize |
261 | | 0, // CRC32 |
262 | | 0 // Reserved |
263 | | }, |
264 | | NULL, // FirmwareVendor |
265 | | 0, // FirmwareRevision |
266 | | NULL, // ConsoleInHandle |
267 | | NULL, // ConIn |
268 | | NULL, // ConsoleOutHandle |
269 | | &mConOut, // ConOut |
270 | | NULL, // StandardErrorHandle |
271 | | NULL, // StdErr |
272 | | NULL, // RuntimeServices |
273 | | &mBootServices, // BootServices |
274 | | 0, // NumberOfConfigurationTableEntries |
275 | | NULL // ConfigurationTable |
276 | | }; |
277 | | |
278 | | EFI_STATUS |
279 | | EFIAPI |
280 | | UefiBootServicesTableLibConstructor ( |
281 | | VOID |
282 | | ) |
283 | 0 | { |
284 | 0 | EFI_STATUS Status; |
285 | |
|
286 | 0 | Status = gBS->InstallProtocolInterface ( |
287 | 0 | &gImageHandle, |
288 | 0 | &gEfiLoadedImageProtocolGuid, |
289 | 0 | EFI_NATIVE_INTERFACE, |
290 | 0 | NULL |
291 | 0 | ); |
292 | |
|
293 | 0 | return Status; |
294 | 0 | } |