MdeModulePkg/Include/Protocol/SwapAddressRange.h File Reference


Data Structures

struct  _EFI_SWAP_ADDRESS_RANGE_PROTOCOL

Defines

#define EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID
#define EFI_UNSUPPORT_LOCK   0
#define EFI_SOFTWARE_LOCK   1
#define EFI_HARDWARE_LOCK   2

Typedefs

typedef struct
_EFI_SWAP_ADDRESS_RANGE_PROTOCOL 
EFI_SWAP_ADDRESS_RANGE_PROTOCOL
typedef UINT8 EFI_SWAP_LOCK_CAPABILITY
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)
typedef EFI_STATUS(EFIAPI * EFI_GET_SWAP_STATE )(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, OUT BOOLEAN *SwapState)
typedef EFI_STATUS(EFIAPI * EFI_SET_SWAP_STATE )(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, IN BOOLEAN NewSwapState)
typedef EFI_STATUS(EFIAPI * EFI_GET_RTC_POWER_STATUS )(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, OUT BOOLEAN *RtcPowerFailed)
typedef EFI_STATUS(EFIAPI * EFI_GET_SWAP_LOCK_CAPABILITY )(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, OUT EFI_SWAP_LOCK_CAPABILITY *LockCapability)
typedef EFI_STATUS(EFIAPI * EFI_SET_SWAP_LOCK )(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, IN EFI_SWAP_LOCK_CAPABILITY LockCapability, IN BOOLEAN NewLockState)

Variables

EFI_GUID gEfiSwapAddressRangeProtocolGuid

Detailed Description

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 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Define Documentation

#define EFI_HARDWARE_LOCK   2

#define EFI_SOFTWARE_LOCK   1

#define EFI_SWAP_ADDRESS_RANGE_PROTOCOL_GUID

Value:

{ \
    0x1259f60d, 0xb754, 0x468e, {0xa7, 0x89, 0x4d, 0xb8, 0x5d, 0x55, 0xe8, 0x7e } \
  }

#define EFI_UNSUPPORT_LOCK   0


Typedef Documentation

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 function gets the address range location of boot block and backup block.

Parameters:
This Indicates the calling context.
BootBlockBase The base address of current boot block.
BootBlockSize The size (in bytes) of current boot block.
BackupBlockBase The base address of current backup block.
BackupBlockSize The size (in bytes) of current backup block.
Return values:
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 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().

Parameters:
This Indicates the calling context.
RtcPowerFailed True if the RTC (Real Time Clock) power failed or was removed.
Return values:
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 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.

Parameters:
This Indicates the calling context.
LockCapability The current lock method for swap operations.
Return values:
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 checks if the boot block and backup block has been swapped.

Parameters:
This Indicates the calling context.
SwapState True if the boot block and backup block has been swapped. False if the boot block and backup block has not been swapped.
Return values:
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)

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.

Parameters:
This Indicates the calling context.
LockCapability Indicates which lock to acquire or release.
NewLockState True to acquire lock; False to release lock.
Return values:
EFI_SUCCESS The call was successful.

typedef EFI_STATUS(EFIAPI * EFI_SET_SWAP_STATE)(IN EFI_SWAP_ADDRESS_RANGE_PROTOCOL *This, IN BOOLEAN NewSwapState)

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.

Parameters:
This Indicates the calling context.
NewSwapState True to swap real boot block and backup block, False to swap them back.
Return values:
EFI_SUCCESS The call was successful.
EFI_ABORTED Set swap state error.

typedef UINT8 EFI_SWAP_LOCK_CAPABILITY


Variable Documentation


Generated on Thu Sep 24 23:30:15 2015 for MdeModulePkg[ALL] by  doxygen 1.5.7.1