]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/XenPvBlkDxe/BlockIo.h
OvmfPkg/XenPvBlkDxe: fix VS2010 build failures
[mirror_edk2.git] / OvmfPkg / XenPvBlkDxe / BlockIo.h
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;