Files
system76-edk2/AppPkg/Applications/Sockets/WebServer/DxeServicesTable.c
2019-04-09 10:58:32 -07:00

227 lines
6.4 KiB
C

/** @file
Display the DXE services table
Copyright (c) 2011 - 2012 Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
--*/
#include <WebServer.h>
#include <Guid/DxeServices.h>
#include <Pi/PiDxeCis.h>
/**
Respond with the DXE services table
@param[in] SocketFD The socket's file descriptor to add to the list.
@param[in] pPort The WSDT_PORT structure address
@param[out] pbDone Address to receive the request completion status
@retval EFI_SUCCESS The request was successfully processed
**/
EFI_STATUS
DxeServicesTablePage (
IN int SocketFD,
IN WSDT_PORT * pPort,
OUT BOOLEAN * pbDone
)
{
EFI_DXE_SERVICES * pDS;
EFI_STATUS Status;
DBG_ENTER ( );
//
// Send the DXE services page
//
for ( ; ; ) {
//
// Get the DXE services table
//
Status = EfiGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &pDS);
if ( EFI_ERROR ( Status )) {
break;
}
//
// Send the page and table header
//
Status = TableHeader ( SocketFD, pPort, L"DXE Services Table", pDS );
if ( EFI_ERROR ( Status )) {
break;
}
///
/// The table header for the DXE Services Table.
/// This header contains the DXE_SERVICES_SIGNATURE and DXE_SERVICES_REVISION values.
///
Status = EfiTableHeader ( SocketFD,
pPort,
&pDS->Hdr );
if ( EFI_ERROR ( Status )) {
break;
}
//
// Global Coherency Domain Services
//
Status = RowPointer ( SocketFD,
pPort,
"AddMemorySpace",
(VOID *)pDS->AddMemorySpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"AllocateMemorySpace",
(VOID *)pDS->AllocateMemorySpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"FreeMemorySpace",
(VOID *)pDS->FreeMemorySpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"RemoveMemorySpace",
(VOID *)pDS->RemoveMemorySpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"GetMemorySpaceDescriptor",
(VOID *)pDS->GetMemorySpaceDescriptor,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"SetMemorySpaceAttributes",
(VOID *)pDS->SetMemorySpaceAttributes,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"GetMemorySpaceMap",
(VOID *)pDS->GetMemorySpaceMap,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"AddIoSpace",
(VOID *)pDS->AddIoSpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"AllocateIoSpace",
(VOID *)pDS->AllocateIoSpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"FreeIoSpace",
(VOID *)pDS->FreeIoSpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"RemoveIoSpace",
(VOID *)pDS->RemoveIoSpace,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"GetIoSpaceDescriptor",
(VOID *)pDS->GetIoSpaceDescriptor,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"GetIoSpaceMap",
(VOID *)pDS->GetIoSpaceMap,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
//
// Dispatcher Services
//
Status = RowPointer ( SocketFD,
pPort,
"Dispatch",
(VOID *)pDS->Dispatch,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"Schedule",
(VOID *)pDS->Schedule,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
Status = RowPointer ( SocketFD,
pPort,
"Trust",
(VOID *)pDS->Trust,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
//
// Service to process a single firmware volume found in a capsule
//
Status = RowPointer ( SocketFD,
pPort,
"ProcessFirmwareVolume",
(VOID *)pDS->ProcessFirmwareVolume,
NULL );
if ( EFI_ERROR ( Status )) {
break;
}
//
// Build the table trailer
//
Status = TableTrailer ( SocketFD,
pPort,
pbDone );
break;
}
//
// Return the operation status
//
DBG_EXIT_STATUS ( Status );
return Status;
}