2 BlockFront functions and types declarations.
4 Copyright (C) 2014, Citrix Ltd.
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
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.
15 #include "XenPvBlkDxe.h"
17 #include <IndustryStandard/Xen/event_channel.h>
18 #include <IndustryStandard/Xen/io/blkif.h>
20 typedef struct _XEN_BLOCK_FRONT_DEVICE XEN_BLOCK_FRONT_DEVICE
;
21 typedef struct _XEN_BLOCK_FRONT_IO XEN_BLOCK_FRONT_IO
;
23 struct _XEN_BLOCK_FRONT_IO
25 XEN_BLOCK_FRONT_DEVICE
*Dev
;
28 UINTN Sector
; ///< 512 bytes sector.
30 grant_ref_t GrantRef
[BLKIF_MAX_SEGMENTS_PER_REQUEST
];
43 BOOLEAN FeatureBarrier
;
44 BOOLEAN FeatureFlushCache
;
45 } XEN_BLOCK_FRONT_MEDIA_INFO
;
47 #define XEN_BLOCK_FRONT_SIGNATURE SIGNATURE_32 ('X', 'p', 'v', 'B')
48 struct _XEN_BLOCK_FRONT_DEVICE
{
50 EFI_BLOCK_IO_PROTOCOL BlockIo
;
53 blkif_front_ring_t Ring
;
55 evtchn_port_t EventChannel
;
56 blkif_vdev_t DeviceId
;
58 CONST CHAR8
*NodeName
;
59 XEN_BLOCK_FRONT_MEDIA_INFO MediaInfo
;
61 VOID
*StateWatchToken
;
63 XENBUS_PROTOCOL
*XenBusIo
;
66 #define XEN_BLOCK_FRONT_FROM_BLOCK_IO(b) \
67 CR (b, XEN_BLOCK_FRONT_DEVICE, BlockIo, XEN_BLOCK_FRONT_SIGNATURE)
70 XenPvBlockFrontInitialization (
71 IN XENBUS_PROTOCOL
*XenBusIo
,
72 IN CONST CHAR8
*NodeName
,
73 OUT XEN_BLOCK_FRONT_DEVICE
**DevPtr
77 XenPvBlockFrontShutdown (
78 IN XEN_BLOCK_FRONT_DEVICE
*Dev
83 IN OUT XEN_BLOCK_FRONT_IO
*IoData
,
89 IN OUT XEN_BLOCK_FRONT_IO
*IoData
,
94 XenPvBlockAsyncIoPoll (
95 IN XEN_BLOCK_FRONT_DEVICE
*Dev
100 IN XEN_BLOCK_FRONT_DEVICE
*Dev