Struct devices::virtio::DescriptorChain  
source · pub struct DescriptorChain {
    mem: GuestMemory,
    index: u16,
    pub reader: Reader,
    pub writer: Writer,
    pub id: Option<u16>,
    pub count: u16,
}Expand description
A virtio descriptor chain.
This is a low-level representation of the memory regions in a descriptor chain. Most code should
use virtio::Reader and virtio::Writer
rather than working with DescriptorChain memory regions directly.
Fields§
§mem: GuestMemory§index: u16Index into the descriptor table.
reader: ReaderThe readable memory regions that make up the descriptor chain.
writer: WriterThe writable memory regions that make up the descriptor chain.
id: Option<u16>The descriptor chain id(only if it is a packed virtqueue descriptor chain)
count: u16Number of descriptor in descriptor chain
Implementations§
source§impl DescriptorChain
 
impl DescriptorChain
sourcepub fn new(
    chain: impl DescriptorChainIter,
    mem: &GuestMemory,
    index: u16,
) -> Result<DescriptorChain>
 
pub fn new( chain: impl DescriptorChainIter, mem: &GuestMemory, index: u16, ) -> Result<DescriptorChain>
Read all descriptors from chain into a new DescriptorChain instance.
This function validates the following properties of the descriptor chain:
- The chain contains at least one descriptor.
 - Each descriptor has a non-zero length.
 - Each descriptor’s memory falls entirely within a contiguous region of 
mem. - The total length of the descriptor chain data is representable in 
u32. 
If these properties do not hold, Err will be returned.
§Arguments
chain- Iterator that will be walked to retrieve all of the descriptors in the chain.mem- TheGuestMemorybacking the descriptor table and descriptor memory regions.index- The index of the first descriptor in the chain.
fn validate_mem_regions( mem: &GuestMemory, readable_regions: &[MemRegion], writable_regions: &[MemRegion], ) -> Result<()>
sourcepub fn mem(&self) -> &GuestMemory
 
pub fn mem(&self) -> &GuestMemory
Returns a reference to the GuestMemory instance.
Auto Trait Implementations§
impl Freeze for DescriptorChain
impl RefUnwindSafe for DescriptorChain
impl Send for DescriptorChain
impl Sync for DescriptorChain
impl Unpin for DescriptorChain
impl UnwindSafe for DescriptorChain
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
§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>
Convert 
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>
Convert 
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)
Convert 
&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)
Convert 
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.