mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 03:03:46 +01:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4964 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c) 2004 - 2007, Intel Corporation                                                         
 | |
| All rights reserved. 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.             
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|   EfiFirmwareFileSystem.h
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
|   This file defines the data structures that comprise the FFS file system.
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef _EFI_FFS_FILE_SYSTEM_H_
 | |
| #define _EFI_FFS_FILE_SYSTEM_H_
 | |
| 
 | |
| #include "EfiImageFormat.h"
 | |
| 
 | |
| //
 | |
| // GUIDs defined by the FFS specification.
 | |
| //
 | |
| #define EFI_FIRMWARE_FILE_SYSTEM_GUID \
 | |
|   { \
 | |
|     0x7A9354D9, 0x0468, 0x444a, {0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF} \
 | |
|   }
 | |
| 
 | |
| #define EFI_FFS_VOLUME_TOP_FILE_GUID \
 | |
|   { \
 | |
|     0x1BA0062E, 0xC779, 0x4582, {0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x9} \
 | |
|   }
 | |
| 
 | |
| //
 | |
| // FFS specific file types
 | |
| //
 | |
| #define EFI_FV_FILETYPE_FFS_PAD 0xF0
 | |
| 
 | |
| //
 | |
| // FFS File Attributes
 | |
| //
 | |
| #define FFS_ATTRIB_TAIL_PRESENT     0x01
 | |
| #define FFS_ATTRIB_RECOVERY         0x02
 | |
| #define FFS_ATTRIB_DATA_ALIGNMENT   0x38
 | |
| #define FFS_ATTRIB_CHECKSUM         0x40
 | |
| #if (PI_SPECIFICATION_VERSION < 0x00010000)
 | |
| #define FFS_ATTRIB_HEADER_EXTENSION 0x04
 | |
| #else
 | |
| //
 | |
| // PI 1.0 definition.
 | |
| // 
 | |
| #define FFS_ATTRIB_FIXED           0x04
 | |
| #endif
 | |
| 
 | |
| 
 | |
| //
 | |
| // FFS_FIXED_CHECKSUM is the default checksum value used when the
 | |
| // FFS_ATTRIB_CHECKSUM attribute bit is clear
 | |
| // note this is NOT an architecturally defined value, but is in this file for
 | |
| // implementation convenience
 | |
| //
 | |
| #define FFS_FIXED_CHECKSUM  0x5A
 | |
| 
 | |
| 
 | |
| //
 | |
| // File state definitions
 | |
| //
 | |
| #define EFI_FILE_HEADER_CONSTRUCTION  0x01
 | |
| #define EFI_FILE_HEADER_VALID         0x02
 | |
| #define EFI_FILE_DATA_VALID           0x04
 | |
| #define EFI_FILE_MARKED_FOR_UPDATE    0x08
 | |
| #define EFI_FILE_DELETED              0x10
 | |
| #define EFI_FILE_HEADER_INVALID       0x20
 | |
| 
 | |
| #define EFI_FILE_ALL_STATE_BITS       (EFI_FILE_HEADER_CONSTRUCTION | \
 | |
|                                  EFI_FILE_HEADER_VALID | \
 | |
|                                  EFI_FILE_DATA_VALID | \
 | |
|                                  EFI_FILE_MARKED_FOR_UPDATE | \
 | |
|                                  EFI_FILE_DELETED | \
 | |
|                                  EFI_FILE_HEADER_INVALID \
 | |
|           )
 | |
| 
 | |
| #define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \
 | |
|     ( \
 | |
|       (BOOLEAN) ( \
 | |
|           (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \
 | |
|         ) \
 | |
|     )
 | |
| 
 | |
| //
 | |
| // FFS file integrity check structure
 | |
| //
 | |
| typedef UINT16  EFI_FFS_FILE_TAIL;
 | |
| 
 | |
| typedef union {
 | |
|   struct {
 | |
|     UINT8 Header;
 | |
|     UINT8 File;
 | |
|   } Checksum;
 | |
| #if (PI_SPECIFICATION_VERSION < 0x00010000)  
 | |
|   UINT16  TailReference;
 | |
| #else
 | |
|   UINT16  Checksum16;
 | |
| #endif
 | |
| } EFI_FFS_INTEGRITY_CHECK;
 | |
| 
 | |
| //
 | |
| // FFS file header definition
 | |
| //
 | |
| typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
 | |
| typedef UINT8 EFI_FFS_FILE_STATE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_GUID                Name;
 | |
|   EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
 | |
|   EFI_FV_FILETYPE         Type;
 | |
|   EFI_FFS_FILE_ATTRIBUTES Attributes;
 | |
|   UINT8                   Size[3];
 | |
|   EFI_FFS_FILE_STATE      State;
 | |
| } EFI_FFS_FILE_HEADER;
 | |
| 
 | |
| #endif
 |