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 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.