diff options
Diffstat (limited to 'MdeModulePkg/Include/Protocol/SwapAddressRange.h')
| -rw-r--r-- | MdeModulePkg/Include/Protocol/SwapAddressRange.h | 328 |
1 files changed, 164 insertions, 164 deletions
diff --git a/MdeModulePkg/Include/Protocol/SwapAddressRange.h b/MdeModulePkg/Include/Protocol/SwapAddressRange.h index 053987767a..88f4d2a0da 100644 --- a/MdeModulePkg/Include/Protocol/SwapAddressRange.h +++ b/MdeModulePkg/Include/Protocol/SwapAddressRange.h @@ -1,164 +1,164 @@ -/** @file
-The EFI_SWAP_ADDRESS_RANGE_PROTOCOL is used to abstract the swap operation of boot block
-and backup block of FV. This swap is especially needed when updating the boot block of FV. If a
-power failure happens during the boot block update, the swapped backup block (now the boot block)
-can boot the machine with the old boot block backed up in it. The swap operation is platform dependent, so
-other protocols such as FTW (Fault Tolerant Write) should use this protocol instead of handling hardware directly.
-
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _EFI_SWAP_ADDRESS_RANGE_PROTOCOL_H_
-#define _EFI_SWAP_ADDRESS_RANGE_PROTOCOL_H_
-
-#define EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID \
- { \
- 0x1259f60d, 0xb754, 0x468e, {0xa7, 0x89, 0x4d, 0xb8, 0x5d, 0x55, 0xe8, 0x7e } \
- }
-
-//
-// Forward reference for pure ANSI compatability
-//
-typedef struct _EFI_SWAP_ADDRESS_RANGE_PROTOCOL EFI_SWAP_ADDRESS_RANGE_PROTOCOL;
-
-#define EFI_UNSUPPORT_LOCK 0
-#define EFI_SOFTWARE_LOCK 1
-#define EFI_HARDWARE_LOCK 2
-
-typedef UINT8 EFI_SWAP_LOCK_CAPABILITY;
-
-//
-// Protocol APIs
-//
-
-/**
- This function gets the address range location of
- boot block and backup block.
-
- @param This Indicates the calling context.
- @param BootBlockBase The base address of current boot block.
- @param BootBlockSize The size (in bytes) of current boot block.
- @param BackupBlockBase The base address of current backup block.
- @param BackupBlockSize The size (in bytes) of current backup block.
-
- @retval EFI_SUCCESS The call was successful.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_RANGE_LOCATION)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- OUT EFI_PHYSICAL_ADDRESS *BootBlockBase,
- OUT UINTN *BootBlockSize,
- OUT EFI_PHYSICAL_ADDRESS *BackupBlockBase,
- OUT UINTN *BackupBlockSize
- );
-
-/**
- This service checks if the boot block and backup block has been swapped.
-
- @param This Indicates the calling context.
- @param SwapState True if the boot block and backup block has been swapped.
- False if the boot block and backup block has not been swapped.
-
- @retval EFI_SUCCESS The call was successful.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_SWAP_STATE)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- OUT BOOLEAN *SwapState
- );
-
-/**
- This service swaps the boot block and backup block, or swaps them back.
-
- It also acquires and releases software swap lock during operation. The setting of the new swap state
- is not affected by the old swap state.
-
- @param This Indicates the calling context.
- @param NewSwapState True to swap real boot block and backup block, False to swap them back.
-
- @retval EFI_SUCCESS The call was successful.
- @retval EFI_ABORTED Set swap state error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_SWAP_STATE)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- IN BOOLEAN NewSwapState
- );
-
-/**
- This service checks if a Real Time Clock (RTC) power failure happened.
-
- If parameter RtcPowerFailed is true after the function returns, RTC power supply failed or was removed.
- It is recommended to check RTC power status before calling GetSwapState().
-
- @param This Indicates the calling context.
- @param RtcPowerFailed True if the RTC (Real Time Clock) power failed or was removed.
-
- @retval EFI_SUCCESS The call was successful.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_RTC_POWER_STATUS)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- OUT BOOLEAN *RtcPowerFailed
- );
-
-/**
- This service returns all lock methods for swap operations that the current platform
- supports. Could be software lock, hardware lock, or unsupport lock.
- Note that software and hardware lock methods can be used simultaneously.
-
- @param This Indicates the calling context.
- @param LockCapability The current lock method for swap operations.
-
- @retval EFI_SUCCESS The call was successful.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_SWAP_LOCK_CAPABILITY)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- OUT EFI_SWAP_LOCK_CAPABILITY *LockCapability
- );
-
-/**
- This service is used to acquire or release appointed kind of lock for Swap Address Range operations.
-
- Note that software and hardware lock mothod can be used simultaneously.
-
- @param This Indicates the calling context.
- @param LockCapability Indicates which lock to acquire or release.
- @param NewLockState True to acquire lock; False to release lock.
-
- @retval EFI_SUCCESS The call was successful.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_SWAP_LOCK)(
- IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This,
- IN EFI_SWAP_LOCK_CAPABILITY LockCapability,
- IN BOOLEAN NewLockState
- );
-
-struct _EFI_SWAP_ADDRESS_RANGE_PROTOCOL {
- EFI_GET_RANGE_LOCATION GetRangeLocation; // has output parameters for base and length
- EFI_GET_SWAP_STATE GetSwapState; // are ranges swapped or not
- EFI_SET_SWAP_STATE SetSwapState; // swap or unswap ranges
- EFI_GET_RTC_POWER_STATUS GetRtcPowerStatus; // checks RTC battery, or whatever...
- EFI_GET_SWAP_LOCK_CAPABILITY GetSwapLockCapability; // Get TOP_SWAP lock capability,
- EFI_SET_SWAP_LOCK SetSwapLock; // Set TOP_SWAP lock state
-};
-
-extern EFI_GUID gEfiSwapAddressRangeProtocolGuid;
-
-#endif
+/** @file +The EFI_SWAP_ADDRESS_RANGE_PROTOCOL is used to abstract the swap operation of boot block +and backup block of FV. This swap is especially needed when updating the boot block of FV. If a +power failure happens during the boot block update, the swapped backup block (now the boot block) +can boot the machine with the old boot block backed up in it. The swap operation is platform dependent, so +other protocols such as FTW (Fault Tolerant Write) should use this protocol instead of handling hardware directly. + +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _EFI_SWAP_ADDRESS_RANGE_PROTOCOL_H_ +#define _EFI_SWAP_ADDRESS_RANGE_PROTOCOL_H_ + +#define EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID \ + { \ + 0x1259f60d, 0xb754, 0x468e, {0xa7, 0x89, 0x4d, 0xb8, 0x5d, 0x55, 0xe8, 0x7e } \ + } + +// +// Forward reference for pure ANSI compatability +// +typedef struct _EFI_SWAP_ADDRESS_RANGE_PROTOCOL EFI_SWAP_ADDRESS_RANGE_PROTOCOL; + +#define EFI_UNSUPPORT_LOCK 0 +#define EFI_SOFTWARE_LOCK 1 +#define EFI_HARDWARE_LOCK 2 + +typedef UINT8 EFI_SWAP_LOCK_CAPABILITY; + +// +// Protocol APIs +// + +/** + This function gets the address range location of + boot block and backup block. + + @param This Indicates the calling context. + @param BootBlockBase The base address of current boot block. + @param BootBlockSize The size (in bytes) of current boot block. + @param BackupBlockBase The base address of current backup block. + @param BackupBlockSize The size (in bytes) of current backup block. + + @retval EFI_SUCCESS The call was successful. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_RANGE_LOCATION)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + OUT EFI_PHYSICAL_ADDRESS *BootBlockBase, + OUT UINTN *BootBlockSize, + OUT EFI_PHYSICAL_ADDRESS *BackupBlockBase, + OUT UINTN *BackupBlockSize + ); + +/** + This service checks if the boot block and backup block has been swapped. + + @param This Indicates the calling context. + @param SwapState True if the boot block and backup block has been swapped. + False if the boot block and backup block has not been swapped. + + @retval EFI_SUCCESS The call was successful. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_SWAP_STATE)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + OUT BOOLEAN *SwapState + ); + +/** + This service swaps the boot block and backup block, or swaps them back. + + It also acquires and releases software swap lock during operation. The setting of the new swap state + is not affected by the old swap state. + + @param This Indicates the calling context. + @param NewSwapState True to swap real boot block and backup block, False to swap them back. + + @retval EFI_SUCCESS The call was successful. + @retval EFI_ABORTED Set swap state error. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_SET_SWAP_STATE)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + IN BOOLEAN NewSwapState + ); + +/** + This service checks if a Real Time Clock (RTC) power failure happened. + + If parameter RtcPowerFailed is true after the function returns, RTC power supply failed or was removed. + It is recommended to check RTC power status before calling GetSwapState(). + + @param This Indicates the calling context. + @param RtcPowerFailed True if the RTC (Real Time Clock) power failed or was removed. + + @retval EFI_SUCCESS The call was successful. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_RTC_POWER_STATUS)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + OUT BOOLEAN *RtcPowerFailed + ); + +/** + This service returns all lock methods for swap operations that the current platform + supports. Could be software lock, hardware lock, or unsupport lock. + Note that software and hardware lock methods can be used simultaneously. + + @param This Indicates the calling context. + @param LockCapability The current lock method for swap operations. + + @retval EFI_SUCCESS The call was successful. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_SWAP_LOCK_CAPABILITY)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + OUT EFI_SWAP_LOCK_CAPABILITY *LockCapability + ); + +/** + This service is used to acquire or release appointed kind of lock for Swap Address Range operations. + + Note that software and hardware lock mothod can be used simultaneously. + + @param This Indicates the calling context. + @param LockCapability Indicates which lock to acquire or release. + @param NewLockState True to acquire lock; False to release lock. + + @retval EFI_SUCCESS The call was successful. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_SET_SWAP_LOCK)( + IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, + IN EFI_SWAP_LOCK_CAPABILITY LockCapability, + IN BOOLEAN NewLockState + ); + +struct _EFI_SWAP_ADDRESS_RANGE_PROTOCOL { + EFI_GET_RANGE_LOCATION GetRangeLocation; // has output parameters for base and length + EFI_GET_SWAP_STATE GetSwapState; // are ranges swapped or not + EFI_SET_SWAP_STATE SetSwapState; // swap or unswap ranges + EFI_GET_RTC_POWER_STATUS GetRtcPowerStatus; // checks RTC battery, or whatever... + EFI_GET_SWAP_LOCK_CAPABILITY GetSwapLockCapability; // Get TOP_SWAP lock capability, + EFI_SET_SWAP_LOCK SetSwapLock; // Set TOP_SWAP lock state +}; + +extern EFI_GUID gEfiSwapAddressRangeProtocolGuid; + +#endif |
