2 BlockFront functions and types declarations.
4 Copyright (C) 2014, Citrix Ltd.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #include "XenPvBlkDxe.h"
11 #include <IndustryStandard/Xen/event_channel.h>
12 #include <IndustryStandard/Xen/io/blkif.h>
14 typedef struct _XEN_BLOCK_FRONT_DEVICE XEN_BLOCK_FRONT_DEVICE
;
15 typedef struct _XEN_BLOCK_FRONT_IO XEN_BLOCK_FRONT_IO
;
17 struct _XEN_BLOCK_FRONT_IO
{
18 XEN_BLOCK_FRONT_DEVICE
*Dev
;
21 UINTN Sector
; ///< 512 bytes sector.
23 grant_ref_t GrantRef
[BLKIF_MAX_SEGMENTS_PER_REQUEST
];
35 BOOLEAN FeatureBarrier
;
36 BOOLEAN FeatureFlushCache
;
37 } XEN_BLOCK_FRONT_MEDIA_INFO
;
39 #define XEN_BLOCK_FRONT_SIGNATURE SIGNATURE_32 ('X', 'p', 'v', 'B')
40 struct _XEN_BLOCK_FRONT_DEVICE
{
42 EFI_BLOCK_IO_PROTOCOL BlockIo
;
45 blkif_front_ring_t Ring
;
47 evtchn_port_t EventChannel
;
48 blkif_vdev_t DeviceId
;
50 CONST CHAR8
*NodeName
;
51 XEN_BLOCK_FRONT_MEDIA_INFO MediaInfo
;
53 VOID
*StateWatchToken
;
55 XENBUS_PROTOCOL
*XenBusIo
;
58 #define XEN_BLOCK_FRONT_FROM_BLOCK_IO(b) \
59 CR (b, XEN_BLOCK_FRONT_DEVICE, BlockIo, XEN_BLOCK_FRONT_SIGNATURE)
62 XenPvBlockFrontInitialization (
63 IN XENBUS_PROTOCOL
*XenBusIo
,
64 IN CONST CHAR8
*NodeName
,
65 OUT XEN_BLOCK_FRONT_DEVICE
**DevPtr
69 XenPvBlockFrontShutdown (
70 IN XEN_BLOCK_FRONT_DEVICE
*Dev
75 IN OUT XEN_BLOCK_FRONT_IO
*IoData
,
81 IN OUT XEN_BLOCK_FRONT_IO
*IoData
,
86 XenPvBlockAsyncIoPoll (
87 IN XEN_BLOCK_FRONT_DEVICE
*Dev
92 IN XEN_BLOCK_FRONT_DEVICE
*Dev