| /** @file | |
| BlockFront functions and types declarations. | |
| Copyright (C) 2014, Citrix Ltd. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #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 | |
| ); |