mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 16:45:30 +00:00 
			
		
		
		
	 2e351cbe8e
			
		
	
	
		2e351cbe8e
		
	
	
	
	
		
			
			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
 |