Struct devices::virtio::ipc_memory_mapper::ExportedRegion
source · pub struct ExportedRegion {
inner: Arc<Mutex<ExportedRegionInner>>,
}
Expand description
A region exported from the virtio-iommu.
Fields§
§inner: Arc<Mutex<ExportedRegionInner>>
Implementations§
source§impl ExportedRegion
impl ExportedRegion
sourcepub fn new(
mem: &GuestMemory,
iommu: Arc<Mutex<IpcMemoryMapper>>,
iova: u64,
size: u64
) -> Result<Self>
pub fn new( mem: &GuestMemory, iommu: Arc<Mutex<IpcMemoryMapper>>, iova: u64, size: u64 ) -> Result<Self>
Creates a new, fully initialized exported region.
fn do_copy<C>( &self, iova: u64, remaining: usize, prot: Protection, copy_fn: C ) -> Result<()>
sourcepub fn read_obj_from_addr<T: FromBytes>(
&self,
mem: &GuestMemory,
iova: u64
) -> Result<T>
pub fn read_obj_from_addr<T: FromBytes>( &self, mem: &GuestMemory, iova: u64 ) -> Result<T>
Reads an object from the given iova. Fails if the specified iova range does not lie within this region, or if part of the region isn’t readable.
sourcepub fn write_obj_at_addr<T: AsBytes>(
&self,
mem: &GuestMemory,
val: T,
iova: u64
) -> Result<()>
pub fn write_obj_at_addr<T: AsBytes>( &self, mem: &GuestMemory, val: T, iova: u64 ) -> Result<()>
Writes an object at a given iova. Fails if the specified iova range does not lie within this region, or if part of the region isn’t writable.
sourcepub fn is_valid(&self, mem: &GuestMemory, iova: u64, size: u64) -> bool
pub fn is_valid(&self, mem: &GuestMemory, iova: u64, size: u64) -> bool
Validates that [iova, iova+size) lies within this region, and that the region is valid according to mem.
sourcepub fn get_mem_regions(&self) -> SmallVec<[MemRegion; 1]>
pub fn get_mem_regions(&self) -> SmallVec<[MemRegion; 1]>
Gets the list of guest physical regions for the exported region.
Trait Implementations§
source§impl Clone for ExportedRegion
impl Clone for ExportedRegion
source§fn clone(&self) -> ExportedRegion
fn clone(&self) -> ExportedRegion
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl RefUnwindSafe for ExportedRegion
impl Send for ExportedRegion
impl Sync for ExportedRegion
impl Unpin for ExportedRegion
impl UnwindSafe for ExportedRegion
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.