Firmware File System protocol. Layers on top of Firmware\r
Block protocol to produce a file abstraction of FV based files.\r
\r
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef __FW_VOL_DRIVER_H_\r
#define __FW_VOL_DRIVER_H_\r
\r
-\r
-#define FV2_DEVICE_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', '2')\r
+#define FV2_DEVICE_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', '2')\r
\r
//\r
// Used to track all non-deleted files\r
//\r
typedef struct {\r
- LIST_ENTRY Link;\r
- EFI_FFS_FILE_HEADER *FfsHeader;\r
- UINTN StreamHandle;\r
+ LIST_ENTRY Link;\r
+ EFI_FFS_FILE_HEADER *FfsHeader;\r
+ UINTN StreamHandle;\r
+ BOOLEAN FileCached;\r
} FFS_FILE_LIST_ENTRY;\r
\r
typedef struct {\r
- UINTN Signature;\r
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb;\r
- EFI_HANDLE Handle;\r
- EFI_FIRMWARE_VOLUME2_PROTOCOL Fv;\r
+ UINTN Signature;\r
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb;\r
+ EFI_HANDLE Handle;\r
+ EFI_FIRMWARE_VOLUME2_PROTOCOL Fv;\r
\r
- EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
- UINT8 *CachedFv;\r
- UINT8 *EndOfCachedFv;\r
+ EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
+ UINT8 *CachedFv;\r
+ UINT8 *EndOfCachedFv;\r
\r
- FFS_FILE_LIST_ENTRY *LastKey;\r
+ FFS_FILE_LIST_ENTRY *LastKey;\r
\r
- LIST_ENTRY FfsFileListHeader;\r
+ LIST_ENTRY FfsFileListHeader;\r
\r
- UINT8 ErasePolarity;\r
- BOOLEAN IsFfs3Fv;\r
+ UINT32 AuthenticationStatus;\r
+ UINT8 ErasePolarity;\r
+ BOOLEAN IsFfs3Fv;\r
+ BOOLEAN IsMemoryMapped;\r
} FV_DEVICE;\r
\r
-#define FV_DEVICE_FROM_THIS(a) CR(a, FV_DEVICE, Fv, FV2_DEVICE_SIGNATURE)\r
+#define FV_DEVICE_FROM_THIS(a) CR(a, FV_DEVICE, Fv, FV2_DEVICE_SIGNATURE)\r
\r
/**\r
Retrieves attributes, insures positive polarity of attribute bits, returns\r
EFI_STATUS\r
EFIAPI\r
FvGetVolumeAttributes (\r
- IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
- OUT EFI_FV_ATTRIBUTES *Attributes\r
+ IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
+ OUT EFI_FV_ATTRIBUTES *Attributes\r
);\r
\r
-\r
/**\r
Sets current attributes for volume\r
\r
IN OUT EFI_FV_ATTRIBUTES *Attributes\r
);\r
\r
-\r
/**\r
Given the input key, search for the next matching file in the volume.\r
\r
EFI_STATUS\r
EFIAPI\r
FvGetNextFile (\r
- IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
- IN OUT VOID *Key,\r
- IN OUT EFI_FV_FILETYPE *FileType,\r
- OUT EFI_GUID *NameGuid,\r
- OUT EFI_FV_FILE_ATTRIBUTES *Attributes,\r
- OUT UINTN *Size\r
+ IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
+ IN OUT VOID *Key,\r
+ IN OUT EFI_FV_FILETYPE *FileType,\r
+ OUT EFI_GUID *NameGuid,\r
+ OUT EFI_FV_FILE_ATTRIBUTES *Attributes,\r
+ OUT UINTN *Size\r
);\r
\r
-\r
-\r
/**\r
Locates a file in the firmware volume and\r
copies it to the supplied buffer.\r
EFI_STATUS\r
EFIAPI\r
FvReadFile (\r
- IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
- IN CONST EFI_GUID *NameGuid,\r
- IN OUT VOID **Buffer,\r
- IN OUT UINTN *BufferSize,\r
- OUT EFI_FV_FILETYPE *FoundType,\r
- OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes,\r
- OUT UINT32 *AuthenticationStatus\r
+ IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *NameGuid,\r
+ IN OUT VOID **Buffer,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT EFI_FV_FILETYPE *FoundType,\r
+ OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes,\r
+ OUT UINT32 *AuthenticationStatus\r
);\r
\r
-\r
/**\r
Locates a section in a given FFS File and\r
copies it to the supplied buffer (not including section header).\r
OUT UINT32 *AuthenticationStatus\r
);\r
\r
-\r
/**\r
Writes one or more files to the firmware volume.\r
\r
IN EFI_FV_WRITE_FILE_DATA *FileData\r
);\r
\r
-\r
/**\r
Return information of type InformationType for the requested firmware\r
volume.\r
EFI_STATUS\r
EFIAPI\r
FvGetVolumeInfo (\r
- IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
- IN CONST EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+ IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *InformationType,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
);\r
\r
-\r
-\r
/**\r
Set information of type InformationType for the requested firmware\r
volume.\r
EFI_STATUS\r
EFIAPI\r
FvSetVolumeInfo (\r
- IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
- IN CONST EFI_GUID *InformationType,\r
- IN UINTN BufferSize,\r
- IN CONST VOID *Buffer\r
+ IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *InformationType,\r
+ IN UINTN BufferSize,\r
+ IN CONST VOID *Buffer\r
);\r
\r
-\r
-\r
/**\r
Check if a block of buffer is erased.\r
\r
**/\r
BOOLEAN\r
IsBufferErased (\r
- IN UINT8 ErasePolarity,\r
- IN VOID *InBuffer,\r
- IN UINTN BufferSize\r
+ IN UINT8 ErasePolarity,\r
+ IN VOID *InBuffer,\r
+ IN UINTN BufferSize\r
);\r
\r
-\r
/**\r
Get the FFS file state by checking the highest bit set in the header's state field.\r
\r
IN EFI_FFS_FILE_HEADER *FfsHeader\r
);\r
\r
-\r
/**\r
Set the FFS file state.\r
\r
OUT EFI_FFS_FILE_STATE *FileState\r
);\r
\r
-\r
/**\r
Check if it's a valid FFS file.\r
Here we are sure that it has a valid FFS file header since we must call IsValidFfsHeader() first.\r
IN EFI_FFS_FILE_HEADER *FfsHeader\r
);\r
\r
-\r
-/**\r
- given the supplied FW_VOL_BLOCK_PROTOCOL, allocate a buffer for output and\r
- copy the volume header into it.\r
-\r
- @param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to\r
- read the volume header\r
- @param FwVolHeader Pointer to pointer to allocated buffer in which\r
- the volume header is returned.\r
-\r
- @retval EFI_OUT_OF_RESOURCES No enough buffer could be allocated.\r
- @retval EFI_SUCCESS Successfully read volume header to the allocated\r
- buffer.\r
-\r
-**/\r
-EFI_STATUS\r
-GetFwVolHeader (\r
- IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb,\r
- OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
- );\r
-\r
#endif\r