2014-10-29 07:52:13 +01:00
|
|
|
/** @file
|
|
|
|
BlockIo function declaration for Xen PV block driver.
|
|
|
|
|
|
|
|
Copyright (C) 2014, Citrix Ltd.
|
|
|
|
|
2019-04-04 01:06:33 +02:00
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
2014-10-29 07:52:13 +01:00
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
/**
|
|
|
|
Read BufferSize bytes from Lba into Buffer.
|
|
|
|
|
|
|
|
@param This Indicates a pointer to the calling context.
|
|
|
|
@param MediaId Id of the media, changes every time the media is replaced.
|
|
|
|
@param Lba The starting Logical Block Address to read from
|
|
|
|
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
|
|
|
@param Buffer A pointer to the destination buffer for the data. The caller is
|
|
|
|
responsible for either having implicit or explicit ownership of the buffer.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS The data was read correctly from the device.
|
|
|
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
|
|
|
|
@retval EFI_NO_MEDIA There is no media in the device.
|
|
|
|
@retval EFI_MEDIA_CHANGED The MediaId does not matched the current device.
|
|
|
|
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
|
|
|
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
|
|
|
|
or the buffer is not on proper alignment.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
XenPvBlkDxeBlockIoReadBlocks (
|
|
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
|
|
IN UINT32 MediaId,
|
|
|
|
IN EFI_LBA Lba,
|
|
|
|
IN UINTN BufferSize,
|
|
|
|
OUT VOID *Buffer
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Write BufferSize bytes from Lba into Buffer.
|
|
|
|
|
|
|
|
@param This Indicates a pointer to the calling context.
|
|
|
|
@param MediaId The media ID that the write request is for.
|
|
|
|
@param Lba The starting logical block address to be written. The caller is
|
|
|
|
responsible for writing to only legitimate locations.
|
|
|
|
@param BufferSize Size of Buffer, must be a multiple of device block size.
|
|
|
|
@param Buffer A pointer to the source buffer for the data.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS The data was written correctly to the device.
|
|
|
|
@retval EFI_WRITE_PROTECTED The device can not be written to.
|
|
|
|
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
|
|
|
|
@retval EFI_NO_MEDIA There is no media in the device.
|
|
|
|
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
|
|
|
|
@retval EFI_BAD_BUFFER_SIZE The Buffer was not a multiple of the block size of the device.
|
|
|
|
@retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,
|
|
|
|
or the buffer is not on proper alignment.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
XenPvBlkDxeBlockIoWriteBlocks (
|
|
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
|
|
IN UINT32 MediaId,
|
|
|
|
IN EFI_LBA Lba,
|
|
|
|
IN UINTN BufferSize,
|
|
|
|
IN VOID *Buffer
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Flush the Block Device.
|
|
|
|
|
|
|
|
@param This Indicates a pointer to the calling context.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS All outstanding data was written to the device
|
|
|
|
@retval EFI_DEVICE_ERROR The device reported an error while writting back the data
|
|
|
|
@retval EFI_NO_MEDIA There is no media in the device.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
XenPvBlkDxeBlockIoFlushBlocks (
|
|
|
|
IN EFI_BLOCK_IO_PROTOCOL *This
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Reset the block device hardware.
|
|
|
|
|
|
|
|
@param[in] This Indicates a pointer to the calling context.
|
|
|
|
@param[in] ExtendedVerification Not used.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS The device was reset.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
XenPvBlkDxeBlockIoReset (
|
|
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
|
|
IN BOOLEAN ExtendedVerification
|
|
|
|
);
|
|
|
|
|
|
|
|
extern EFI_BLOCK_IO_MEDIA gXenPvBlkDxeBlockIoMedia;
|
|
|
|
extern EFI_BLOCK_IO_PROTOCOL gXenPvBlkDxeBlockIo;
|