Struct devices::virtio::descriptor_utils::DescriptorChainRegions
source · struct DescriptorChainRegions {
regions: SmallVec<[MemRegion; 2]>,
current_region_index: usize,
current_region_offset: usize,
bytes_consumed: usize,
}
Fields§
§regions: SmallVec<[MemRegion; 2]>
§current_region_index: usize
§current_region_offset: usize
§bytes_consumed: usize
Implementations§
source§impl DescriptorChainRegions
impl DescriptorChainRegions
fn new(regions: SmallVec<[MemRegion; 2]>) -> Self
fn available_bytes(&self) -> usize
fn bytes_consumed(&self) -> usize
sourcefn get_remaining_regions(&self) -> MemRegionIter<'_>
fn get_remaining_regions(&self) -> MemRegionIter<'_>
Returns all the remaining buffers in the DescriptorChain
. Calling this function does not
consume any bytes from the DescriptorChain
. Instead callers should use the consume
method to advance the DescriptorChain
. Multiple calls to get
with no intervening calls
to consume
will return the same data.
sourcefn get_remaining_regions_with_count(&self, count: usize) -> MemRegionIter<'_>
fn get_remaining_regions_with_count(&self, count: usize) -> MemRegionIter<'_>
Like get_remaining_regions
but guarantees that the combined length of all the returned
iovecs is not greater than count
. The combined length of the returned iovecs may be less
than count
but will always be greater than 0 as long as there is still space left in the
DescriptorChain
.
sourcefn get_remaining<'mem>(
&self,
mem: &'mem GuestMemory,
) -> SmallVec<[VolatileSlice<'mem>; 16]>
fn get_remaining<'mem>( &self, mem: &'mem GuestMemory, ) -> SmallVec<[VolatileSlice<'mem>; 16]>
Returns all the remaining buffers in the DescriptorChain
as VolatileSlice
s of the given
GuestMemory
. Calling this function does not consume any bytes from the DescriptorChain
.
Instead callers should use the consume
method to advance the DescriptorChain
. Multiple
calls to get
with no intervening calls to consume
will return the same data.
sourcefn get_remaining_with_count<'mem>(
&self,
mem: &'mem GuestMemory,
count: usize,
) -> SmallVec<[VolatileSlice<'mem>; 16]>
fn get_remaining_with_count<'mem>( &self, mem: &'mem GuestMemory, count: usize, ) -> SmallVec<[VolatileSlice<'mem>; 16]>
Like ‘get_remaining_regions_with_count’ except convert the offsets to volatile slices in the ‘GuestMemory’ given by ‘mem’.
sourcefn consume(&mut self, count: usize)
fn consume(&mut self, count: usize)
Consumes count
bytes from the DescriptorChain
. If count
is larger than
self.available_bytes()
then all remaining bytes in the DescriptorChain
will be consumed.
fn split_at(&mut self, offset: usize) -> DescriptorChainRegions
Auto Trait Implementations§
impl Freeze for DescriptorChainRegions
impl RefUnwindSafe for DescriptorChainRegions
impl Send for DescriptorChainRegions
impl Sync for DescriptorChainRegions
impl Unpin for DescriptorChainRegions
impl UnwindSafe for DescriptorChainRegions
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.