pub struct UserPtConfig {}Expand description
The configuration for user page tables.
Trait Implementations§
Source§impl Clone for UserPtConfig
impl Clone for UserPtConfig
Source§fn clone(&self) -> UserPtConfig
fn clone(&self) -> UserPtConfig
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for UserPtConfig
impl Debug for UserPtConfig
Source§impl PageTableConfig for UserPtConfig
impl PageTableConfig for UserPtConfig
Source§open spec fn TOP_LEVEL_INDEX_RANGE_spec() -> Range<usize>
open spec fn TOP_LEVEL_INDEX_RANGE_spec() -> Range<usize>
{ 0..256 }Source§open spec fn TOP_LEVEL_CAN_UNMAP_spec() -> b : bool
open spec fn TOP_LEVEL_CAN_UNMAP_spec() -> b : bool
{ true }Source§exec fn TOP_LEVEL_INDEX_RANGE() -> Range<usize>
exec fn TOP_LEVEL_INDEX_RANGE() -> Range<usize>
Source§exec fn TOP_LEVEL_CAN_UNMAP() -> b : bool
exec fn TOP_LEVEL_CAN_UNMAP() -> b : bool
Source§open spec fn perm_well_formed_with_region(
pa: Paddr,
perm: Tracked<Option<Self::Perm>>,
regions: MetaRegionOwners,
) -> bool
open spec fn perm_well_formed_with_region( pa: Paddr, perm: Tracked<Option<Self::Perm>>, regions: MetaRegionOwners, ) -> bool
{
perm@ is Some
==> {
let idx = crate::specs::mm::frame::mapping::frame_to_index(pa);
let frame_perm = perm@->0;
&&& frame_perm.0 == regions.slots[idx]
&&& frame_perm.1.frac() == 1
&&& frame_perm.1.id() == regions.slot_owners[idx].metadata_perm.id()
&&& MetaSlot::perms_related(*frame_perm.0, frame_perm.1.resource())
}
}Source§proof fn lemma_none_perm_well_formed(pa: Paddr, regions: MetaRegionOwners)
proof fn lemma_none_perm_well_formed(pa: Paddr, regions: MetaRegionOwners)
Source§open spec fn item_into_raw_spec(
item: Self::Item,
) -> (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>)
open spec fn item_into_raw_spec( item: Self::Item, ) -> (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>)
{
(
item.frame.start_paddr_spec(),
1,
item.prop,
Tracked(
Some((item.frame.tracked_slot_perm@, item.frame.tracked_metadata_perm@->0)),
),
)
}Source§exec fn item_into_raw(
item: Self::Item,
) -> res : (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>)
exec fn item_into_raw( item: Self::Item, ) -> res : (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>)
Source§open spec fn item_from_raw_spec(
paddr: Paddr,
_level: PagingLevel,
prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
) -> Self::Item
open spec fn item_from_raw_spec( paddr: Paddr, _level: PagingLevel, prop: PageProperty, perm: Tracked<Option<Self::Perm>>, ) -> Self::Item
{
MappedItem {
frame: UFrame {
ptr: vstd::simple_pptr::PPtr(
crate::mm::frame::meta::mapping::frame_to_meta(paddr),
PhantomData,
),
_marker: PhantomData,
#[cfg(verus_keep_ghost_body)]
tracked_slot_perm: Tracked((perm@->0).0),
#[cfg(verus_keep_ghost_body)]
tracked_metadata_perm: Tracked(Some((perm@->0).1)),
},
prop,
}
}Source§unsafe exec fn item_from_raw(
paddr: Paddr,
level: PagingLevel,
prop: PageProperty,
Tracked(perm): Tracked<Option<Self::Perm>>,
) -> Self::Item
unsafe exec fn item_from_raw( paddr: Paddr, level: PagingLevel, prop: PageProperty, Tracked(perm): Tracked<Option<Self::Perm>>, ) -> Self::Item
Source§proof fn lemma_item_into_raw_roundtrip(
pa: Paddr,
level: PagingLevel,
prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_item_into_raw_roundtrip( pa: Paddr, level: PagingLevel, prop: PageProperty, perm: Tracked<Option<Self::Perm>>, )
Source§proof fn lemma_item_from_raw_roundtrip(
item: Self::Item,
paddr: Paddr,
level: PagingLevel,
prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_item_from_raw_roundtrip( item: Self::Item, paddr: Paddr, level: PagingLevel, prop: PageProperty, perm: Tracked<Option<Self::Perm>>, )
Source§open spec fn item_well_formed(item: Self::Item) -> bool
open spec fn item_well_formed(item: Self::Item) -> bool
{ item.frame.inv() }Source§open spec fn raw_item_well_formed(
item: (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>),
) -> bool
open spec fn raw_item_well_formed( item: (Paddr, PagingLevel, PageProperty, Tracked<Option<Self::Perm>>), ) -> bool
{
let (pa, level, _prop, perm) = item;
&&& level == 1
&&& perm@ is Some
&&& (perm@->0).0.addr() == crate::mm::frame::meta::mapping::frame_to_meta(pa)
&&& (perm@->0).0.is_init()
&&& (perm@->0).1.frac() == 1
&&& MetaSlot::perms_related(*(perm@->0).0, (perm@->0).1.resource())
}Source§proof fn lemma_perm_well_formed_with_region_preserved(
pa: Paddr,
perm: Tracked<Option<Self::Perm>>,
old_regions: MetaRegionOwners,
new_regions: MetaRegionOwners,
)
proof fn lemma_perm_well_formed_with_region_preserved( pa: Paddr, perm: Tracked<Option<Self::Perm>>, old_regions: MetaRegionOwners, new_regions: MetaRegionOwners, )
Source§proof fn lemma_raw_item_well_formed_preserved(
pa: Paddr,
level: PagingLevel,
old_prop: PageProperty,
new_prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_raw_item_well_formed_preserved( pa: Paddr, level: PagingLevel, old_prop: PageProperty, new_prop: PageProperty, perm: Tracked<Option<Self::Perm>>, )
Source§proof fn lemma_raw_item_well_formed_split(
pa: Paddr,
level: PagingLevel,
prop: PageProperty,
child_pa: Paddr,
child_idx: usize,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_raw_item_well_formed_split( pa: Paddr, level: PagingLevel, prop: PageProperty, child_pa: Paddr, child_idx: usize, perm: Tracked<Option<Self::Perm>>, )
Source§proof fn lemma_huge_raw_item_untracked(
pa: Paddr,
level: PagingLevel,
prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_huge_raw_item_untracked( pa: Paddr, level: PagingLevel, prop: PageProperty, perm: Tracked<Option<Self::Perm>>, )
Source§proof fn lemma_item_from_raw_well_formed(
pa: Paddr,
level: PagingLevel,
prop: PageProperty,
perm: Tracked<Option<Self::Perm>>,
)
proof fn lemma_item_from_raw_well_formed( pa: Paddr, level: PagingLevel, prop: PageProperty, perm: Tracked<Option<Self::Perm>>, )
Source§proof fn lemma_clone_ensures_concrete(
item: Self::Item,
pa: Paddr,
old_regions: MetaRegionOwners,
new_regions: MetaRegionOwners,
res: Self::Item,
)
proof fn lemma_clone_ensures_concrete( item: Self::Item, pa: Paddr, old_regions: MetaRegionOwners, new_regions: MetaRegionOwners, res: Self::Item, )
Source§proof fn lemma_clone_requires_concrete(
item: Self::Item,
pa: Paddr,
level: PagingLevel,
prop: PageProperty,
regions: MetaRegionOwners,
)
proof fn lemma_clone_requires_concrete( item: Self::Item, pa: Paddr, level: PagingLevel, prop: PageProperty, regions: MetaRegionOwners, )
Source§type Item = MappedItem
type Item = MappedItem
The item that can be mapped into the virtual memory space using the
page table. Read more
Source§type Perm = (&'static PointsTo<MetaSlot>, Count<MetadataPerm, REF_COUNT_MAX_USIZE>)
type Perm = (&'static PointsTo<MetaSlot>, Count<MetadataPerm, REF_COUNT_MAX_USIZE>)
Verification-only type of the permission carried by a tracked item.
An untracked item carries
None in its raw representation.Source§fn LEADING_BITS_spec() -> usize
fn LEADING_BITS_spec() -> usize
Source§fn LOCKED_END_BOUND_spec() -> int
fn LOCKED_END_BOUND_spec() -> int
Auto Trait Implementations§
impl Freeze for UserPtConfig
impl RefUnwindSafe for UserPtConfig
impl Send for UserPtConfig
impl Sync for UserPtConfig
impl Unpin for UserPtConfig
impl UnsafeUnpin for UserPtConfig
impl UnwindSafe for UserPtConfig
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,
§impl<T> Conv for T
impl<T> Conv for T
§impl<VERUS_SPEC__A> DebugSpec for VERUS_SPEC__A
impl<VERUS_SPEC__A> DebugSpec for VERUS_SPEC__A
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
fn obeys_from_spec() -> bool
fn from_spec(v: T) -> VERUS_SPEC__A
§impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> T
§impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> U
Source§impl<C> PagingConstsTrait for Cwhere
C: PageTableConfig,
impl<C> PagingConstsTrait for Cwhere
C: PageTableConfig,
Source§open spec fn BASE_PAGE_SIZE_spec() -> usize
open spec fn BASE_PAGE_SIZE_spec() -> usize
{ C::C::BASE_PAGE_SIZE_spec() }Source§exec fn BASE_PAGE_SIZE() -> usize
exec fn BASE_PAGE_SIZE() -> usize
Source§open spec fn NR_LEVELS_spec() -> u8
open spec fn NR_LEVELS_spec() -> u8
{ C::C::NR_LEVELS_spec() }Source§open spec fn HIGHEST_TRANSLATION_LEVEL_spec() -> u8
open spec fn HIGHEST_TRANSLATION_LEVEL_spec() -> u8
{ C::C::HIGHEST_TRANSLATION_LEVEL_spec() }Source§exec fn HIGHEST_TRANSLATION_LEVEL() -> u8
exec fn HIGHEST_TRANSLATION_LEVEL() -> u8
Source§open spec fn PTE_SIZE_spec() -> usize
open spec fn PTE_SIZE_spec() -> usize
{ C::C::PTE_SIZE_spec() }Source§open spec fn ADDRESS_WIDTH_spec() -> usize
open spec fn ADDRESS_WIDTH_spec() -> usize
{ C::C::ADDRESS_WIDTH_spec() }Source§exec fn ADDRESS_WIDTH() -> usize
exec fn ADDRESS_WIDTH() -> usize
Source§open spec fn VA_SIGN_EXT_spec() -> bool
open spec fn VA_SIGN_EXT_spec() -> bool
{ C::C::VA_SIGN_EXT_spec() }Source§exec fn VA_SIGN_EXT() -> bool
exec fn VA_SIGN_EXT() -> bool
Source§proof fn lemma_paging_consts_requirements()
proof fn lemma_paging_consts_requirements()
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.impl<A> SpecEq<&A> for Awhere
A: ?Sized,
impl<A> SpecEq<&mut A> for Awhere
A: ?Sized,
impl<A> SpecEq<A> for Awhere
A: ?Sized,
impl<A> SpecEq<Ghost<A>> for A
impl<A> SpecEq<Tracked<A>> for A
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.