]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Sample/Tools/Source/GenFvImage/GenFvImageLibInternal.h
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / GenFvImage / GenFvImageLibInternal.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 GenFvImageLibInternal.h
15
16 Abstract:
17
18 This file contains describes the private declarations for the GenFvImage Library.
19 The basic purpose of the library is to create Firmware Volume images.
20
21 --*/
22
23 #ifndef _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
24 #define _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
25
26 //
27 // Include files
28 //
29 #include "GenFvImageLib.h"
30 #include <stdlib.h>
31 #include "EfiFirmwareVolumeHeader.h"
32
33 //
34 // Private data declarations
35 //
36 //
37 // The maximum number of block map entries supported by the library
38 //
39 #define MAX_NUMBER_OF_FV_BLOCKS 100
40
41 //
42 // The maximum number of files in the FV supported by the library
43 //
44 #define MAX_NUMBER_OF_FILES_IN_FV 1000
45 #define MAX_NUMBER_OF_COMPONENTS_IN_FV 10
46
47 #define FV_CAPACITY_INCREASE_UNIT 0x100000
48
49 //
50 // INF file strings
51 //
52 #define OPTIONS_SECTION_STRING "[options]"
53 #define ATTRIBUTES_SECTION_STRING "[attributes]"
54 #define FILES_SECTION_STRING "[files]"
55 #define COMPONENT_SECTION_STRING "[components]"
56
57 #define EFI_FV_BASE_ADDRESS_STRING "EFI_BASE_ADDRESS"
58 #define EFI_FV_FILE_NAME_STRING "EFI_FILE_NAME"
59 #define EFI_SYM_FILE_NAME_STRING "EFI_SYM_FILE_NAME"
60 #define EFI_NUM_BLOCKS_STRING "EFI_NUM_BLOCKS"
61 #define EFI_BLOCK_SIZE_STRING "EFI_BLOCK_SIZE"
62 #define EFI_FV_GUID_STRING "EFI_FV_GUID"
63
64 #define EFI_FVB_READ_DISABLED_CAP_STRING "EFI_READ_DISABLED_CAP"
65 #define EFI_FVB_READ_ENABLED_CAP_STRING "EFI_READ_ENABLED_CAP"
66 #define EFI_FVB_READ_STATUS_STRING "EFI_READ_STATUS"
67
68 #define EFI_FVB_WRITE_DISABLED_CAP_STRING "EFI_WRITE_DISABLED_CAP"
69 #define EFI_FVB_WRITE_ENABLED_CAP_STRING "EFI_WRITE_ENABLED_CAP"
70 #define EFI_FVB_WRITE_STATUS_STRING "EFI_WRITE_STATUS"
71
72 #define EFI_FVB_LOCK_CAP_STRING "EFI_LOCK_CAP"
73 #define EFI_FVB_LOCK_STATUS_STRING "EFI_LOCK_STATUS"
74
75 #define EFI_FVB_STICKY_WRITE_STRING "EFI_STICKY_WRITE"
76 #define EFI_FVB_MEMORY_MAPPED_STRING "EFI_MEMORY_MAPPED"
77 #define EFI_FVB_ERASE_POLARITY_STRING "EFI_ERASE_POLARITY"
78
79 #define EFI_FVB_ALIGNMENT_CAP_STRING "EFI_ALIGNMENT_CAP"
80 #define EFI_FVB_ALIGNMENT_2_STRING "EFI_ALIGNMENT_2"
81 #define EFI_FVB_ALIGNMENT_4_STRING "EFI_ALIGNMENT_4"
82 #define EFI_FVB_ALIGNMENT_8_STRING "EFI_ALIGNMENT_8"
83 #define EFI_FVB_ALIGNMENT_16_STRING "EFI_ALIGNMENT_16"
84 #define EFI_FVB_ALIGNMENT_32_STRING "EFI_ALIGNMENT_32"
85 #define EFI_FVB_ALIGNMENT_64_STRING "EFI_ALIGNMENT_64"
86 #define EFI_FVB_ALIGNMENT_128_STRING "EFI_ALIGNMENT_128"
87 #define EFI_FVB_ALIGNMENT_256_STRING "EFI_ALIGNMENT_256"
88 #define EFI_FVB_ALIGNMENT_512_STRING "EFI_ALIGNMENT_512"
89 #define EFI_FVB_ALIGNMENT_1K_STRING "EFI_ALIGNMENT_1K"
90 #define EFI_FVB_ALIGNMENT_2K_STRING "EFI_ALIGNMENT_2K"
91 #define EFI_FVB_ALIGNMENT_4K_STRING "EFI_ALIGNMENT_4K"
92 #define EFI_FVB_ALIGNMENT_8K_STRING "EFI_ALIGNMENT_8K"
93 #define EFI_FVB_ALIGNMENT_16K_STRING "EFI_ALIGNMENT_16K"
94 #define EFI_FVB_ALIGNMENT_32K_STRING "EFI_ALIGNMENT_32K"
95 #define EFI_FVB_ALIGNMENT_64K_STRING "EFI_ALIGNMENT_64K"
96
97 //
98 // Add these for PI1.0 new Attributes.
99 //
100 #define EFI_FVB_READ_LOCK_CAP_STRING "EFI_READ_LOCK_CAP"
101 #define EFI_FVB_READ_LOCK_STATUS_STRING "EFI_READ_LOCK_STATUS"
102 #define EFI_FVB_WRITE_LOCK_CAP_STRING "EFI_WRITE_LOCK_CAP"
103 #define EFI_FVB_WRITE_LOCK_STATUS_STRING "EFI_WRITE_LOCK_STATUS"
104 #define EFI_FVB2_ALIGNMENT_STRING "EFI_FVB2_ALIGNMENT"
105
106 #define EFI_FVB2_ALIGNMENT_1_STRING "1"
107 #define EFI_FVB2_ALIGNMENT_2_STRING "2"
108 #define EFI_FVB2_ALIGNMENT_4_STRING "4"
109 #define EFI_FVB2_ALIGNMENT_8_STRING "8"
110 #define EFI_FVB2_ALIGNMENT_16_STRING "16"
111 #define EFI_FVB2_ALIGNMENT_32_STRING "32"
112 #define EFI_FVB2_ALIGNMENT_64_STRING "64"
113 #define EFI_FVB2_ALIGNMENT_128_STRING "128"
114 #define EFI_FVB2_ALIGNMENT_256_STRING "256"
115 #define EFI_FVB2_ALIGNMENT_512_STRING "512"
116 #define EFI_FVB2_ALIGNMENT_1K_STRING "1K"
117 #define EFI_FVB2_ALIGNMENT_2K_STRING "2K"
118 #define EFI_FVB2_ALIGNMENT_4K_STRING "4K"
119 #define EFI_FVB2_ALIGNMENT_8K_STRING "8K"
120 #define EFI_FVB2_ALIGNMENT_16K_STRING "16K"
121 #define EFI_FVB2_ALIGNMENT_32K_STRING "32K"
122 #define EFI_FVB2_ALIGNMENT_64K_STRING "64K"
123 #define EFI_FVB2_ALIGNMENT_128K_STRING "128K"
124 #define EFI_FVB2_ALIGNMENT_256K_STRING "256K"
125 #define EFI_FVB2_ALIGNMENT_512K_STRING "512K"
126 #define EFI_FVB2_ALIGNMENT_1M_STRING "1M"
127 #define EFI_FVB2_ALIGNMENT_2M_STRING "2M"
128 #define EFI_FVB2_ALIGNMENT_4M_STRING "4M"
129 #define EFI_FVB2_ALIGNMENT_8M_STRING "8M"
130 #define EFI_FVB2_ALIGNMENT_16M_STRING "16M"
131 #define EFI_FVB2_ALIGNMENT_32M_STRING "32M"
132 #define EFI_FVB2_ALIGNMENT_64M_STRING "64M"
133 #define EFI_FVB2_ALIGNMENT_128M_STRING "128M"
134 #define EFI_FVB2_ALIGNMENT_256M_STRING "256M"
135 #define EFI_FVB2_ALIGNMENT_512M_STRING "512M"
136 #define EFI_FVB2_ALIGNMENT_1G_STRING "1G"
137 #define EFI_FVB2_ALIGNMENT_2G_STRING "2G"
138
139
140 //
141 // Component sections
142 //
143 #define EFI_NV_VARIABLE_STRING "EFI_NV_VARIABLE"
144 #define EFI_NV_EVENT_LOG_STRING "EFI_NV_EVENT_LOG"
145 #define EFI_NV_FTW_WORKING_STRING "EFI_NV_FTW_WORKING"
146 #define EFI_NV_FTW_SPARE_STRING "EFI_NV_FTW_SPARE"
147
148 #define EFI_FILE_NAME_STRING "EFI_FILE_NAME"
149
150 #define ONE_STRING "1"
151 #define ZERO_STRING "0"
152 #define TRUE_STRING "TRUE"
153 #define FALSE_STRING "FALSE"
154 #define NULL_STRING "NULL"
155 #define AUTO_STRING "AUTO"
156
157 //
158 // Defines to calculate the offset for PEI CORE entry points
159 //
160 #define IA32_PEI_CORE_ENTRY_OFFSET 0x20
161
162 //
163 // Defines to calculate the FIT table
164 //
165 #define IPF_FIT_ADDRESS_OFFSET 0x20
166
167 //
168 // Defines to calculate the offset for SALE_ENTRY
169 //
170 #define IPF_SALE_ENTRY_ADDRESS_OFFSET 0x18
171
172 //
173 // Symbol file definitions, current max size if 512K
174 //
175 #define SYMBOL_FILE_SIZE 0x80000
176
177 #define FV_IMAGES_TOP_ADDRESS 0x100000000
178
179 //
180 // Private data types
181 //
182 //
183 // Component information
184 //
185 typedef struct {
186 UINTN Size;
187 CHAR8 ComponentName[_MAX_PATH];
188 } COMPONENT_INFO;
189
190 //
191 // FV information holder
192 //
193 typedef struct {
194 EFI_PHYSICAL_ADDRESS BaseAddress;
195 EFI_GUID FvGuid;
196 UINTN Size;
197 CHAR8 FvName[_MAX_PATH];
198 CHAR8 SymName[_MAX_PATH];
199 EFI_FV_BLOCK_MAP_ENTRY FvBlocks[MAX_NUMBER_OF_FV_BLOCKS];
200 EFI_FVB_ATTRIBUTES FvAttributes;
201 CHAR8 FvFiles[MAX_NUMBER_OF_FILES_IN_FV][_MAX_PATH];
202 COMPONENT_INFO FvComponents[MAX_NUMBER_OF_COMPONENTS_IN_FV];
203 } FV_INFO;
204
205 //
206 // Private function prototypes
207 //
208 EFI_STATUS
209 ParseFvInf (
210 IN MEMORY_FILE *InfFile,
211 IN FV_INFO *FvInfo
212 )
213 ;
214
215 #endif