Home | History | Annotate | Download | only in XenPvBlkDxe
      1 /** @file
      2   BlockIo function declaration for Xen PV block driver.
      3 
      4   Copyright (C) 2014, Citrix Ltd.
      5 
      6   This program and the accompanying materials
      7   are licensed and made available under the terms and conditions of the BSD License
      8   which accompanies this distribution.  The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 /**
     17   Read BufferSize bytes from Lba into Buffer.
     18 
     19   @param  This       Indicates a pointer to the calling context.
     20   @param  MediaId    Id of the media, changes every time the media is replaced.
     21   @param  Lba        The starting Logical Block Address to read from
     22   @param  BufferSize Size of Buffer, must be a multiple of device block size.
     23   @param  Buffer     A pointer to the destination buffer for the data. The caller is
     24                      responsible for either having implicit or explicit ownership of the buffer.
     25 
     26   @retval EFI_SUCCESS           The data was read correctly from the device.
     27   @retval EFI_DEVICE_ERROR      The device reported an error while performing the read.
     28   @retval EFI_NO_MEDIA          There is no media in the device.
     29   @retval EFI_MEDIA_CHANGED     The MediaId does not matched the current device.
     30   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.
     31   @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
     32                                 or the buffer is not on proper alignment.
     33 
     34 **/
     35 EFI_STATUS
     36 EFIAPI
     37 XenPvBlkDxeBlockIoReadBlocks (
     38   IN EFI_BLOCK_IO_PROTOCOL          *This,
     39   IN UINT32                         MediaId,
     40   IN EFI_LBA                        Lba,
     41   IN UINTN                          BufferSize,
     42   OUT VOID                          *Buffer
     43   );
     44 
     45 /**
     46   Write BufferSize bytes from Lba into Buffer.
     47 
     48   @param  This       Indicates a pointer to the calling context.
     49   @param  MediaId    The media ID that the write request is for.
     50   @param  Lba        The starting logical block address to be written. The caller is
     51                      responsible for writing to only legitimate locations.
     52   @param  BufferSize Size of Buffer, must be a multiple of device block size.
     53   @param  Buffer     A pointer to the source buffer for the data.
     54 
     55   @retval EFI_SUCCESS           The data was written correctly to the device.
     56   @retval EFI_WRITE_PROTECTED   The device can not be written to.
     57   @retval EFI_DEVICE_ERROR      The device reported an error while performing the write.
     58   @retval EFI_NO_MEDIA          There is no media in the device.
     59   @retval EFI_MEDIA_CHNAGED     The MediaId does not matched the current device.
     60   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.
     61   @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,
     62                                 or the buffer is not on proper alignment.
     63 
     64 **/
     65 EFI_STATUS
     66 EFIAPI
     67 XenPvBlkDxeBlockIoWriteBlocks (
     68   IN EFI_BLOCK_IO_PROTOCOL          *This,
     69   IN UINT32                         MediaId,
     70   IN EFI_LBA                        Lba,
     71   IN UINTN                          BufferSize,
     72   IN VOID                           *Buffer
     73   );
     74 
     75 /**
     76   Flush the Block Device.
     77 
     78   @param  This              Indicates a pointer to the calling context.
     79 
     80   @retval EFI_SUCCESS       All outstanding data was written to the device
     81   @retval EFI_DEVICE_ERROR  The device reported an error while writting back the data
     82   @retval EFI_NO_MEDIA      There is no media in the device.
     83 
     84 **/
     85 EFI_STATUS
     86 EFIAPI
     87 XenPvBlkDxeBlockIoFlushBlocks (
     88   IN EFI_BLOCK_IO_PROTOCOL  *This
     89   );
     90 
     91 /**
     92   Reset the block device hardware.
     93 
     94   @param[in]  This                 Indicates a pointer to the calling context.
     95   @param[in]  ExtendedVerification Not used.
     96 
     97   @retval EFI_SUCCESS          The device was reset.
     98 
     99 **/
    100 EFI_STATUS
    101 EFIAPI
    102 XenPvBlkDxeBlockIoReset (
    103   IN EFI_BLOCK_IO_PROTOCOL   *This,
    104   IN BOOLEAN                 ExtendedVerification
    105   );
    106 
    107 extern EFI_BLOCK_IO_MEDIA  gXenPvBlkDxeBlockIoMedia;
    108 extern EFI_BLOCK_IO_PROTOCOL  gXenPvBlkDxeBlockIo;
    109