/** @file Display the runtime services table Copyright (c) 2011-2012, Intel Corporation. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include <WebServer.h> #include <Library/UefiRuntimeServicesTableLib.h> /** Respond with the runtime 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 RuntimeSservicesTablePage ( IN int SocketFD, IN WSDT_PORT * pPort, OUT BOOLEAN * pbDone ) { EFI_STATUS Status; DBG_ENTER ( ); // // Send the runtime services page // for ( ; ; ) { // // Send the page and table header // Status = TableHeader ( SocketFD, pPort, L"Runtime Services Table", gRT ); if ( EFI_ERROR ( Status )) { break; } /// /// The table header for the EFI Runtime Services Table. /// Status = EfiTableHeader ( SocketFD, pPort, &gRT->Hdr ); if ( EFI_ERROR ( Status )) { break; } // // Time Services // Status = RowPointer ( SocketFD, pPort, "GetTime", (VOID *)gRT->GetTime, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "SetTime", (VOID *)gRT->SetTime, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "GetWakeupTime", (VOID *)gRT->GetWakeupTime, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "SetWakeupTime", (VOID *)gRT->SetWakeupTime, NULL ); if ( EFI_ERROR ( Status )) { break; } // // Virtual Memory Services // Status = RowPointer ( SocketFD, pPort, "SetVirtualAddressMap", (VOID *)gRT->SetVirtualAddressMap, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "ConvertPointer", (VOID *)gRT->ConvertPointer, NULL ); if ( EFI_ERROR ( Status )) { break; } // // Variable Services // Status = RowPointer ( SocketFD, pPort, "GetVariable", (VOID *)gRT->GetVariable, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "GetNextVariableName", (VOID *)gRT->GetNextVariableName, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "SetVariable", (VOID *)gRT->SetVariable, NULL ); if ( EFI_ERROR ( Status )) { break; } // // Miscellaneous Services // Status = RowPointer ( SocketFD, pPort, "GetNextHighNonotonicCount", (VOID *)gRT->GetNextHighMonotonicCount, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "ResetSystem", (VOID *)gRT->ResetSystem, NULL ); if ( EFI_ERROR ( Status )) { break; } // // Determine if the structures supports 2.0 services // if ( 2 <= ( gRT->Hdr.Revision >> 16 )) { // // UEFI 2.0 Capsule Services // Status = RowPointer ( SocketFD, pPort, "UpdateCapsule", (VOID *)gRT->UpdateCapsule, NULL ); if ( EFI_ERROR ( Status )) { break; } Status = RowPointer ( SocketFD, pPort, "QueryCapsuleCapabilities", (VOID *)gRT->QueryCapsuleCapabilities, NULL ); if ( EFI_ERROR ( Status )) { break; } // // Miscellaneous UEFI 2.0 Service // Status = RowPointer ( SocketFD, pPort, "QueryVariableInfo", (VOID *)gRT->QueryVariableInfo, 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; }