]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/XenPvBlkDxe/BlockFront.h
OvmfPkg/Csm/LegacyBiosDxe: Fix Legacy16GetTableAddress call for E820 data
[mirror_edk2.git] / OvmfPkg / XenPvBlkDxe / BlockFront.h
CommitLineData
5cce8524
ST
1/** @file\r
2 BlockFront functions and types declarations.\r
3\r
4 Copyright (C) 2014, Citrix Ltd.\r
5\r
b26f0cf9 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
5cce8524
ST
7\r
8**/\r
9#include "XenPvBlkDxe.h"\r
10\r
11#include <IndustryStandard/Xen/event_channel.h>\r
12#include <IndustryStandard/Xen/io/blkif.h>\r
13\r
14typedef struct _XEN_BLOCK_FRONT_DEVICE XEN_BLOCK_FRONT_DEVICE;\r
15typedef struct _XEN_BLOCK_FRONT_IO XEN_BLOCK_FRONT_IO;\r
16\r
17struct _XEN_BLOCK_FRONT_IO\r
18{\r
19 XEN_BLOCK_FRONT_DEVICE *Dev;\r
20 UINT8 *Buffer;\r
21 UINTN Size;\r
22 UINTN Sector; ///< 512 bytes sector.\r
23\r
24 grant_ref_t GrantRef[BLKIF_MAX_SEGMENTS_PER_REQUEST];\r
25 INT32 NumRef;\r
26\r
27 EFI_STATUS Status;\r
28};\r
29\r
30typedef struct\r
31{\r
32 UINT64 Sectors;\r
33 UINT32 SectorSize;\r
34 UINT32 VDiskInfo;\r
35 BOOLEAN ReadWrite;\r
36 BOOLEAN CdRom;\r
37 BOOLEAN FeatureBarrier;\r
38 BOOLEAN FeatureFlushCache;\r
39} XEN_BLOCK_FRONT_MEDIA_INFO;\r
40\r
41#define XEN_BLOCK_FRONT_SIGNATURE SIGNATURE_32 ('X', 'p', 'v', 'B')\r
42struct _XEN_BLOCK_FRONT_DEVICE {\r
43 UINT32 Signature;\r
44 EFI_BLOCK_IO_PROTOCOL BlockIo;\r
45 domid_t DomainId;\r
46\r
47 blkif_front_ring_t Ring;\r
48 grant_ref_t RingRef;\r
49 evtchn_port_t EventChannel;\r
50 blkif_vdev_t DeviceId;\r
51\r
52 CONST CHAR8 *NodeName;\r
53 XEN_BLOCK_FRONT_MEDIA_INFO MediaInfo;\r
54\r
55 VOID *StateWatchToken;\r
56\r
57 XENBUS_PROTOCOL *XenBusIo;\r
58};\r
59\r
60#define XEN_BLOCK_FRONT_FROM_BLOCK_IO(b) \\r
61 CR (b, XEN_BLOCK_FRONT_DEVICE, BlockIo, XEN_BLOCK_FRONT_SIGNATURE)\r
62\r
63EFI_STATUS\r
64XenPvBlockFrontInitialization (\r
65 IN XENBUS_PROTOCOL *XenBusIo,\r
66 IN CONST CHAR8 *NodeName,\r
67 OUT XEN_BLOCK_FRONT_DEVICE **DevPtr\r
68 );\r
69\r
70VOID\r
71XenPvBlockFrontShutdown (\r
72 IN XEN_BLOCK_FRONT_DEVICE *Dev\r
73 );\r
74\r
75VOID\r
76XenPvBlockAsyncIo (\r
77 IN OUT XEN_BLOCK_FRONT_IO *IoData,\r
78 IN BOOLEAN IsWrite\r
79 );\r
80\r
81EFI_STATUS\r
82XenPvBlockIo (\r
83 IN OUT XEN_BLOCK_FRONT_IO *IoData,\r
84 IN BOOLEAN IsWrite\r
85 );\r
86\r
87VOID\r
88XenPvBlockAsyncIoPoll (\r
89 IN XEN_BLOCK_FRONT_DEVICE *Dev\r
90 );\r
91\r
92VOID\r
93XenPvBlockSync (\r
94 IN XEN_BLOCK_FRONT_DEVICE *Dev\r
95 );\r