pub struct VirtQueue { /* private fields */ }Expand description
VirtIO queue implementation.
Implementations§
Source§impl VirtQueue
impl VirtQueue
Sourcepub fn new(size: u16) -> Result<Self>
pub fn new(size: u16) -> Result<Self>
Creates a new virtqueue with the given size.
§Errors
Returns an error if the size is not a power of 2 or exceeds limits.
Sourcepub fn set_descriptor(&mut self, idx: u16, descriptor: Descriptor) -> Result<()>
pub fn set_descriptor(&mut self, idx: u16, descriptor: Descriptor) -> Result<()>
Sourcepub fn add_avail(&mut self, head_idx: u16) -> Result<()>
pub fn add_avail(&mut self, head_idx: u16) -> Result<()>
Adds a descriptor chain head to the available ring.
§Errors
Returns an error if the descriptor index is out of range.
Sourcepub const fn has_available(&self) -> bool
pub const fn has_available(&self) -> bool
Checks if there are available descriptors.
Sourcepub fn pop_avail(&mut self) -> Option<(u16, DescriptorChain<'_>)>
pub fn pop_avail(&mut self) -> Option<(u16, DescriptorChain<'_>)>
Pops the next available descriptor chain.
Returns the head descriptor index and the descriptor chain.
Sourcepub fn set_event_idx(&mut self, enabled: bool)
pub fn set_event_idx(&mut self, enabled: bool)
Enable or disable EVENT_IDX feature.
Sourcepub fn push_used(&mut self, head_idx: u16, len: u32) -> bool
pub fn push_used(&mut self, head_idx: u16, len: u32) -> bool
Adds a used descriptor to the used ring.
Returns true if the guest should be notified (interrupt required),
false if notification is suppressed (EVENT_IDX or NO_INTERRUPT flag).
Sourcepub fn push_used_batch(&mut self, completions: &[(u16, u32)]) -> bool
pub fn push_used_batch(&mut self, completions: &[(u16, u32)]) -> bool
Push a batch of completions to the used ring.
More efficient than calling push_used() in a loop because
notification suppression is checked only once for the entire batch.
Sourcepub fn set_avail_event(&mut self, event: u16)
pub fn set_avail_event(&mut self, event: u16)
Set the avail_event index for kick suppression (device→guest direction).
Sourcepub fn get_descriptor(&self, idx: u16) -> Option<&Descriptor>
pub fn get_descriptor(&self, idx: u16) -> Option<&Descriptor>
Returns a reference to a descriptor.