1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /** @file
- Debug Print Error Level library instance that retrieves
- the DebugPrintErrorLevel from bootloader.
- Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Base.h>
- #include <Uefi.h>
- #include <PiDxe.h>
- #include <Library/PcdLib.h>
- #include <Library/HobLib.h>
- #include <Guid/DebugPrintErrorLevel.h>
- #include <Library/DebugPrintErrorLevelLib.h>
- #include <UniversalPayload/UniversalPayload.h>
- STATIC UINT32 gDebugPrintErrorLevel;
- STATIC BOOLEAN gDebugPrintErrorLevelInitialized = FALSE;
- /**
- Returns the debug print error level mask for the current module.
- @return Debug print error level mask for the current module.
- **/
- UINT32
- EFIAPI
- GetDebugPrintErrorLevel (
- VOID
- )
- {
- VOID *GuidHob;
- UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;
- UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *DebugPrintErrorLevel;
- if (!gDebugPrintErrorLevelInitialized) {
- gDebugPrintErrorLevelInitialized = TRUE;
- gDebugPrintErrorLevel = PcdGet32 (PcdDebugPrintErrorLevel);
- GuidHob = GetFirstGuidHob (&gEdkiiDebugPrintErrorLevelGuid);
- if (GuidHob != NULL) {
- GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *)GET_GUID_HOB_DATA (GuidHob);
- if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) < GET_GUID_HOB_DATA_SIZE (GuidHob)) &&
- (GenericHeader->Length <= GET_GUID_HOB_DATA_SIZE (GuidHob)))
- {
- if (GenericHeader->Revision == UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL_REVISION) {
- DebugPrintErrorLevel = (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *)GET_GUID_HOB_DATA (GuidHob);
- if (DebugPrintErrorLevel->Header.Length >= UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL, ErrorLevel)) {
- gDebugPrintErrorLevel = DebugPrintErrorLevel->ErrorLevel;
- }
- }
- }
- }
- }
- return gDebugPrintErrorLevel;
- }
- /**
- Sets the global debug print error level mask fpr the entire platform.
- @param ErrorLevel Global debug print error level.
- @retval TRUE The debug print error level mask was sucessfully set.
- @retval FALSE The debug print error level mask could not be set.
- **/
- BOOLEAN
- EFIAPI
- SetDebugPrintErrorLevel (
- UINT32 ErrorLevel
- )
- {
- //
- // This library uinstance does not support setting the global debug print error
- // level mask.
- //
- return FALSE;
- }
|