pub struct VirtQueue { /* private fields */ }Expand description
VirtIO queue implementation.
Implementations§
Source§impl VirtQueue
impl VirtQueue
Sourcepub fn new(size: u16) -> Result<VirtQueue, VirtioError>
pub fn new(size: u16) -> Result<VirtQueue, VirtioError>
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<(), VirtioError>
pub fn set_descriptor( &mut self, idx: u16, descriptor: Descriptor, ) -> Result<(), VirtioError>
Sourcepub fn add_avail(&mut self, head_idx: u16) -> Result<(), VirtioError>
pub fn add_avail(&mut self, head_idx: u16) -> Result<(), VirtioError>
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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for VirtQueue
impl RefUnwindSafe for VirtQueue
impl Send for VirtQueue
impl Sync for VirtQueue
impl Unpin for VirtQueue
impl UnsafeUnpin for VirtQueue
impl UnwindSafe for VirtQueue
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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