3 Display the boot services table
5 Copyright (c) 2011-2012, Intel Corporation. All rights reserved.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #include <WebServer.h>
13 Respond with the boot services table
15 @param [in] SocketFD The socket's file descriptor to add to the list.
16 @param [in] pPort The WSDT_PORT structure address
17 @param [out] pbDone Address to receive the request completion status
19 @retval EFI_SUCCESS The request was successfully processed
23 BootServicesTablePage (
34 // Send the boot services page
38 // Send the page and table header
40 Status
= TableHeader ( SocketFD
, pPort
, L
"Boot Services Table", gBS
);
41 if ( EFI_ERROR ( Status
)) {
46 /// The table header for the EFI Boot Services Table.
48 Status
= EfiTableHeader ( SocketFD
,
51 if ( EFI_ERROR ( Status
)) {
56 // Task Priority Services
58 Status
= RowPointer ( SocketFD
,
61 (CONST VOID
*)gBS
->RaiseTPL
,
63 if ( EFI_ERROR ( Status
)) {
66 Status
= RowPointer ( SocketFD
,
69 (CONST VOID
*)gBS
->RestoreTPL
,
71 if ( EFI_ERROR ( Status
)) {
78 Status
= RowPointer ( SocketFD
,
81 (CONST VOID
*)gBS
->AllocatePages
,
83 if ( EFI_ERROR ( Status
)) {
86 Status
= RowPointer ( SocketFD
,
89 (CONST VOID
*)gBS
->FreePages
,
91 if ( EFI_ERROR ( Status
)) {
94 Status
= RowPointer ( SocketFD
,
97 (CONST VOID
*)gBS
->GetMemoryMap
,
99 if ( EFI_ERROR ( Status
)) {
102 Status
= RowPointer ( SocketFD
,
105 (CONST VOID
*)gBS
->AllocatePool
,
107 if ( EFI_ERROR ( Status
)) {
110 Status
= RowPointer ( SocketFD
,
113 (CONST VOID
*)gBS
->FreePool
,
115 if ( EFI_ERROR ( Status
)) {
120 // Event & Timer Services
122 Status
= RowPointer ( SocketFD
,
125 (CONST VOID
*)gBS
->CreateEvent
,
127 if ( EFI_ERROR ( Status
)) {
130 Status
= RowPointer ( SocketFD
,
133 (CONST VOID
*)gBS
->SetTimer
,
135 if ( EFI_ERROR ( Status
)) {
138 Status
= RowPointer ( SocketFD
,
141 (CONST VOID
*)gBS
->WaitForEvent
,
143 if ( EFI_ERROR ( Status
)) {
146 Status
= RowPointer ( SocketFD
,
149 (CONST VOID
*)gBS
->SignalEvent
,
151 if ( EFI_ERROR ( Status
)) {
154 Status
= RowPointer ( SocketFD
,
157 (CONST VOID
*)gBS
->CloseEvent
,
159 if ( EFI_ERROR ( Status
)) {
162 Status
= RowPointer ( SocketFD
,
165 (CONST VOID
*)gBS
->CheckEvent
,
167 if ( EFI_ERROR ( Status
)) {
172 // Protocol Handler Services
174 Status
= RowPointer ( SocketFD
,
176 "InstallProtocolInterface",
177 (CONST VOID
*)gBS
->InstallProtocolInterface
,
179 if ( EFI_ERROR ( Status
)) {
182 Status
= RowPointer ( SocketFD
,
184 "ReinstallProtocolInterface",
185 (CONST VOID
*)gBS
->ReinstallProtocolInterface
,
187 if ( EFI_ERROR ( Status
)) {
190 Status
= RowPointer ( SocketFD
,
192 "UninstallProtocolInterface",
193 (CONST VOID
*)gBS
->UninstallProtocolInterface
,
195 if ( EFI_ERROR ( Status
)) {
198 Status
= RowPointer ( SocketFD
,
201 (CONST VOID
*)gBS
->HandleProtocol
,
203 if ( EFI_ERROR ( Status
)) {
206 Status
= RowPointer ( SocketFD
,
209 (CONST VOID
*)gBS
->Reserved
,
211 if ( EFI_ERROR ( Status
)) {
214 Status
= RowPointer ( SocketFD
,
216 "RegisterProtocolNotify",
217 (CONST VOID
*)gBS
->RegisterProtocolNotify
,
219 if ( EFI_ERROR ( Status
)) {
222 Status
= RowPointer ( SocketFD
,
225 (CONST VOID
*)gBS
->LocateHandle
,
227 if ( EFI_ERROR ( Status
)) {
230 Status
= RowPointer ( SocketFD
,
233 (CONST VOID
*)gBS
->LocateDevicePath
,
235 if ( EFI_ERROR ( Status
)) {
238 Status
= RowPointer ( SocketFD
,
240 "InstallConfigurationTable",
241 (CONST VOID
*)gBS
->InstallConfigurationTable
,
243 if ( EFI_ERROR ( Status
)) {
250 Status
= RowPointer ( SocketFD
,
253 (CONST VOID
*)gBS
->LoadImage
,
255 if ( EFI_ERROR ( Status
)) {
258 Status
= RowPointer ( SocketFD
,
261 (CONST VOID
*)gBS
->StartImage
,
263 if ( EFI_ERROR ( Status
)) {
266 Status
= RowPointer ( SocketFD
,
269 (CONST VOID
*)gBS
->Exit
,
271 if ( EFI_ERROR ( Status
)) {
274 Status
= RowPointer ( SocketFD
,
277 (CONST VOID
*)gBS
->UnloadImage
,
279 if ( EFI_ERROR ( Status
)) {
282 Status
= RowPointer ( SocketFD
,
285 (CONST VOID
*)gBS
->ExitBootServices
,
287 if ( EFI_ERROR ( Status
)) {
292 // Miscellaneous Services
294 Status
= RowPointer ( SocketFD
,
296 "GetNextMonotonicCount",
297 (CONST VOID
*)gBS
->GetNextMonotonicCount
,
299 if ( EFI_ERROR ( Status
)) {
302 Status
= RowPointer ( SocketFD
,
305 (CONST VOID
*)gBS
->Stall
,
307 if ( EFI_ERROR ( Status
)) {
310 Status
= RowPointer ( SocketFD
,
313 (CONST VOID
*)gBS
->SetWatchdogTimer
,
315 if ( EFI_ERROR ( Status
)) {
320 // DriverSupport Services
322 Status
= RowPointer ( SocketFD
,
325 (CONST VOID
*)gBS
->ConnectController
,
327 if ( EFI_ERROR ( Status
)) {
330 Status
= RowPointer ( SocketFD
,
332 "DisconnectController",
333 (CONST VOID
*)gBS
->DisconnectController
,
335 if ( EFI_ERROR ( Status
)) {
340 // Open and Close Protocol Services
342 Status
= RowPointer ( SocketFD
,
345 (CONST VOID
*)gBS
->OpenProtocol
,
347 if ( EFI_ERROR ( Status
)) {
350 Status
= RowPointer ( SocketFD
,
353 (CONST VOID
*)gBS
->CloseProtocol
,
355 if ( EFI_ERROR ( Status
)) {
358 Status
= RowPointer ( SocketFD
,
360 "OpenProtocolInformation",
361 (CONST VOID
*)gBS
->OpenProtocolInformation
,
363 if ( EFI_ERROR ( Status
)) {
370 Status
= RowPointer ( SocketFD
,
372 "ProtocolsPerHandle",
373 (CONST VOID
*)gBS
->ProtocolsPerHandle
,
375 if ( EFI_ERROR ( Status
)) {
378 Status
= RowPointer ( SocketFD
,
380 "LocateHandleBuffer",
381 (CONST VOID
*)gBS
->LocateHandleBuffer
,
383 if ( EFI_ERROR ( Status
)) {
386 Status
= RowPointer ( SocketFD
,
389 (CONST VOID
*)gBS
->LocateProtocol
,
391 if ( EFI_ERROR ( Status
)) {
394 Status
= RowPointer ( SocketFD
,
396 "InstallMultipleProtocolInterfaces",
397 (CONST VOID
*)gBS
->InstallMultipleProtocolInterfaces
,
399 if ( EFI_ERROR ( Status
)) {
402 Status
= RowPointer ( SocketFD
,
404 "UninstallMultipleProtocolInterfaces",
405 (CONST VOID
*)gBS
->UninstallMultipleProtocolInterfaces
,
407 if ( EFI_ERROR ( Status
)) {
412 // 32-bit CRC Services
414 Status
= RowPointer ( SocketFD
,
417 (CONST VOID
*)gBS
->CalculateCrc32
,
419 if ( EFI_ERROR ( Status
)) {
424 // Miscellaneous Services
426 Status
= RowPointer ( SocketFD
,
429 (CONST VOID
*)gBS
->CopyMem
,
431 if ( EFI_ERROR ( Status
)) {
434 Status
= RowPointer ( SocketFD
,
437 (CONST VOID
*)gBS
->SetMem
,
439 if ( EFI_ERROR ( Status
)) {
442 Status
= RowPointer ( SocketFD
,
445 (CONST VOID
*)gBS
->CreateEventEx
,
447 if ( EFI_ERROR ( Status
)) {
452 // Build the table trailer
454 Status
= TableTrailer ( SocketFD
,
461 // Return the operation status
463 DBG_EXIT_STATUS ( Status
);