pub enum PageSizePolicy {
Base,
Transparent {
order: PageOrder,
},
ExplicitHuge {
order: PageOrder,
},
}Variants§
Base
Transparent
A normal anonymous mapping that may materialize a PMD-sized leaf after
MADV_HUGEPAGE. Allocation failure may fall back to the faulting base
page, matching Linux’s VM_FAULT_FALLBACK contract.
ExplicitHuge
An explicit MAP_HUGETLB mapping. Failure is reported to userspace;
silently changing its page size would violate the requested ABI.
Implementations§
Source§impl PageSizePolicy
impl PageSizePolicy
pub const TRANSPARENT_2M: Self
Sourcepub const fn for_size(size: usize) -> Self
pub const fn for_size(size: usize) -> Self
Derive an explicit materialization policy from a validated backend page size. Unsupported or non-power-of-two sizes conservatively use base pages; the syscall/backend boundary remains responsible for rejecting an invalid mapping request.
Sourcepub fn fault_leaf_size(
self,
advice: HugePageAdvice,
mode: TransparentHugePageMode,
) -> Option<usize>
pub fn fault_leaf_size( self, advice: HugePageAdvice, mode: TransparentHugePageMode, ) -> Option<usize>
Selects the preferred leaf for one fault after applying Linux’s VMA and
process-wide THP controls. Starry runs anonymous THP in madvise mode:
default and MADV_NOHUGEPAGE use base pages, while MADV_HUGEPAGE may
use the group’s PMD order unless the MM is completely disabled.
pub const fn permits_fault_fallback(self) -> bool
Trait Implementations§
Source§impl Clone for PageSizePolicy
impl Clone for PageSizePolicy
Source§fn clone(&self) -> PageSizePolicy
fn clone(&self) -> PageSizePolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for PageSizePolicy
Source§impl Debug for PageSizePolicy
impl Debug for PageSizePolicy
Source§impl Default for PageSizePolicy
impl Default for PageSizePolicy
Source§fn default() -> PageSizePolicy
fn default() -> PageSizePolicy
impl Eq for PageSizePolicy
Source§impl PartialEq for PageSizePolicy
impl PartialEq for PageSizePolicy
impl StructuralPartialEq for PageSizePolicy
Auto Trait Implementations§
impl Freeze for PageSizePolicy
impl RefUnwindSafe for PageSizePolicy
impl Send for PageSizePolicy
impl Sync for PageSizePolicy
impl Unpin for PageSizePolicy
impl UnsafeUnpin for PageSizePolicy
impl UnwindSafe for PageSizePolicy
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DirectoryReadState for T
impl<T> DirectoryReadState for T
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
impl<T> DmaPod for Twhere
T: Copy,
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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