• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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