]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Framework/Include/EfiFirmwareFileSystem.h
EFI_FVB2_ALIGNMNET_512K should be EFI_FVB2_ALIGNMENT_512K.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Framework / Include / EfiFirmwareFileSystem.h
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