git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1676 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This file defines the data structures that comprise the FFS file system.
 | 
						|
 | 
						|
  Copyright (c) 2006, 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:  FirmwareFileSystem.h
 | 
						|
 | 
						|
  @par Revision Reference:
 | 
						|
  These definitions are from Firmware File System Spec 0.9.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EFI_FFS_FILE_SYSTEM_H__
 | 
						|
#define __EFI_FFS_FILE_SYSTEM_H__
 | 
						|
 | 
						|
///
 | 
						|
/// 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_HEADER_EXTENSION 0x04
 | 
						|
#define FFS_ATTRIB_DATA_ALIGNMENT   0x38
 | 
						|
#define FFS_ATTRIB_CHECKSUM         0x40
 | 
						|
 | 
						|
///
 | 
						|
/// 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) \
 | 
						|
        ) \
 | 
						|
    )
 | 
						|
 | 
						|
typedef UINT16  EFI_FFS_FILE_TAIL;
 | 
						|
 | 
						|
///
 | 
						|
/// FFS file integrity check structure
 | 
						|
///
 | 
						|
typedef union {
 | 
						|
  struct {
 | 
						|
    UINT8 Header;
 | 
						|
    UINT8 File;
 | 
						|
  } Checksum;
 | 
						|
  UINT16  TailReference;
 | 
						|
} 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
 |