Struct zircon_object::vm::VmAddressRegion
source · [−]pub struct VmAddressRegion { /* private fields */ }
Expand description
Virtual Memory Address Regions
Implementations
sourceimpl VmAddressRegion
impl VmAddressRegion
sourcepub fn new_kernel() -> Arc<Self>
pub fn new_kernel() -> Arc<Self>
Create a kernel root VMAR.
sourcepub fn allocate_at(
self: &Arc<Self>,
offset: usize,
len: usize,
flags: VmarFlags,
align: usize
) -> ZxResult<Arc<Self>>
pub fn allocate_at(
self: &Arc<Self>,
offset: usize,
len: usize,
flags: VmarFlags,
align: usize
) -> ZxResult<Arc<Self>>
Create a child VMAR at the offset
.
sourcepub fn allocate(
self: &Arc<Self>,
offset: Option<usize>,
len: usize,
flags: VmarFlags,
align: usize
) -> ZxResult<Arc<Self>>
pub fn allocate(
self: &Arc<Self>,
offset: Option<usize>,
len: usize,
flags: VmarFlags,
align: usize
) -> ZxResult<Arc<Self>>
Create a child VMAR with optional offset
.
sourcepub fn map_at(
&self,
vmar_offset: usize,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
flags: MMUFlags
) -> ZxResult<VirtAddr>
pub fn map_at(
&self,
vmar_offset: usize,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
flags: MMUFlags
) -> ZxResult<VirtAddr>
Map the vmo
into this VMAR at given offset
.
sourcepub fn map(
&self,
vmar_offset: Option<usize>,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
flags: MMUFlags
) -> ZxResult<VirtAddr>
pub fn map(
&self,
vmar_offset: Option<usize>,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
flags: MMUFlags
) -> ZxResult<VirtAddr>
Map the vmo
into this VMAR.
sourcepub fn map_ext(
&self,
vmar_offset: Option<usize>,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
permissions: MMUFlags,
flags: MMUFlags,
overwrite: bool,
map_range: bool
) -> ZxResult<VirtAddr>
pub fn map_ext(
&self,
vmar_offset: Option<usize>,
vmo: Arc<VmObject>,
vmo_offset: usize,
len: usize,
permissions: MMUFlags,
flags: MMUFlags,
overwrite: bool,
map_range: bool
) -> ZxResult<VirtAddr>
Map the vmo
into this VMAR.
sourcepub fn unmap(&self, addr: VirtAddr, len: usize) -> ZxResult
pub fn unmap(&self, addr: VirtAddr, len: usize) -> ZxResult
Unmaps all VMO mappings and destroys all sub-regions within the absolute range
including addr
and ending before exclusively at addr + len
.
Any sub-region that is in the range must be fully in the range
(i.e. partial overlaps are an error).
If a mapping is only partially in the range, the mapping is split and the requested
portion is unmapped.
sourcepub fn protect(&self, addr: usize, len: usize, flags: MMUFlags) -> ZxResult
pub fn protect(&self, addr: usize, len: usize, flags: MMUFlags) -> ZxResult
Change protections on a subset of the region of memory in the containing address space. If the requested range overlaps with a subregion, protect() will fail.
sourcepub fn destroy(self: &Arc<Self>) -> ZxResult
pub fn destroy(self: &Arc<Self>) -> ZxResult
Unmap all mappings within the VMAR, and destroy all sub-regions of the region.
sourcepub fn table_phys(&self) -> PhysAddr
pub fn table_phys(&self) -> PhysAddr
Get physical address of the underlying page table.
sourcepub fn get_vaddr_flags(&self, vaddr: usize) -> PagingResult<MMUFlags>
pub fn get_vaddr_flags(&self, vaddr: usize) -> PagingResult<MMUFlags>
Get flags of vaddr
sourcepub fn contains(&self, vaddr: VirtAddr) -> bool
pub fn contains(&self, vaddr: VirtAddr) -> bool
return true if vmar contains vaddr, or return false.
sourcepub fn vdso_base_addr(&self) -> Option<usize>
pub fn vdso_base_addr(&self) -> Option<usize>
Get base address of vdso.
sourcepub fn handle_page_fault(&self, vaddr: VirtAddr, flags: MMUFlags) -> ZxResult
pub fn handle_page_fault(&self, vaddr: VirtAddr, flags: MMUFlags) -> ZxResult
Handle page fault happened on this VMAR.
The fault virtual address is vaddr
and the reason is in flags
.
sourcepub fn fork_from(&self, src: &Arc<Self>) -> ZxResult
pub fn fork_from(&self, src: &Arc<Self>) -> ZxResult
Clone the entire address space and VMOs from source VMAR. (For Linux fork)
sourcepub fn get_task_stats(&self) -> TaskStatsInfo
pub fn get_task_stats(&self) -> TaskStatsInfo
Returns statistics about memory used by a task.
sourcepub fn read_memory(&self, vaddr: usize, buf: &mut [u8]) -> ZxResult<usize>
pub fn read_memory(&self, vaddr: usize, buf: &mut [u8]) -> ZxResult<usize>
Read from address space.
Return the actual number of bytes read.
Trait Implementations
sourceimpl Debug for VmAddressRegion
impl Debug for VmAddressRegion
sourceimpl KernelObject for VmAddressRegion
impl KernelObject for VmAddressRegion
sourcefn signal_set(&self, signal: Signal)
fn signal_set(&self, signal: Signal)
Assert signal
.
sourcefn signal_clear(&self, signal: Signal)
fn signal_clear(&self, signal: Signal)
Deassert signal
.
sourcefn signal_change(&self, clear: Signal, set: Signal)
fn signal_change(&self, clear: Signal, set: Signal)
Change signal status: first clear
then set
indicated bits. Read more
sourcefn add_signal_callback(&self, callback: SignalHandler)
fn add_signal_callback(&self, callback: SignalHandler)
Add callback
for signal status changes. Read more
sourcefn get_child(&self, _id: KoID) -> ZxResult<Arc<dyn KernelObject>>
fn get_child(&self, _id: KoID) -> ZxResult<Arc<dyn KernelObject>>
Attempt to find a child of the object with given KoID. Read more
If the object is related to another (such as the other end of a channel, or the parent of a job), returns the KoID of that object, otherwise returns zero. Read more
sourcefn allowed_signals(&self) -> Signal
fn allowed_signals(&self) -> Signal
Get object’s allowed signals.
sourceimpl VmarExt for VmAddressRegion
impl VmarExt for VmAddressRegion
sourcefn load_from_elf(&self, elf: &ElfFile<'_>) -> ZxResult<Arc<VmObject>>
fn load_from_elf(&self, elf: &ElfFile<'_>) -> ZxResult<Arc<VmObject>>
Create VMObject
from all LOAD segments of elf
and map them to this VMAR.
Return the first VMObject
. Read more
sourcefn map_from_elf(&self, elf: &ElfFile<'_>, vmo: Arc<VmObject>) -> ZxResult
fn map_from_elf(&self, elf: &ElfFile<'_>, vmo: Arc<VmObject>) -> ZxResult
Same as load_from_elf
, but the vmo
is an existing one instead of a lot of new ones.
Auto Trait Implementations
impl !RefUnwindSafe for VmAddressRegion
impl Send for VmAddressRegion
impl Sync for VmAddressRegion
impl Unpin for VmAddressRegion
impl !UnwindSafe for VmAddressRegion
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CheckedAs for T
impl<T> CheckedAs for T
sourcefn checked_as<Dst>(self) -> Option<Dst> where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst> where
T: CheckedCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> CheckedCastFrom<Src> for Dst where
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dst where
Src: CheckedCast<Dst>,
sourcefn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
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. Read more
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. Read more
sourceimpl<T> OverflowingAs for T
impl<T> OverflowingAs for T
sourcefn overflowing_as<Dst>(self) -> (Dst, bool) where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool) where
T: OverflowingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> OverflowingCastFrom<Src> for Dst where
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dst where
Src: OverflowingCast<Dst>,
sourcefn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
sourceimpl<T> SaturatingAs for T
impl<T> SaturatingAs for T
sourcefn saturating_as<Dst>(self) -> Dst where
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dst where
T: SaturatingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> SaturatingCastFrom<Src> for Dst where
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dst where
Src: SaturatingCast<Dst>,
sourcefn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
sourceimpl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
sourcefn unwrapped_as<Dst>(self) -> Dst where
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dst where
T: UnwrappedCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> UnwrappedCastFrom<Src> for Dst where
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dst where
Src: UnwrappedCast<Dst>,
sourcefn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
sourceimpl<T> WrappingAs for T
impl<T> WrappingAs for T
sourcefn wrapping_as<Dst>(self) -> Dst where
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dst where
T: WrappingCast<Dst>,
Casts the value.
sourceimpl<Src, Dst> WrappingCastFrom<Src> for Dst where
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dst where
Src: WrappingCast<Dst>,
sourcefn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.