diff options
author | Supreeth Venkatesh <supreeth.venkatesh@arm.com> | 2018-07-13 23:05:22 +0800 |
---|---|---|
committer | Jiewen Yao <jiewen.yao@intel.com> | 2018-07-20 10:55:26 +0800 |
commit | e85162acb9f3ff3bdb87b6575fe9b29e99160ab6 (patch) | |
tree | 966cda40bdff83b4d06bef45f689fd94d1018379 /StandaloneMmPkg/Include | |
parent | 2cde4bbadc09a6822e1e653fc4ef46a7106bfe79 (diff) | |
download | edk2-e85162acb9f3ff3bdb87b6575fe9b29e99160ab6.tar.gz edk2-e85162acb9f3ff3bdb87b6575fe9b29e99160ab6.tar.bz2 edk2-e85162acb9f3ff3bdb87b6575fe9b29e99160ab6.zip |
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>
Diffstat (limited to 'StandaloneMmPkg/Include')
-rw-r--r-- | StandaloneMmPkg/Include/Library/FvLib.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/StandaloneMmPkg/Include/Library/FvLib.h b/StandaloneMmPkg/Include/Library/FvLib.h new file mode 100644 index 0000000000..64e65b412d --- /dev/null +++ b/StandaloneMmPkg/Include/Library/FvLib.h @@ -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
|