Struct page_table_entry::UnmappedFrameRange
source · pub struct UnmappedFrameRange(/* private fields */);Expand description
A range of frames that have been unmapped from a PageTableEntry
that previously mapped that frame exclusively (i.e., “owned it”).
UnmappedFrameRange can be used to create an UnmappedFrames
and then safely deallocated within the frame_allocator.
See the PageTableEntry::set_unmapped() function.
Methods from Deref<Target = FrameRange>§
pub fn start(&self) -> &Frame<P>
pub fn start(&self) -> &Frame<P>
Returns the starting [Frame] in this FrameRange.
pub fn end(&self) -> &Frame<P>
pub fn end(&self) -> &Frame<P>
Returns the ending [Frame] in this FrameRange.
pub fn start_address(&self) -> PhysicalAddress
pub fn start_address(&self) -> PhysicalAddress
Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.
pub fn size_in_frames(&self) -> usize
pub fn size_in_frames(&self) -> usize
Returns the number of [Frame]s covered by this iterator.
Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.
pub fn size_in_bytes(&self) -> usize
pub fn size_in_bytes(&self) -> usize
Returns the size of this range in bytes.
pub fn contains_address(&self, addr: PhysicalAddress) -> bool
pub fn contains_address(&self, addr: PhysicalAddress) -> bool
Returns true if this FrameRange contains the given [PhysicalAddress].
pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>
pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>
Returns the offset of the given [PhysicalAddress] within this FrameRange, i.e., addr - self.start_address().
If the given addr is not covered by this range of [Frame]s, this returns None.
Examples
If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).
pub fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>
pub fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>
Returns the [PhysicalAddress] at the given offset into this FrameRangewithin this FrameRange, i.e., self.start_address() + offset.
If the given offset is not within this range of [Frame]s, this returns None.
Examples
If the range covers addresses 0x2000 through 0x3FFF, then address_at_offset(0x1500) would return Some(0x3500), and address_at_offset(0x2000) would return None.
pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>
pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>
Returns a new separate FrameRange that is extended to include the given [Frame].
pub fn contains_range(&self, other: &FrameRange<P>) -> bool
pub fn contains_range(&self, other: &FrameRange<P>) -> bool
Returns true if the other FrameRange is fully contained within this FrameRange.
Methods from Deref<Target = RangeInclusive<Frame<P>>>§
sourcepub fn iter(&self) -> RangeInclusiveIterator<Idx>
pub fn iter(&self) -> RangeInclusiveIterator<Idx>
Returns an iterator with the same start and end values as the range.
sourcepub fn contains<U>(&self, item: &U) -> boolwhere
Idx: PartialOrd<U>,
U: PartialOrd<Idx> + ?Sized,
pub fn contains<U>(&self, item: &U) -> boolwhere Idx: PartialOrd<U>, U: PartialOrd<Idx> + ?Sized,
Returns true if item is contained in the range.