https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
		
			
				
	
	
		
			190 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
These functions assist in parsing and manipulating a Firmware Volume.
 | 
						|
 | 
						|
Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _EFI_FV_LIB_H
 | 
						|
#define _EFI_FV_LIB_H
 | 
						|
 | 
						|
//
 | 
						|
// Include files
 | 
						|
//
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#include <Common/UefiBaseTypes.h>
 | 
						|
#include <Common/PiFirmwareFile.h>
 | 
						|
#include <Common/PiFirmwareVolume.h>
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
InitializeFvLib (
 | 
						|
  IN VOID                         *Fv,
 | 
						|
  IN UINT32                       FvLength
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetFvHeader (
 | 
						|
  OUT EFI_FIRMWARE_VOLUME_HEADER  **FvHeader,
 | 
						|
  OUT UINT32                      *FvLength
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetNextFile (
 | 
						|
  IN EFI_FFS_FILE_HEADER          *CurrentFile,
 | 
						|
  OUT EFI_FFS_FILE_HEADER         **NextFile
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetFileByName (
 | 
						|
  IN EFI_GUID                     *FileName,
 | 
						|
  OUT EFI_FFS_FILE_HEADER         **File
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetFileByType (
 | 
						|
  IN EFI_FV_FILETYPE              FileType,
 | 
						|
  IN UINTN                        Instance,
 | 
						|
  OUT EFI_FFS_FILE_HEADER         **File
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetSectionByType (
 | 
						|
  IN EFI_FFS_FILE_HEADER          *File,
 | 
						|
  IN EFI_SECTION_TYPE             SectionType,
 | 
						|
  IN UINTN                        Instance,
 | 
						|
  OUT EFI_FILE_SECTION_POINTER    *Section
 | 
						|
  )
 | 
						|
;
 | 
						|
//
 | 
						|
// will not parse compressed sections
 | 
						|
//
 | 
						|
EFI_STATUS
 | 
						|
VerifyFv (
 | 
						|
  IN EFI_FIRMWARE_VOLUME_HEADER   *FvHeader
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
VerifyFfsFile (
 | 
						|
  IN EFI_FFS_FILE_HEADER          *FfsHeader
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
UINT32
 | 
						|
GetFfsFileLength (
 | 
						|
  EFI_FFS_FILE_HEADER *FfsHeader
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
UINT32
 | 
						|
GetSectionFileLength (
 | 
						|
  EFI_COMMON_SECTION_HEADER *SectionHeader
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
UINT32
 | 
						|
GetFfsHeaderLength(
 | 
						|
   IN EFI_FFS_FILE_HEADER *FfsHeader
 | 
						|
   )
 | 
						|
;
 | 
						|
 | 
						|
UINT32
 | 
						|
GetSectionHeaderLength(
 | 
						|
   IN EFI_COMMON_SECTION_HEADER *SectionHeader
 | 
						|
   )
 | 
						|
;
 | 
						|
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Verify the current pointer points to a FFS file header.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FfsHeader     Pointer to an alleged FFS file.
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_SUCCESS           The Ffs header is valid.
 | 
						|
  EFI_NOT_FOUND         This "file" is the beginning of free space.
 | 
						|
  EFI_VOLUME_CORRUPTED  The Ffs header is not valid.
 | 
						|
 | 
						|
--*/
 | 
						|
UINT32
 | 
						|
GetLength (
 | 
						|
  UINT8                           *ThreeByteLength
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Converts a three byte length value into a UINT32.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  ThreeByteLength   Pointer to the first of the 3 byte length.
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  UINT32      Size of the section
 | 
						|
 | 
						|
--*/
 | 
						|
EFI_STATUS
 | 
						|
GetErasePolarity (
 | 
						|
  OUT BOOLEAN   *ErasePolarity
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function returns with the FV erase polarity.  If the erase polarity
 | 
						|
  for a bit is 1, the function return TRUE.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  ErasePolarity   A pointer to the erase polarity.
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_SUCCESS              The function completed successfully.
 | 
						|
  EFI_INVALID_PARAMETER    One of the input parameters was invalid.
 | 
						|
 | 
						|
--*/
 | 
						|
UINT8
 | 
						|
GetFileState (
 | 
						|
  IN BOOLEAN              ErasePolarity,
 | 
						|
  IN EFI_FFS_FILE_HEADER  *FfsHeader
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function returns a the highest state bit in the FFS that is set.
 | 
						|
  It in no way validate the FFS file.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  ErasePolarity The erase polarity for the file state bits.
 | 
						|
  FfsHeader     Pointer to a FFS file.
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  UINT8   The hightest set state of the file.
 | 
						|
 | 
						|
--*/
 | 
						|
#endif
 |