/** @file This library retrieve the EFI_BOOT_SERVICES pointer from EFI system table in library's constructor. Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include VOID *gHobList = NULL; /** Local implementation of GUID comparasion that doesn't depend on DebugLib::ASSERT(). This function compares Guid1 to Guid2. If the GUIDs are identical then TRUE is returned. If there are any bit differences in the two GUIDs, then FALSE is returned. @param Guid1 A pointer to a 128 bit GUID. @param Guid2 A pointer to a 128 bit GUID. @retval TRUE Guid1 and Guid2 are identical. @retval FALSE Guid1 and Guid2 are not identical. **/ BOOLEAN LocalCompareGuid ( IN CONST GUID *Guid1, IN CONST GUID *Guid2 ) { UINT64 *Left; UINT64 *Right; Left = (UINT64 *)Guid1; Right = (UINT64 *)Guid2; return (BOOLEAN)(Left[0] == Right[0] && Left[1] == Right[1]); } /** @param ImageHandle The firmware allocated handle for the EFI image. @param SystemTable A pointer to the EFI System Table. @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. **/ EFI_STATUS EFIAPI DxeHobListLibConstructor ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { UINTN Index; for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) { if (LocalCompareGuid (&gEfiHobListGuid, &SystemTable->ConfigurationTable[Index].VendorGuid)) { gHobList = SystemTable->ConfigurationTable[Index].VendorTable; return EFI_SUCCESS; } } return EFI_NOT_FOUND; }