pub struct MmHandle { /* private fields */ }Expand description
Explicit process ownership of an address space.
Implementations§
Source§impl MmHandle
impl MmHandle
pub fn id(&self) -> AddressSpaceId
pub fn state(&self) -> MmState
pub fn user_refs(&self) -> usize
pub fn kernel_pins(&self) -> usize
pub fn active_cpus(&self) -> usize
pub fn active_cpu_mask(&self) -> usize
Sourcepub fn cpu_state(&self) -> AddressSpaceCpuState
pub fn cpu_state(&self) -> AddressSpaceCpuState
Returns an observation of the single scheduler-owned CPU footprint.
This value is deliberately read-only: callers cannot publish a second
active mask beside the ActivationLease counters in MmInner.
pub fn installed(&self) -> InstalledAddressSpace
Sourcepub fn transparent_huge_page_mode(&self) -> TransparentHugePageMode
pub fn transparent_huge_page_mode(&self) -> TransparentHugePageMode
Returns the process policy attached to this MM identity.
Sourcepub fn set_transparent_huge_page_mode(&self, mode: TransparentHugePageMode)
pub fn set_transparent_huge_page_mode(&self, mode: TransparentHugePageMode)
Changes the process-wide THP policy while excluding concurrent faults.
Sourcepub fn refresh_installation(&self)
pub fn refresh_installation(&self)
Refreshes the software view after a page-table root replacement.
Sourcepub fn clone_user_ref(&self) -> Result<Self, CloneUserRefError>
pub fn clone_user_ref(&self) -> Result<Self, CloneUserRefError>
Explicitly duplicates a process owner (fork, CLONE_VM, or vfork).
pub fn pin(&self) -> Result<MmPin, PinError>
pub fn activation(&self, cpu: usize) -> Result<ActivationLease, ActivationError>
Sourcepub fn retire_if_quiescent(&self) -> Option<RetirePermit>
pub fn retire_if_quiescent(&self) -> Option<RetirePermit>
Transitions the last user owner to Retiring without reclaiming data.
Sourcepub fn release_user_ref(&self) -> Option<RetirePermit>
pub fn release_user_ref(&self) -> Option<RetirePermit>
Releases this handle’s process ownership while retaining a non-owning view of the address space. This is the operation used by process exit; unlike cloning and dropping a temporary handle, it cannot keep the owner count artificially non-zero.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for MmHandle
impl !RefUnwindSafe for MmHandle
impl !UnwindSafe for MmHandle
impl Send for MmHandle
impl Sync for MmHandle
impl Unpin for MmHandle
impl UnsafeUnpin for MmHandle
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> DirectoryReadState for T
impl<T> DirectoryReadState for T
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§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>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more