pub struct VirtioBlockDevice {
device: VirtioDevice,
queue: SpinLock<Virtqueue>,
capacity: u64,
}Expand description
VirtIO Block Device driver
Fields§
§device: VirtioDevice§queue: SpinLock<Virtqueue>§capacity: u64Implementations§
Source§impl VirtioBlockDevice
impl VirtioBlockDevice
Sourcepub unsafe fn new(pci_dev: PciDevice) -> Result<Self, &'static str>
pub unsafe fn new(pci_dev: PciDevice) -> Result<Self, &'static str>
Initialize a VirtIO block device from a PCI device
§Safety
The PCI device must be a valid VirtIO block device
Sourcefn do_request(
&self,
request_type: RequestType,
sector: u64,
data_buf: Option<(&mut [u8], bool)>,
) -> Result<(), BlockError>
fn do_request( &self, request_type: RequestType, sector: u64, data_buf: Option<(&mut [u8], bool)>, ) -> Result<(), BlockError>
Submit a block request and wait for completion
Trait Implementations§
Source§impl BlockDevice for VirtioBlockDevice
impl BlockDevice for VirtioBlockDevice
Source§fn read_sector(&self, sector: u64, buf: &mut [u8]) -> Result<(), BlockError>
fn read_sector(&self, sector: u64, buf: &mut [u8]) -> Result<(), BlockError>
Reads sector.
Source§fn write_sector(&self, sector: u64, buf: &[u8]) -> Result<(), BlockError>
fn write_sector(&self, sector: u64, buf: &[u8]) -> Result<(), BlockError>
Writes sector.
Source§fn sector_count(&self) -> u64
fn sector_count(&self) -> u64
Performs the sector count operation.
impl Send for VirtioBlockDevice
impl Sync for VirtioBlockDevice
Auto Trait Implementations§
impl !Freeze for VirtioBlockDevice
impl !RefUnwindSafe for VirtioBlockDevice
impl Unpin for VirtioBlockDevice
impl UnsafeUnpin for VirtioBlockDevice
impl UnwindSafe for VirtioBlockDevice
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more