1 /** @file 2 Provides decompression services to the PEI Foundatoin. 3 4 Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 @par Revision Reference: 14 This PPI is introduced in PI Version 1.0. 15 16 **/ 17 18 #ifndef __DECOMPRESS_PPI_H__ 19 #define __DECOMPRESS_PPI_H__ 20 21 #define EFI_PEI_DECOMPRESS_PPI_GUID \ 22 { 0x1a36e4e7, 0xfab6, 0x476a, { 0x8e, 0x75, 0x69, 0x5a, 0x5, 0x76, 0xfd, 0xd7 } } 23 24 typedef struct _EFI_PEI_DECOMPRESS_PPI EFI_PEI_DECOMPRESS_PPI; 25 26 /** 27 Decompress a single compression section in a firmware file. 28 29 Decompresses the data in a compressed section and returns it 30 as a series of standard PI Firmware File Sections. The 31 required memory is allocated from permanent memory. 32 33 @param This Points to this instance of the 34 EFI_PEI_DECOMPRESS_PEI PPI. 35 @param InputSection Points to the compressed section. 36 @param OutputBuffer Holds the returned pointer to the 37 decompressed sections. 38 @param OutputSize Holds the returned size of the decompress 39 section streams. 40 41 @retval EFI_SUCCESS The section was decompressed 42 successfully. OutputBuffer contains the 43 resulting data and OutputSize contains 44 the resulting size. 45 @retval EFI_OUT_OF_RESOURCES Unable to allocate sufficient 46 memory to hold the decompressed data. 47 @retval EFI_UNSUPPORTED The compression type specified 48 in the compression header is unsupported. 49 50 **/ 51 typedef 52 EFI_STATUS 53 (EFIAPI *EFI_PEI_DECOMPRESS_DECOMPRESS)( 54 IN CONST EFI_PEI_DECOMPRESS_PPI *This, 55 IN CONST EFI_COMPRESSION_SECTION *InputSection, 56 OUT VOID **OutputBuffer, 57 OUT UINTN *OutputSize 58 ); 59 60 61 /// 62 /// This PPI's single member function decompresses a compression 63 /// encapsulated section. It is used by the PEI Foundation to 64 /// process sectioned files. Prior to the installation of this PPI, 65 /// compression sections will be ignored. 66 /// 67 struct _EFI_PEI_DECOMPRESS_PPI { 68 EFI_PEI_DECOMPRESS_DECOMPRESS Decompress; 69 }; 70 71 72 extern EFI_GUID gEfiPeiDecompressPpiGuid; 73 74 #endif 75