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: IntoBytes + FromBytes + FromZeros>(
&self,
mem: &GuestMemory,
iova: u64,
) -> Result<T>
pub fn read_obj_from_addr<T: IntoBytes + FromBytes + FromZeros>( &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: Immutable + IntoBytes>(
&self,
mem: &GuestMemory,
val: T,
iova: u64,
) -> Result<()>
pub fn write_obj_at_addr<T: Immutable + IntoBytes>( &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 Freeze for ExportedRegion
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§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.