/** @file | |
BlockFront functions and types declarations. | |
Copyright (C) 2014, Citrix Ltd. | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#include "XenPvBlkDxe.h" | |
#include <IndustryStandard/Xen/event_channel.h> | |
#include <IndustryStandard/Xen/io/blkif.h> | |
typedef struct _XEN_BLOCK_FRONT_DEVICE XEN_BLOCK_FRONT_DEVICE; | |
typedef struct _XEN_BLOCK_FRONT_IO XEN_BLOCK_FRONT_IO; | |
struct _XEN_BLOCK_FRONT_IO | |
{ | |
XEN_BLOCK_FRONT_DEVICE *Dev; | |
UINT8 *Buffer; | |
UINTN Size; | |
UINTN Sector; ///< 512 bytes sector. | |
grant_ref_t GrantRef[BLKIF_MAX_SEGMENTS_PER_REQUEST]; | |
INT32 NumRef; | |
EFI_STATUS Status; | |
}; | |
typedef struct | |
{ | |
UINT64 Sectors; | |
UINT32 SectorSize; | |
UINT32 VDiskInfo; | |
BOOLEAN ReadWrite; | |
BOOLEAN CdRom; | |
BOOLEAN FeatureBarrier; | |
BOOLEAN FeatureFlushCache; | |
} XEN_BLOCK_FRONT_MEDIA_INFO; | |
#define XEN_BLOCK_FRONT_SIGNATURE SIGNATURE_32 ('X', 'p', 'v', 'B') | |
struct _XEN_BLOCK_FRONT_DEVICE { | |
UINT32 Signature; | |
EFI_BLOCK_IO_PROTOCOL BlockIo; | |
domid_t DomainId; | |
blkif_front_ring_t Ring; | |
grant_ref_t RingRef; | |
evtchn_port_t EventChannel; | |
blkif_vdev_t DeviceId; | |
CONST CHAR8 *NodeName; | |
XEN_BLOCK_FRONT_MEDIA_INFO MediaInfo; | |
VOID *StateWatchToken; | |
XENBUS_PROTOCOL *XenBusIo; | |
}; | |
#define XEN_BLOCK_FRONT_FROM_BLOCK_IO(b) \ | |
CR (b, XEN_BLOCK_FRONT_DEVICE, BlockIo, XEN_BLOCK_FRONT_SIGNATURE) | |
EFI_STATUS | |
XenPvBlockFrontInitialization ( | |
IN XENBUS_PROTOCOL *XenBusIo, | |
IN CONST CHAR8 *NodeName, | |
OUT XEN_BLOCK_FRONT_DEVICE **DevPtr | |
); | |
VOID | |
XenPvBlockFrontShutdown ( | |
IN XEN_BLOCK_FRONT_DEVICE *Dev | |
); | |
VOID | |
XenPvBlockAsyncIo ( | |
IN OUT XEN_BLOCK_FRONT_IO *IoData, | |
IN BOOLEAN IsWrite | |
); | |
EFI_STATUS | |
XenPvBlockIo ( | |
IN OUT XEN_BLOCK_FRONT_IO *IoData, | |
IN BOOLEAN IsWrite | |
); | |
VOID | |
XenPvBlockAsyncIoPoll ( | |
IN XEN_BLOCK_FRONT_DEVICE *Dev | |
); | |
VOID | |
XenPvBlockSync ( | |
IN XEN_BLOCK_FRONT_DEVICE *Dev | |
); |