Struct seed_riscv::block::virtio::VirtioBlockDevice
source · pub struct VirtioBlockDevice<'a> {
device: &'a mut BlockDeviceConfig,
queue: Virtqueue,
request_buffer: Mapped<[Request]>,
free_request_slots: VecDeque<u16>,
data_buffer: Mapped<[[u8; 512]]>,
free_data_slots: VecDeque<u16>,
}
Fields§
§device: &'a mut BlockDeviceConfig
§queue: Virtqueue
§request_buffer: Mapped<[Request]>
§free_request_slots: VecDeque<u16>
§data_buffer: Mapped<[[u8; 512]]>
§free_data_slots: VecDeque<u16>
Implementations§
source§impl<'a> VirtioBlockDevice<'a>
impl<'a> VirtioBlockDevice<'a>
sourcepub fn init(
fdt: &Fdt<'_>,
memory_manager: &MemoryManager
) -> Option<VirtioBlockDevice<'a>>
pub fn init( fdt: &Fdt<'_>, memory_manager: &MemoryManager ) -> Option<VirtioBlockDevice<'a>>
Find a Virtio block device, if present, and initialize it.
fn alloc_request_slot(&mut self) -> u16
fn free_request_slot(&mut self, slot: u16)
fn alloc_data_slot(&mut self) -> u16
fn free_data_slot(&mut self, slot: u16)
Trait Implementations§
source§impl<'a> BlockDevice for VirtioBlockDevice<'a>
impl<'a> BlockDevice for VirtioBlockDevice<'a>
type ReadTokenMetadata = ReadTokenMeta
fn read(&mut self, block: u64) -> ReadToken<Self::ReadTokenMetadata>
fn free_read_block(&mut self, token: ReadToken<Self::ReadTokenMetadata>)
Auto Trait Implementations§
impl<'a> Freeze for VirtioBlockDevice<'a>
impl<'a> !RefUnwindSafe for VirtioBlockDevice<'a>
impl<'a> !Send for VirtioBlockDevice<'a>
impl<'a> !Sync for VirtioBlockDevice<'a>
impl<'a> Unpin for VirtioBlockDevice<'a>
impl<'a> !UnwindSafe for VirtioBlockDevice<'a>
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