Home | History | Annotate | Download | only in Include
      1 /*++
      2 
      3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   EfiFirmwareFileSystem.h
     15 
     16 Abstract:
     17 
     18   This file defines the data structures that comprise the FFS file system.
     19 
     20 --*/
     21 
     22 #ifndef _EFI_FFS_FILE_SYSTEM_H_
     23 #define _EFI_FFS_FILE_SYSTEM_H_
     24 
     25 #include "EfiImageFormat.h"
     26 
     27 //
     28 // GUIDs defined by the FFS specification.
     29 //
     30 #define EFI_FIRMWARE_FILE_SYSTEM_GUID \
     31   { \
     32     0x7A9354D9, 0x0468, 0x444a, {0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF} \
     33   }
     34 
     35 #define EFI_FFS_VOLUME_TOP_FILE_GUID \
     36   { \
     37     0x1BA0062E, 0xC779, 0x4582, {0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x9} \
     38   }
     39 
     40 //
     41 // FFS specific file types
     42 //
     43 #define EFI_FV_FILETYPE_FFS_PAD 0xF0
     44 
     45 //
     46 // FFS File Attributes
     47 //
     48 #define FFS_ATTRIB_TAIL_PRESENT     0x01
     49 #define FFS_ATTRIB_RECOVERY         0x02
     50 #define FFS_ATTRIB_DATA_ALIGNMENT   0x38
     51 #define FFS_ATTRIB_CHECKSUM         0x40
     52 #if (PI_SPECIFICATION_VERSION < 0x00010000)
     53 #define FFS_ATTRIB_HEADER_EXTENSION 0x04
     54 #else
     55 //
     56 // PI 1.0 definition.
     57 //
     58 #define FFS_ATTRIB_FIXED           0x04
     59 #endif
     60 
     61 
     62 //
     63 // FFS_FIXED_CHECKSUM is the default checksum value used when the
     64 // FFS_ATTRIB_CHECKSUM attribute bit is clear
     65 // This value is defined in PI 1.2.
     66 //
     67 #define FFS_FIXED_CHECKSUM  0xAA
     68 
     69 
     70 //
     71 // File state definitions
     72 //
     73 #define EFI_FILE_HEADER_CONSTRUCTION  0x01
     74 #define EFI_FILE_HEADER_VALID         0x02
     75 #define EFI_FILE_DATA_VALID           0x04
     76 #define EFI_FILE_MARKED_FOR_UPDATE    0x08
     77 #define EFI_FILE_DELETED              0x10
     78 #define EFI_FILE_HEADER_INVALID       0x20
     79 
     80 #define EFI_FILE_ALL_STATE_BITS       (EFI_FILE_HEADER_CONSTRUCTION | \
     81                                  EFI_FILE_HEADER_VALID | \
     82                                  EFI_FILE_DATA_VALID | \
     83                                  EFI_FILE_MARKED_FOR_UPDATE | \
     84                                  EFI_FILE_DELETED | \
     85                                  EFI_FILE_HEADER_INVALID \
     86           )
     87 
     88 #define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \
     89     ( \
     90       (BOOLEAN) ( \
     91           (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \
     92         ) \
     93     )
     94 
     95 //
     96 // FFS file integrity check structure
     97 //
     98 typedef UINT16  EFI_FFS_FILE_TAIL;
     99 
    100 typedef union {
    101   struct {
    102     UINT8 Header;
    103     UINT8 File;
    104   } Checksum;
    105 #if (PI_SPECIFICATION_VERSION < 0x00010000)
    106   UINT16  TailReference;
    107 #else
    108   UINT16  Checksum16;
    109 #endif
    110 } EFI_FFS_INTEGRITY_CHECK;
    111 
    112 //
    113 // FFS file header definition
    114 //
    115 typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
    116 typedef UINT8 EFI_FFS_FILE_STATE;
    117 
    118 typedef struct {
    119   EFI_GUID                Name;
    120   EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
    121   EFI_FV_FILETYPE         Type;
    122   EFI_FFS_FILE_ATTRIBUTES Attributes;
    123   UINT8                   Size[3];
    124   EFI_FFS_FILE_STATE      State;
    125 } EFI_FFS_FILE_HEADER;
    126 
    127 #endif
    128