mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 20:43:59 +00:00 
			
		
		
		
	 9344f09215
			
		
	
	
		9344f09215
		
	
	
	
	
		
			
			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: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			103 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Provides services to decompress a buffer using the UEFI Decompress algorithm.
 | |
| 
 | |
|   The UEFI Decompress Library enables the decompression of objects that
 | |
|   were compressed using the UEFI compression scheme. The UEFI Decompress
 | |
|   Library is independent of environment and requires the caller to allocate
 | |
|   all required memory buffers.
 | |
| 
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __UEFI_DECPOMPRESS_LIB_H__
 | |
| #define __UEFI_DECPOMPRESS_LIB_H__
 | |
| 
 | |
| /**
 | |
|   Given a compressed source buffer, this function retrieves the size of
 | |
|   the uncompressed buffer and the size of the scratch buffer required
 | |
|   to decompress the compressed source buffer.
 | |
| 
 | |
|   Retrieves the size of the uncompressed buffer and the temporary scratch buffer
 | |
|   required to decompress the buffer specified by Source and SourceSize.
 | |
|   If the size of the uncompressed buffer or the size of the scratch buffer cannot
 | |
|   be determined from the compressed data specified by Source and SourceData,
 | |
|   then RETURN_INVALID_PARAMETER is returned.  Otherwise, the size of the uncompressed
 | |
|   buffer is returned in DestinationSize, the size of the scratch buffer is returned
 | |
|   in ScratchSize, and RETURN_SUCCESS is returned.
 | |
|   This function does not have scratch buffer available to perform a thorough
 | |
|   checking of the validity of the source data.  It just retrieves the "Original Size"
 | |
|   field from the beginning bytes of the source data and output it as DestinationSize.
 | |
|   And ScratchSize is specific to the decompression implementation.
 | |
| 
 | |
|   If Source is NULL, then ASSERT().
 | |
|   If DestinationSize is NULL, then ASSERT().
 | |
|   If ScratchSize is NULL, then ASSERT().
 | |
| 
 | |
|   @param  Source          The source buffer containing the compressed data.
 | |
|   @param  SourceSize      The size, in bytes, of the source buffer.
 | |
|   @param  DestinationSize A pointer to the size, in bytes, of the uncompressed buffer
 | |
|                           that will be generated when the compressed buffer specified
 | |
|                           by Source and SourceSize is decompressed.
 | |
|   @param  ScratchSize     A pointer to the size, in bytes, of the scratch buffer that
 | |
|                           is required to decompress the compressed buffer specified
 | |
|                           by Source and SourceSize.
 | |
| 
 | |
|   @retval  RETURN_SUCCESS The size of the uncompressed data was returned
 | |
|                           in DestinationSize and the size of the scratch
 | |
|                           buffer was returned in ScratchSize.
 | |
|   @retval  RETURN_INVALID_PARAMETER
 | |
|                           The size of the uncompressed data or the size of
 | |
|                           the scratch buffer cannot be determined from
 | |
|                           the compressed data specified by Source
 | |
|                           and SourceSize.
 | |
| **/
 | |
| RETURN_STATUS
 | |
| EFIAPI
 | |
| UefiDecompressGetInfo (
 | |
|   IN  CONST VOID  *Source,
 | |
|   IN  UINT32      SourceSize,
 | |
|   OUT UINT32      *DestinationSize,
 | |
|   OUT UINT32      *ScratchSize
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Decompresses a compressed source buffer.
 | |
| 
 | |
|   Extracts decompressed data to its original form.
 | |
|   This function is designed so that the decompression algorithm can be implemented
 | |
|   without using any memory services.  As a result, this function is not allowed to
 | |
|   call any memory allocation services in its implementation.  It is the caller's
 | |
|   responsibility to allocate and free the Destination and Scratch buffers.
 | |
|   If the compressed source data specified by Source is successfully decompressed
 | |
|   into Destination, then RETURN_SUCCESS is returned.  If the compressed source data
 | |
|   specified by Source is not in a valid compressed data format,
 | |
|   then RETURN_INVALID_PARAMETER is returned.
 | |
| 
 | |
|   If Source is NULL, then ASSERT().
 | |
|   If Destination is NULL, then ASSERT().
 | |
|   If the required scratch buffer size > 0 and Scratch is NULL, then ASSERT().
 | |
| 
 | |
|   @param  Source      The source buffer containing the compressed data.
 | |
|   @param  Destination The destination buffer to store the decompressed data
 | |
|   @param  Scratch     A temporary scratch buffer that is used to perform the decompression.
 | |
|                       This is an optional parameter that may be NULL if the
 | |
|                       required scratch buffer size is 0.
 | |
| 
 | |
|   @retval  RETURN_SUCCESS Decompression completed successfully, and
 | |
|                           the uncompressed buffer is returned in Destination.
 | |
|   @retval  RETURN_INVALID_PARAMETER
 | |
|                           The source buffer specified by Source is corrupted
 | |
|                           (not in a valid compressed format).
 | |
| **/
 | |
| RETURN_STATUS
 | |
| EFIAPI
 | |
| UefiDecompress (
 | |
|   IN CONST VOID  *Source,
 | |
|   IN OUT VOID    *Destination,
 | |
|   IN OUT VOID    *Scratch  OPTIONAL
 | |
|   );
 | |
| 
 | |
| #endif
 |