StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
This patch implements a firmware volume library that can be used by the Standalone management mode core module to parse the firmware volume. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Supreeth Venkatesh <supreeth.venkatesh@arm.com> Reviewed-by: Achin Gupta <achin.gupta@arm.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com> Signed-off-by: Sughosh Ganu <sughosh.ganu@arm.com>
This commit is contained in:
committed by
Jiewen Yao
parent
2cde4bbadc
commit
e85162acb9
109
StandaloneMmPkg/Include/Library/FvLib.h
Normal file
109
StandaloneMmPkg/Include/Library/FvLib.h
Normal file
@@ -0,0 +1,109 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.<BR>
|
||||
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _FV_LIB_H_
|
||||
#define _FV_LIB_H_
|
||||
|
||||
#include <Uefi.h>
|
||||
#include <Pi/PiFirmwareVolume.h>
|
||||
#include <Pi/PiFirmwareFile.h>
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
@param SearchType Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
@param FwVolHeader Pointer to the FV header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
@param FileHeader Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file found.
|
||||
|
||||
@retval EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindNextFile (
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
IN OUT EFI_FFS_FILE_HEADER **FileHeader
|
||||
);
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching section in the
|
||||
FFS volume.
|
||||
|
||||
@param SearchType Filter to find only sections of this type.
|
||||
@param FfsFileHeader Pointer to the current file to search.
|
||||
@param SectionHeader Pointer to the Section matching SectionType in FfsFileHeader.
|
||||
NULL if section not found
|
||||
|
||||
@retval EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS
|
||||
**/
|
||||
EFI_STATUS
|
||||
FfsFindSection (
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
|
||||
IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader
|
||||
);
|
||||
|
||||
/**
|
||||
Locates a section within a series of sections
|
||||
with the specified section type.
|
||||
|
||||
@param[in] Sections The sections to search
|
||||
@param[in] SizeOfSections Total size of all sections
|
||||
@param[in] SectionType The section type to locate
|
||||
@param[out] FoundSection The FFS section if found
|
||||
|
||||
@retval EFI_SUCCESS The file and section was found
|
||||
@retval EFI_NOT_FOUND The file and section was not found
|
||||
@retval EFI_VOLUME_CORRUPTED The firmware volume was corrupted
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FindFfsSectionInSections (
|
||||
IN VOID *Sections,
|
||||
IN UINTN SizeOfSections,
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
OUT EFI_COMMON_SECTION_HEADER **FoundSection
|
||||
);
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching section in the
|
||||
FFS volume.
|
||||
|
||||
@param SearchType Filter to find only sections of this type.
|
||||
@param FfsFileHeader Pointer to the current file to search.
|
||||
@param SectionData Pointer to the Section matching SectionType in FfsFileHeader.
|
||||
NULL if section not found
|
||||
@param SectionDataSize The size of SectionData
|
||||
|
||||
@retval EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindSectionData (
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
|
||||
OUT VOID **SectionData,
|
||||
OUT UINTN *SectionDataSize
|
||||
);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user