diff options
Diffstat (limited to 'EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h')
-rw-r--r-- | EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h b/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h new file mode 100644 index 0000000..0cd16f8 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h @@ -0,0 +1,131 @@ +/*++ + +Copyright (c) 2004, 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 +//;;## ...AMI_OVERRIDE... Support PI1.x +#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 +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define FFS_FIXED_CHECKSUM 0x5A +#else +#define FFS_FIXED_CHECKSUM 0xAA +#endif + +// +// 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; +//;;## ...AMI_OVERRIDE... Support PI1.x +#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 |