EmulatorPkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the EmulatorPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
e7108d0e96
commit
a550d468a6
@@ -25,11 +25,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
#include "FwBlockService.h"
|
||||
|
||||
ESAL_FWB_GLOBAL *mFvbModuleGlobal;
|
||||
ESAL_FWB_GLOBAL *mFvbModuleGlobal;
|
||||
|
||||
#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS)
|
||||
#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS)
|
||||
|
||||
EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = {
|
||||
EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = {
|
||||
FVB_DEVICE_SIGNATURE,
|
||||
{
|
||||
{
|
||||
@@ -67,14 +67,13 @@ EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
FvbVirtualddressChangeEvent (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -97,10 +96,10 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance;
|
||||
UINTN Index;
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance;
|
||||
UINTN Index;
|
||||
|
||||
EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal->FvInstance[FVB_VIRTUAL]);
|
||||
EfiConvertPointer (0x0, (VOID **)&mFvbModuleGlobal->FvInstance[FVB_VIRTUAL]);
|
||||
|
||||
//
|
||||
// Convert the base address of all the instances
|
||||
@@ -108,25 +107,26 @@ Returns:
|
||||
Index = 0;
|
||||
FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];
|
||||
while (Index < mFvbModuleGlobal->NumFv) {
|
||||
EfiConvertPointer (0x0, (VOID **) &FwhInstance->FvBase[FVB_VIRTUAL]);
|
||||
EfiConvertPointer (0x0, (VOID **)&FwhInstance->FvBase[FVB_VIRTUAL]);
|
||||
FwhInstance = (EFI_FW_VOL_INSTANCE *)
|
||||
(
|
||||
(UINTN) ((UINT8 *) FwhInstance) + FwhInstance->VolumeHeader.HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
(
|
||||
(UINTN)((UINT8 *)FwhInstance) + FwhInstance->VolumeHeader.HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
Index++;
|
||||
}
|
||||
|
||||
EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal);
|
||||
EfiConvertPointer (0x0, (VOID **)&mFvbModuleGlobal);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
GetFvbInstance (
|
||||
IN UINTN Instance,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
OUT EFI_FW_VOL_INSTANCE **FwhInstance,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
OUT EFI_FW_VOL_INSTANCE **FwhInstance,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -146,21 +146,22 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_INSTANCE *FwhRecord;
|
||||
EFI_FW_VOL_INSTANCE *FwhRecord;
|
||||
|
||||
if (Instance >= Global->NumFv) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
//
|
||||
// Find the right instance of the FVB private data
|
||||
//
|
||||
FwhRecord = Global->FvInstance[Virtual];
|
||||
while (Instance > 0) {
|
||||
FwhRecord = (EFI_FW_VOL_INSTANCE *)
|
||||
(
|
||||
(UINTN) ((UINT8 *) FwhRecord) + FwhRecord->VolumeHeader.HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
(
|
||||
(UINTN)((UINT8 *)FwhRecord) + FwhRecord->VolumeHeader.HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
Instance--;
|
||||
}
|
||||
|
||||
@@ -171,11 +172,12 @@ Returns:
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetPhysicalAddress (
|
||||
IN UINTN Instance,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -197,8 +199,8 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
EFI_STATUS Status;
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Find the right instance of the FVB private data
|
||||
@@ -212,11 +214,12 @@ Returns:
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetVolumeAttributes (
|
||||
IN UINTN Instance,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -237,8 +240,8 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
EFI_STATUS Status;
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Find the right instance of the FVB private data
|
||||
@@ -252,14 +255,15 @@ Returns:
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetLbaAddress (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *LbaAddress,
|
||||
OUT UINTN *LbaLength,
|
||||
OUT UINTN *NumOfBlocks,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *LbaAddress,
|
||||
OUT UINTN *LbaLength,
|
||||
OUT UINTN *NumOfBlocks,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -300,9 +304,9 @@ Returns:
|
||||
Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
StartLba = 0;
|
||||
Offset = 0;
|
||||
BlockMap = &(FwhInstance->VolumeHeader.BlockMap[0]);
|
||||
StartLba = 0;
|
||||
Offset = 0;
|
||||
BlockMap = &(FwhInstance->VolumeHeader.BlockMap[0]);
|
||||
|
||||
//
|
||||
// Parse the blockmap of the FV to find which map entry the Lba belongs to
|
||||
@@ -311,7 +315,7 @@ Returns:
|
||||
NumBlocks = BlockMap->NumBlocks;
|
||||
BlockLength = BlockMap->Length;
|
||||
|
||||
if (NumBlocks == 0 || BlockLength == 0) {
|
||||
if ((NumBlocks == 0) || (BlockLength == 0)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
@@ -320,8 +324,8 @@ Returns:
|
||||
//
|
||||
// The map entry found
|
||||
//
|
||||
if (Lba >= StartLba && Lba < NextLba) {
|
||||
Offset = Offset + (UINTN) MultU64x32 ((Lba - StartLba), BlockLength);
|
||||
if ((Lba >= StartLba) && (Lba < NextLba)) {
|
||||
Offset = Offset + (UINTN)MultU64x32 ((Lba - StartLba), BlockLength);
|
||||
if (LbaAddress != NULL) {
|
||||
*LbaAddress = FwhInstance->FvBase[Virtual] + Offset;
|
||||
}
|
||||
@@ -331,28 +335,29 @@ Returns:
|
||||
}
|
||||
|
||||
if (NumOfBlocks != NULL) {
|
||||
*NumOfBlocks = (UINTN) (NextLba - Lba);
|
||||
*NumOfBlocks = (UINTN)(NextLba - Lba);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
StartLba = NextLba;
|
||||
Offset = Offset + NumBlocks * BlockLength;
|
||||
StartLba = NextLba;
|
||||
Offset = Offset + NumBlocks * BlockLength;
|
||||
BlockMap++;
|
||||
}
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbReadBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -385,9 +390,9 @@ Returns:
|
||||
**/
|
||||
{
|
||||
EFI_FVB_ATTRIBUTES_2 Attributes;
|
||||
UINTN LbaAddress;
|
||||
UINTN LbaLength;
|
||||
EFI_STATUS Status;
|
||||
UINTN LbaAddress;
|
||||
UINTN LbaLength;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Check for invalid conditions
|
||||
@@ -404,6 +409,7 @@ Returns:
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if the FV is read enabled
|
||||
//
|
||||
@@ -412,6 +418,7 @@ Returns:
|
||||
if ((Attributes & EFI_FVB2_READ_STATUS) == 0) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
//
|
||||
// Perform boundary checks and adjust NumBytes
|
||||
//
|
||||
@@ -420,25 +427,26 @@ Returns:
|
||||
}
|
||||
|
||||
if (LbaLength < (*NumBytes + BlockOffset)) {
|
||||
*NumBytes = (UINT32) (LbaLength - BlockOffset);
|
||||
*NumBytes = (UINT32)(LbaLength - BlockOffset);
|
||||
Status = EFI_BAD_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
CopyMem (Buffer, (UINT8 *) (LbaAddress + BlockOffset), (UINTN) (*NumBytes));
|
||||
CopyMem (Buffer, (UINT8 *)(LbaAddress + BlockOffset), (UINTN)(*NumBytes));
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbWriteBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -470,9 +478,9 @@ Returns:
|
||||
**/
|
||||
{
|
||||
EFI_FVB_ATTRIBUTES_2 Attributes;
|
||||
UINTN LbaAddress;
|
||||
UINTN LbaLength;
|
||||
EFI_STATUS Status;
|
||||
UINTN LbaAddress;
|
||||
UINTN LbaLength;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Check for invalid conditions
|
||||
@@ -489,6 +497,7 @@ Returns:
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if the FV is write enabled
|
||||
//
|
||||
@@ -497,6 +506,7 @@ Returns:
|
||||
if ((Attributes & EFI_FVB2_WRITE_STATUS) == 0) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
//
|
||||
// Perform boundary checks and adjust NumBytes
|
||||
//
|
||||
@@ -505,24 +515,26 @@ Returns:
|
||||
}
|
||||
|
||||
if (LbaLength < (*NumBytes + BlockOffset)) {
|
||||
*NumBytes = (UINT32) (LbaLength - BlockOffset);
|
||||
*NumBytes = (UINT32)(LbaLength - BlockOffset);
|
||||
Status = EFI_BAD_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
//
|
||||
// Write data
|
||||
//
|
||||
CopyMem ((UINT8 *) (LbaAddress + BlockOffset), Buffer, (UINTN) (*NumBytes));
|
||||
CopyMem ((UINT8 *)(LbaAddress + BlockOffset), Buffer, (UINTN)(*NumBytes));
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbEraseBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -545,7 +557,6 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
|
||||
EFI_FVB_ATTRIBUTES_2 Attributes;
|
||||
UINTN LbaAddress;
|
||||
UINTN LbaLength;
|
||||
@@ -560,6 +571,7 @@ Returns:
|
||||
if ((Attributes & EFI_FVB2_WRITE_STATUS) == 0) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
//
|
||||
// Get the starting address of the block for erase.
|
||||
//
|
||||
@@ -575,18 +587,19 @@ Returns:
|
||||
Data = 0x0;
|
||||
}
|
||||
|
||||
SetMem ((UINT8 *) LbaAddress, LbaLength, Data);
|
||||
SetMem ((UINT8 *)LbaAddress, LbaLength, Data);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbSetVolumeAttributes (
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -622,14 +635,13 @@ Returns:
|
||||
EFI_STATUS Status;
|
||||
EFI_FVB_ATTRIBUTES_2 UnchangedAttributes;
|
||||
|
||||
|
||||
//
|
||||
// Find the right instance of the FVB private data
|
||||
//
|
||||
Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
AttribPtr = (EFI_FVB_ATTRIBUTES_2 *) &(FwhInstance->VolumeHeader.Attributes);
|
||||
AttribPtr = (EFI_FVB_ATTRIBUTES_2 *)&(FwhInstance->VolumeHeader.Attributes);
|
||||
OldAttributes = *AttribPtr;
|
||||
Capabilities = OldAttributes & (EFI_FVB2_READ_DISABLED_CAP | \
|
||||
EFI_FVB2_READ_ENABLED_CAP | \
|
||||
@@ -638,8 +650,8 @@ Returns:
|
||||
EFI_FVB2_LOCK_CAP \
|
||||
);
|
||||
|
||||
OldStatus = OldAttributes & EFI_FVB2_STATUS;
|
||||
NewStatus = *Attributes & EFI_FVB2_STATUS;
|
||||
OldStatus = OldAttributes & EFI_FVB2_STATUS;
|
||||
NewStatus = *Attributes & EFI_FVB2_STATUS;
|
||||
UnchangedAttributes = EFI_FVB2_READ_DISABLED_CAP | \
|
||||
EFI_FVB2_READ_ENABLED_CAP | \
|
||||
EFI_FVB2_WRITE_DISABLED_CAP | \
|
||||
@@ -667,6 +679,7 @@ Returns:
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Test read disable
|
||||
//
|
||||
@@ -675,6 +688,7 @@ Returns:
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Test read enable
|
||||
//
|
||||
@@ -683,6 +697,7 @@ Returns:
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Test write disable
|
||||
//
|
||||
@@ -691,6 +706,7 @@ Returns:
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Test write enable
|
||||
//
|
||||
@@ -699,6 +715,7 @@ Returns:
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Test lock
|
||||
//
|
||||
@@ -714,15 +731,17 @@ Returns:
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// FVB protocol APIs
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetPhysicalAddress (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -741,7 +760,7 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
@@ -751,11 +770,12 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetBlockSize (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *BlockSize,
|
||||
OUT UINTN *NumOfBlocks
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *BlockSize,
|
||||
OUT UINTN *NumOfBlocks
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -777,27 +797,28 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
return FvbGetLbaAddress (
|
||||
FvbDevice->Instance,
|
||||
Lba,
|
||||
NULL,
|
||||
BlockSize,
|
||||
NumOfBlocks,
|
||||
mFvbModuleGlobal,
|
||||
EfiGoneVirtual ()
|
||||
);
|
||||
FvbDevice->Instance,
|
||||
Lba,
|
||||
NULL,
|
||||
BlockSize,
|
||||
NumOfBlocks,
|
||||
mFvbModuleGlobal,
|
||||
EfiGoneVirtual ()
|
||||
);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetAttributes (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -812,7 +833,7 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
@@ -822,9 +843,10 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolSetAttributes (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -839,7 +861,7 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
@@ -849,9 +871,10 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolEraseBlocks (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
...
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -877,17 +900,17 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
UINTN NumOfBlocks;
|
||||
VA_LIST args;
|
||||
EFI_LBA StartingLba;
|
||||
UINTN NumOfLba;
|
||||
EFI_STATUS Status;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_INSTANCE *FwhInstance = NULL;
|
||||
UINTN NumOfBlocks;
|
||||
VA_LIST args;
|
||||
EFI_LBA StartingLba;
|
||||
UINTN NumOfLba;
|
||||
EFI_STATUS Status;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
Status = GetFvbInstance (FvbDevice->Instance, mFvbModuleGlobal, &FwhInstance, EfiGoneVirtual ());
|
||||
Status = GetFvbInstance (FvbDevice->Instance, mFvbModuleGlobal, &FwhInstance, EfiGoneVirtual ());
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
NumOfBlocks = FwhInstance->NumOfBlocks;
|
||||
@@ -905,7 +928,7 @@ Returns:
|
||||
//
|
||||
// Check input parameters
|
||||
//
|
||||
if (NumOfLba == 0 || (StartingLba + NumOfLba) > NumOfBlocks) {
|
||||
if ((NumOfLba == 0) || ((StartingLba + NumOfLba) > NumOfBlocks)) {
|
||||
VA_END (args);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -932,7 +955,6 @@ Returns:
|
||||
StartingLba++;
|
||||
NumOfLba--;
|
||||
}
|
||||
|
||||
} while (1);
|
||||
|
||||
VA_END (args);
|
||||
@@ -943,12 +965,13 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolWrite (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -980,8 +1003,7 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
@@ -991,12 +1013,13 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolRead (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -1029,17 +1052,18 @@ Returns:
|
||||
|
||||
**/
|
||||
{
|
||||
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_DEVICE_FROM_THIS (This);
|
||||
|
||||
return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ());
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
ValidateFvHeader (
|
||||
EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader
|
||||
EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -1065,17 +1089,19 @@ Returns:
|
||||
//
|
||||
if ((FwVolHeader->Revision != EFI_FVH_REVISION) ||
|
||||
(FwVolHeader->Signature != EFI_FVH_SIGNATURE) ||
|
||||
(FwVolHeader->FvLength == ((UINTN) -1)) ||
|
||||
(FwVolHeader->FvLength == ((UINTN)-1)) ||
|
||||
((FwVolHeader->HeaderLength & 0x01) != 0)
|
||||
) {
|
||||
)
|
||||
{
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
//
|
||||
// Verify the header checksum
|
||||
//
|
||||
HeaderLength = (UINT16) (FwVolHeader->HeaderLength / 2);
|
||||
Ptr = (UINT16 *) FwVolHeader;
|
||||
Checksum = 0;
|
||||
HeaderLength = (UINT16)(FwVolHeader->HeaderLength / 2);
|
||||
Ptr = (UINT16 *)FwVolHeader;
|
||||
Checksum = 0;
|
||||
while (HeaderLength > 0) {
|
||||
Checksum = Checksum + (*Ptr);
|
||||
HeaderLength--;
|
||||
@@ -1092,9 +1118,10 @@ Returns:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbInitialize (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -1124,7 +1151,7 @@ Returns:
|
||||
UINTN NumOfBlocks;
|
||||
EFI_PEI_HOB_POINTERS FvHob;
|
||||
|
||||
//
|
||||
//
|
||||
// Get the DXE services table
|
||||
//
|
||||
DxeServices = gDS;
|
||||
@@ -1136,14 +1163,14 @@ Returns:
|
||||
Status = gBS->AllocatePool (
|
||||
EfiRuntimeServicesData,
|
||||
sizeof (ESAL_FWB_GLOBAL),
|
||||
(VOID**) &mFvbModuleGlobal
|
||||
(VOID **)&mFvbModuleGlobal
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Calculate the total size for all firmware volume block instances
|
||||
//
|
||||
BufferSize = 0;
|
||||
BufferSize = 0;
|
||||
|
||||
FvHob.Raw = GetHobList ();
|
||||
while ((FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw)) != NULL) {
|
||||
@@ -1165,7 +1192,7 @@ Returns:
|
||||
continue;
|
||||
}
|
||||
|
||||
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;
|
||||
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)BaseAddress;
|
||||
Status = ValidateFvHeader (FwVolHeader);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
@@ -1179,7 +1206,7 @@ Returns:
|
||||
}
|
||||
|
||||
BufferSize += (sizeof (EFI_FW_VOL_INSTANCE) + FwVolHeader->HeaderLength - sizeof (EFI_FIRMWARE_VOLUME_HEADER));
|
||||
FvHob.Raw = GET_NEXT_HOB (FvHob);
|
||||
FvHob.Raw = GET_NEXT_HOB (FvHob);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -1190,18 +1217,18 @@ Returns:
|
||||
Status = gBS->AllocatePool (
|
||||
EfiRuntimeServicesData,
|
||||
BufferSize,
|
||||
(VOID**) &mFvbModuleGlobal->FvInstance[FVB_PHYSICAL]
|
||||
(VOID **)&mFvbModuleGlobal->FvInstance[FVB_PHYSICAL]
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Make a virtual copy of the FvInstance pointer.
|
||||
//
|
||||
FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];
|
||||
FwhInstance = mFvbModuleGlobal->FvInstance[FVB_PHYSICAL];
|
||||
mFvbModuleGlobal->FvInstance[FVB_VIRTUAL] = FwhInstance;
|
||||
|
||||
mFvbModuleGlobal->NumFv = 0;
|
||||
MaxLbaSize = 0;
|
||||
mFvbModuleGlobal->NumFv = 0;
|
||||
MaxLbaSize = 0;
|
||||
|
||||
FvHob.Raw = GetHobList ();
|
||||
while (NULL != (FvHob.Raw = GetNextHob (EFI_HOB_TYPE_FV, FvHob.Raw))) {
|
||||
@@ -1223,7 +1250,7 @@ Returns:
|
||||
continue;
|
||||
}
|
||||
|
||||
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;
|
||||
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)BaseAddress;
|
||||
Status = ValidateFvHeader (FwVolHeader);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
@@ -1234,20 +1261,21 @@ Returns:
|
||||
FvHob.Raw = GET_NEXT_HOB (FvHob);
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Write healthy FV header back.
|
||||
//
|
||||
CopyMem (
|
||||
(VOID *) (UINTN) BaseAddress,
|
||||
(VOID *) FwVolHeader,
|
||||
(VOID *)(UINTN)BaseAddress,
|
||||
(VOID *)FwVolHeader,
|
||||
FwVolHeader->HeaderLength
|
||||
);
|
||||
}
|
||||
|
||||
FwhInstance->FvBase[FVB_PHYSICAL] = (UINTN) BaseAddress;
|
||||
FwhInstance->FvBase[FVB_VIRTUAL] = (UINTN) BaseAddress;
|
||||
FwhInstance->FvBase[FVB_PHYSICAL] = (UINTN)BaseAddress;
|
||||
FwhInstance->FvBase[FVB_VIRTUAL] = (UINTN)BaseAddress;
|
||||
|
||||
CopyMem ((UINTN *) &(FwhInstance->VolumeHeader), (UINTN *) FwVolHeader, FwVolHeader->HeaderLength);
|
||||
CopyMem ((UINTN *)&(FwhInstance->VolumeHeader), (UINTN *)FwVolHeader, FwVolHeader->HeaderLength);
|
||||
FwVolHeader = &(FwhInstance->VolumeHeader);
|
||||
EfiInitializeLock (&(FwhInstance->FvbDevLock), TPL_HIGH_LEVEL);
|
||||
|
||||
@@ -1265,6 +1293,7 @@ Returns:
|
||||
|
||||
NumOfBlocks = NumOfBlocks + PtrBlockMapEntry->NumBlocks;
|
||||
}
|
||||
|
||||
//
|
||||
// The total number of blocks in the FV.
|
||||
//
|
||||
@@ -1276,7 +1305,7 @@ Returns:
|
||||
Status = gBS->AllocatePool (
|
||||
EfiRuntimeServicesData,
|
||||
sizeof (EFI_FW_VOL_BLOCK_DEVICE),
|
||||
(VOID**) &FvbDevice
|
||||
(VOID **)&FvbDevice
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
@@ -1294,7 +1323,7 @@ Returns:
|
||||
//
|
||||
// Find a handle with a matching device path that has supports FW Block protocol
|
||||
//
|
||||
TempFwbDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &TempFvbDevicePathData;
|
||||
TempFwbDevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&TempFvbDevicePathData;
|
||||
CopyMem (TempFwbDevicePath, &FvbDevice->DevicePath, sizeof (FV_DEVICE_PATH));
|
||||
Status = gBS->LocateDevicePath (&gEfiFirmwareVolumeBlockProtocolGuid, &TempFwbDevicePath, &FwbHandle);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -1302,14 +1331,14 @@ Returns:
|
||||
// LocateDevicePath fails so install a new interface and device path
|
||||
//
|
||||
FwbHandle = NULL;
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&FwbHandle,
|
||||
&gEfiFirmwareVolumeBlockProtocolGuid,
|
||||
&FvbDevice->FwVolBlockInstance,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&FvbDevice->DevicePath,
|
||||
NULL
|
||||
);
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&FwbHandle,
|
||||
&gEfiFirmwareVolumeBlockProtocolGuid,
|
||||
&FvbDevice->FwVolBlockInstance,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&FvbDevice->DevicePath,
|
||||
NULL
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
} else if (IsDevicePathEnd (TempFwbDevicePath)) {
|
||||
//
|
||||
@@ -1318,7 +1347,7 @@ Returns:
|
||||
Status = gBS->HandleProtocol (
|
||||
FwbHandle,
|
||||
&gEfiFirmwareVolumeBlockProtocolGuid,
|
||||
(VOID**)&OldFwbInterface
|
||||
(VOID **)&OldFwbInterface
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
@@ -1329,7 +1358,6 @@ Returns:
|
||||
&FvbDevice->FwVolBlockInstance
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
} else {
|
||||
//
|
||||
// There was a FVB protocol on an End Device Path node
|
||||
@@ -1338,10 +1366,10 @@ Returns:
|
||||
}
|
||||
|
||||
FwhInstance = (EFI_FW_VOL_INSTANCE *)
|
||||
(
|
||||
(UINTN) ((UINT8 *) FwhInstance) + FwVolHeader->HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
(
|
||||
(UINTN)((UINT8 *)FwhInstance) + FwVolHeader->HeaderLength +
|
||||
(sizeof (EFI_FW_VOL_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER))
|
||||
);
|
||||
|
||||
FvHob.Raw = GET_NEXT_HOB (FvHob);
|
||||
}
|
||||
|
@@ -31,14 +31,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINT64 FvLength;
|
||||
EFI_FIRMWARE_VOLUME_HEADER FvbInfo;
|
||||
UINT64 FvLength;
|
||||
EFI_FIRMWARE_VOLUME_HEADER FvbInfo;
|
||||
//
|
||||
// EFI_FV_BLOCK_MAP_ENTRY ExtraBlockMap[n];//n=0
|
||||
//
|
||||
EFI_FV_BLOCK_MAP_ENTRY End[1];
|
||||
EFI_FV_BLOCK_MAP_ENTRY End[1];
|
||||
} EFI_FVB_MEDIA_INFO;
|
||||
|
||||
EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
@@ -55,10 +54,10 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
FixedPcdGet32 (PcdEmuFlashFvRecoverySize),
|
||||
EFI_FVH_SIGNATURE,
|
||||
EFI_FVB2_READ_ENABLED_CAP |
|
||||
EFI_FVB2_READ_STATUS |
|
||||
EFI_FVB2_WRITE_ENABLED_CAP |
|
||||
EFI_FVB2_WRITE_STATUS |
|
||||
EFI_FVB2_ERASE_POLARITY,
|
||||
EFI_FVB2_READ_STATUS |
|
||||
EFI_FVB2_WRITE_ENABLED_CAP |
|
||||
EFI_FVB2_WRITE_STATUS |
|
||||
EFI_FVB2_ERASE_POLARITY,
|
||||
sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),
|
||||
0, // CheckSum
|
||||
0, // ExtHeaderOffset
|
||||
@@ -99,10 +98,10 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize),
|
||||
EFI_FVH_SIGNATURE,
|
||||
EFI_FVB2_READ_ENABLED_CAP |
|
||||
EFI_FVB2_READ_STATUS |
|
||||
EFI_FVB2_WRITE_ENABLED_CAP |
|
||||
EFI_FVB2_WRITE_STATUS |
|
||||
EFI_FVB2_ERASE_POLARITY,
|
||||
EFI_FVB2_READ_STATUS |
|
||||
EFI_FVB2_WRITE_ENABLED_CAP |
|
||||
EFI_FVB2_WRITE_STATUS |
|
||||
EFI_FVB2_ERASE_POLARITY,
|
||||
sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),
|
||||
0, // CheckSum
|
||||
0, // ExtHeaderOffset
|
||||
@@ -113,9 +112,9 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
{
|
||||
{
|
||||
(FixedPcdGet32 (PcdFlashNvStorageVariableSize) + \
|
||||
FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \
|
||||
FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) + \
|
||||
FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize)) / FixedPcdGet32 (PcdEmuFirmwareBlockSize),
|
||||
FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \
|
||||
FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) + \
|
||||
FixedPcdGet32 (PcdEmuFlashNvStorageEventLogSize)) / FixedPcdGet32 (PcdEmuFirmwareBlockSize),
|
||||
FixedPcdGet32 (PcdEmuFirmwareBlockSize),
|
||||
}
|
||||
}
|
||||
@@ -131,11 +130,11 @@ EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {
|
||||
|
||||
EFI_STATUS
|
||||
GetFvbInfo (
|
||||
IN UINT64 FvLength,
|
||||
OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
|
||||
IN UINT64 FvLength,
|
||||
OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
|
||||
)
|
||||
{
|
||||
UINTN Index;
|
||||
UINTN Index;
|
||||
|
||||
for (Index = 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof (EFI_FVB_MEDIA_INFO); Index += 1) {
|
||||
if (mPlatformFvbMediaInfo[Index].FvLength == FvLength) {
|
||||
|
@@ -17,15 +17,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#define FVB_VIRTUAL 1
|
||||
|
||||
typedef struct {
|
||||
EFI_LOCK FvbDevLock;
|
||||
UINTN FvBase[2];
|
||||
UINTN NumOfBlocks;
|
||||
EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;
|
||||
EFI_LOCK FvbDevLock;
|
||||
UINTN FvBase[2];
|
||||
UINTN NumOfBlocks;
|
||||
EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;
|
||||
} EFI_FW_VOL_INSTANCE;
|
||||
|
||||
typedef struct {
|
||||
UINT32 NumFv;
|
||||
EFI_FW_VOL_INSTANCE *FvInstance[2];
|
||||
UINT32 NumFv;
|
||||
EFI_FW_VOL_INSTANCE *FvInstance[2];
|
||||
} ESAL_FWB_GLOBAL;
|
||||
|
||||
//
|
||||
@@ -33,113 +33,112 @@ typedef struct {
|
||||
//
|
||||
#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
|
||||
#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)
|
||||
#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
|
||||
#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
|
||||
|
||||
typedef struct {
|
||||
MEMMAP_DEVICE_PATH MemMapDevPath;
|
||||
EFI_DEVICE_PATH_PROTOCOL EndDevPath;
|
||||
MEMMAP_DEVICE_PATH MemMapDevPath;
|
||||
EFI_DEVICE_PATH_PROTOCOL EndDevPath;
|
||||
} FV_DEVICE_PATH;
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
FV_DEVICE_PATH DevicePath;
|
||||
UINTN Instance;
|
||||
EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
|
||||
UINTN Signature;
|
||||
FV_DEVICE_PATH DevicePath;
|
||||
UINTN Instance;
|
||||
EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
|
||||
} EFI_FW_VOL_BLOCK_DEVICE;
|
||||
|
||||
EFI_STATUS
|
||||
GetFvbInfo (
|
||||
IN UINT64 FvLength,
|
||||
OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
|
||||
IN UINT64 FvLength,
|
||||
OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbReadBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbWriteBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BlockOffset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbEraseBlock (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbSetVolumeAttributes (
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetVolumeAttributes (
|
||||
IN UINTN Instance,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetPhysicalAddress (
|
||||
IN UINTN Instance,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbInitialize (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
FvbClassAddressChangeEvent (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
FvbGetLbaAddress (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *LbaAddress,
|
||||
OUT UINTN *LbaLength,
|
||||
OUT UINTN *NumOfBlocks,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *LbaAddress,
|
||||
OUT UINTN *LbaLength,
|
||||
OUT UINTN *NumOfBlocks,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
;
|
||||
|
||||
@@ -149,63 +148,63 @@ FvbGetLbaAddress (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetAttributes (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolSetAttributes (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetPhysicalAddress (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Address
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolGetBlockSize (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *BlockSize,
|
||||
OUT UINTN *NumOfBlocks
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
OUT UINTN *BlockSize,
|
||||
OUT UINTN *NumOfBlocks
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolRead (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolWrite (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN Offset,
|
||||
IN OUT UINTN *NumBytes,
|
||||
IN UINT8 *Buffer
|
||||
)
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbProtocolEraseBlocks (
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
|
||||
...
|
||||
)
|
||||
;
|
||||
|
Reference in New Issue
Block a user