Type Alias memory::AllocatedFrames

pub type AllocatedFrames<P = Page4K>where
    P: PageSize, = Frames<frame_allocator::::AllocatedFrames::{constant#0}, P>;
Expand description

A type alias for Frames in the Allocated state.

Aliased Type§

struct AllocatedFrames<P = Page4K>where
    P: PageSize,{ /* private fields */ }

Methods from Deref<Target = FrameRange<P>>§

pub fn start(&self) -> &Frame<P>

Returns the starting Frame in this FrameRange.

pub fn end(&self) -> &Frame<P>

Returns the ending Frame in this FrameRange.

pub fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress of the starting Frame in this FrameRange.

pub fn size_in_frames(&self) -> usize

Returns the number of Frames 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

Returns the size of this range in bytes.

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>

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 Frames, 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>

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 Frames, 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>

Returns a new separate FrameRange that is extended to include the given Frame.

pub fn contains_range(&self, other: &FrameRange<P>) -> bool

Returns true if the other FrameRange is fully contained within this FrameRange.

pub fn overlap(&self, other: &FrameRange<P>) -> Option<FrameRange<P>>

Returns an inclusive FrameRange representing the Frames that overlap across this FrameRange and the given other FrameRange.

If there is no overlap between the two ranges, None is returned.

Methods from Deref<Target = RangeInclusive<Frame<P>>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

pub fn iter(&self) -> RangeInclusiveIterator<Idx>

Returns an iterator with the same start and end values as the range.

source

pub fn contains<U>(&self, item: &U) -> boolwhere Idx: PartialOrd<U>, U: PartialOrd<Idx> + ?Sized,

Returns true if item is contained in the range.

Trait Implementations§

§

impl<const S: MemoryState, P> Deref for Frames<S, P>where P: PageSize,

§

type Target = FrameRange<P>

The resulting type after dereferencing.
§

fn deref(&self) -> &<Frames<S, P> as Deref>::Target

Dereferences the value.