]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/Common/FvLib.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Source / C / Common / FvLib.h
1 /** @file
2 These functions assist in parsing and manipulating a Firmware Volume.
3
4 Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef _EFI_FV_LIB_H
10 #define _EFI_FV_LIB_H
11
12 //
13 // Include files
14 //
15 #include <string.h>
16
17 #include <Common/UefiBaseTypes.h>
18 #include <Common/PiFirmwareFile.h>
19 #include <Common/PiFirmwareVolume.h>
20
21 EFI_STATUS
22 InitializeFvLib (
23 IN VOID *Fv,
24 IN UINT32 FvLength
25 )
26 ;
27
28 EFI_STATUS
29 GetFvHeader (
30 OUT EFI_FIRMWARE_VOLUME_HEADER **FvHeader,
31 OUT UINT32 *FvLength
32 )
33 ;
34
35 EFI_STATUS
36 GetNextFile (
37 IN EFI_FFS_FILE_HEADER *CurrentFile,
38 OUT EFI_FFS_FILE_HEADER **NextFile
39 )
40 ;
41
42 EFI_STATUS
43 GetFileByName (
44 IN EFI_GUID *FileName,
45 OUT EFI_FFS_FILE_HEADER **File
46 )
47 ;
48
49 EFI_STATUS
50 GetFileByType (
51 IN EFI_FV_FILETYPE FileType,
52 IN UINTN Instance,
53 OUT EFI_FFS_FILE_HEADER **File
54 )
55 ;
56
57 EFI_STATUS
58 GetSectionByType (
59 IN EFI_FFS_FILE_HEADER *File,
60 IN EFI_SECTION_TYPE SectionType,
61 IN UINTN Instance,
62 OUT EFI_FILE_SECTION_POINTER *Section
63 )
64 ;
65 //
66 // will not parse compressed sections
67 //
68 EFI_STATUS
69 VerifyFv (
70 IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader
71 )
72 ;
73
74 EFI_STATUS
75 VerifyFfsFile (
76 IN EFI_FFS_FILE_HEADER *FfsHeader
77 )
78 ;
79
80 UINT32
81 GetFfsFileLength (
82 EFI_FFS_FILE_HEADER *FfsHeader
83 )
84 ;
85
86 UINT32
87 GetSectionFileLength (
88 EFI_COMMON_SECTION_HEADER *SectionHeader
89 )
90 ;
91
92 UINT32
93 GetFfsHeaderLength(
94 IN EFI_FFS_FILE_HEADER *FfsHeader
95 )
96 ;
97
98 UINT32
99 GetSectionHeaderLength(
100 IN EFI_COMMON_SECTION_HEADER *SectionHeader
101 )
102 ;
103
104 /*++
105
106 Routine Description:
107
108 Verify the current pointer points to a FFS file header.
109
110 Arguments:
111
112 FfsHeader Pointer to an alleged FFS file.
113
114 Returns:
115
116 EFI_SUCCESS The Ffs header is valid.
117 EFI_NOT_FOUND This "file" is the beginning of free space.
118 EFI_VOLUME_CORRUPTED The Ffs header is not valid.
119
120 --*/
121 UINT32
122 GetLength (
123 UINT8 *ThreeByteLength
124 )
125 ;
126
127 /*++
128
129 Routine Description:
130
131 Converts a three byte length value into a UINT32.
132
133 Arguments:
134
135 ThreeByteLength Pointer to the first of the 3 byte length.
136
137 Returns:
138
139 UINT32 Size of the section
140
141 --*/
142 EFI_STATUS
143 GetErasePolarity (
144 OUT BOOLEAN *ErasePolarity
145 )
146 ;
147
148 /*++
149
150 Routine Description:
151
152 This function returns with the FV erase polarity. If the erase polarity
153 for a bit is 1, the function return TRUE.
154
155 Arguments:
156
157 ErasePolarity A pointer to the erase polarity.
158
159 Returns:
160
161 EFI_SUCCESS The function completed successfully.
162 EFI_INVALID_PARAMETER One of the input parameters was invalid.
163
164 --*/
165 UINT8
166 GetFileState (
167 IN BOOLEAN ErasePolarity,
168 IN EFI_FFS_FILE_HEADER *FfsHeader
169 )
170 ;
171
172 /*++
173
174 Routine Description:
175
176 This function returns a the highest state bit in the FFS that is set.
177 It in no way validate the FFS file.
178
179 Arguments:
180
181 ErasePolarity The erase polarity for the file state bits.
182 FfsHeader Pointer to a FFS file.
183
184 Returns:
185
186 UINT8 The hightest set state of the file.
187
188 --*/
189 #endif