From ca4055238a3367a3bc2979e4214520b71e5a7790 Mon Sep 17 00:00:00 2001 From: tsoutsman Date: Wed, 8 Nov 2023 22:08:27 +0000 Subject: [PATCH] Parameterize `AllocatedPages` with `P: PageSize` (#1072) * This is another small step in the effort to support huge pages. * 4K-sized pages are always the default, so no other code has to change yet. * We always specify `

` or `` parameters even when not needed, just for the sake of explicit clarity. * Just like the frame allocator, the page allocator only deals with 4K-sized page chunks. Huge pages can be obtained by attempting to convert a range of 4K-sized pages into a range of huge 2M or 1G sized pages. 029b538523dd02f0a4d4efe574d412c88a4d4157 --- .../enum.FramesIteratorRequest.html | 8 +- .../enum.MemoryRegionType.html | 6 +- doc/frame_allocator/fn.allocate_frames.html | 2 +- .../fn.allocate_frames_at.html | 4 +- .../fn.allocate_frames_by_bytes.html | 4 +- .../fn.allocate_frames_by_bytes_at.html | 4 +- .../fn.allocate_frames_by_bytes_deferred.html | 4 +- .../fn.allocate_frames_deferred.html | 4 +- doc/frame_allocator/fn.init.html | 2 +- .../fn.inspect_then_allocate_free_frames.html | 4 +- doc/frame_allocator/index.html | 6 +- .../struct.AllocatedFrame.html | 13 +- .../struct.AllocatedFramesIter.html | 11 +- .../struct.DeferredAllocAction.html | 4 +- doc/frame_allocator/struct.Frames.html | 43 ++- .../struct.PhysicalMemoryRegion.html | 22 +- doc/frame_allocator/struct.SplitFrames.html | 9 +- doc/frame_allocator/type.AllocatedFrames.html | 44 +-- doc/frame_allocator/type.FreeFrames.html | 44 +-- doc/frame_allocator/type.MappedFrames.html | 44 +-- doc/frame_allocator/type.UnmappedFrames.html | 44 +-- doc/implementors/core/borrow/trait.Borrow.js | 4 +- doc/implementors/core/clone/trait.Clone.js | 2 +- doc/implementors/core/cmp/trait.Eq.js | 6 +- doc/implementors/core/cmp/trait.Ord.js | 4 +- doc/implementors/core/cmp/trait.PartialEq.js | 6 +- doc/implementors/core/cmp/trait.PartialOrd.js | 4 +- doc/implementors/core/convert/trait.AsMut.js | 2 +- doc/implementors/core/convert/trait.From.js | 2 +- .../core/convert/trait.TryFrom.js | 2 +- .../core/default/trait.Default.js | 3 +- doc/implementors/core/fmt/trait.Debug.js | 6 +- doc/implementors/core/hash/trait.Hash.js | 2 +- .../core/iter/range/trait.Step.js | 2 +- .../iter/traits/collect/trait.IntoIterator.js | 4 +- .../iter/traits/iterator/trait.Iterator.js | 2 +- doc/implementors/core/marker/trait.Copy.js | 2 +- doc/implementors/core/marker/trait.Freeze.js | 6 +- doc/implementors/core/marker/trait.Send.js | 6 +- .../core/marker/trait.StructuralEq.js | 4 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- doc/implementors/core/marker/trait.Sync.js | 6 +- doc/implementors/core/marker/trait.Unpin.js | 6 +- doc/implementors/core/ops/arith/trait.Add.js | 2 +- .../core/ops/arith/trait.AddAssign.js | 2 +- doc/implementors/core/ops/arith/trait.Sub.js | 2 +- .../core/ops/arith/trait.SubAssign.js | 2 +- .../core/ops/deref/trait.Deref.js | 6 +- .../core/ops/deref/trait.DerefMut.js | 2 +- doc/implementors/core/ops/drop/trait.Drop.js | 4 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 6 +- .../panic/unwind_safe/trait.UnwindSafe.js | 6 +- doc/memory/all.html | 2 +- doc/memory/constant.DMA_FLAGS.html | 2 +- doc/memory/constant.MMIO_FLAGS.html | 2 +- doc/memory/fn.allocate_frames.html | 2 +- doc/memory/fn.allocate_frames_at.html | 2 +- doc/memory/fn.allocate_frames_by_bytes.html | 2 +- .../fn.allocate_frames_by_bytes_at.html | 2 +- .../fn.allocate_frames_by_bytes_deferred.html | 2 +- doc/memory/fn.allocate_frames_deferred.html | 2 +- doc/memory/fn.allocate_pages.html | 2 +- doc/memory/fn.allocate_pages_at.html | 2 +- doc/memory/fn.allocate_pages_by_bytes.html | 4 +- doc/memory/fn.allocate_pages_by_bytes_at.html | 2 +- .../fn.allocate_pages_by_bytes_deferred.html | 2 +- .../fn.allocate_pages_by_bytes_in_range.html | 2 +- doc/memory/fn.allocate_pages_deferred.html | 2 +- doc/memory/fn.allocate_pages_in_range.html | 2 +- doc/memory/fn.create_contiguous_mapping.html | 2 +- doc/memory/fn.create_identity_mapping.html | 2 +- doc/memory/fn.create_mapping.html | 2 +- doc/memory/fn.get_kernel_mmi_ref.html | 2 +- doc/memory/fn.init.html | 2 +- doc/memory/fn.init_post_heap.html | 2 +- doc/memory/fn.map_frame_range.html | 2 +- .../fn.set_broadcast_tlb_shootdown_cb.html | 2 +- doc/memory/fn.translate.html | 2 +- doc/memory/index.html | 5 +- doc/memory/macro.chunk_sized_expr!.html | 11 + doc/memory/macro.chunk_sized_expr.html | 5 + doc/memory/sidebar-items.js | 2 +- doc/memory/struct.AllocatedPages.html | 34 +- doc/memory/struct.BorrowedMappedPages.html | 32 +- .../struct.BorrowedSliceMappedPages.html | 32 +- doc/memory/struct.CopyableFrameRange.html | 23 -- doc/memory/struct.CopyablePageRange.html | 23 -- .../struct.EarlyIdentityMappedPages.html | 4 +- doc/memory/struct.Frame.html | 27 +- doc/memory/struct.FrameRange.html | 32 +- doc/memory/struct.Immutable.html | 4 +- doc/memory/struct.InitialMemoryMappings.html | 4 +- doc/memory/struct.MappedPages.html | 40 +- doc/memory/struct.Mapper.html | 27 +- doc/memory/struct.MemoryManagementInfo.html | 4 +- doc/memory/struct.Mutable.html | 4 +- doc/memory/struct.Page.html | 29 +- doc/memory/struct.PageRange.html | 30 +- doc/memory/struct.PageTable.html | 39 +- doc/memory/trait.Mutability.html | 4 +- doc/memory/trait.PageSize.html | 2 +- doc/memory/type.AllocatedFrames.html | 15 +- doc/memory/type.MmiRef.html | 2 +- doc/memory/type.UnmappedFrames.html | 15 +- doc/memory_structs/all.html | 2 +- doc/memory_structs/index.html | 4 +- doc/memory_structs/sidebar-items.js | 2 +- .../struct.CopyableFrameRange.html | 17 - .../struct.CopyablePageRange.html | 17 - doc/memory_structs/struct.Frame.html | 36 +- doc/memory_structs/struct.FrameRange.html | 39 +- doc/memory_structs/struct.Page.html | 44 ++- doc/memory_structs/struct.PageRange.html | 39 +- doc/memory_structs/trait.PageSize.html | 2 +- doc/page_allocator/enum.AllocationError.html | 12 +- .../enum.AllocationRequest.html | 6 +- doc/page_allocator/fn.allocate_pages.html | 2 +- doc/page_allocator/fn.allocate_pages_at.html | 4 +- .../fn.allocate_pages_by_bytes.html | 4 +- .../fn.allocate_pages_by_bytes_at.html | 4 +- .../fn.allocate_pages_by_bytes_deferred.html | 4 +- .../fn.allocate_pages_by_bytes_in_range.html | 6 +- .../fn.allocate_pages_deferred.html | 4 +- .../fn.allocate_pages_in_range.html | 6 +- doc/page_allocator/index.html | 2 +- doc/page_allocator/struct.AllocatedPages.html | 35 +- .../struct.DeferredAllocAction.html | 4 +- .../struct.PageTableEntry.html | 6 +- .../struct.UnmappedFrameRange.html | 10 +- doc/search-index.js | 10 +- doc/src/frame_allocator/lib.rs.html | 320 +++++++++------- doc/src/memory/lib.rs.html | 2 + doc/src/memory/paging/mapper.rs.html | 352 ++++++++++++++++-- doc/src/memory/paging/mod.rs.html | 4 +- doc/src/memory_structs/lib.rs.html | 198 ++++++++-- doc/src/page_allocator/lib.rs.html | 136 ++++--- doc/src/page_table_entry/lib.rs.html | 4 +- doc/stack/struct.Stack.html | 10 +- 138 files changed, 1421 insertions(+), 870 deletions(-) create mode 100644 doc/memory/macro.chunk_sized_expr!.html create mode 100644 doc/memory/macro.chunk_sized_expr.html delete mode 100644 doc/memory/struct.CopyableFrameRange.html delete mode 100644 doc/memory/struct.CopyablePageRange.html delete mode 100644 doc/memory_structs/struct.CopyableFrameRange.html delete mode 100644 doc/memory_structs/struct.CopyablePageRange.html diff --git a/doc/frame_allocator/enum.FramesIteratorRequest.html b/doc/frame_allocator/enum.FramesIteratorRequest.html index 750af0ada3..82927b5358 100644 --- a/doc/frame_allocator/enum.FramesIteratorRequest.html +++ b/doc/frame_allocator/enum.FramesIteratorRequest.html @@ -1,15 +1,15 @@ -FramesIteratorRequest in frame_allocator - Rust

pub enum FramesIteratorRequest {
+FramesIteratorRequest in frame_allocator - Rust
pub enum FramesIteratorRequest {
     Next,
     Stop,
     AllocateAt {
-        requested_frame: Frame,
+        requested_frame: Frame<Page4K>,
         num_frames: usize,
     },
-}
Expand description

An enum that must be returned by the function passed into [iter_free_frames()] +}

Expand description

An enum that must be returned by the function passed into inspect_then_allocate_free_frames() in order to define the post-iteration behavior.

Variants§

§

Next

Keep iterating to the next chunk of frames.

§

Stop

Stop iterating, and do not allocate anything.

-
§

AllocateAt

Fields

§requested_frame: Frame
§num_frames: usize

Stop iterating, and then attempt to allocate the specified frames.

+
§

AllocateAt

Fields

§requested_frame: Frame<Page4K>
§num_frames: usize

Stop iterating, and then attempt to allocate the specified frames.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere diff --git a/doc/frame_allocator/enum.MemoryRegionType.html b/doc/frame_allocator/enum.MemoryRegionType.html index 4b5e52262c..d4a09fcd6f 100644 --- a/doc/frame_allocator/enum.MemoryRegionType.html +++ b/doc/frame_allocator/enum.MemoryRegionType.html @@ -1,4 +1,4 @@ -MemoryRegionType in frame_allocator - Rust
pub enum MemoryRegionType {
+MemoryRegionType in frame_allocator - Rust
pub enum MemoryRegionType {
     Free,
     Reserved,
     Unknown,
@@ -10,9 +10,9 @@
 
§

Unknown

Memory of an unknown type. This is a default value that acts as a sanity check, because it is invalid to do any real work (e.g., allocation, access) with an unknown memory region.

-

Trait Implementations§

source§

impl Clone for MemoryRegionType

source§

fn clone(&self) -> MemoryRegionType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MemoryRegionType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<MemoryRegionType> for MemoryRegionType

source§

fn eq(&self, other: &MemoryRegionType) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for MemoryRegionType

source§

fn clone(&self) -> MemoryRegionType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MemoryRegionType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<MemoryRegionType> for MemoryRegionType

source§

fn eq(&self, other: &MemoryRegionType) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for MemoryRegionType

source§

impl Eq for MemoryRegionType

source§

impl StructuralEq for MemoryRegionType

source§

impl StructuralPartialEq for MemoryRegionType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

source§

impl Copy for MemoryRegionType

source§

impl Eq for MemoryRegionType

source§

impl StructuralEq for MemoryRegionType

source§

impl StructuralPartialEq for MemoryRegionType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/frame_allocator/fn.allocate_frames.html b/doc/frame_allocator/fn.allocate_frames.html index ceb5135d15..b710b72bc0 100644 --- a/doc/frame_allocator/fn.allocate_frames.html +++ b/doc/frame_allocator/fn.allocate_frames.html @@ -1,3 +1,3 @@ -allocate_frames in frame_allocator - Rust
pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames>
Expand description

Allocates the given number of frames with no constraints on the starting physical address.

+allocate_frames in frame_allocator - Rust
pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames<Page4K>>
Expand description

Allocates the given number of frames with no constraints on the starting physical address.

See allocate_frames_deferred() for more details.

\ No newline at end of file diff --git a/doc/frame_allocator/fn.allocate_frames_at.html b/doc/frame_allocator/fn.allocate_frames_at.html index 33d717ae21..bd4548b30c 100644 --- a/doc/frame_allocator/fn.allocate_frames_at.html +++ b/doc/frame_allocator/fn.allocate_frames_at.html @@ -1,6 +1,6 @@ -allocate_frames_at in frame_allocator - Rust
pub fn allocate_frames_at(
+allocate_frames_at in frame_allocator - Rust
pub fn allocate_frames_at(
     paddr: PhysicalAddress,
     num_frames: usize
-) -> Result<AllocatedFrames, &'static str>
Expand description

Allocates the given number of frames starting at (inclusive of) the frame containing the given PhysicalAddress.

+) -> Result<AllocatedFrames<Page4K>, &'static str>
Expand description

Allocates the given number of frames starting at (inclusive of) the frame containing the given PhysicalAddress.

See allocate_frames_deferred() for more details.

\ No newline at end of file diff --git a/doc/frame_allocator/fn.allocate_frames_by_bytes.html b/doc/frame_allocator/fn.allocate_frames_by_bytes.html index 395d20d73f..84205bb8e1 100644 --- a/doc/frame_allocator/fn.allocate_frames_by_bytes.html +++ b/doc/frame_allocator/fn.allocate_frames_by_bytes.html @@ -1,4 +1,6 @@ -allocate_frames_by_bytes in frame_allocator - Rust
pub fn allocate_frames_by_bytes(num_bytes: usize) -> Option<AllocatedFrames>
Expand description

Allocates frames with no constraints on the starting physical address, +allocate_frames_by_bytes in frame_allocator - Rust

pub fn allocate_frames_by_bytes(
+    num_bytes: usize
+) -> Option<AllocatedFrames<Page4K>>
Expand description

Allocates frames with no constraints on the starting physical address, with a size given by the number of bytes.

This function still allocates whole frames by rounding up the number of bytes. See allocate_frames_deferred() for more details.

diff --git a/doc/frame_allocator/fn.allocate_frames_by_bytes_at.html b/doc/frame_allocator/fn.allocate_frames_by_bytes_at.html index 42d96b9c29..ff8127b949 100644 --- a/doc/frame_allocator/fn.allocate_frames_by_bytes_at.html +++ b/doc/frame_allocator/fn.allocate_frames_by_bytes_at.html @@ -1,7 +1,7 @@ -allocate_frames_by_bytes_at in frame_allocator - Rust
pub fn allocate_frames_by_bytes_at(
+allocate_frames_by_bytes_at in frame_allocator - Rust
pub fn allocate_frames_by_bytes_at(
     paddr: PhysicalAddress,
     num_bytes: usize
-) -> Result<AllocatedFrames, &'static str>
Expand description

Allocates frames starting at the given PhysicalAddress with a size given in number of bytes.

+) -> Result<AllocatedFrames<Page4K>, &'static str>
Expand description

Allocates frames starting at the given PhysicalAddress with a size given in number of bytes.

This function still allocates whole frames by rounding up the number of bytes. See allocate_frames_deferred() for more details.

\ No newline at end of file diff --git a/doc/frame_allocator/fn.allocate_frames_by_bytes_deferred.html b/doc/frame_allocator/fn.allocate_frames_by_bytes_deferred.html index 11ce311665..9544f69826 100644 --- a/doc/frame_allocator/fn.allocate_frames_by_bytes_deferred.html +++ b/doc/frame_allocator/fn.allocate_frames_by_bytes_deferred.html @@ -1,7 +1,7 @@ -allocate_frames_by_bytes_deferred in frame_allocator - Rust
pub fn allocate_frames_by_bytes_deferred(
+allocate_frames_by_bytes_deferred in frame_allocator - Rust
pub fn allocate_frames_by_bytes_deferred(
     requested_paddr: Option<PhysicalAddress>,
     num_bytes: usize
-) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), &'static str>
Expand description

Similar to allocated_frames_deferred(), +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), &'static str>

Expand description

Similar to allocated_frames_deferred(), but accepts a size value for the allocated frames in number of bytes instead of number of frames.

This function still allocates whole frames by rounding up the number of bytes.

\ No newline at end of file diff --git a/doc/frame_allocator/fn.allocate_frames_deferred.html b/doc/frame_allocator/fn.allocate_frames_deferred.html index 297196207d..76c710d655 100644 --- a/doc/frame_allocator/fn.allocate_frames_deferred.html +++ b/doc/frame_allocator/fn.allocate_frames_deferred.html @@ -1,7 +1,7 @@ -allocate_frames_deferred in frame_allocator - Rust
pub fn allocate_frames_deferred(
+allocate_frames_deferred in frame_allocator - Rust
pub fn allocate_frames_deferred(
     requested_paddr: Option<PhysicalAddress>,
     num_frames: usize
-) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), &'static str>
Expand description

The core frame allocation routine that allocates the given number of physical frames, +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), &'static str>

Expand description

The core frame allocation routine that allocates the given number of physical frames, optionally at the requested starting PhysicalAddress.

This simply reserves a range of frames; it does not perform any memory mapping. Thus, the memory represented by the returned AllocatedFrames isn’t directly accessible diff --git a/doc/frame_allocator/fn.init.html b/doc/frame_allocator/fn.init.html index ac19bc18e9..02c5273388 100644 --- a/doc/frame_allocator/fn.init.html +++ b/doc/frame_allocator/fn.init.html @@ -1,4 +1,4 @@ -init in frame_allocator - Rust

Function frame_allocator::init

source ·
pub fn init<F, R, P>(
+init in frame_allocator - Rust

Function frame_allocator::init

source ·
pub fn init<F, R, P>(
     free_physical_memory_areas: F,
     reserved_physical_memory_areas: R
 ) -> Result<fn(_: FrameRange) -> UnmappedFrames, &'static str>where
diff --git a/doc/frame_allocator/fn.inspect_then_allocate_free_frames.html b/doc/frame_allocator/fn.inspect_then_allocate_free_frames.html
index ed2d079698..a5b3dab0ed 100644
--- a/doc/frame_allocator/fn.inspect_then_allocate_free_frames.html
+++ b/doc/frame_allocator/fn.inspect_then_allocate_free_frames.html
@@ -1,6 +1,6 @@
-inspect_then_allocate_free_frames in frame_allocator - Rust
pub fn inspect_then_allocate_free_frames<F>(
+inspect_then_allocate_free_frames in frame_allocator - Rust
pub fn inspect_then_allocate_free_frames<F>(
     func: &mut F
-) -> Result<Option<AllocatedFrames>, &'static str>where
+) -> Result<Option<AllocatedFrames<Page4K>>, &'static str>where
     F: FnMut(&FreeFrames) -> FramesIteratorRequest,
Expand description

Iterates over all free frames and invokes the given func on each one in order to determine what to do with those frames.

See FramesIteratorRequest for more detail.

diff --git a/doc/frame_allocator/index.html b/doc/frame_allocator/index.html index 65e8872b0d..7eeae669c0 100644 --- a/doc/frame_allocator/index.html +++ b/doc/frame_allocator/index.html @@ -1,5 +1,5 @@ frame_allocator - Rust

Crate frame_allocator

source ·
Expand description

Provides an allocator for physical memory frames. +

  • All Items
  • Crate frame_allocator

    source ·
    Expand description

    Provides an allocator for physical memory frames. The minimum unit of allocation is a single frame.

    This is currently a modified and more complex version of the page_allocator crate. TODO: extract the common code and create a generic allocator that can be specialized to allocate pages or frames.

    @@ -16,9 +16,9 @@

    Notes Instead, free chunks are merged only when they are dropped or when needed to fulfill a specific request.

    Structs

    • A reference to a single frame within a range of AllocatedFrames.
    • An iterator over each AllocatedFrame in a range of AllocatedFrames.
    • A series of pending actions related to frame allocator bookkeeping, which may result in heap allocation.
    • A range of contiguous frames in physical memory.
    • PhysicalMemoryRegion represents a range of contiguous frames in physical memory for bookkeeping purposes. -It does not give access to the underlying frames.
    • The result of splitting a Frames object into multiple smaller Frames objects.

    Enums

    • An enum that must be returned by the function passed into [iter_free_frames()] +It does not give access to the underlying frames.
    • The result of splitting a Frames object into multiple smaller Frames objects.

    Enums

    Functions

    • Allocates the given number of frames with no constraints on the starting physical address.
    • Allocates the given number of frames starting at (inclusive of) the frame containing the given PhysicalAddress.
    • Allocates frames with no constraints on the starting physical address, with a size given by the number of bytes.
    • Allocates frames starting at the given PhysicalAddress with a size given in number of bytes.
    • Similar to allocated_frames_deferred(), but accepts a size value for the allocated frames in number of bytes instead of number of frames.
    • The core frame allocation routine that allocates the given number of physical frames, optionally at the requested starting PhysicalAddress.
    • Initialize the frame allocator with the given list of available and reserved physical memory regions.
    • Iterates over all free frames and invokes the given func on each one -in order to determine what to do with those frames.

    Type Aliases

    \ No newline at end of file +in order to determine what to do with those frames.

    Type Aliases

    • A type alias for Frames in the Allocated state.
    • A type alias for Frames in the Free state, which only suppports 4K pages.
    • A type alias for Frames in the Mapped state.
    • A type alias for Frames in the Unmapped state.
    \ No newline at end of file diff --git a/doc/frame_allocator/struct.AllocatedFrame.html b/doc/frame_allocator/struct.AllocatedFrame.html index f3f9b96689..693ef83202 100644 --- a/doc/frame_allocator/struct.AllocatedFrame.html +++ b/doc/frame_allocator/struct.AllocatedFrame.html @@ -1,10 +1,15 @@ -AllocatedFrame in frame_allocator - Rust
    pub struct AllocatedFrame<'f> { /* private fields */ }
    Expand description

    A reference to a single frame within a range of AllocatedFrames.

    +AllocatedFrame in frame_allocator - Rust
    pub struct AllocatedFrame<'f, P: PageSize> { /* private fields */ }
    Expand description

    A reference to a single frame within a range of AllocatedFrames.

    The lifetime of this type is tied to the lifetime of its owning AllocatedFrames.

    -

    Methods from Deref<Target = Frame>§

    pub fn align_up(&self, alignment_4k_pages: usize) -> Frame<Page4K>

    Returns a new Frame that is aligned up from this Frame to the nearest multiple of alignment_4k_pages.

    -

    pub fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    +

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

    pub fn align_up(&self, alignment_4k_pages: usize) -> Frame<Page4K>

    Returns a new Frame that is aligned up from this Frame to the nearest multiple of alignment_4k_pages.

    +

    pub const MIN: Frame<P> = _

    pub const MAX: Frame<P> = _

    pub fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    pub fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress at the start of this Frame.

    pub fn page_size(&self) -> MemChunkSize

    Returns the size of this Frame.

    -

    Trait Implementations§

    source§

    impl<'f> Debug for AllocatedFrame<'f>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'f> Deref for AllocatedFrame<'f>

    §

    type Target = Frame<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<'f> RefUnwindSafe for AllocatedFrame<'f>

    §

    impl<'f> Send for AllocatedFrame<'f>

    §

    impl<'f> Sync for AllocatedFrame<'f>

    §

    impl<'f> Unpin for AllocatedFrame<'f>

    §

    impl<'f> UnwindSafe for AllocatedFrame<'f>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl<'f, P: Debug + PageSize> Debug for AllocatedFrame<'f, P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'f, P: PageSize> Deref for AllocatedFrame<'f, P>

    §

    type Target = Frame<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<'f, P> RefUnwindSafe for AllocatedFrame<'f, P>where + P: RefUnwindSafe,

    §

    impl<'f, P> Send for AllocatedFrame<'f, P>where + P: Send,

    §

    impl<'f, P> Sync for AllocatedFrame<'f, P>where + P: Sync,

    §

    impl<'f, P> Unpin for AllocatedFrame<'f, P>where + P: Unpin,

    §

    impl<'f, P> UnwindSafe for AllocatedFrame<'f, P>where + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/struct.AllocatedFramesIter.html b/doc/frame_allocator/struct.AllocatedFramesIter.html index b7852feb62..d17eda6783 100644 --- a/doc/frame_allocator/struct.AllocatedFramesIter.html +++ b/doc/frame_allocator/struct.AllocatedFramesIter.html @@ -1,11 +1,11 @@ -AllocatedFramesIter in frame_allocator - Rust
    pub struct AllocatedFramesIter<'f> { /* private fields */ }
    Expand description

    An iterator over each AllocatedFrame in a range of AllocatedFrames.

    +AllocatedFramesIter in frame_allocator - Rust
    pub struct AllocatedFramesIter<'f, P: PageSize> { /* private fields */ }
    Expand description

    An iterator over each AllocatedFrame in a range of AllocatedFrames.

    We must implement our own iterator type here in order to tie the lifetime 'f of a returned AllocatedFrame<'f> type to the lifetime of its containing AllocatedFrames. This is because the underlying type of AllocatedFrames is a [FrameRange], which itself is a RangeInclusive of [Frame]s. Currently, the [RangeInclusiveIterator] type creates a clone of the original RangeInclusive instances rather than borrowing a reference to it.

    -

    Trait Implementations§

    source§

    impl<'f> Iterator for AllocatedFramesIter<'f>

    §

    type Item = AllocatedFrame<'f>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( +

    Trait Implementations§

    source§

    impl<'f, P: PageSize> Iterator for AllocatedFramesIter<'f, P>

    §

    type Item = AllocatedFrame<'f, P>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere @@ -182,7 +182,12 @@ Self: Sized, F: FnMut(Self::Item) -> K, K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +function. Read more

    Auto Trait Implementations§

    §

    impl<'f, P> RefUnwindSafe for AllocatedFramesIter<'f, P>where + P: RefUnwindSafe,

    §

    impl<'f, P> Send for AllocatedFramesIter<'f, P>where + P: Send + Sync,

    §

    impl<'f, P> Sync for AllocatedFramesIter<'f, P>where + P: Sync,

    §

    impl<'f, P> Unpin for AllocatedFramesIter<'f, P>where + P: Unpin,

    §

    impl<'f, P> UnwindSafe for AllocatedFramesIter<'f, P>where + P: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/struct.DeferredAllocAction.html b/doc/frame_allocator/struct.DeferredAllocAction.html index c50b828beb..1e47fcfa46 100644 --- a/doc/frame_allocator/struct.DeferredAllocAction.html +++ b/doc/frame_allocator/struct.DeferredAllocAction.html @@ -1,4 +1,4 @@ -DeferredAllocAction in frame_allocator - Rust
    pub struct DeferredAllocAction<'list> { /* private fields */ }
    Expand description

    A series of pending actions related to frame allocator bookkeeping, +DeferredAllocAction in frame_allocator - Rust

    pub struct DeferredAllocAction<'list> { /* private fields */ }
    Expand description

    A series of pending actions related to frame allocator bookkeeping, which may result in heap allocation.

    The actions are triggered upon dropping this struct. This struct can be returned from the allocate_frames() family of functions @@ -8,7 +8,7 @@

    The vast majority of use cases don’t care about such precise control, so you can simply drop this struct at any time or ignore it with a let _ = ... binding to instantly drop it.

    -

    Trait Implementations§

    source§

    impl<'list> Drop for DeferredAllocAction<'list>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>

    §

    impl<'list> Send for DeferredAllocAction<'list>

    §

    impl<'list> Sync for DeferredAllocAction<'list>

    §

    impl<'list> Unpin for DeferredAllocAction<'list>

    §

    impl<'list> !UnwindSafe for DeferredAllocAction<'list>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl<'list> Drop for DeferredAllocAction<'list>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>

    §

    impl<'list> Send for DeferredAllocAction<'list>

    §

    impl<'list> Sync for DeferredAllocAction<'list>

    §

    impl<'list> Unpin for DeferredAllocAction<'list>

    §

    impl<'list> !UnwindSafe for DeferredAllocAction<'list>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/struct.Frames.html b/doc/frame_allocator/struct.Frames.html index cb7fe361aa..1b2d149755 100644 --- a/doc/frame_allocator/struct.Frames.html +++ b/doc/frame_allocator/struct.Frames.html @@ -1,4 +1,4 @@ -Frames in frame_allocator - Rust

    Struct frame_allocator::Frames

    source ·
    pub struct Frames<const S: MemoryState> { /* private fields */ }
    Expand description

    A range of contiguous frames in physical memory.

    +Frames in frame_allocator - Rust

    Struct frame_allocator::Frames

    source ·
    pub struct Frames<const S: MemoryState, P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A range of contiguous frames in physical memory.

    Each Frames object is globally unique, meaning that the owner of a Frames object has globally-exclusive access to the range of frames it contains.

    A Frames object can be in one of four states:

    @@ -32,25 +32,25 @@

    Ordering and Equ not a FrameRange. This is required so we can search for Frames in a sorted collection using a Frame value. It differs from the behavior of the Deref trait which returns a FrameRange.

    -

    Implementations§

    source§

    impl Frames<{MemoryState::Free}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Free state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Allocated}>

    source

    pub fn into_mapped_frames(self) -> MappedFrames

    Consumes this Frames in the Allocated state and converts them into the Mapped state. +

    Implementations§

    source§

    impl Frames<{MemoryState::Free}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames<Page4K>

    Consumes this Frames in the Free state and converts them into the Allocated state.

    +
    source§

    impl<P: PageSize> Frames<{MemoryState::Allocated}, P>

    source

    pub fn into_mapped_frames(self) -> MappedFrames<P>

    Consumes this Frames in the Allocated state and converts them into the Mapped state. This should only be called once a MappedPages has been created from the Frames.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source§

    impl Frames<{MemoryState::Unmapped}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    -
    source§

    impl<const S: MemoryState> Frames<S>

    source

    pub const fn empty() -> Frames<S>

    Returns a new Frames with an empty range of frames. +

    source§

    impl Frames<{MemoryState::Unmapped}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    +
    source§

    impl<const S: MemoryState, P: PageSize> Frames<S, P>

    source

    pub const fn empty() -> Frames<S, P>

    Returns a new Frames with an empty range of frames. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -
    source

    pub fn split_range( +

    source

    pub fn split_range( self, - frames_to_extract: FrameRange -) -> Result<SplitFrames<S>, Self>

    Splits up the given Frames into multiple smaller Frames.

    + frames_to_extract: FrameRange<P> +) -> Result<SplitFrames<S, P>, Self>

    Splits up the given Frames into multiple smaller Frames.

    Returns a SplitFrames instance containing three Frames:

    1. The range of frames in self that are before the beginning of frames_to_extract.
    2. @@ -58,7 +58,7 @@
      Panic
    3. The range of frames in self that are after the end of frames_to_extract.

    If frames_to_extract is not contained within self, then self is returned unchanged within an Err.

    -
    source

    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    +
    source

    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    • [beginning : at_frame - 1]
    • [at_frame : end]
    • @@ -70,7 +70,9 @@
      Panic
    • If at_frame == self.end + 1, the second returned Frames object will be empty.

    Returns an Err containing this Frames if at_frame is otherwise out of bounds, or if self was empty.

    -

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    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 [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

    Returns the size of this range in bytes.

    @@ -87,21 +89,26 @@
    Examples

    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 [Frame]s 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).

    +

    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§

    source§

    impl<const S: MemoryState> Borrow<Frame<Page4K>> for &Frames<S>

    source§

    fn borrow(&self) -> &Frame

    Immutably borrows from an owned value. Read more
    source§

    impl<const S: MemoryState> Debug for Frames<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<const S: MemoryState> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl<const S: MemoryState> Drop for Frames<S>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<const S: MemoryState> Ord for Frames<S>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

    impl<const S: MemoryState, P: PageSize> Borrow<Frame<P>> for &Frames<S, P>

    source§

    fn borrow(&self) -> &Frame<P>

    Immutably borrows from an owned value. Read more
    source§

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

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

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

    §

    type Target = FrameRange<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

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

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

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

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

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

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

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

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<const S: MemoryState> Eq for Frames<S>

    source§

    impl<const S: MemoryState> StructuralEq for Frames<S>

    Auto Trait Implementations§

    §

    impl<const S: MemoryState> RefUnwindSafe for Frames<S>

    §

    impl<const S: MemoryState> Send for Frames<S>

    §

    impl<const S: MemoryState> Sync for Frames<S>

    §

    impl<const S: MemoryState> Unpin for Frames<S>

    §

    impl<const S: MemoryState> UnwindSafe for Frames<S>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +operator. Read more

    source§

    impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>

    source§

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

    Auto Trait Implementations§

    §

    impl<const S: MemoryState, P> RefUnwindSafe for Frames<S, P>where + P: RefUnwindSafe,

    §

    impl<const S: MemoryState, P> Send for Frames<S, P>where + P: Send,

    §

    impl<const S: MemoryState, P> Sync for Frames<S, P>where + P: Sync,

    §

    impl<const S: MemoryState, P> Unpin for Frames<S, P>where + P: Unpin,

    §

    impl<const S: MemoryState, P> UnwindSafe for Frames<S, P>where + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/struct.PhysicalMemoryRegion.html b/doc/frame_allocator/struct.PhysicalMemoryRegion.html index ea863c0f25..a965b40ad8 100644 --- a/doc/frame_allocator/struct.PhysicalMemoryRegion.html +++ b/doc/frame_allocator/struct.PhysicalMemoryRegion.html @@ -1,5 +1,5 @@ -PhysicalMemoryRegion in frame_allocator - Rust

    Fields§

    §frames: FrameRange<Page4K>

    The Frames covered by this region, an inclusive range.

    §typ: MemoryRegionType

    The type of this memory region, e.g., whether it’s in a free or reserved region.

    -

    Implementations§

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    Implementations§

    Methods from Deref<Target = FrameRange>§

    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 [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

    Returns the size of this range in bytes.

    @@ -29,21 +31,21 @@
    Examples

    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 [Frame]s 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).

    +

    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§

    source§

    impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion

    source§

    fn borrow(&self) -> &Frame

    Immutably borrows from an owned value. Read more
    source§

    impl Clone for PhysicalMemoryRegion

    source§

    fn clone(&self) -> PhysicalMemoryRegion

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PhysicalMemoryRegion

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PhysicalMemoryRegion

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl Ord for PhysicalMemoryRegion

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

    impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion

    source§

    fn borrow(&self) -> &Frame

    Immutably borrows from an owned value. Read more
    source§

    impl Clone for PhysicalMemoryRegion

    source§

    fn clone(&self) -> PhysicalMemoryRegion

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PhysicalMemoryRegion

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PhysicalMemoryRegion

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl Ord for PhysicalMemoryRegion

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl Eq for PhysicalMemoryRegion

    source§

    impl StructuralEq for PhysicalMemoryRegion

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +operator. Read more

    source§

    impl Eq for PhysicalMemoryRegion

    source§

    impl StructuralEq for PhysicalMemoryRegion

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/struct.SplitFrames.html b/doc/frame_allocator/struct.SplitFrames.html index 1e6ddaab1d..9767eaec16 100644 --- a/doc/frame_allocator/struct.SplitFrames.html +++ b/doc/frame_allocator/struct.SplitFrames.html @@ -1,5 +1,10 @@ -SplitFrames in frame_allocator - Rust
    pub struct SplitFrames<const S: MemoryState> { /* private fields */ }
    Expand description

    The result of splitting a Frames object into multiple smaller Frames objects.

    -

    Auto Trait Implementations§

    §

    impl<const S: MemoryState> RefUnwindSafe for SplitFrames<S>

    §

    impl<const S: MemoryState> Send for SplitFrames<S>

    §

    impl<const S: MemoryState> Sync for SplitFrames<S>

    §

    impl<const S: MemoryState> Unpin for SplitFrames<S>

    §

    impl<const S: MemoryState> UnwindSafe for SplitFrames<S>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +SplitFrames in frame_allocator - Rust
    pub struct SplitFrames<const S: MemoryState, P: PageSize> { /* private fields */ }
    Expand description

    The result of splitting a Frames object into multiple smaller Frames objects.

    +

    Auto Trait Implementations§

    §

    impl<const S: MemoryState, P> RefUnwindSafe for SplitFrames<S, P>where + P: RefUnwindSafe,

    §

    impl<const S: MemoryState, P> Send for SplitFrames<S, P>where + P: Send,

    §

    impl<const S: MemoryState, P> Sync for SplitFrames<S, P>where + P: Sync,

    §

    impl<const S: MemoryState, P> Unpin for SplitFrames<S, P>where + P: Unpin,

    §

    impl<const S: MemoryState, P> UnwindSafe for SplitFrames<S, P>where + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/frame_allocator/type.AllocatedFrames.html b/doc/frame_allocator/type.AllocatedFrames.html index 7cf7276a3b..7c747e1e9c 100644 --- a/doc/frame_allocator/type.AllocatedFrames.html +++ b/doc/frame_allocator/type.AllocatedFrames.html @@ -1,23 +1,23 @@ -AllocatedFrames in frame_allocator - Rust
    pub type AllocatedFrames = Frames<{ MemoryState::Allocated }>;
    Expand description

    A type alias for Frames in the Allocated state.

    -

    Aliased Type§

    struct AllocatedFrames { /* private fields */ }

    Implementations§

    source§

    impl AllocatedFrames

    source

    pub fn into_mapped_frames(self) -> MappedFrames

    Consumes this Frames in the Allocated state and converts them into the Mapped state. +AllocatedFrames in frame_allocator - Rust

    pub type AllocatedFrames<P: PageSize = Page4K> = Frames<{ MemoryState::Allocated }, P>;
    Expand description

    A type alias for Frames in the Allocated state.

    +

    Aliased Type§

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

    Implementations§

    source§

    impl<P: PageSize> AllocatedFrames<P>

    source

    pub fn into_mapped_frames(self) -> MappedFrames<P>

    Consumes this Frames in the Allocated state and converts them into the Mapped state. This should only be called once a MappedPages has been created from the Frames.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source§

    impl Frames<{MemoryState::Free}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Free state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Unmapped}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    -
    source§

    impl<const S: MemoryState> Frames<S>

    source

    pub const fn empty() -> Frames<S>

    Returns a new Frames with an empty range of frames. +

    source§

    impl Frames<{MemoryState::Free}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames<Page4K>

    Consumes this Frames in the Free state and converts them into the Allocated state.

    +
    source§

    impl Frames<{MemoryState::Unmapped}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    +
    source§

    impl<const S: MemoryState, P: PageSize> Frames<S, P>

    source

    pub const fn empty() -> Frames<S, P>

    Returns a new Frames with an empty range of frames. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -
    source

    pub fn split_range( +

    source

    pub fn split_range( self, - frames_to_extract: FrameRange -) -> Result<SplitFrames<S>, Self>

    Splits up the given Frames into multiple smaller Frames.

    + frames_to_extract: FrameRange<P> +) -> Result<SplitFrames<S, P>, Self>

    Splits up the given Frames into multiple smaller Frames.

    Returns a SplitFrames instance containing three Frames:

    1. The range of frames in self that are before the beginning of frames_to_extract.
    2. @@ -25,7 +25,7 @@
      Panic
    3. The range of frames in self that are after the end of frames_to_extract.

    If frames_to_extract is not contained within self, then self is returned unchanged within an Err.

    -
    source

    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    +
    source

    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    • [beginning : at_frame - 1]
    • [at_frame : end]
    • @@ -37,7 +37,9 @@
      Panic
    • If at_frame == self.end + 1, the second returned Frames object will be empty.

    Returns an Err containing this Frames if at_frame is otherwise out of bounds, or if self was empty.

    -

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    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 [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

    Returns the size of this range in bytes.

    @@ -54,30 +56,30 @@
    Examples

    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 [Frame]s that overlap across this FrameRange and the given other FrameRange.

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

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -

    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).

    +

    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.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -

    Trait Implementations§

    source§

    impl<const S: MemoryState> Debug for Frames<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<const S: MemoryState> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl<const S: MemoryState> Drop for Frames<S>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'f> IntoIterator for &'f AllocatedFrames

    §

    type IntoIter = AllocatedFramesIter<'f>

    Which kind of iterator are we turning this into?
    §

    type Item = AllocatedFrame<'f>

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<const S: MemoryState> Ord for Frames<S>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

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

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

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

    §

    type Target = FrameRange<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

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

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'f, P: PageSize> IntoIterator for &'f AllocatedFrames<P>

    §

    type IntoIter = AllocatedFramesIter<'f, P>

    Which kind of iterator are we turning this into?
    §

    type Item = AllocatedFrame<'f, P>

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

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

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

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

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

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

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<const S: MemoryState> Eq for Frames<S>

    source§

    impl<const S: MemoryState> StructuralEq for Frames<S>

    \ No newline at end of file +operator. Read more
    source§

    impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>

    source§

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

    \ No newline at end of file diff --git a/doc/frame_allocator/type.FreeFrames.html b/doc/frame_allocator/type.FreeFrames.html index c39e9b63bb..33bea69344 100644 --- a/doc/frame_allocator/type.FreeFrames.html +++ b/doc/frame_allocator/type.FreeFrames.html @@ -1,23 +1,23 @@ -FreeFrames in frame_allocator - Rust

    Type Alias frame_allocator::FreeFrames

    source ·
    pub type FreeFrames = Frames<{ MemoryState::Free }>;
    Expand description

    A type alias for Frames in the Free state.

    -

    Aliased Type§

    struct FreeFrames { /* private fields */ }

    Implementations§

    source§

    impl FreeFrames

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Free state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Allocated}>

    source

    pub fn into_mapped_frames(self) -> MappedFrames

    Consumes this Frames in the Allocated state and converts them into the Mapped state. +FreeFrames in frame_allocator - Rust

    Type Alias frame_allocator::FreeFrames

    source ·
    pub type FreeFrames = Frames<{ MemoryState::Free }, Page4K>;
    Expand description

    A type alias for Frames in the Free state, which only suppports 4K pages.

    +

    Aliased Type§

    struct FreeFrames { /* private fields */ }

    Implementations§

    source§

    impl FreeFrames

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames<Page4K>

    Consumes this Frames in the Free state and converts them into the Allocated state.

    +
    source§

    impl<P: PageSize> Frames<{MemoryState::Allocated}, P>

    source

    pub fn into_mapped_frames(self) -> MappedFrames<P>

    Consumes this Frames in the Allocated state and converts them into the Mapped state. This should only be called once a MappedPages has been created from the Frames.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source§

    impl Frames<{MemoryState::Unmapped}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    -
    source§

    impl<const S: MemoryState> Frames<S>

    source

    pub const fn empty() -> Frames<S>

    Returns a new Frames with an empty range of frames. +

    source§

    impl Frames<{MemoryState::Unmapped}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    +
    source§

    impl<const S: MemoryState, P: PageSize> Frames<S, P>

    source

    pub const fn empty() -> Frames<S, P>

    Returns a new Frames with an empty range of frames. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -
    source

    pub fn split_range( +

    source

    pub fn split_range( self, - frames_to_extract: FrameRange -) -> Result<SplitFrames<S>, Self>

    Splits up the given Frames into multiple smaller Frames.

    + frames_to_extract: FrameRange<P> +) -> Result<SplitFrames<S, P>, Self>

    Splits up the given Frames into multiple smaller Frames.

    Returns a SplitFrames instance containing three Frames:

    1. The range of frames in self that are before the beginning of frames_to_extract.
    2. @@ -25,7 +25,7 @@
      Panic
    3. The range of frames in self that are after the end of frames_to_extract.

    If frames_to_extract is not contained within self, then self is returned unchanged within an Err.

    -
    source

    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    +
    source

    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    • [beginning : at_frame - 1]
    • [at_frame : end]
    • @@ -37,7 +37,9 @@
      Panic
    • If at_frame == self.end + 1, the second returned Frames object will be empty.

    Returns an Err containing this Frames if at_frame is otherwise out of bounds, or if self was empty.

    -

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    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 [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

    Returns the size of this range in bytes.

    @@ -54,30 +56,30 @@
    Examples

    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 [Frame]s that overlap across this FrameRange and the given other FrameRange.

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

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -

    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).

    +

    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.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -

    Trait Implementations§

    source§

    impl<const S: MemoryState> Debug for Frames<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<const S: MemoryState> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl<const S: MemoryState> Drop for Frames<S>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<const S: MemoryState> Ord for Frames<S>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

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

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

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

    §

    type Target = FrameRange<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

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

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

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

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

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

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

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

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<const S: MemoryState> Eq for Frames<S>

    source§

    impl<const S: MemoryState> StructuralEq for Frames<S>

    \ No newline at end of file +operator. Read more
    source§

    impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>

    source§

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

    \ No newline at end of file diff --git a/doc/frame_allocator/type.MappedFrames.html b/doc/frame_allocator/type.MappedFrames.html index e659b70d5b..ba43bc63d6 100644 --- a/doc/frame_allocator/type.MappedFrames.html +++ b/doc/frame_allocator/type.MappedFrames.html @@ -1,23 +1,23 @@ -MappedFrames in frame_allocator - Rust

    Type Alias frame_allocator::MappedFrames

    source ·
    pub type MappedFrames = Frames<{ MemoryState::Mapped }>;
    Expand description

    A type alias for Frames in the Mapped state.

    -

    Aliased Type§

    struct MappedFrames { /* private fields */ }

    Implementations§

    source§

    impl Frames<{MemoryState::Free}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Free state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Allocated}>

    source

    pub fn into_mapped_frames(self) -> MappedFrames

    Consumes this Frames in the Allocated state and converts them into the Mapped state. +MappedFrames in frame_allocator - Rust

    Type Alias frame_allocator::MappedFrames

    source ·
    pub type MappedFrames<P: PageSize = Page4K> = Frames<{ MemoryState::Mapped }, P>;
    Expand description

    A type alias for Frames in the Mapped state.

    +

    Aliased Type§

    struct MappedFrames<P: PageSize = Page4K> { /* private fields */ }

    Implementations§

    source§

    impl Frames<{MemoryState::Free}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames<Page4K>

    Consumes this Frames in the Free state and converts them into the Allocated state.

    +
    source§

    impl<P: PageSize> Frames<{MemoryState::Allocated}, P>

    source

    pub fn into_mapped_frames(self) -> MappedFrames<P>

    Consumes this Frames in the Allocated state and converts them into the Mapped state. This should only be called once a MappedPages has been created from the Frames.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source§

    impl Frames<{MemoryState::Unmapped}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    -
    source§

    impl<const S: MemoryState> Frames<S>

    source

    pub const fn empty() -> Frames<S>

    Returns a new Frames with an empty range of frames. +

    source§

    impl Frames<{MemoryState::Unmapped}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    +
    source§

    impl<const S: MemoryState, P: PageSize> Frames<S, P>

    source

    pub const fn empty() -> Frames<S, P>

    Returns a new Frames with an empty range of frames. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -
    source

    pub fn split_range( +

    source

    pub fn split_range( self, - frames_to_extract: FrameRange -) -> Result<SplitFrames<S>, Self>

    Splits up the given Frames into multiple smaller Frames.

    + frames_to_extract: FrameRange<P> +) -> Result<SplitFrames<S, P>, Self>

    Splits up the given Frames into multiple smaller Frames.

    Returns a SplitFrames instance containing three Frames:

    1. The range of frames in self that are before the beginning of frames_to_extract.
    2. @@ -25,7 +25,7 @@
      Panic
    3. The range of frames in self that are after the end of frames_to_extract.

    If frames_to_extract is not contained within self, then self is returned unchanged within an Err.

    -
    source

    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    +
    source

    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    • [beginning : at_frame - 1]
    • [at_frame : end]
    • @@ -37,7 +37,9 @@
      Panic
    • If at_frame == self.end + 1, the second returned Frames object will be empty.

    Returns an Err containing this Frames if at_frame is otherwise out of bounds, or if self was empty.

    -

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    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 [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

    Returns the size of this range in bytes.

    @@ -54,30 +56,30 @@
    Examples

    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 [Frame]s that overlap across this FrameRange and the given other FrameRange.

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

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -

    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).

    +

    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.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -

    Trait Implementations§

    source§

    impl<const S: MemoryState> Debug for Frames<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<const S: MemoryState> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl<const S: MemoryState> Drop for Frames<S>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<const S: MemoryState> Ord for Frames<S>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

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

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

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

    §

    type Target = FrameRange<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

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

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

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

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

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

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

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

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<const S: MemoryState> Eq for Frames<S>

    source§

    impl<const S: MemoryState> StructuralEq for Frames<S>

    \ No newline at end of file +operator. Read more
    source§

    impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>

    source§

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

    \ No newline at end of file diff --git a/doc/frame_allocator/type.UnmappedFrames.html b/doc/frame_allocator/type.UnmappedFrames.html index d5e5c5a3a0..5f8aa80fbe 100644 --- a/doc/frame_allocator/type.UnmappedFrames.html +++ b/doc/frame_allocator/type.UnmappedFrames.html @@ -1,23 +1,23 @@ -UnmappedFrames in frame_allocator - Rust
    pub type UnmappedFrames = Frames<{ MemoryState::Unmapped }>;
    Expand description

    A type alias for Frames in the Unmapped state.

    -

    Aliased Type§

    struct UnmappedFrames { /* private fields */ }

    Implementations§

    source§

    impl UnmappedFrames

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Free}>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Free state and converts them into the Allocated state.

    -
    source§

    impl Frames<{MemoryState::Allocated}>

    source

    pub fn into_mapped_frames(self) -> MappedFrames

    Consumes this Frames in the Allocated state and converts them into the Mapped state. +UnmappedFrames in frame_allocator - Rust

    pub type UnmappedFrames<P: PageSize = Page4K> = Frames<{ MemoryState::Unmapped }, P>;
    Expand description

    A type alias for Frames in the Unmapped state.

    +

    Aliased Type§

    struct UnmappedFrames<P: PageSize = Page4K> { /* private fields */ }

    Implementations§

    source§

    impl UnmappedFrames

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames

    Consumes this Frames in the Unmapped state and converts them into the Allocated state.

    +
    source§

    impl Frames<{MemoryState::Free}, Page4K>

    source

    pub fn into_allocated_frames(self) -> AllocatedFrames<Page4K>

    Consumes this Frames in the Free state and converts them into the Allocated state.

    +
    source§

    impl<P: PageSize> Frames<{MemoryState::Allocated}, P>

    source

    pub fn into_mapped_frames(self) -> MappedFrames<P>

    Consumes this Frames in the Allocated state and converts them into the Mapped state. This should only be called once a MappedPages has been created from the Frames.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source§

    impl<const S: MemoryState> Frames<S>

    source

    pub const fn empty() -> Frames<S>

    Returns a new Frames with an empty range of frames. +

    source§

    impl<const S: MemoryState, P: PageSize> Frames<S, P>

    source

    pub const fn empty() -> Frames<S, P>

    Returns a new Frames with an empty range of frames. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -
    source

    pub fn split_range( +

    source

    pub fn split_range( self, - frames_to_extract: FrameRange -) -> Result<SplitFrames<S>, Self>

    Splits up the given Frames into multiple smaller Frames.

    + frames_to_extract: FrameRange<P> +) -> Result<SplitFrames<S, P>, Self>

    Splits up the given Frames into multiple smaller Frames.

    Returns a SplitFrames instance containing three Frames:

    1. The range of frames in self that are before the beginning of frames_to_extract.
    2. @@ -25,7 +25,7 @@
      Panic
    3. The range of frames in self that are after the end of frames_to_extract.

    If frames_to_extract is not contained within self, then self is returned unchanged within an Err.

    -
    source

    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    +
    source

    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self>

    Splits this Frames into two separate Frames objects:

    • [beginning : at_frame - 1]
    • [at_frame : end]
    • @@ -37,7 +37,9 @@
      Panic
    • If at_frame == self.end + 1, the second returned Frames object will be empty.

    Returns an Err containing this Frames if at_frame is otherwise out of bounds, or if self was empty.

    -

    Methods from Deref<Target = FrameRange>§

    pub fn start_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    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 [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

    Returns the size of this range in bytes.

    @@ -54,30 +56,30 @@
    Examples

    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 [Frame]s that overlap across this FrameRange and the given other FrameRange.

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

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -

    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).

    +

    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.

    -
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    +
    source

    pub fn as_allocated_frame(&self) -> AllocatedFrame<'_, P>

    Returns an AllocatedFrame if this AllocatedFrames object contains only one frame.

    Panic

    Panics if this AllocatedFrame contains multiple frames or zero frames.

    -
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    +
    source

    pub fn merge(&mut self, other: Self) -> Result<(), Self>

    Merges the given other Frames object into this Frames object (self).

    This function performs no allocation or re-mapping, it exists for convenience and usability purposes.

    The given other must be physically contiguous with self, i.e., come immediately before or after self. That is, either self.start == other.end + 1 or self.end + 1 == other.start must be true.

    If either of those conditions are met, self is modified and Ok(()) is returned, otherwise Err(other) is returned.

    -

    Trait Implementations§

    source§

    impl<const S: MemoryState> Debug for Frames<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<const S: MemoryState> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &FrameRange

    Dereferences the value.
    source§

    impl<const S: MemoryState> Drop for Frames<S>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<const S: MemoryState> Ord for Frames<S>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

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

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

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

    §

    type Target = FrameRange<P>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

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

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

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

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

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

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

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

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<const S: MemoryState> Eq for Frames<S>

    source§

    impl<const S: MemoryState> StructuralEq for Frames<S>

    \ No newline at end of file +operator. Read more
    source§

    impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>

    source§

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

    \ No newline at end of file diff --git a/doc/implementors/core/borrow/trait.Borrow.js b/doc/implementors/core/borrow/trait.Borrow.js index ac162edfa0..7407104158 100644 --- a/doc/implementors/core/borrow/trait.Borrow.js +++ b/doc/implementors/core/borrow/trait.Borrow.js @@ -1,6 +1,6 @@ (function() {var implementors = { -"frame_allocator":[["impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion"],["impl<const S: MemoryState> Borrow<Frame<Page4K>> for &Frames<S>"]], -"memory":[["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<T> for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>"]], +"frame_allocator":[["impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion"],["impl<const S: MemoryState, P: PageSize> Borrow<Frame<P>> for &Frames<S, P>"]], +"memory":[["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<T> for BorrowedMappedPages<T, M, B>"]], "path":[["impl Borrow<Path> for PathBuf"]], "str_ref":[["impl Borrow<str> for StrRef"],["impl Borrow<[u8]> for StrRef"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/clone/trait.Clone.js b/doc/implementors/core/clone/trait.Clone.js index ea93f5ed6d..c2fadc703e 100644 --- a/doc/implementors/core/clone/trait.Clone.js +++ b/doc/implementors/core/clone/trait.Clone.js @@ -28,7 +28,7 @@ "keycodes_ascii":[["impl Clone for KeyAction"],["impl Clone for KeyboardModifiers"],["impl Clone for Keycode"],["impl Clone for KeyEvent"]], "local_storage_initializer":[["impl<T> Clone for LocalStorageInitializer<T>where\n T: LocalStorage + Clone,"]], "madt":[["impl Clone for MadtLocalApicAddressOverride"],["impl Clone for MadtNonMaskableInterrupt"],["impl Clone for MadtIntSrcOverride"],["impl Clone for MadtLocalApic"],["impl Clone for MadtLocalX2Apic"],["impl<'t> Clone for MadtIter<'t>"],["impl Clone for MadtIoApic"],["impl<'t> Clone for MadtEntry<'t>"]], -"memory_structs":[["impl Clone for Page4K"],["impl Clone for VirtualAddress"],["impl Clone for Page2M"],["impl<P: Clone + PageSize> Clone for PageRange<P>"],["impl Clone for Page1G"],["impl<P: Clone + PageSize> Clone for CopyableFrameRange<P>"],["impl<P: Clone + PageSize> Clone for Page<P>"],["impl Clone for PhysicalAddress"],["impl<P: Clone + PageSize> Clone for FrameRange<P>"],["impl<P: Clone + PageSize> Clone for Frame<P>"],["impl<P: Clone + PageSize> Clone for CopyablePageRange<P>"]], +"memory_structs":[["impl Clone for Page4K"],["impl Clone for VirtualAddress"],["impl Clone for Page2M"],["impl Clone for Page1G"],["impl<P: Clone + PageSize> Clone for FrameRange<P>"],["impl<P: Clone + PageSize> Clone for Page<P>"],["impl Clone for PhysicalAddress"],["impl<P: Clone + PageSize> Clone for Frame<P>"],["impl<P: Clone + PageSize> Clone for PageRange<P>"]], "mlx_ethernet":[["impl Clone for Cqn"],["impl Clone for Pd"],["impl Clone for Td"],["impl Clone for QueryHcaCapMaxOpMod"],["impl Clone for AccessRegisterOpMod"],["impl Clone for CommandOpcode"],["impl Clone for FgId"],["impl Clone for Sqn"],["impl Clone for Tirn"],["impl Clone for Eqn"],["impl Clone for QueryHcaCapCurrentOpMod"],["impl Clone for Lkey"],["impl Clone for FtId"],["impl Clone for Rqn"],["impl Clone for Tisn"]], "mod_mgmt":[["impl Clone for NamespaceDir"]], "mouse_data":[["impl Clone for MouseMovementRelative"],["impl Clone for MouseEvent"],["impl Clone for MouseButtons"]], diff --git a/doc/implementors/core/cmp/trait.Eq.js b/doc/implementors/core/cmp/trait.Eq.js index 0d8adb1f4b..05bd3db2c5 100644 --- a/doc/implementors/core/cmp/trait.Eq.js +++ b/doc/implementors/core/cmp/trait.Eq.js @@ -5,11 +5,11 @@ "cpu":[["impl Eq for CpuId"]], "crate_metadata":[["impl Eq for RelocationEntry"]], "crate_swap":[["impl Eq for SwapRequest"]], -"frame_allocator":[["impl Eq for PhysicalMemoryRegion"],["impl Eq for MemoryRegionType"],["impl<const S: MemoryState> Eq for Frames<S>"]], +"frame_allocator":[["impl Eq for PhysicalMemoryRegion"],["impl Eq for MemoryRegionType"],["impl<const S: MemoryState, P: Eq + PageSize> Eq for Frames<S, P>"]], "interrupts":[["impl Eq for EoiBehaviour"]], "keycodes_ascii":[["impl Eq for KeyboardModifiers"]], -"memory":[["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedMappedPages<T, M, B>"]], -"memory_structs":[["impl<P: Eq + PageSize> Eq for PageRange<P>"],["impl Eq for Page2M"],["impl Eq for Page1G"],["impl Eq for VirtualAddress"],["impl<P: Eq + PageSize> Eq for Frame<P>"],["impl Eq for PhysicalAddress"],["impl<P: Eq + PageSize> Eq for FrameRange<P>"],["impl<P: Eq + PageSize> Eq for Page<P>"],["impl Eq for Page4K"],["impl Eq for MemoryState"]], +"memory":[["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedSliceMappedPages<T, M, B>"]], +"memory_structs":[["impl Eq for Page2M"],["impl<P: Eq + PageSize> Eq for PageRange<P>"],["impl Eq for Page1G"],["impl<P: Eq + PageSize> Eq for FrameRange<P>"],["impl Eq for VirtualAddress"],["impl<P: Eq + PageSize> Eq for Frame<P>"],["impl Eq for PhysicalAddress"],["impl<P: Eq + PageSize> Eq for Page<P>"],["impl Eq for Page4K"],["impl Eq for MemoryState"]], "mlx_ethernet":[["impl Eq for CmdState"]], "path":[["impl Eq for PathBuf"],["impl Eq for Path"],["impl<'a> Eq for Component<'a>"]], "pci":[["impl Eq for PciLocation"]], diff --git a/doc/implementors/core/cmp/trait.Ord.js b/doc/implementors/core/cmp/trait.Ord.js index d632561fc9..51d55fbe25 100644 --- a/doc/implementors/core/cmp/trait.Ord.js +++ b/doc/implementors/core/cmp/trait.Ord.js @@ -1,8 +1,8 @@ (function() {var implementors = { "apic":[["impl Ord for ApicId"]], "cpu":[["impl Ord for CpuId"]], -"frame_allocator":[["impl Ord for PhysicalMemoryRegion"],["impl<const S: MemoryState> Ord for Frames<S>"]], -"memory":[["impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>"]], +"frame_allocator":[["impl Ord for PhysicalMemoryRegion"],["impl<const S: MemoryState, P: PageSize> Ord for Frames<S, P>"]], +"memory":[["impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>"]], "memory_structs":[["impl<P: Ord + PageSize> Ord for Page<P>"],["impl Ord for VirtualAddress"],["impl Ord for PhysicalAddress"],["impl Ord for Page1G"],["impl Ord for Page4K"],["impl Ord for Page2M"],["impl<P: Ord + PageSize> Ord for Frame<P>"]], "path":[["impl Ord for Path"],["impl Ord for PathBuf"]], "shapes":[["impl Ord for Coord"]], diff --git a/doc/implementors/core/cmp/trait.PartialEq.js b/doc/implementors/core/cmp/trait.PartialEq.js index 17cb75bd2f..0976c3a5e6 100644 --- a/doc/implementors/core/cmp/trait.PartialEq.js +++ b/doc/implementors/core/cmp/trait.PartialEq.js @@ -8,12 +8,12 @@ "crate_metadata_serde":[["impl PartialEq<SectionType> for SectionType"]], "crate_swap":[["impl PartialEq<SwapRequest> for SwapRequest"]], "fault_log":[["impl PartialEq<RecoveryAction> for RecoveryAction"]], -"frame_allocator":[["impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion"],["impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>"],["impl PartialEq<MemoryRegionType> for MemoryRegionType"]], +"frame_allocator":[["impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion"],["impl<const S: MemoryState, P: PageSize> PartialEq<Frames<S, P>> for Frames<S, P>"],["impl PartialEq<MemoryRegionType> for MemoryRegionType"]], "interrupts":[["impl PartialEq<EoiBehaviour> for EoiBehaviour"]], "ixgbe":[["impl PartialEq<LinkSpeedMbps> for LinkSpeedMbps"]], "keycodes_ascii":[["impl PartialEq<KeyAction> for KeyAction"],["impl PartialEq<Keycode> for Keycode"],["impl PartialEq<KeyboardModifiers> for KeyboardModifiers"]], -"memory":[["impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>"]], -"memory_structs":[["impl PartialEq<Page2M> for Page2M"],["impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>"],["impl PartialEq<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<MemoryState> for MemoryState"],["impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>"],["impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>"],["impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>"],["impl PartialEq<Page4K> for Page4K"],["impl PartialEq<Page1G> for Page1G"],["impl PartialEq<VirtualAddress> for VirtualAddress"]], +"memory":[["impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>"]], +"memory_structs":[["impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>"],["impl PartialEq<Page2M> for Page2M"],["impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>"],["impl PartialEq<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<MemoryState> for MemoryState"],["impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>"],["impl PartialEq<Page4K> for Page4K"],["impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>"],["impl PartialEq<Page1G> for Page1G"],["impl PartialEq<VirtualAddress> for VirtualAddress"]], "mlx_ethernet":[["impl PartialEq<CommandOpcode> for CommandOpcode"],["impl PartialEq<CmdState> for CmdState"]], "path":[["impl PartialEq<Path> for Path"],["impl<'a> PartialEq<Components<'a>> for Components<'a>"],["impl PartialEq<PathBuf> for PathBuf"],["impl<'a> PartialEq<Component<'a>> for Component<'a>"]], "pci":[["impl PartialEq<PciLocation> for PciLocation"]], diff --git a/doc/implementors/core/cmp/trait.PartialOrd.js b/doc/implementors/core/cmp/trait.PartialOrd.js index fce92b4e4e..0950729885 100644 --- a/doc/implementors/core/cmp/trait.PartialOrd.js +++ b/doc/implementors/core/cmp/trait.PartialOrd.js @@ -1,8 +1,8 @@ (function() {var implementors = { "apic":[["impl PartialOrd<ApicId> for ApicId"]], "cpu":[["impl PartialOrd<CpuId> for CpuId"]], -"frame_allocator":[["impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>"],["impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion"]], -"memory":[["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>"]], +"frame_allocator":[["impl<const S: MemoryState, P: PageSize> PartialOrd<Frames<S, P>> for Frames<S, P>"],["impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion"]], +"memory":[["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>"]], "memory_structs":[["impl PartialOrd<Page4K> for Page4K"],["impl PartialOrd<VirtualAddress> for VirtualAddress"],["impl<P: PartialOrd + PageSize> PartialOrd<Page<P>> for Page<P>"],["impl PartialOrd<Page2M> for Page2M"],["impl PartialOrd<PhysicalAddress> for PhysicalAddress"],["impl<P: PartialOrd + PageSize> PartialOrd<Frame<P>> for Frame<P>"],["impl PartialOrd<Page1G> for Page1G"]], "path":[["impl PartialOrd<PathBuf> for PathBuf"],["impl PartialOrd<Path> for Path"],["impl<'a> PartialOrd<Components<'a>> for Components<'a>"]], "shapes":[["impl PartialOrd<Coord> for Coord"]], diff --git a/doc/implementors/core/convert/trait.AsMut.js b/doc/implementors/core/convert/trait.AsMut.js index ed32420f4f..a4883bc96c 100644 --- a/doc/implementors/core/convert/trait.AsMut.js +++ b/doc/implementors/core/convert/trait.AsMut.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"memory":[["impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<T> for BorrowedMappedPages<T, Mutable, B>"],["impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>"]], +"memory":[["impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>"],["impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<T> for BorrowedMappedPages<T, Mutable, B>"]], "path":[["impl AsMut<str> for Path"],["impl AsMut<Path> for String"],["impl AsMut<Path> for str"],["impl AsMut<Path> for Path"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/convert/trait.From.js b/doc/implementors/core/convert/trait.From.js index e8e50083ec..2e5aeb6495 100644 --- a/doc/implementors/core/convert/trait.From.js +++ b/doc/implementors/core/convert/trait.From.js @@ -3,7 +3,7 @@ "cpu":[["impl From<Option<CpuId>> for OptionalCpuId"],["impl From<ApicId> for CpuId"],["impl From<OptionalCpuId> for Option<CpuId>"],["impl From<CpuId> for ApicId"]], "framebuffer":[["impl From<Color> for RGBPixel"],["impl From<Color> for AlphaPixel"]], "io":[["impl<R> From<R> for ByteReaderWrapper<R>where\n R: BlockReader,"],["impl From<IoError> for &'static str"],["impl<RW> From<RW> for ByteWriterWrapper<RW>where\n RW: BlockReader + BlockWriter,"],["impl From<IoError> for String"],["impl<'io, IO, L, B> From<B> for LockableIo<'io, IO, L, B>where\n IO: 'io + ?Sized,\n L: for<'a> Lockable<'a, IO> + ?Sized,\n B: Borrow<L>,"],["impl From<&'static str> for IoError"],["impl<RW> From<RW> for ByteReaderWriterWrapper<RW>where\n RW: BlockReader + BlockWriter,"],["impl From<IoError> for Error"]], -"memory_structs":[["impl From<PageRange<Page1G>> for PageRange<Page4K>"],["impl From<Frame<Page2M>> for Frame<Page4K>"],["impl From<FrameRange<Page2M>> for FrameRange<Page4K>"],["impl From<Page<Page1G>> for Page<Page4K>"],["impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>"],["impl From<Frame<Page1G>> for Frame<Page4K>"],["impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>"],["impl From<FrameRange<Page1G>> for FrameRange<Page4K>"],["impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>"],["impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>"],["impl From<PageRange<Page2M>> for PageRange<Page4K>"],["impl From<Page<Page2M>> for Page<Page4K>"]], +"memory_structs":[["impl From<Frame<Page2M>> for Frame<Page4K>"],["impl From<Page<Page1G>> for Page<Page4K>"],["impl From<PageRange<Page2M>> for PageRange<Page4K>"],["impl From<Frame<Page1G>> for Frame<Page4K>"],["impl From<FrameRange<Page1G>> for FrameRange<Page4K>"],["impl From<FrameRange<Page2M>> for FrameRange<Page4K>"],["impl From<PageRange<Page1G>> for PageRange<Page4K>"],["impl From<Page<Page2M>> for Page<Page4K>"]], "mlx_ethernet":[["impl From<CommandQueueError> for &'static str"]], "page_allocator":[["impl From<AllocationError> for &'static str"]], "page_attribute_table":[["impl From<PageAttributeTable> for u64where\n [(); 64]: IsU64Compatible,"],["impl From<u64> for PageAttributeTablewhere\n [(); 64]: IsU64Compatible,"]], diff --git a/doc/implementors/core/convert/trait.TryFrom.js b/doc/implementors/core/convert/trait.TryFrom.js index b4e228ee4f..07bfa36bf4 100644 --- a/doc/implementors/core/convert/trait.TryFrom.js +++ b/doc/implementors/core/convert/trait.TryFrom.js @@ -2,7 +2,7 @@ "apic":[["impl TryFrom<u32> for ApicId"]], "cpu":[["impl TryFrom<u32> for CpuId"]], "keycodes_ascii":[["impl TryFrom<u8> for Keycode"]], -"memory_structs":[["impl TryFrom<Page<Page4K>> for Page<Page2M>"],["impl TryFrom<Frame<Page4K>> for Frame<Page2M>"],["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>"],["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>"],["impl TryFrom<Frame<Page4K>> for Frame<Page1G>"],["impl TryFrom<Page<Page4K>> for Page<Page1G>"],["impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>"],["impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>"]], +"memory_structs":[["impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>"],["impl TryFrom<Page<Page4K>> for Page<Page2M>"],["impl TryFrom<Frame<Page4K>> for Frame<Page2M>"],["impl TryFrom<Frame<Page4K>> for Frame<Page1G>"],["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>"],["impl TryFrom<Page<Page4K>> for Page<Page1G>"],["impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>"],["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>"]], "mlx_ethernet":[["impl TryFrom<u8> for ReceiveQueueState"],["impl TryFrom<u8> for CommandReturnStatus"],["impl TryFrom<u32> for CommandOpcode"],["impl TryFrom<u8> for HcaPortType"],["impl TryFrom<u8> for SendQueueState"],["impl TryFrom<u32> for CommandDeliveryStatus"]], "ps2":[["impl TryFrom<u8> for DeviceToHostResponse"],["impl TryFrom<u8> for ScancodeSet"],["impl TryFrom<u8> for PortTestResult"],["impl TryFrom<u8> for MouseId"]], "serial_port_basic":[["impl TryFrom<u16> for SerialPortAddress"],["impl TryFrom<&str> for SerialPortAddress"]] diff --git a/doc/implementors/core/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js index 2d4507f6fd..5a8e9365a6 100644 --- a/doc/implementors/core/default/trait.Default.js +++ b/doc/implementors/core/default/trait.Default.js @@ -7,8 +7,9 @@ "irq_safety":[["impl<T: ?Sized + Default> Default for MutexIrqSafe<T>"],["impl Default for HeldInterrupts"],["impl<T: ?Sized + Default> Default for RwLockIrqSafe<T>"]], "keycodes_ascii":[["impl Default for KeyboardModifiers"]], "libterm":[["impl Default for Cursor"]], -"memory_structs":[["impl Default for VirtualAddress"],["impl Default for PhysicalAddress"]], +"memory_structs":[["impl<P: PageSize> Default for FrameRange<P>"],["impl<P: PageSize> Default for PageRange<P>"],["impl Default for VirtualAddress"],["impl Default for PhysicalAddress"]], "mlx_ethernet":[["impl Default for WorkQueueEntrySend"],["impl Default for CompletionQueueDoorbellRecord"],["impl Default for CommandQueueEntry"],["impl Default for WorkQueueEntryReceive"],["impl Default for DoorbellRecord"],["impl Default for CompletionQueueEntry"],["impl Default for EventQueueEntry"]], +"page_allocator":[["impl<P: PageSize> Default for AllocatedPages<P>"]], "path":[["impl Default for PathBuf"]], "pte_flags":[["impl Default for PteFlagsAarch64"],["impl Default for PteFlags"],["impl Default for PteFlagsX86_64"]], "slabmalloc":[["impl<'a> Default for ZoneAllocator<'a>"],["impl<T> Default for Rawlink<T>"],["impl<'a> Default for ObjectPage8k<'a>"]], diff --git a/doc/implementors/core/fmt/trait.Debug.js b/doc/implementors/core/fmt/trait.Debug.js index e7dcef953f..d284e2012b 100644 --- a/doc/implementors/core/fmt/trait.Debug.js +++ b/doc/implementors/core/fmt/trait.Debug.js @@ -21,7 +21,7 @@ "external_unwind_info":[["impl Debug for ExternalUnwindInfo"]], "fadt":[["impl Debug for Fadt"]], "fault_log":[["impl Debug for FaultType"],["impl Debug for RecoveryAction"],["impl Debug for FaultEntry"]], -"frame_allocator":[["impl Debug for PhysicalMemoryRegion"],["impl<const S: MemoryState> Debug for Frames<S>"],["impl Debug for MemoryRegionType"],["impl<'f> Debug for AllocatedFrame<'f>"]], +"frame_allocator":[["impl Debug for PhysicalMemoryRegion"],["impl<const S: MemoryState, P: PageSize> Debug for Frames<S, P>"],["impl Debug for MemoryRegionType"],["impl<'f, P: Debug + PageSize> Debug for AllocatedFrame<'f, P>"]], "framebuffer":[["impl Debug for RGBPixel"],["impl Debug for AlphaPixel"]], "fs_node":[["impl Debug for FileOrDir"]], "gdt":[["impl Debug for AvailableSegmentSelector"]], @@ -38,14 +38,14 @@ "madt":[["impl Debug for MadtNonMaskableInterrupt"],["impl<'t> Debug for MadtEntry<'t>"],["impl Debug for MadtIoApic"],["impl Debug for MadtLocalX2Apic"],["impl Debug for MadtIntSrcOverride"],["impl Debug for MadtLocalApic"],["impl Debug for MadtLocalApicAddressOverride"]], "memory":[["impl Debug for MemoryManagementInfo"],["impl Debug for MappedPages"],["impl Debug for PageTable"],["impl Debug for InitialMemoryMappings"],["impl Debug for EarlyIdentityMappedPages"]], "memory_aarch64":[["impl Debug for SectionMemoryBounds"],["impl Debug for AggregatedSectionMemoryBounds"]], -"memory_structs":[["impl Debug for Page1G"],["impl<P: PageSize + 'static> Debug for FrameRange<P>"],["impl Debug for VirtualAddress"],["impl<P: PageSize + 'static> Debug for PageRange<P>"],["impl<P: PageSize + 'static> Debug for Page<P>"],["impl Debug for Page4K"],["impl Debug for Page2M"],["impl Debug for MemChunkSize"],["impl<P: PageSize + 'static> Debug for Frame<P>"],["impl Debug for PhysicalAddress"]], +"memory_structs":[["impl Debug for Page1G"],["impl Debug for VirtualAddress"],["impl<P: PageSize> Debug for PageRange<P>"],["impl<P: PageSize> Debug for Page<P>"],["impl<P: PageSize> Debug for FrameRange<P>"],["impl Debug for Page4K"],["impl Debug for Page2M"],["impl Debug for MemChunkSize"],["impl<P: PageSize> Debug for Frame<P>"],["impl Debug for PhysicalAddress"]], "memory_x86_64":[["impl Debug for AggregatedSectionMemoryBounds"],["impl Debug for SectionMemoryBounds"]], "mlx_ethernet":[["impl Debug for SendQueueState"],["impl Debug for FtId"],["impl Debug for EventQueueEntry"],["impl Debug for FgId"],["impl Debug for Eqn"],["impl Debug for HCACapabilities"],["impl Debug for CommandReturnStatus"],["impl Debug for HcaPortType"],["impl Debug for Pd"],["impl Debug for InitializationSegment"],["impl Debug for CommandQueueEntry"],["impl Debug for Sqn"],["impl Debug for CommandOpcode"],["impl Debug for Td"],["impl Debug for CompletionQueueEntry"],["impl Debug for CommandCompletionStatus"],["impl Debug for CommandDeliveryStatus"],["impl Debug for Tisn"],["impl Debug for Rqn"],["impl Debug for Tirn"],["impl Debug for Cqn"],["impl Debug for Lkey"],["impl Debug for ReceiveQueueState"]], "mod_mgmt":[["impl Debug for IntoCrateObjectFile"],["impl Debug for NamespaceDir"]], "mouse_data":[["impl Debug for MouseButtons"],["impl Debug for MouseEvent"],["impl Debug for MouseMovementRelative"]], "multicore_bringup":[["impl Debug for GraphicInfo"]], "no_drop":[["impl<T: Debug> Debug for NoDrop<T>"]], -"page_allocator":[["impl Debug for AllocatedPages"],["impl Debug for AllocationError"]], +"page_allocator":[["impl<P: PageSize> Debug for AllocatedPages<P>"],["impl Debug for AllocationError"]], "page_attribute_table":[["impl Debug for MemoryCachingType"],["impl Debug for PatNotSupported"]], "path":[["impl<'a> Debug for Component<'a>"],["impl<'a> Debug for Components<'a>"],["impl Debug for Path"],["impl Debug for PathBuf"]], "pci":[["impl Debug for PciDevice"],["impl Debug for PciBus"],["impl Debug for PciLocation"]], diff --git a/doc/implementors/core/hash/trait.Hash.js b/doc/implementors/core/hash/trait.Hash.js index 01498d88bb..338930a2cf 100644 --- a/doc/implementors/core/hash/trait.Hash.js +++ b/doc/implementors/core/hash/trait.Hash.js @@ -3,7 +3,7 @@ "cpu":[["impl Hash for CpuId"]], "crate_swap":[["impl Hash for SwapRequest"]], "framebuffer":[["impl Hash for RGBPixel"],["impl<P: Pixel> Hash for Framebuffer<P>"],["impl Hash for AlphaPixel"]], -"memory":[["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>"]], +"memory":[["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>"]], "memory_structs":[["impl Hash for VirtualAddress"],["impl Hash for PhysicalAddress"]], "pci":[["impl Hash for PciLocation"]], "range_inclusive":[["impl<Idx: Hash + Clone + PartialOrd> Hash for RangeInclusive<Idx>"]], diff --git a/doc/implementors/core/iter/range/trait.Step.js b/doc/implementors/core/iter/range/trait.Step.js index 8c87892ccd..cc0d1f7e97 100644 --- a/doc/implementors/core/iter/range/trait.Step.js +++ b/doc/implementors/core/iter/range/trait.Step.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"memory_structs":[["impl<P: PageSize + 'static> Step for Page<P>"],["impl<P: PageSize + 'static> Step for Frame<P>"]] +"memory_structs":[["impl<P: PageSize> Step for Page<P>"],["impl<P: PageSize> Step for Frame<P>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js b/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js index cc575f6ab3..9cd0a7d4bc 100644 --- a/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js +++ b/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js @@ -1,9 +1,9 @@ (function() {var implementors = { "ata":[["impl IntoIterator for AtaError"],["impl IntoIterator for AtaStatus"]], "boot_info":[["impl IntoIterator for ElfSectionFlags"]], -"frame_allocator":[["impl<'f> IntoIterator for &'f AllocatedFrames"]], +"frame_allocator":[["impl<'f, P: PageSize> IntoIterator for &'f AllocatedFrames<P>"]], "keycodes_ascii":[["impl IntoIterator for KeyboardModifiers"]], -"memory_structs":[["impl<P: PageSize + 'static> IntoIterator for PageRange<P>"],["impl<P: PageSize + 'static> IntoIterator for FrameRange<P>"]], +"memory_structs":[["impl<P: PageSize> IntoIterator for &PageRange<P>"],["impl<P: PageSize> IntoIterator for &FrameRange<P>"],["impl<P: PageSize> IntoIterator for FrameRange<P>"],["impl<P: PageSize> IntoIterator for PageRange<P>"]], "pte_flags":[["impl IntoIterator for PteFlags"],["impl IntoIterator for PteFlagsAarch64"],["impl IntoIterator for PteFlagsX86_64"]], "range_inclusive":[["impl<'a, Idx: Clone + PartialOrd + Step> IntoIterator for &'a RangeInclusive<Idx>"]], "text_terminal":[["impl IntoIterator for FormatFlags"]] diff --git a/doc/implementors/core/iter/traits/iterator/trait.Iterator.js b/doc/implementors/core/iter/traits/iterator/trait.Iterator.js index 665c7ab7fb..134d4e4f44 100644 --- a/doc/implementors/core/iter/traits/iterator/trait.Iterator.js +++ b/doc/implementors/core/iter/traits/iterator/trait.Iterator.js @@ -3,7 +3,7 @@ "atomic_linked_list":[["impl<'a, K: PartialEq + 'a, V: 'a> Iterator for AtomicMapIterMut<'a, K, V>"],["impl<'a, T: 'a> Iterator for AtomicLinkedListIter<'a, T>"],["impl<'a, T: 'a> Iterator for AtomicLinkedListIterMut<'a, T>"],["impl<'a, K: PartialEq + 'a, V: 'a> Iterator for AtomicMapIter<'a, K, V>"]], "boot_info":[["impl<'a> Iterator for MemoryRegions<'a>"]], "dmar":[["impl<'t> Iterator for DmarIter<'t>"],["impl<'t> Iterator for DrhdIter<'t>"]], -"frame_allocator":[["impl<'f> Iterator for AllocatedFramesIter<'f>"]], +"frame_allocator":[["impl<'f, P: PageSize> Iterator for AllocatedFramesIter<'f, P>"]], "madt":[["impl<'t> Iterator for MadtIter<'t>"]], "path":[["impl<'a> Iterator for Components<'a>"]], "percent_encoding":[["impl<'a, E: EncodeSet> Iterator for PercentEncode<'a, E>"],["impl<'a> Iterator for PercentDecode<'a>"]], diff --git a/doc/implementors/core/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js index bb193a38c4..dee936fe0c 100644 --- a/doc/implementors/core/marker/trait.Copy.js +++ b/doc/implementors/core/marker/trait.Copy.js @@ -19,7 +19,7 @@ "ixgbe":[["impl Copy for RxBufferSizeKiB"]], "keycodes_ascii":[["impl Copy for KeyboardModifiers"],["impl Copy for KeyEvent"],["impl Copy for Keycode"],["impl Copy for KeyAction"]], "madt":[["impl Copy for MadtLocalX2Apic"],["impl Copy for MadtIntSrcOverride"],["impl<'t> Copy for MadtEntry<'t>"],["impl Copy for MadtIoApic"],["impl Copy for MadtLocalApicAddressOverride"],["impl Copy for MadtNonMaskableInterrupt"],["impl Copy for MadtLocalApic"]], -"memory_structs":[["impl Copy for Page1G"],["impl<P: Copy + PageSize> Copy for Page<P>"],["impl<P: Copy + PageSize> Copy for CopyablePageRange<P>"],["impl Copy for Page4K"],["impl Copy for Page2M"],["impl<P: Copy + PageSize> Copy for CopyableFrameRange<P>"],["impl<P: Copy + PageSize> Copy for Frame<P>"],["impl Copy for PhysicalAddress"],["impl Copy for VirtualAddress"]], +"memory_structs":[["impl Copy for Page1G"],["impl<P: Copy + PageSize> Copy for Page<P>"],["impl Copy for Page4K"],["impl Copy for Page2M"],["impl<P: Copy + PageSize> Copy for Frame<P>"],["impl Copy for PhysicalAddress"],["impl Copy for VirtualAddress"]], "mlx_ethernet":[["impl Copy for FgId"],["impl Copy for QueryHcaCapCurrentOpMod"],["impl Copy for Tisn"],["impl Copy for Cqn"],["impl Copy for Sqn"],["impl Copy for CommandOpcode"],["impl Copy for Lkey"],["impl Copy for Tirn"],["impl Copy for Rqn"],["impl Copy for Td"],["impl Copy for FtId"],["impl Copy for Eqn"],["impl Copy for Pd"],["impl Copy for AccessRegisterOpMod"],["impl Copy for QueryHcaCapMaxOpMod"]], "multicore_bringup":[["impl Copy for GraphicInfo"]], "page_attribute_table":[["impl Copy for PageAttributeTable"],["impl Copy for MemoryCachingType"]], diff --git a/doc/implementors/core/marker/trait.Freeze.js b/doc/implementors/core/marker/trait.Freeze.js index 6c597c6349..fa8968b37e 100644 --- a/doc/implementors/core/marker/trait.Freeze.js +++ b/doc/implementors/core/marker/trait.Freeze.js @@ -35,7 +35,7 @@ "fadt":[["impl Freeze for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl Freeze for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl Freeze for FaultType",1,["fault_log::FaultType"]],["impl Freeze for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl Freeze for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl Freeze for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Freeze for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> Freeze for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> Freeze for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Freeze for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> Freeze for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> Freeze for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Freeze for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl Freeze for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Freeze for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> Freeze for Frames<S, P>",1,["frame_allocator::Frames"]],["impl<'f, P> Freeze for AllocatedFramesIter<'f, P>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> Freeze for AllocatedFrame<'f, P>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> Freeze for SplitFrames<S, P>",1,["frame_allocator::SplitFrames"]],["impl<'list> Freeze for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Freeze for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl Freeze for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl Freeze for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> Freeze for Framebuffer<P>",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl Freeze for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl Freeze for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl Freeze for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl Freeze for MemFile",1,["memfs::MemFile"]]], "memory":[["impl Freeze for Mapper",1,["memory::paging::mapper::Mapper"]],["impl Freeze for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> Freeze for BorrowedMappedPages<T, M, B>where\n B: Freeze,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> Freeze for BorrowedSliceMappedPages<T, M, B>where\n B: Freeze,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl Freeze for Mutable",1,["memory::paging::mapper::Mutable"]],["impl Freeze for Immutable",1,["memory::paging::mapper::Immutable"]],["impl Freeze for PageTable",1,["memory::paging::PageTable"]],["impl Freeze for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl Freeze for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl Freeze for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl Freeze for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl Freeze for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl Freeze for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl Freeze for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Freeze for Page4K",1,["memory_structs::Page4K"]],["impl Freeze for Page2M",1,["memory_structs::Page2M"]],["impl Freeze for Page1G",1,["memory_structs::Page1G"]],["impl Freeze for MemoryState",1,["memory_structs::MemoryState"]],["impl Freeze for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Freeze for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Freeze for Page<P>",1,["memory_structs::Page"]],["impl<P> Freeze for Frame<P>",1,["memory_structs::Frame"]],["impl<P> Freeze for PageRange<P>",1,["memory_structs::PageRange"]],["impl<P> Freeze for CopyablePageRange<P>",1,["memory_structs::CopyablePageRange"]],["impl<P> Freeze for FrameRange<P>",1,["memory_structs::FrameRange"]],["impl<P> Freeze for CopyableFrameRange<P>",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl Freeze for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Freeze for Page4K",1,["memory_structs::Page4K"]],["impl Freeze for Page2M",1,["memory_structs::Page2M"]],["impl Freeze for Page1G",1,["memory_structs::Page1G"]],["impl Freeze for MemoryState",1,["memory_structs::MemoryState"]],["impl Freeze for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Freeze for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Freeze for Page<P>",1,["memory_structs::Page"]],["impl<P> Freeze for Frame<P>",1,["memory_structs::Frame"]],["impl<P> Freeze for PageRange<P>",1,["memory_structs::PageRange"]],["impl<P> Freeze for FrameRange<P>",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl Freeze for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl Freeze for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl Freeze for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl Freeze for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl Freeze for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl Freeze for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl Freeze for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl Freeze for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl Freeze for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl Freeze for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl Freeze for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl Freeze for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl Freeze for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl Freeze for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl Freeze for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl Freeze for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl Freeze for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl Freeze for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> Freeze for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl Freeze for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl Freeze for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl Freeze for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl Freeze for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl Freeze for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl Freeze for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl Freeze for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl Freeze for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl Freeze for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl Freeze for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl Freeze for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl Freeze for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl Freeze for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl Freeze for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl Freeze for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl Freeze for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl Freeze for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl Freeze for Rqn",1,["mlx_ethernet::Rqn"]],["impl Freeze for Sqn",1,["mlx_ethernet::Sqn"]],["impl Freeze for Cqn",1,["mlx_ethernet::Cqn"]],["impl Freeze for Pd",1,["mlx_ethernet::Pd"]],["impl Freeze for Td",1,["mlx_ethernet::Td"]],["impl Freeze for Lkey",1,["mlx_ethernet::Lkey"]],["impl Freeze for Eqn",1,["mlx_ethernet::Eqn"]],["impl Freeze for Tirn",1,["mlx_ethernet::Tirn"]],["impl Freeze for Tisn",1,["mlx_ethernet::Tisn"]],["impl Freeze for FtId",1,["mlx_ethernet::FtId"]],["impl Freeze for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> Freeze for NoDrop<T>where\n T: Freeze,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl Freeze for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl Freeze for CrateSet",1,["ota_update_client::CrateSet"]],["impl Freeze for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> Freeze for Owned<T>where\n T: Freeze,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> Freeze for Borrowed<'t, T>",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl Freeze for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> Freeze for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Freeze for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Freeze for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> Freeze for AllocatedPages<P>",1,["page_allocator::AllocatedPages"]],["impl<'list> Freeze for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Freeze for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Freeze for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl Freeze for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl Freeze for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl Freeze for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl Freeze for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl Freeze for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl Freeze for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> Freeze for Components<'a>",1,["path::component::Components"]],["impl<'a> Freeze for Component<'a>",1,["path::component::Component"]],["impl Freeze for Path",1,["path::Path"]],["impl Freeze for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js index 925d820182..3209c2fb23 100644 --- a/doc/implementors/core/marker/trait.Send.js +++ b/doc/implementors/core/marker/trait.Send.js @@ -35,7 +35,7 @@ "fadt":[["impl Send for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl Send for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl Send for FaultType",1,["fault_log::FaultType"]],["impl Send for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl Send for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl Send for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Send for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> Send for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> Send for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Send for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> Send for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> Send for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Send for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl Send for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Send for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> Send for Frames<S, P>where\n P: Send,",1,["frame_allocator::Frames"]],["impl<'f, P> Send for AllocatedFramesIter<'f, P>where\n P: Send + Sync,",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> Send for AllocatedFrame<'f, P>where\n P: Send,",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> Send for SplitFrames<S, P>where\n P: Send,",1,["frame_allocator::SplitFrames"]],["impl<'list> Send for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Send for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl Send for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl Send for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> Send for Framebuffer<P>where\n P: Send,",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl Send for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl Send for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl Send for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl Send for MemFile",1,["memfs::MemFile"]]], "memory":[["impl Send for Mapper",1,["memory::paging::mapper::Mapper"]],["impl Send for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> Send for BorrowedMappedPages<T, M, B>where\n B: Send,\n M: Send,\n T: Send,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> Send for BorrowedSliceMappedPages<T, M, B>where\n B: Send,\n M: Send,\n T: Send,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl Send for Mutable",1,["memory::paging::mapper::Mutable"]],["impl Send for Immutable",1,["memory::paging::mapper::Immutable"]],["impl Send for PageTable",1,["memory::paging::PageTable"]],["impl Send for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl Send for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl Send for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl Send for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl Send for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl Send for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl Send for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Send for Page4K",1,["memory_structs::Page4K"]],["impl Send for Page2M",1,["memory_structs::Page2M"]],["impl Send for Page1G",1,["memory_structs::Page1G"]],["impl Send for MemoryState",1,["memory_structs::MemoryState"]],["impl Send for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Send for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Send for Page<P>where\n P: Send,",1,["memory_structs::Page"]],["impl<P> Send for Frame<P>where\n P: Send,",1,["memory_structs::Frame"]],["impl<P> Send for PageRange<P>where\n P: Send,",1,["memory_structs::PageRange"]],["impl<P> Send for CopyablePageRange<P>where\n P: Send,",1,["memory_structs::CopyablePageRange"]],["impl<P> Send for FrameRange<P>where\n P: Send,",1,["memory_structs::FrameRange"]],["impl<P> Send for CopyableFrameRange<P>where\n P: Send,",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl Send for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Send for Page4K",1,["memory_structs::Page4K"]],["impl Send for Page2M",1,["memory_structs::Page2M"]],["impl Send for Page1G",1,["memory_structs::Page1G"]],["impl Send for MemoryState",1,["memory_structs::MemoryState"]],["impl Send for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Send for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Send for Page<P>where\n P: Send,",1,["memory_structs::Page"]],["impl<P> Send for Frame<P>where\n P: Send,",1,["memory_structs::Frame"]],["impl<P> Send for PageRange<P>where\n P: Send,",1,["memory_structs::PageRange"]],["impl<P> Send for FrameRange<P>where\n P: Send,",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl Send for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl Send for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl Send for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl Send for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl Send for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl Send for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl Send for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl Send for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl Send for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl Send for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl Send for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl Send for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl Send for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl Send for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl Send for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl Send for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl Send for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl Send for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> Send for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl Send for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl Send for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl Send for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl Send for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl Send for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl Send for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl Send for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl Send for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl Send for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl Send for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl Send for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl Send for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl Send for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl Send for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl Send for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl Send for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl Send for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl Send for Rqn",1,["mlx_ethernet::Rqn"]],["impl Send for Sqn",1,["mlx_ethernet::Sqn"]],["impl Send for Cqn",1,["mlx_ethernet::Cqn"]],["impl Send for Pd",1,["mlx_ethernet::Pd"]],["impl Send for Td",1,["mlx_ethernet::Td"]],["impl Send for Lkey",1,["mlx_ethernet::Lkey"]],["impl Send for Eqn",1,["mlx_ethernet::Eqn"]],["impl Send for Tirn",1,["mlx_ethernet::Tirn"]],["impl Send for Tisn",1,["mlx_ethernet::Tisn"]],["impl Send for FtId",1,["mlx_ethernet::FtId"]],["impl Send for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> Send for NoDrop<T>where\n T: Send,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl Send for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl Send for CrateSet",1,["ota_update_client::CrateSet"]],["impl Send for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> Send for Owned<T>where\n T: Send,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> Send for Borrowed<'t, T>where\n T: Sync,",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl Send for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> Send for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Send for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Send for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> Send for AllocatedPages<P>where\n P: Send,",1,["page_allocator::AllocatedPages"]],["impl<'list> Send for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Send for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Send for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl Send for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl Send for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl Send for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl Send for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl Send for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl Send for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> Send for Components<'a>",1,["path::component::Components"]],["impl<'a> Send for Component<'a>",1,["path::component::Component"]],["impl Send for Path",1,["path::Path"]],["impl Send for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/implementors/core/marker/trait.StructuralEq.js b/doc/implementors/core/marker/trait.StructuralEq.js index c25555fa64..8e942e932e 100644 --- a/doc/implementors/core/marker/trait.StructuralEq.js +++ b/doc/implementors/core/marker/trait.StructuralEq.js @@ -4,10 +4,10 @@ "cpu":[["impl StructuralEq for CpuId"]], "crate_metadata":[["impl StructuralEq for RelocationEntry"]], "crate_swap":[["impl StructuralEq for SwapRequest"]], -"frame_allocator":[["impl<const S: MemoryState> StructuralEq for Frames<S>"],["impl StructuralEq for PhysicalMemoryRegion"],["impl StructuralEq for MemoryRegionType"]], +"frame_allocator":[["impl<const S: MemoryState, P: PageSize> StructuralEq for Frames<S, P>"],["impl StructuralEq for PhysicalMemoryRegion"],["impl StructuralEq for MemoryRegionType"]], "interrupts":[["impl StructuralEq for EoiBehaviour"]], "keycodes_ascii":[["impl StructuralEq for KeyboardModifiers"]], -"memory_structs":[["impl StructuralEq for Page1G"],["impl<P: PageSize> StructuralEq for PageRange<P>"],["impl StructuralEq for Page4K"],["impl StructuralEq for MemoryState"],["impl<P: PageSize> StructuralEq for Frame<P>"],["impl StructuralEq for VirtualAddress"],["impl<P: PageSize> StructuralEq for FrameRange<P>"],["impl StructuralEq for Page2M"],["impl StructuralEq for PhysicalAddress"],["impl<P: PageSize> StructuralEq for Page<P>"]], +"memory_structs":[["impl StructuralEq for Page1G"],["impl StructuralEq for Page4K"],["impl<P: PageSize> StructuralEq for PageRange<P>"],["impl<P: PageSize> StructuralEq for FrameRange<P>"],["impl StructuralEq for MemoryState"],["impl<P: PageSize> StructuralEq for Frame<P>"],["impl StructuralEq for VirtualAddress"],["impl StructuralEq for Page2M"],["impl StructuralEq for PhysicalAddress"],["impl<P: PageSize> StructuralEq for Page<P>"]], "mlx_ethernet":[["impl StructuralEq for CmdState"]], "path":[["impl<'a> StructuralEq for Component<'a>"],["impl StructuralEq for PathBuf"],["impl StructuralEq for Path"]], "pci":[["impl StructuralEq for PciLocation"]], diff --git a/doc/implementors/core/marker/trait.StructuralPartialEq.js b/doc/implementors/core/marker/trait.StructuralPartialEq.js index c7765296f0..bd8e445c87 100644 --- a/doc/implementors/core/marker/trait.StructuralPartialEq.js +++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js @@ -11,7 +11,7 @@ "interrupts":[["impl StructuralPartialEq for EoiBehaviour"]], "ixgbe":[["impl StructuralPartialEq for LinkSpeedMbps"]], "keycodes_ascii":[["impl StructuralPartialEq for KeyAction"],["impl StructuralPartialEq for Keycode"],["impl StructuralPartialEq for KeyboardModifiers"]], -"memory_structs":[["impl<P: PageSize> StructuralPartialEq for PageRange<P>"],["impl<P: PageSize> StructuralPartialEq for Frame<P>"],["impl<P: PageSize> StructuralPartialEq for FrameRange<P>"],["impl StructuralPartialEq for VirtualAddress"],["impl StructuralPartialEq for Page1G"],["impl StructuralPartialEq for MemoryState"],["impl<P: PageSize> StructuralPartialEq for Page<P>"],["impl StructuralPartialEq for PhysicalAddress"],["impl StructuralPartialEq for Page2M"],["impl StructuralPartialEq for Page4K"]], +"memory_structs":[["impl<P: PageSize> StructuralPartialEq for PageRange<P>"],["impl<P: PageSize> StructuralPartialEq for Frame<P>"],["impl StructuralPartialEq for VirtualAddress"],["impl StructuralPartialEq for Page1G"],["impl StructuralPartialEq for MemoryState"],["impl<P: PageSize> StructuralPartialEq for Page<P>"],["impl<P: PageSize> StructuralPartialEq for FrameRange<P>"],["impl StructuralPartialEq for PhysicalAddress"],["impl StructuralPartialEq for Page2M"],["impl StructuralPartialEq for Page4K"]], "mlx_ethernet":[["impl StructuralPartialEq for CmdState"],["impl StructuralPartialEq for CommandOpcode"]], "path":[["impl StructuralPartialEq for PathBuf"],["impl<'a> StructuralPartialEq for Components<'a>"],["impl<'a> StructuralPartialEq for Component<'a>"],["impl StructuralPartialEq for Path"]], "pci":[["impl StructuralPartialEq for PciLocation"]], diff --git a/doc/implementors/core/marker/trait.Sync.js b/doc/implementors/core/marker/trait.Sync.js index 83b4991487..ec600332fd 100644 --- a/doc/implementors/core/marker/trait.Sync.js +++ b/doc/implementors/core/marker/trait.Sync.js @@ -35,7 +35,7 @@ "fadt":[["impl Sync for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl Sync for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl Sync for FaultType",1,["fault_log::FaultType"]],["impl Sync for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl Sync for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl Sync for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Sync for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> Sync for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> Sync for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Sync for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> Sync for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> Sync for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Sync for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl Sync for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Sync for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> Sync for Frames<S, P>where\n P: Sync,",1,["frame_allocator::Frames"]],["impl<'f, P> Sync for AllocatedFramesIter<'f, P>where\n P: Sync,",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> Sync for AllocatedFrame<'f, P>where\n P: Sync,",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> Sync for SplitFrames<S, P>where\n P: Sync,",1,["frame_allocator::SplitFrames"]],["impl<'list> Sync for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Sync for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl Sync for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl Sync for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> Sync for Framebuffer<P>where\n P: Sync,",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl Sync for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl Sync for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl Sync for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl Sync for MemFile",1,["memfs::MemFile"]]], "memory":[["impl Sync for Mapper",1,["memory::paging::mapper::Mapper"]],["impl Sync for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> Sync for BorrowedMappedPages<T, M, B>where\n B: Sync,\n M: Sync,\n T: Sync,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> Sync for BorrowedSliceMappedPages<T, M, B>where\n B: Sync,\n M: Sync,\n T: Sync,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl Sync for Mutable",1,["memory::paging::mapper::Mutable"]],["impl Sync for Immutable",1,["memory::paging::mapper::Immutable"]],["impl Sync for PageTable",1,["memory::paging::PageTable"]],["impl Sync for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl Sync for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl Sync for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl Sync for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl Sync for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl Sync for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl Sync for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Sync for Page4K",1,["memory_structs::Page4K"]],["impl Sync for Page2M",1,["memory_structs::Page2M"]],["impl Sync for Page1G",1,["memory_structs::Page1G"]],["impl Sync for MemoryState",1,["memory_structs::MemoryState"]],["impl Sync for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Sync for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Sync for Page<P>where\n P: Sync,",1,["memory_structs::Page"]],["impl<P> Sync for Frame<P>where\n P: Sync,",1,["memory_structs::Frame"]],["impl<P> Sync for PageRange<P>where\n P: Sync,",1,["memory_structs::PageRange"]],["impl<P> Sync for CopyablePageRange<P>where\n P: Sync,",1,["memory_structs::CopyablePageRange"]],["impl<P> Sync for FrameRange<P>where\n P: Sync,",1,["memory_structs::FrameRange"]],["impl<P> Sync for CopyableFrameRange<P>where\n P: Sync,",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl Sync for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Sync for Page4K",1,["memory_structs::Page4K"]],["impl Sync for Page2M",1,["memory_structs::Page2M"]],["impl Sync for Page1G",1,["memory_structs::Page1G"]],["impl Sync for MemoryState",1,["memory_structs::MemoryState"]],["impl Sync for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Sync for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Sync for Page<P>where\n P: Sync,",1,["memory_structs::Page"]],["impl<P> Sync for Frame<P>where\n P: Sync,",1,["memory_structs::Frame"]],["impl<P> Sync for PageRange<P>where\n P: Sync,",1,["memory_structs::PageRange"]],["impl<P> Sync for FrameRange<P>where\n P: Sync,",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl Sync for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl Sync for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl Sync for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl Sync for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl Sync for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl Sync for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl Sync for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl Sync for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl Sync for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl Sync for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl Sync for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl Sync for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl Sync for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl Sync for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl Sync for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl Sync for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl Sync for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl Sync for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> Sync for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl Sync for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl Sync for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl Sync for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl Sync for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl Sync for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl Sync for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl Sync for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl Sync for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl Sync for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl Sync for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl Sync for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl Sync for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl Sync for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl Sync for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl Sync for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl Sync for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl Sync for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl Sync for Rqn",1,["mlx_ethernet::Rqn"]],["impl Sync for Sqn",1,["mlx_ethernet::Sqn"]],["impl Sync for Cqn",1,["mlx_ethernet::Cqn"]],["impl Sync for Pd",1,["mlx_ethernet::Pd"]],["impl Sync for Td",1,["mlx_ethernet::Td"]],["impl Sync for Lkey",1,["mlx_ethernet::Lkey"]],["impl Sync for Eqn",1,["mlx_ethernet::Eqn"]],["impl Sync for Tirn",1,["mlx_ethernet::Tirn"]],["impl Sync for Tisn",1,["mlx_ethernet::Tisn"]],["impl Sync for FtId",1,["mlx_ethernet::FtId"]],["impl Sync for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> Sync for NoDrop<T>where\n T: Sync,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl Sync for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl Sync for CrateSet",1,["ota_update_client::CrateSet"]],["impl Sync for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> Sync for Owned<T>where\n T: Sync,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> Sync for Borrowed<'t, T>where\n T: Sync,",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl Sync for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> Sync for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Sync for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Sync for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> Sync for AllocatedPages<P>where\n P: Sync,",1,["page_allocator::AllocatedPages"]],["impl<'list> Sync for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Sync for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Sync for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl Sync for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl Sync for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl Sync for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl Sync for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl Sync for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl Sync for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> Sync for Components<'a>",1,["path::component::Components"]],["impl<'a> Sync for Component<'a>",1,["path::component::Component"]],["impl Sync for Path",1,["path::Path"]],["impl Sync for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js index 613516a6f6..8b4ca8373e 100644 --- a/doc/implementors/core/marker/trait.Unpin.js +++ b/doc/implementors/core/marker/trait.Unpin.js @@ -35,7 +35,7 @@ "fadt":[["impl Unpin for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl Unpin for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl Unpin for FaultType",1,["fault_log::FaultType"]],["impl Unpin for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl Unpin for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl Unpin for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Unpin for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> Unpin for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> Unpin for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Unpin for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> Unpin for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> Unpin for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Unpin for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl Unpin for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl Unpin for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> Unpin for Frames<S, P>where\n P: Unpin,",1,["frame_allocator::Frames"]],["impl<'f, P> Unpin for AllocatedFramesIter<'f, P>where\n P: Unpin,",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> Unpin for AllocatedFrame<'f, P>where\n P: Unpin,",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> Unpin for SplitFrames<S, P>where\n P: Unpin,",1,["frame_allocator::SplitFrames"]],["impl<'list> Unpin for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl Unpin for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl Unpin for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl Unpin for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> Unpin for Framebuffer<P>where\n P: Unpin,",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl Unpin for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl Unpin for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl Unpin for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl Unpin for MemFile",1,["memfs::MemFile"]]], "memory":[["impl Unpin for Mapper",1,["memory::paging::mapper::Mapper"]],["impl Unpin for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> Unpin for BorrowedMappedPages<T, M, B>where\n B: Unpin,\n M: Unpin,\n T: Unpin,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> Unpin for BorrowedSliceMappedPages<T, M, B>where\n B: Unpin,\n M: Unpin,\n T: Unpin,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl Unpin for Mutable",1,["memory::paging::mapper::Mutable"]],["impl Unpin for Immutable",1,["memory::paging::mapper::Immutable"]],["impl Unpin for PageTable",1,["memory::paging::PageTable"]],["impl Unpin for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl Unpin for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl Unpin for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl Unpin for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl Unpin for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl Unpin for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl Unpin for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Unpin for Page4K",1,["memory_structs::Page4K"]],["impl Unpin for Page2M",1,["memory_structs::Page2M"]],["impl Unpin for Page1G",1,["memory_structs::Page1G"]],["impl Unpin for MemoryState",1,["memory_structs::MemoryState"]],["impl Unpin for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Unpin for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Unpin for Page<P>where\n P: Unpin,",1,["memory_structs::Page"]],["impl<P> Unpin for Frame<P>where\n P: Unpin,",1,["memory_structs::Frame"]],["impl<P> Unpin for PageRange<P>where\n P: Unpin,",1,["memory_structs::PageRange"]],["impl<P> Unpin for CopyablePageRange<P>where\n P: Unpin,",1,["memory_structs::CopyablePageRange"]],["impl<P> Unpin for FrameRange<P>where\n P: Unpin,",1,["memory_structs::FrameRange"]],["impl<P> Unpin for CopyableFrameRange<P>where\n P: Unpin,",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl Unpin for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Unpin for Page4K",1,["memory_structs::Page4K"]],["impl Unpin for Page2M",1,["memory_structs::Page2M"]],["impl Unpin for Page1G",1,["memory_structs::Page1G"]],["impl Unpin for MemoryState",1,["memory_structs::MemoryState"]],["impl Unpin for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Unpin for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Unpin for Page<P>where\n P: Unpin,",1,["memory_structs::Page"]],["impl<P> Unpin for Frame<P>where\n P: Unpin,",1,["memory_structs::Frame"]],["impl<P> Unpin for PageRange<P>where\n P: Unpin,",1,["memory_structs::PageRange"]],["impl<P> Unpin for FrameRange<P>where\n P: Unpin,",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl Unpin for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl Unpin for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl Unpin for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl Unpin for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl Unpin for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl Unpin for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl Unpin for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl Unpin for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl Unpin for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl Unpin for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl Unpin for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl Unpin for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl Unpin for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl Unpin for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl Unpin for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl Unpin for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl Unpin for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl Unpin for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> Unpin for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl Unpin for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl Unpin for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl Unpin for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl Unpin for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl Unpin for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl Unpin for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl Unpin for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl Unpin for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl Unpin for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl Unpin for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl Unpin for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl Unpin for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl Unpin for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl Unpin for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl Unpin for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl Unpin for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl Unpin for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl Unpin for Rqn",1,["mlx_ethernet::Rqn"]],["impl Unpin for Sqn",1,["mlx_ethernet::Sqn"]],["impl Unpin for Cqn",1,["mlx_ethernet::Cqn"]],["impl Unpin for Pd",1,["mlx_ethernet::Pd"]],["impl Unpin for Td",1,["mlx_ethernet::Td"]],["impl Unpin for Lkey",1,["mlx_ethernet::Lkey"]],["impl Unpin for Eqn",1,["mlx_ethernet::Eqn"]],["impl Unpin for Tirn",1,["mlx_ethernet::Tirn"]],["impl Unpin for Tisn",1,["mlx_ethernet::Tisn"]],["impl Unpin for FtId",1,["mlx_ethernet::FtId"]],["impl Unpin for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> Unpin for NoDrop<T>where\n T: Unpin,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl Unpin for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl Unpin for CrateSet",1,["ota_update_client::CrateSet"]],["impl Unpin for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> Unpin for Owned<T>where\n T: Unpin,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> Unpin for Borrowed<'t, T>",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl Unpin for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> Unpin for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Unpin for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Unpin for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> Unpin for AllocatedPages<P>where\n P: Unpin,",1,["page_allocator::AllocatedPages"]],["impl<'list> Unpin for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl Unpin for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> Unpin for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl Unpin for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl Unpin for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl Unpin for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl Unpin for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl Unpin for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl Unpin for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> Unpin for Components<'a>",1,["path::component::Components"]],["impl<'a> Unpin for Component<'a>",1,["path::component::Component"]],["impl Unpin for Path",1,["path::Path"]],["impl Unpin for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/implementors/core/ops/arith/trait.Add.js b/doc/implementors/core/ops/arith/trait.Add.js index 756d0830f9..80309cbc56 100644 --- a/doc/implementors/core/ops/arith/trait.Add.js +++ b/doc/implementors/core/ops/arith/trait.Add.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"memory_structs":[["impl<P: PageSize + 'static> Add<usize> for Page<P>"],["impl Add<usize> for VirtualAddress"],["impl Add<PhysicalAddress> for PhysicalAddress"],["impl Add<VirtualAddress> for VirtualAddress"],["impl Add<usize> for PhysicalAddress"],["impl<P: PageSize + 'static> Add<usize> for Frame<P>"]], +"memory_structs":[["impl<P: PageSize> Add<usize> for Page<P>"],["impl Add<usize> for VirtualAddress"],["impl Add<PhysicalAddress> for PhysicalAddress"],["impl Add<VirtualAddress> for VirtualAddress"],["impl Add<usize> for PhysicalAddress"],["impl<P: PageSize> Add<usize> for Frame<P>"]], "shapes":[["impl Add<Coord> for Rectangle"],["impl Add<Coord> for Coord"],["impl Add<(isize, isize)> for Coord"]], "text_terminal":[["impl Add<Column> for Column"],["impl Add<ScreenPoint> for ScreenPoint"],["impl Add<Row> for Row"],["impl Add<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl Add<LineIndex> for LineIndex"],["impl Add<UnitIndex> for UnitIndex"]], "time":[["impl Add<Duration> for Instant"]] diff --git a/doc/implementors/core/ops/arith/trait.AddAssign.js b/doc/implementors/core/ops/arith/trait.AddAssign.js index a86646df89..e2d17a078e 100644 --- a/doc/implementors/core/ops/arith/trait.AddAssign.js +++ b/doc/implementors/core/ops/arith/trait.AddAssign.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"memory_structs":[["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl<P: PageSize + 'static> AddAssign<usize> for Page<P>"],["impl<P: PageSize + 'static> AddAssign<usize> for Frame<P>"],["impl AddAssign<usize> for PhysicalAddress"],["impl AddAssign<PhysicalAddress> for PhysicalAddress"],["impl AddAssign<usize> for VirtualAddress"]], +"memory_structs":[["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl<P: PageSize> AddAssign<usize> for Page<P>"],["impl<P: PageSize> AddAssign<usize> for Frame<P>"],["impl AddAssign<usize> for PhysicalAddress"],["impl AddAssign<PhysicalAddress> for PhysicalAddress"],["impl AddAssign<usize> for VirtualAddress"]], "text_terminal":[["impl AddAssign<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl AddAssign<UnitIndex> for UnitIndex"],["impl AddAssign<Row> for Row"],["impl AddAssign<LineIndex> for LineIndex"],["impl AddAssign<ScreenPoint> for ScreenPoint"],["impl AddAssign<Column> for Column"]], "time":[["impl AddAssign<Duration> for Instant"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/ops/arith/trait.Sub.js b/doc/implementors/core/ops/arith/trait.Sub.js index 6a9ea97ff4..7d8c5c06cf 100644 --- a/doc/implementors/core/ops/arith/trait.Sub.js +++ b/doc/implementors/core/ops/arith/trait.Sub.js @@ -2,7 +2,7 @@ "ata":[["impl Sub<AtaError> for AtaError"],["impl Sub<AtaStatus> for AtaStatus"]], "boot_info":[["impl Sub<ElfSectionFlags> for ElfSectionFlags"]], "keycodes_ascii":[["impl Sub<KeyboardModifiers> for KeyboardModifiers"]], -"memory_structs":[["impl<P: PageSize + 'static> Sub<usize> for Frame<P>"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl Sub<usize> for VirtualAddress"],["impl Sub<VirtualAddress> for VirtualAddress"],["impl Sub<usize> for PhysicalAddress"],["impl<P: PageSize + 'static> Sub<usize> for Page<P>"]], +"memory_structs":[["impl<P: PageSize> Sub<usize> for Frame<P>"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl Sub<usize> for VirtualAddress"],["impl Sub<VirtualAddress> for VirtualAddress"],["impl Sub<usize> for PhysicalAddress"],["impl<P: PageSize> Sub<usize> for Page<P>"]], "pte_flags":[["impl Sub<PteFlags> for PteFlags"],["impl Sub<PteFlagsX86_64> for PteFlagsX86_64"],["impl Sub<PteFlagsAarch64> for PteFlagsAarch64"]], "shapes":[["impl Sub<(isize, isize)> for Coord"],["impl Sub<Coord> for Coord"],["impl Sub<Coord> for Rectangle"]], "text_terminal":[["impl Sub<Column> for Column"],["impl Sub<FormatFlags> for FormatFlags"],["impl Sub<LineIndex> for LineIndex"],["impl Sub<UnitIndex> for UnitIndex"],["impl Sub<ScreenPoint> for ScreenPoint"],["impl Sub<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl Sub<Row> for Row"]], diff --git a/doc/implementors/core/ops/arith/trait.SubAssign.js b/doc/implementors/core/ops/arith/trait.SubAssign.js index 06940e3e06..6877ef3ce4 100644 --- a/doc/implementors/core/ops/arith/trait.SubAssign.js +++ b/doc/implementors/core/ops/arith/trait.SubAssign.js @@ -2,7 +2,7 @@ "ata":[["impl SubAssign<AtaStatus> for AtaStatus"],["impl SubAssign<AtaError> for AtaError"]], "boot_info":[["impl SubAssign<ElfSectionFlags> for ElfSectionFlags"]], "keycodes_ascii":[["impl SubAssign<KeyboardModifiers> for KeyboardModifiers"]], -"memory_structs":[["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl<P: PageSize + 'static> SubAssign<usize> for Frame<P>"],["impl<P: PageSize + 'static> SubAssign<usize> for Page<P>"],["impl SubAssign<usize> for VirtualAddress"],["impl SubAssign<usize> for PhysicalAddress"],["impl SubAssign<PhysicalAddress> for PhysicalAddress"]], +"memory_structs":[["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl<P: PageSize> SubAssign<usize> for Frame<P>"],["impl<P: PageSize> SubAssign<usize> for Page<P>"],["impl SubAssign<usize> for VirtualAddress"],["impl SubAssign<usize> for PhysicalAddress"],["impl SubAssign<PhysicalAddress> for PhysicalAddress"]], "pte_flags":[["impl SubAssign<PteFlagsAarch64> for PteFlagsAarch64"],["impl SubAssign<PteFlags> for PteFlags"],["impl SubAssign<PteFlagsX86_64> for PteFlagsX86_64"]], "text_terminal":[["impl SubAssign<Column> for Column"],["impl SubAssign<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl SubAssign<LineIndex> for LineIndex"],["impl SubAssign<Row> for Row"],["impl SubAssign<UnitIndex> for UnitIndex"],["impl SubAssign<ScreenPoint> for ScreenPoint"],["impl SubAssign<FormatFlags> for FormatFlags"]], "time":[["impl SubAssign<Duration> for Instant"]] diff --git a/doc/implementors/core/ops/deref/trait.Deref.js b/doc/implementors/core/ops/deref/trait.Deref.js index e8c1e8fc5a..5c6d9210d9 100644 --- a/doc/implementors/core/ops/deref/trait.Deref.js +++ b/doc/implementors/core/ops/deref/trait.Deref.js @@ -1,11 +1,11 @@ (function() {var implementors = { "dereffer":[["impl<Inner, Ref: ?Sized> Deref for DerefsToMut<Inner, Ref>"],["impl<Inner, Ref: ?Sized> Deref for DerefsTo<Inner, Ref>"]], "dfqueue":[["impl<T> Deref for PeekedData<T>"],["impl<T> Deref for QueuedData<T>"]], -"frame_allocator":[["impl Deref for PhysicalMemoryRegion"],["impl<'f> Deref for AllocatedFrame<'f>"],["impl<const S: MemoryState> Deref for Frames<S>"]], +"frame_allocator":[["impl Deref for PhysicalMemoryRegion"],["impl<'f, P: PageSize> Deref for AllocatedFrame<'f, P>"],["impl<const S: MemoryState, P: PageSize> Deref for Frames<S, P>"]], "io":[["impl<'io, IO, L, B> Deref for LockableIo<'io, IO, L, B>where\n IO: 'io + ?Sized,\n L: for<'a> Lockable<'a, IO> + ?Sized,\n B: Borrow<L>,"],["impl<IO> Deref for ReaderWriter<IO>"]], "irq_safety":[["impl<'rwlock, T: ?Sized> Deref for RwLockIrqSafeWriteGuard<'rwlock, T>"],["impl<'rwlock, T: ?Sized> Deref for RwLockIrqSafeReadGuard<'rwlock, T>"],["impl<'a, T: ?Sized> Deref for MutexIrqSafeGuard<'a, T>"]], -"memory":[["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>"],["impl Deref for PageTable"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>"],["impl Deref for MappedPages"]], -"memory_structs":[["impl<P: PageSize + 'static> Deref for PageRange<P>"],["impl<P: PageSize + 'static> Deref for FrameRange<P>"]], +"memory":[["impl Deref for MappedPages"],["impl Deref for PageTable"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>"]], +"memory_structs":[["impl<P: PageSize> Deref for FrameRange<P>"],["impl<P: PageSize> Deref for PageRange<P>"]], "mod_mgmt":[["impl Deref for NamespaceDir"],["impl Deref for AppCrateRef"]], "net":[["impl<'a, T> Deref for LockedSocket<'a, T>where\n T: AnySocket<'static>,"]], "nic_buffers":[["impl Deref for TransmitBuffer"],["impl Deref for ReceiveBuffer"]], diff --git a/doc/implementors/core/ops/deref/trait.DerefMut.js b/doc/implementors/core/ops/deref/trait.DerefMut.js index 10b7f1b8ef..793a9f57d2 100644 --- a/doc/implementors/core/ops/deref/trait.DerefMut.js +++ b/doc/implementors/core/ops/deref/trait.DerefMut.js @@ -3,7 +3,7 @@ "io":[["impl<IO> DerefMut for ReaderWriter<IO>"]], "irq_safety":[["impl<'rwlock, T: ?Sized> DerefMut for RwLockIrqSafeWriteGuard<'rwlock, T>"],["impl<'a, T: ?Sized> DerefMut for MutexIrqSafeGuard<'a, T>"]], "memory":[["impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedMappedPages<T, Mutable, B>"],["impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>"],["impl DerefMut for PageTable"]], -"memory_structs":[["impl DerefMut for PageRange"],["impl DerefMut for FrameRange"]], +"memory_structs":[["impl DerefMut for FrameRange"],["impl DerefMut for PageRange"]], "net":[["impl<'a, T> DerefMut for LockedSocket<'a, T>where\n T: AnySocket<'static>,"]], "nic_buffers":[["impl DerefMut for ReceiveBuffer"],["impl DerefMut for TransmitBuffer"]], "no_drop":[["impl<T> DerefMut for NoDrop<T>"]], diff --git a/doc/implementors/core/ops/drop/trait.Drop.js b/doc/implementors/core/ops/drop/trait.Drop.js index 10268601f0..60b4672317 100644 --- a/doc/implementors/core/ops/drop/trait.Drop.js +++ b/doc/implementors/core/ops/drop/trait.Drop.js @@ -4,12 +4,12 @@ "atomic_linked_list":[["impl<K, V> Drop for AtomicMap<K, V>where\n K: PartialEq,"]], "crate_metadata":[["impl Drop for LoadedCrate"]], "dfqueue":[["impl<T> Drop for MpscQueue<T>"]], -"frame_allocator":[["impl<const S: MemoryState> Drop for Frames<S>"],["impl<'list> Drop for DeferredAllocAction<'list>"]], +"frame_allocator":[["impl<const S: MemoryState, P: PageSize> Drop for Frames<S, P>"],["impl<'list> Drop for DeferredAllocAction<'list>"]], "irq_safety":[["impl Drop for HeldInterrupts"]], "memory":[["impl Drop for MappedPages"]], "mod_mgmt":[["impl Drop for AppCrateRef"]], "nic_buffers":[["impl Drop for ReceiveBuffer"]], -"page_allocator":[["impl Drop for AllocatedPages"],["impl<'list> Drop for DeferredAllocAction<'list>"]], +"page_allocator":[["impl<P: PageSize> Drop for AllocatedPages<P>"],["impl<'list> Drop for DeferredAllocAction<'list>"]], "pmu_x86":[["impl Drop for Counter"]], "preemption":[["impl Drop for PreemptionGuard"]], "serial_port_basic":[["impl Drop for SerialPort"]], diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index 3a8ca107dc..3215a7e3b9 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -35,7 +35,7 @@ "fadt":[["impl RefUnwindSafe for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl RefUnwindSafe for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl RefUnwindSafe for FaultType",1,["fault_log::FaultType"]],["impl RefUnwindSafe for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl RefUnwindSafe for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl RefUnwindSafe for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl RefUnwindSafe for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> RefUnwindSafe for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> RefUnwindSafe for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> RefUnwindSafe for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> RefUnwindSafe for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl RefUnwindSafe for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl RefUnwindSafe for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl RefUnwindSafe for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> RefUnwindSafe for Frames<S, P>where\n P: RefUnwindSafe,",1,["frame_allocator::Frames"]],["impl<'f, P> RefUnwindSafe for AllocatedFramesIter<'f, P>where\n P: RefUnwindSafe,",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> RefUnwindSafe for AllocatedFrame<'f, P>where\n P: RefUnwindSafe,",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> RefUnwindSafe for SplitFrames<S, P>where\n P: RefUnwindSafe,",1,["frame_allocator::SplitFrames"]],["impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl RefUnwindSafe for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl RefUnwindSafe for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl RefUnwindSafe for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> RefUnwindSafe for Framebuffer<P>where\n P: RefUnwindSafe,",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl RefUnwindSafe for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl RefUnwindSafe for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl !RefUnwindSafe for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl !RefUnwindSafe for MemFile",1,["memfs::MemFile"]]], "memory":[["impl RefUnwindSafe for Mapper",1,["memory::paging::mapper::Mapper"]],["impl RefUnwindSafe for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> RefUnwindSafe for BorrowedMappedPages<T, M, B>where\n B: RefUnwindSafe,\n M: RefUnwindSafe,\n T: RefUnwindSafe,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> RefUnwindSafe for BorrowedSliceMappedPages<T, M, B>where\n B: RefUnwindSafe,\n M: RefUnwindSafe,\n T: RefUnwindSafe,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl RefUnwindSafe for Mutable",1,["memory::paging::mapper::Mutable"]],["impl RefUnwindSafe for Immutable",1,["memory::paging::mapper::Immutable"]],["impl RefUnwindSafe for PageTable",1,["memory::paging::PageTable"]],["impl RefUnwindSafe for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl RefUnwindSafe for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl RefUnwindSafe for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl RefUnwindSafe for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl RefUnwindSafe for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl RefUnwindSafe for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl RefUnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl RefUnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl RefUnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl RefUnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl RefUnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl RefUnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl RefUnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> RefUnwindSafe for Page<P>where\n P: RefUnwindSafe,",1,["memory_structs::Page"]],["impl<P> RefUnwindSafe for Frame<P>where\n P: RefUnwindSafe,",1,["memory_structs::Frame"]],["impl<P> RefUnwindSafe for PageRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> RefUnwindSafe for CopyablePageRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::CopyablePageRange"]],["impl<P> RefUnwindSafe for FrameRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::FrameRange"]],["impl<P> RefUnwindSafe for CopyableFrameRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl RefUnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl RefUnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl RefUnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl RefUnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl RefUnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl RefUnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl RefUnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> RefUnwindSafe for Page<P>where\n P: RefUnwindSafe,",1,["memory_structs::Page"]],["impl<P> RefUnwindSafe for Frame<P>where\n P: RefUnwindSafe,",1,["memory_structs::Frame"]],["impl<P> RefUnwindSafe for PageRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> RefUnwindSafe for FrameRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl RefUnwindSafe for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl RefUnwindSafe for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl !RefUnwindSafe for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl RefUnwindSafe for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl RefUnwindSafe for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl RefUnwindSafe for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl RefUnwindSafe for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl RefUnwindSafe for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl RefUnwindSafe for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl RefUnwindSafe for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl RefUnwindSafe for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl RefUnwindSafe for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl RefUnwindSafe for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl RefUnwindSafe for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl RefUnwindSafe for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl RefUnwindSafe for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl RefUnwindSafe for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl RefUnwindSafe for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> RefUnwindSafe for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl RefUnwindSafe for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl RefUnwindSafe for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl RefUnwindSafe for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl RefUnwindSafe for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl RefUnwindSafe for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl RefUnwindSafe for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl RefUnwindSafe for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl RefUnwindSafe for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl RefUnwindSafe for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl RefUnwindSafe for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl RefUnwindSafe for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl RefUnwindSafe for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl RefUnwindSafe for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl !RefUnwindSafe for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl RefUnwindSafe for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl RefUnwindSafe for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl RefUnwindSafe for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl RefUnwindSafe for Rqn",1,["mlx_ethernet::Rqn"]],["impl RefUnwindSafe for Sqn",1,["mlx_ethernet::Sqn"]],["impl RefUnwindSafe for Cqn",1,["mlx_ethernet::Cqn"]],["impl RefUnwindSafe for Pd",1,["mlx_ethernet::Pd"]],["impl RefUnwindSafe for Td",1,["mlx_ethernet::Td"]],["impl RefUnwindSafe for Lkey",1,["mlx_ethernet::Lkey"]],["impl RefUnwindSafe for Eqn",1,["mlx_ethernet::Eqn"]],["impl RefUnwindSafe for Tirn",1,["mlx_ethernet::Tirn"]],["impl RefUnwindSafe for Tisn",1,["mlx_ethernet::Tisn"]],["impl RefUnwindSafe for FtId",1,["mlx_ethernet::FtId"]],["impl RefUnwindSafe for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> RefUnwindSafe for NoDrop<T>where\n T: RefUnwindSafe,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl RefUnwindSafe for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl RefUnwindSafe for CrateSet",1,["ota_update_client::CrateSet"]],["impl RefUnwindSafe for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> RefUnwindSafe for Owned<T>where\n T: RefUnwindSafe,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> RefUnwindSafe for Borrowed<'t, T>where\n T: RefUnwindSafe,",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl RefUnwindSafe for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl RefUnwindSafe for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> RefUnwindSafe for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> RefUnwindSafe for AllocatedPages<P>where\n P: RefUnwindSafe,",1,["page_allocator::AllocatedPages"]],["impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl RefUnwindSafe for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> RefUnwindSafe for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl RefUnwindSafe for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl RefUnwindSafe for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl RefUnwindSafe for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl RefUnwindSafe for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl RefUnwindSafe for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl RefUnwindSafe for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> RefUnwindSafe for Components<'a>",1,["path::component::Components"]],["impl<'a> RefUnwindSafe for Component<'a>",1,["path::component::Component"]],["impl RefUnwindSafe for Path",1,["path::Path"]],["impl RefUnwindSafe for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index fa98b374f6..3ec742f192 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -35,7 +35,7 @@ "fadt":[["impl UnwindSafe for Fadt",1,["fadt::Fadt"]]], "fault_crate_swap":[["impl UnwindSafe for SwapRanges",1,["fault_crate_swap::SwapRanges"]]], "fault_log":[["impl UnwindSafe for FaultType",1,["fault_log::FaultType"]],["impl UnwindSafe for RecoveryAction",1,["fault_log::RecoveryAction"]],["impl UnwindSafe for FaultEntry",1,["fault_log::FaultEntry"]]], -"frame_allocator":[["impl UnwindSafe for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl UnwindSafe for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState> UnwindSafe for Frames<S>",1,["frame_allocator::Frames"]],["impl<'f> UnwindSafe for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> UnwindSafe for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState> UnwindSafe for SplitFrames<S>",1,["frame_allocator::SplitFrames"]],["impl<'list> !UnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl UnwindSafe for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], +"frame_allocator":[["impl UnwindSafe for PhysicalMemoryRegion",1,["frame_allocator::PhysicalMemoryRegion"]],["impl UnwindSafe for MemoryRegionType",1,["frame_allocator::MemoryRegionType"]],["impl<const S: MemoryState, P> UnwindSafe for Frames<S, P>where\n P: UnwindSafe,",1,["frame_allocator::Frames"]],["impl<'f, P> UnwindSafe for AllocatedFramesIter<'f, P>where\n P: UnwindSafe + RefUnwindSafe,",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f, P> UnwindSafe for AllocatedFrame<'f, P>where\n P: UnwindSafe,",1,["frame_allocator::AllocatedFrame"]],["impl<const S: MemoryState, P> UnwindSafe for SplitFrames<S, P>where\n P: UnwindSafe,",1,["frame_allocator::SplitFrames"]],["impl<'list> !UnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]],["impl UnwindSafe for FramesIteratorRequest",1,["frame_allocator::FramesIteratorRequest"]]], "framebuffer":[["impl UnwindSafe for RGBPixel",1,["framebuffer::pixel::RGBPixel"]],["impl UnwindSafe for AlphaPixel",1,["framebuffer::pixel::AlphaPixel"]],["impl<P> UnwindSafe for Framebuffer<P>where\n P: UnwindSafe,",1,["framebuffer::Framebuffer"]]], "framebuffer_compositor":[["impl UnwindSafe for CacheBlock",1,["framebuffer_compositor::CacheBlock"]],["impl UnwindSafe for FrameCompositor",1,["framebuffer_compositor::FrameCompositor"]]], "fs_node":[["impl !UnwindSafe for FileOrDir",1,["fs_node::FileOrDir"]]], @@ -61,7 +61,7 @@ "memfs":[["impl !UnwindSafe for MemFile",1,["memfs::MemFile"]]], "memory":[["impl UnwindSafe for Mapper",1,["memory::paging::mapper::Mapper"]],["impl UnwindSafe for MappedPages",1,["memory::paging::mapper::MappedPages"]],["impl<T, M, B> UnwindSafe for BorrowedMappedPages<T, M, B>where\n B: UnwindSafe,\n M: UnwindSafe,\n T: UnwindSafe,",1,["memory::paging::mapper::BorrowedMappedPages"]],["impl<T, M, B> UnwindSafe for BorrowedSliceMappedPages<T, M, B>where\n B: UnwindSafe,\n M: UnwindSafe,\n T: UnwindSafe,",1,["memory::paging::mapper::BorrowedSliceMappedPages"]],["impl UnwindSafe for Mutable",1,["memory::paging::mapper::Mutable"]],["impl UnwindSafe for Immutable",1,["memory::paging::mapper::Immutable"]],["impl UnwindSafe for PageTable",1,["memory::paging::PageTable"]],["impl UnwindSafe for MemoryManagementInfo",1,["memory::MemoryManagementInfo"]],["impl UnwindSafe for InitialMemoryMappings",1,["memory::InitialMemoryMappings"]],["impl UnwindSafe for EarlyIdentityMappedPages",1,["memory::EarlyIdentityMappedPages"]]], "memory_aarch64":[["impl UnwindSafe for MmuConfig",1,["memory_aarch64::MmuConfig"]],["impl UnwindSafe for SectionMemoryBounds",1,["memory_aarch64::SectionMemoryBounds"]],["impl UnwindSafe for AggregatedSectionMemoryBounds",1,["memory_aarch64::AggregatedSectionMemoryBounds"]]], -"memory_structs":[["impl UnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl UnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl UnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl UnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl UnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl UnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl UnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> UnwindSafe for Page<P>where\n P: UnwindSafe,",1,["memory_structs::Page"]],["impl<P> UnwindSafe for Frame<P>where\n P: UnwindSafe,",1,["memory_structs::Frame"]],["impl<P> UnwindSafe for PageRange<P>where\n P: UnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> UnwindSafe for CopyablePageRange<P>where\n P: UnwindSafe,",1,["memory_structs::CopyablePageRange"]],["impl<P> UnwindSafe for FrameRange<P>where\n P: UnwindSafe,",1,["memory_structs::FrameRange"]],["impl<P> UnwindSafe for CopyableFrameRange<P>where\n P: UnwindSafe,",1,["memory_structs::CopyableFrameRange"]]], +"memory_structs":[["impl UnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl UnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl UnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl UnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl UnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl UnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl UnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> UnwindSafe for Page<P>where\n P: UnwindSafe,",1,["memory_structs::Page"]],["impl<P> UnwindSafe for Frame<P>where\n P: UnwindSafe,",1,["memory_structs::Frame"]],["impl<P> UnwindSafe for PageRange<P>where\n P: UnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> UnwindSafe for FrameRange<P>where\n P: UnwindSafe,",1,["memory_structs::FrameRange"]]], "memory_x86_64":[["impl UnwindSafe for SectionMemoryBounds",1,["memory_x86_64::SectionMemoryBounds"]],["impl UnwindSafe for AggregatedSectionMemoryBounds",1,["memory_x86_64::AggregatedSectionMemoryBounds"]]], "mlx5":[["impl !UnwindSafe for ConnectX5Nic",1,["mlx5::ConnectX5Nic"]]], "mlx_ethernet":[["impl UnwindSafe for InitializationSegment",1,["mlx_ethernet::initialization_segment::InitializationSegment"]],["impl UnwindSafe for InitializingState",1,["mlx_ethernet::initialization_segment::InitializingState"]],["impl UnwindSafe for CommandTransportType",1,["mlx_ethernet::command_queue::CommandTransportType"]],["impl UnwindSafe for CommandQueueError",1,["mlx_ethernet::command_queue::CommandQueueError"]],["impl UnwindSafe for CommandDeliveryStatus",1,["mlx_ethernet::command_queue::CommandDeliveryStatus"]],["impl UnwindSafe for CommandOpcode",1,["mlx_ethernet::command_queue::CommandOpcode"]],["impl UnwindSafe for CommandReturnStatus",1,["mlx_ethernet::command_queue::CommandReturnStatus"]],["impl UnwindSafe for ManagePagesOpMod",1,["mlx_ethernet::command_queue::ManagePagesOpMod"]],["impl UnwindSafe for QueryPagesOpMod",1,["mlx_ethernet::command_queue::QueryPagesOpMod"]],["impl UnwindSafe for QueryVportStateOpMod",1,["mlx_ethernet::command_queue::QueryVportStateOpMod"]],["impl UnwindSafe for QueryHcaCapMaxOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapMaxOpMod"]],["impl UnwindSafe for QueryHcaCapCurrentOpMod",1,["mlx_ethernet::command_queue::QueryHcaCapCurrentOpMod"]],["impl UnwindSafe for AccessRegisterOpMod",1,["mlx_ethernet::command_queue::AccessRegisterOpMod"]],["impl UnwindSafe for HcaPortType",1,["mlx_ethernet::command_queue::HcaPortType"]],["impl UnwindSafe for CmdState",1,["mlx_ethernet::command_queue::CmdState"]],["impl<const S: CmdState> UnwindSafe for Command<S>",1,["mlx_ethernet::command_queue::Command"]],["impl UnwindSafe for CommandCompletionStatus",1,["mlx_ethernet::command_queue::CommandCompletionStatus"]],["impl UnwindSafe for CommandBuilder",1,["mlx_ethernet::command_queue::CommandBuilder"]],["impl UnwindSafe for CommandQueue",1,["mlx_ethernet::command_queue::CommandQueue"]],["impl UnwindSafe for CommandQueueEntry",1,["mlx_ethernet::command_queue::CommandQueueEntry"]],["impl UnwindSafe for HCACapabilities",1,["mlx_ethernet::command_queue::HCACapabilities"]],["impl UnwindSafe for EventQueueEntry",1,["mlx_ethernet::event_queue::EventQueueEntry"]],["impl UnwindSafe for EventQueue",1,["mlx_ethernet::event_queue::EventQueue"]],["impl UnwindSafe for CompletionQueueEntry",1,["mlx_ethernet::completion_queue::CompletionQueueEntry"]],["impl UnwindSafe for CompletionQueueDoorbellRecord",1,["mlx_ethernet::completion_queue::CompletionQueueDoorbellRecord"]],["impl UnwindSafe for CompletionQueue",1,["mlx_ethernet::completion_queue::CompletionQueue"]],["impl UnwindSafe for SendQueueState",1,["mlx_ethernet::send_queue::SendQueueState"]],["impl UnwindSafe for SendQueue",1,["mlx_ethernet::send_queue::SendQueue"]],["impl UnwindSafe for ReceiveQueueState",1,["mlx_ethernet::receive_queue::ReceiveQueueState"]],["impl !UnwindSafe for ReceiveQueue",1,["mlx_ethernet::receive_queue::ReceiveQueue"]],["impl UnwindSafe for DoorbellRecord",1,["mlx_ethernet::work_queue::DoorbellRecord"]],["impl UnwindSafe for WorkQueueEntrySend",1,["mlx_ethernet::work_queue::WorkQueueEntrySend"]],["impl UnwindSafe for WorkQueueEntryReceive",1,["mlx_ethernet::work_queue::WorkQueueEntryReceive"]],["impl UnwindSafe for Rqn",1,["mlx_ethernet::Rqn"]],["impl UnwindSafe for Sqn",1,["mlx_ethernet::Sqn"]],["impl UnwindSafe for Cqn",1,["mlx_ethernet::Cqn"]],["impl UnwindSafe for Pd",1,["mlx_ethernet::Pd"]],["impl UnwindSafe for Td",1,["mlx_ethernet::Td"]],["impl UnwindSafe for Lkey",1,["mlx_ethernet::Lkey"]],["impl UnwindSafe for Eqn",1,["mlx_ethernet::Eqn"]],["impl UnwindSafe for Tirn",1,["mlx_ethernet::Tirn"]],["impl UnwindSafe for Tisn",1,["mlx_ethernet::Tisn"]],["impl UnwindSafe for FtId",1,["mlx_ethernet::FtId"]],["impl UnwindSafe for FgId",1,["mlx_ethernet::FgId"]]], @@ -75,7 +75,7 @@ "no_drop":[["impl<T> UnwindSafe for NoDrop<T>where\n T: UnwindSafe,",1,["no_drop::NoDrop"]]], "ota_update_client":[["impl UnwindSafe for DownloadedFile",1,["ota_update_client::DownloadedFile"]],["impl UnwindSafe for CrateSet",1,["ota_update_client::CrateSet"]],["impl UnwindSafe for Diff",1,["ota_update_client::Diff"]]], "owned_borrowed_trait":[["impl<T> UnwindSafe for Owned<T>where\n T: UnwindSafe,",1,["owned_borrowed_trait::Owned"]],["impl<'t, T> UnwindSafe for Borrowed<'t, T>where\n T: RefUnwindSafe,",1,["owned_borrowed_trait::Borrowed"]]], -"page_allocator":[["impl UnwindSafe for AllocatedPages",1,["page_allocator::AllocatedPages"]],["impl<'list> !UnwindSafe for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl UnwindSafe for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> UnwindSafe for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], +"page_allocator":[["impl<P> UnwindSafe for AllocatedPages<P>where\n P: UnwindSafe,",1,["page_allocator::AllocatedPages"]],["impl<'list> !UnwindSafe for DeferredAllocAction<'list>",1,["page_allocator::DeferredAllocAction"]],["impl UnwindSafe for AllocationError",1,["page_allocator::AllocationError"]],["impl<'r> UnwindSafe for AllocationRequest<'r>",1,["page_allocator::AllocationRequest"]]], "page_attribute_table":[["impl UnwindSafe for PageAttributeTable",1,["page_attribute_table::PageAttributeTable"]],["impl UnwindSafe for MemoryCachingType",1,["page_attribute_table::MemoryCachingType"]],["impl UnwindSafe for PatNotSupported",1,["page_attribute_table::PatNotSupported"]]], "page_table_entry":[["impl UnwindSafe for PageTableEntry",1,["page_table_entry::PageTableEntry"]],["impl UnwindSafe for UnmapResult",1,["page_table_entry::UnmapResult"]],["impl UnwindSafe for UnmappedFrameRange",1,["page_table_entry::UnmappedFrameRange"]]], "path":[["impl<'a> UnwindSafe for Components<'a>",1,["path::component::Components"]],["impl<'a> UnwindSafe for Component<'a>",1,["path::component::Component"]],["impl UnwindSafe for Path",1,["path::Path"]],["impl UnwindSafe for PathBuf",1,["path::PathBuf"]]], diff --git a/doc/memory/all.html b/doc/memory/all.html index 0defc92fcf..30bcb6de19 100644 --- a/doc/memory/all.html +++ b/doc/memory/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/doc/memory/constant.DMA_FLAGS.html b/doc/memory/constant.DMA_FLAGS.html index 94379071ab..9f88aa6969 100644 --- a/doc/memory/constant.DMA_FLAGS.html +++ b/doc/memory/constant.DMA_FLAGS.html @@ -1,2 +1,2 @@ -DMA_FLAGS in memory - Rust

    Constant memory::DMA_FLAGS

    source ·
    pub const DMA_FLAGS: PteFlags;
    Expand description

    Mapping flags that can be used to map DMA (Direct Memory Access) memory.

    +DMA_FLAGS in memory - Rust

    Constant memory::DMA_FLAGS

    source ·
    pub const DMA_FLAGS: PteFlags;
    Expand description

    Mapping flags that can be used to map DMA (Direct Memory Access) memory.

    \ No newline at end of file diff --git a/doc/memory/constant.MMIO_FLAGS.html b/doc/memory/constant.MMIO_FLAGS.html index 8d460962fe..78202a19a3 100644 --- a/doc/memory/constant.MMIO_FLAGS.html +++ b/doc/memory/constant.MMIO_FLAGS.html @@ -1,2 +1,2 @@ -MMIO_FLAGS in memory - Rust

    Constant memory::MMIO_FLAGS

    source ·
    pub const MMIO_FLAGS: PteFlags;
    Expand description

    Mapping flags that can be used to map MMIO registers.

    +MMIO_FLAGS in memory - Rust

    Constant memory::MMIO_FLAGS

    source ·
    pub const MMIO_FLAGS: PteFlags;
    Expand description

    Mapping flags that can be used to map MMIO registers.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_frames.html b/doc/memory/fn.allocate_frames.html index cddd53c5eb..1e6a09ed61 100644 --- a/doc/memory/fn.allocate_frames.html +++ b/doc/memory/fn.allocate_frames.html @@ -1,5 +1,5 @@ allocate_frames in memory - Rust

    Function memory::allocate_frames

    pub fn allocate_frames(
         num_frames: usize
    -) -> Option<Frames<frame_allocator::::AllocatedFrames::{constant#0}>>
    Expand description

    Allocates the given number of frames with no constraints on the starting physical address.

    +) -> Option<Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>>
    Expand description

    Allocates the given number of frames with no constraints on the starting physical address.

    See allocate_frames_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_frames_at.html b/doc/memory/fn.allocate_frames_at.html index eef06fb428..db3eb14684 100644 --- a/doc/memory/fn.allocate_frames_at.html +++ b/doc/memory/fn.allocate_frames_at.html @@ -1,6 +1,6 @@ allocate_frames_at in memory - Rust

    Function memory::allocate_frames_at

    pub fn allocate_frames_at(
         paddr: PhysicalAddress,
         num_frames: usize
    -) -> Result<Frames<frame_allocator::::AllocatedFrames::{constant#0}>, &'static str>
    Expand description

    Allocates the given number of frames starting at (inclusive of) the frame containing the given PhysicalAddress.

    +) -> Result<Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>, &'static str>
    Expand description

    Allocates the given number of frames starting at (inclusive of) the frame containing the given PhysicalAddress.

    See allocate_frames_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_frames_by_bytes.html b/doc/memory/fn.allocate_frames_by_bytes.html index 76e86a4088..faef99e66f 100644 --- a/doc/memory/fn.allocate_frames_by_bytes.html +++ b/doc/memory/fn.allocate_frames_by_bytes.html @@ -1,6 +1,6 @@ allocate_frames_by_bytes in memory - Rust
    pub fn allocate_frames_by_bytes(
         num_bytes: usize
    -) -> Option<Frames<frame_allocator::::AllocatedFrames::{constant#0}>>
    Expand description

    Allocates frames with no constraints on the starting physical address, +) -> Option<Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>>

    Expand description

    Allocates frames with no constraints on the starting physical address, with a size given by the number of bytes.

    This function still allocates whole frames by rounding up the number of bytes. See allocate_frames_deferred() for more details.

    diff --git a/doc/memory/fn.allocate_frames_by_bytes_at.html b/doc/memory/fn.allocate_frames_by_bytes_at.html index 6433d15dae..f6f634f3b5 100644 --- a/doc/memory/fn.allocate_frames_by_bytes_at.html +++ b/doc/memory/fn.allocate_frames_by_bytes_at.html @@ -1,7 +1,7 @@ allocate_frames_by_bytes_at in memory - Rust
    pub fn allocate_frames_by_bytes_at(
         paddr: PhysicalAddress,
         num_bytes: usize
    -) -> Result<Frames<frame_allocator::::AllocatedFrames::{constant#0}>, &'static str>
    Expand description

    Allocates frames starting at the given PhysicalAddress with a size given in number of bytes.

    +) -> Result<Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>, &'static str>
    Expand description

    Allocates frames starting at the given PhysicalAddress with a size given in number of bytes.

    This function still allocates whole frames by rounding up the number of bytes. See allocate_frames_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_frames_by_bytes_deferred.html b/doc/memory/fn.allocate_frames_by_bytes_deferred.html index 4f894be83d..bb3deb8497 100644 --- a/doc/memory/fn.allocate_frames_by_bytes_deferred.html +++ b/doc/memory/fn.allocate_frames_by_bytes_deferred.html @@ -1,7 +1,7 @@ allocate_frames_by_bytes_deferred in memory - Rust
    pub fn allocate_frames_by_bytes_deferred(
         requested_paddr: Option<PhysicalAddress>,
         num_bytes: usize
    -) -> Result<(Frames<frame_allocator::::AllocatedFrames::{constant#0}>, DeferredAllocAction<'static>), &'static str>
    Expand description

    Similar to allocated_frames_deferred(), +) -> Result<(Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    Similar to allocated_frames_deferred(), but accepts a size value for the allocated frames in number of bytes instead of number of frames.

    This function still allocates whole frames by rounding up the number of bytes.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_frames_deferred.html b/doc/memory/fn.allocate_frames_deferred.html index e99a15670d..86d5d7055e 100644 --- a/doc/memory/fn.allocate_frames_deferred.html +++ b/doc/memory/fn.allocate_frames_deferred.html @@ -1,7 +1,7 @@ allocate_frames_deferred in memory - Rust
    pub fn allocate_frames_deferred(
         requested_paddr: Option<PhysicalAddress>,
         num_frames: usize
    -) -> Result<(Frames<frame_allocator::::AllocatedFrames::{constant#0}>, DeferredAllocAction<'static>), &'static str>
    Expand description

    The core frame allocation routine that allocates the given number of physical frames, +) -> Result<(Frames<frame_allocator::::AllocatedFrames::{constant#0}, Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    The core frame allocation routine that allocates the given number of physical frames, optionally at the requested starting PhysicalAddress.

    This simply reserves a range of frames; it does not perform any memory mapping. Thus, the memory represented by the returned AllocatedFrames isn’t directly accessible diff --git a/doc/memory/fn.allocate_pages.html b/doc/memory/fn.allocate_pages.html index a5ec3d847d..481d7fb536 100644 --- a/doc/memory/fn.allocate_pages.html +++ b/doc/memory/fn.allocate_pages.html @@ -1,3 +1,3 @@ -allocate_pages in memory - Rust

    Function memory::allocate_pages

    pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages>
    Expand description

    Allocates the given number of pages with no constraints on the starting virtual address.

    +allocate_pages in memory - Rust

    Function memory::allocate_pages

    pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages<Page4K>>
    Expand description

    Allocates the given number of pages with no constraints on the starting virtual address.

    See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_at.html b/doc/memory/fn.allocate_pages_at.html index 7e1ff2c4e7..d6bb175451 100644 --- a/doc/memory/fn.allocate_pages_at.html +++ b/doc/memory/fn.allocate_pages_at.html @@ -1,6 +1,6 @@ allocate_pages_at in memory - Rust

    Function memory::allocate_pages_at

    pub fn allocate_pages_at(
         vaddr: VirtualAddress,
         num_pages: usize
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates the given number of pages starting at (inclusive of) the page containing the given VirtualAddress.

    +) -> Result<AllocatedPages<Page4K>, &'static str>
    Expand description

    Allocates the given number of pages starting at (inclusive of) the page containing the given VirtualAddress.

    See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_by_bytes.html b/doc/memory/fn.allocate_pages_by_bytes.html index 9a733631cc..e15cd4b6b6 100644 --- a/doc/memory/fn.allocate_pages_by_bytes.html +++ b/doc/memory/fn.allocate_pages_by_bytes.html @@ -1,4 +1,6 @@ -allocate_pages_by_bytes in memory - Rust
    pub fn allocate_pages_by_bytes(num_bytes: usize) -> Option<AllocatedPages>
    Expand description

    Allocates pages with no constraints on the starting virtual address, +allocate_pages_by_bytes in memory - Rust

    pub fn allocate_pages_by_bytes(
    +    num_bytes: usize
    +) -> Option<AllocatedPages<Page4K>>
    Expand description

    Allocates pages with no constraints on the starting virtual address, with a size given by the number of bytes.

    This function still allocates whole pages by rounding up the number of bytes. See allocate_pages_deferred() for more details.

    diff --git a/doc/memory/fn.allocate_pages_by_bytes_at.html b/doc/memory/fn.allocate_pages_by_bytes_at.html index e966e39700..66f9f89ec6 100644 --- a/doc/memory/fn.allocate_pages_by_bytes_at.html +++ b/doc/memory/fn.allocate_pages_by_bytes_at.html @@ -1,7 +1,7 @@ allocate_pages_by_bytes_at in memory - Rust
    pub fn allocate_pages_by_bytes_at(
         vaddr: VirtualAddress,
         num_bytes: usize
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates pages starting at the given VirtualAddress with a size given in number of bytes.

    +) -> Result<AllocatedPages<Page4K>, &'static str>
    Expand description

    Allocates pages starting at the given VirtualAddress with a size given in number of bytes.

    This function still allocates whole pages by rounding up the number of bytes. See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_by_bytes_deferred.html b/doc/memory/fn.allocate_pages_by_bytes_deferred.html index ebbaefb3aa..afcc3df5c9 100644 --- a/doc/memory/fn.allocate_pages_by_bytes_deferred.html +++ b/doc/memory/fn.allocate_pages_by_bytes_deferred.html @@ -1,7 +1,7 @@ allocate_pages_by_bytes_deferred in memory - Rust
    pub fn allocate_pages_by_bytes_deferred(
         request: AllocationRequest<'_>,
         num_bytes: usize
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str>
    Expand description

    Similar to allocated_pages_deferred(), +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    Similar to allocated_pages_deferred(), but accepts a size value for the allocated pages in number of bytes instead of number of pages.

    This function still allocates whole pages by rounding up the number of bytes.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_by_bytes_in_range.html b/doc/memory/fn.allocate_pages_by_bytes_in_range.html index 15bcf7c20a..d455dd33ae 100644 --- a/doc/memory/fn.allocate_pages_by_bytes_in_range.html +++ b/doc/memory/fn.allocate_pages_by_bytes_in_range.html @@ -1,6 +1,6 @@ allocate_pages_by_bytes_in_range in memory - Rust
    pub fn allocate_pages_by_bytes_in_range(
         num_bytes: usize,
         range: &PageRange<Page4K>
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates pages with a size given in number of bytes with the constraint that +) -> Result<AllocatedPages<Page4K>, &'static str>

    Expand description

    Allocates pages with a size given in number of bytes with the constraint that they must be within the given inclusive range of pages.

    \ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_deferred.html b/doc/memory/fn.allocate_pages_deferred.html index 38b07f428a..ab70d8a37b 100644 --- a/doc/memory/fn.allocate_pages_deferred.html +++ b/doc/memory/fn.allocate_pages_deferred.html @@ -1,7 +1,7 @@ allocate_pages_deferred in memory - Rust
    pub fn allocate_pages_deferred(
         request: AllocationRequest<'_>,
         num_pages: usize
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str>
    Expand description

    The core page allocation routine that allocates the given number of virtual pages, +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    The core page allocation routine that allocates the given number of virtual pages, optionally at the requested starting VirtualAddress.

    This simply reserves a range of virtual addresses, it does not allocate actual physical memory frames nor do any memory mapping. diff --git a/doc/memory/fn.allocate_pages_in_range.html b/doc/memory/fn.allocate_pages_in_range.html index 9fa0c7175c..6bcdd32b12 100644 --- a/doc/memory/fn.allocate_pages_in_range.html +++ b/doc/memory/fn.allocate_pages_in_range.html @@ -1,6 +1,6 @@ allocate_pages_in_range in memory - Rust

    pub fn allocate_pages_in_range(
         num_pages: usize,
         range: &PageRange<Page4K>
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates the given number of pages with the constraint that +) -> Result<AllocatedPages<Page4K>, &'static str>

    Expand description

    Allocates the given number of pages with the constraint that they must be within the given inclusive range of pages.

    \ No newline at end of file diff --git a/doc/memory/fn.create_contiguous_mapping.html b/doc/memory/fn.create_contiguous_mapping.html index 959c914d6d..4163f5eb89 100644 --- a/doc/memory/fn.create_contiguous_mapping.html +++ b/doc/memory/fn.create_contiguous_mapping.html @@ -1,4 +1,4 @@ -create_contiguous_mapping in memory - Rust
    pub fn create_contiguous_mapping<F: Into<PteFlagsArch>>(
    +create_contiguous_mapping in memory - Rust
    pub fn create_contiguous_mapping<F: Into<PteFlagsArch>>(
         size_in_bytes: usize,
         flags: F
     ) -> Result<(MappedPages, PhysicalAddress), &'static str>
    Expand description

    A convenience function that creates a new memory mapping by allocating frames that are contiguous in physical memory. diff --git a/doc/memory/fn.create_identity_mapping.html b/doc/memory/fn.create_identity_mapping.html index bac0edfc28..aec3acc752 100644 --- a/doc/memory/fn.create_identity_mapping.html +++ b/doc/memory/fn.create_identity_mapping.html @@ -1,4 +1,4 @@ -create_identity_mapping in memory - Rust

    pub fn create_identity_mapping<F: Into<PteFlagsArch>>(
    +create_identity_mapping in memory - Rust
    pub fn create_identity_mapping<F: Into<PteFlagsArch>>(
         num_pages: usize,
         flags: F
     ) -> Result<MappedPages, &'static str>
    Expand description

    Creates an identity mapping at a random available virtual and physical address.

    diff --git a/doc/memory/fn.create_mapping.html b/doc/memory/fn.create_mapping.html index 3d9465ed06..3b1f7f0a1f 100644 --- a/doc/memory/fn.create_mapping.html +++ b/doc/memory/fn.create_mapping.html @@ -1,4 +1,4 @@ -create_mapping in memory - Rust

    Function memory::create_mapping

    source ·
    pub fn create_mapping<F: Into<PteFlagsArch>>(
    +create_mapping in memory - Rust

    Function memory::create_mapping

    source ·
    pub fn create_mapping<F: Into<PteFlagsArch>>(
         size_in_bytes: usize,
         flags: F
     ) -> Result<MappedPages, &'static str>
    Expand description

    A convenience function that creates a new memory mapping. The pages allocated are contiguous in memory but there’s diff --git a/doc/memory/fn.get_kernel_mmi_ref.html b/doc/memory/fn.get_kernel_mmi_ref.html index a2f75249ba..59d8073c1c 100644 --- a/doc/memory/fn.get_kernel_mmi_ref.html +++ b/doc/memory/fn.get_kernel_mmi_ref.html @@ -1,3 +1,3 @@ -get_kernel_mmi_ref in memory - Rust

    Function memory::get_kernel_mmi_ref

    source ·
    pub fn get_kernel_mmi_ref() -> Option<&'static MmiRef>
    Expand description

    Returns a reference to the kernel’s MemoryManagementInfo, if initialized. +get_kernel_mmi_ref in memory - Rust

    Function memory::get_kernel_mmi_ref

    source ·
    pub fn get_kernel_mmi_ref() -> Option<&'static MmiRef>
    Expand description

    Returns a reference to the kernel’s MemoryManagementInfo, if initialized. If not, it returns None.

    \ No newline at end of file diff --git a/doc/memory/fn.init.html b/doc/memory/fn.init.html index 8b7dc4a2cc..6e2b971499 100644 --- a/doc/memory/fn.init.html +++ b/doc/memory/fn.init.html @@ -1,4 +1,4 @@ -init in memory - Rust

    Function memory::init

    source ·
    pub fn init(
    +init in memory - Rust

    Function memory::init

    source ·
    pub fn init(
         boot_info: &impl BootInformation,
         kernel_stack_start: VirtualAddress
     ) -> Result<InitialMemoryMappings, &'static str>
    Expand description

    Initializes the virtual memory management system. diff --git a/doc/memory/fn.init_post_heap.html b/doc/memory/fn.init_post_heap.html index bf8dfe75e3..a560313e39 100644 --- a/doc/memory/fn.init_post_heap.html +++ b/doc/memory/fn.init_post_heap.html @@ -1,4 +1,4 @@ -init_post_heap in memory - Rust

    Function memory::init_post_heap

    source ·
    pub fn init_post_heap(
    +init_post_heap in memory - Rust

    Function memory::init_post_heap

    source ·
    pub fn init_post_heap(
         page_table: PageTable,
         additional_mapped_pages: MappedPages,
         heap_mapped_pages: MappedPages
    diff --git a/doc/memory/fn.map_frame_range.html b/doc/memory/fn.map_frame_range.html
    index fc4891043c..7365182397 100644
    --- a/doc/memory/fn.map_frame_range.html
    +++ b/doc/memory/fn.map_frame_range.html
    @@ -1,4 +1,4 @@
    -map_frame_range in memory - Rust

    Function memory::map_frame_range

    source ·
    pub fn map_frame_range<F: Into<PteFlagsArch>>(
    +map_frame_range in memory - Rust

    Function memory::map_frame_range

    source ·
    pub fn map_frame_range<F: Into<PteFlagsArch>>(
         start_address: PhysicalAddress,
         size_in_bytes: usize,
         flags: F
    diff --git a/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html b/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html
    index 66ddd2b96e..a1aeaca876 100644
    --- a/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html
    +++ b/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html
    @@ -1,3 +1,3 @@
    -set_broadcast_tlb_shootdown_cb in memory - Rust
    pub fn set_broadcast_tlb_shootdown_cb(func: fn(_: PageRange))
    Expand description

    Set the function callback that will be invoked every time a TLB shootdown is necessary, +set_broadcast_tlb_shootdown_cb in memory - Rust

    pub fn set_broadcast_tlb_shootdown_cb(func: fn(_: PageRange))
    Expand description

    Set the function callback that will be invoked every time a TLB shootdown is necessary, i.e., during page table remapping and unmapping operations.

    \ No newline at end of file diff --git a/doc/memory/fn.translate.html b/doc/memory/fn.translate.html index faf51fd22a..5d9590bbb3 100644 --- a/doc/memory/fn.translate.html +++ b/doc/memory/fn.translate.html @@ -1,3 +1,3 @@ -translate in memory - Rust

    Function memory::translate

    source ·
    pub fn translate(virtual_address: VirtualAddress) -> Option<PhysicalAddress>
    Expand description

    A convenience function to translate the given virtual address into a +translate in memory - Rust

    Function memory::translate

    source ·
    pub fn translate(virtual_address: VirtualAddress) -> Option<PhysicalAddress>
    Expand description

    A convenience function to translate the given virtual address into a physical address using the currently-active page table.

    \ No newline at end of file diff --git a/doc/memory/index.html b/doc/memory/index.html index 3c1f925cea..7b3b77b399 100644 --- a/doc/memory/index.html +++ b/doc/memory/index.html @@ -1,12 +1,13 @@ memory - Rust

    Crate memory

    source ·
    Expand description

    This crate implements the main memory management subsystem for Theseus.

    +
  • All Items
  • Crate memory

    source ·
    Expand description

    This crate implements the main memory management subsystem for Theseus.

    The primary type of interest is MappedPages, which offers a robust interface that unifies the usage of arbitrary memory regions with that of Rust’s safe type system and lifetimes.

    Acknowledgments

    Some of the internal page table management code was based on Philipp Oppermann’s blog_os, but has since changed significantly.

    -

    Structs

    Macros

    • A macro for applying the same field/method accessors to all variants +in an enum based on the three possible PageSizes.

    Structs

    • Represents a range of allocated VirtualAddresses, specified in Pages.
    • A borrowed MappedPages object that derefs to &T and optionally also &mut T.
    • A borrowed MappedPages object that derefs to a slice &[T] and optionally also &mut [T].
    • The set of identity mappings that should be dropped before starting the first application.
    • A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.
    • A range of Frames that are contiguous in physical memory.
    • A marker type used to indicate that a BorrowedMappedPages or BorrowedSliceMappedPages is borrowed immutably.
    • Information returned after initialising the memory subsystem.
    • Represents a contiguous range of virtual memory pages that are currently mapped. A MappedPages object can only have a single range of contiguous pages, not multiple disjoint ranges. This does not guarantee that its pages are mapped to frames that are contiguous in physical memory.
    • This holds all the information for a Task’s memory mappings and address space diff --git a/doc/memory/macro.chunk_sized_expr!.html b/doc/memory/macro.chunk_sized_expr!.html new file mode 100644 index 0000000000..49c26ad317 --- /dev/null +++ b/doc/memory/macro.chunk_sized_expr!.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

      Redirecting to macro.chunk_sized_expr.html...

      + + + \ No newline at end of file diff --git a/doc/memory/macro.chunk_sized_expr.html b/doc/memory/macro.chunk_sized_expr.html new file mode 100644 index 0000000000..89fe7ef94d --- /dev/null +++ b/doc/memory/macro.chunk_sized_expr.html @@ -0,0 +1,5 @@ +chunk_sized_expr in memory - Rust
      macro_rules! chunk_sized_expr {
      +    ($t:ty, $chunk:ident, .$($method:tt)*) => { ... };
      +}
      Expand description

      A macro for applying the same field/method accessors to all variants +in an enum based on the three possible PageSizes.

      +
      \ No newline at end of file diff --git a/doc/memory/sidebar-items.js b/doc/memory/sidebar-items.js index 4198aad850..7eed200d71 100644 --- a/doc/memory/sidebar-items.js +++ b/doc/memory/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["DMA_FLAGS","MMIO_FLAGS","PAGE_SIZE","PTE_FRAME_MASK"],"enum":["AllocationRequest","MemChunkSize","MemoryState"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","create_contiguous_mapping","create_identity_mapping","create_mapping","get_kernel_mmi_ref","init","init_post_heap","map_frame_range","set_broadcast_tlb_shootdown_cb","translate"],"struct":["AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CopyableFrameRange","CopyablePageRange","EarlyIdentityMappedPages","Frame","FrameRange","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","Mutable","Page","Page1G","Page2M","Page4K","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability","PageSize"],"type":["AllocatedFrames","MmiRef","UnmappedFrames"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DMA_FLAGS","MMIO_FLAGS","PAGE_SIZE","PTE_FRAME_MASK"],"enum":["AllocationRequest","MemChunkSize","MemoryState"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","create_contiguous_mapping","create_identity_mapping","create_mapping","get_kernel_mmi_ref","init","init_post_heap","map_frame_range","set_broadcast_tlb_shootdown_cb","translate"],"macro":["chunk_sized_expr"],"struct":["AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","EarlyIdentityMappedPages","Frame","FrameRange","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","Mutable","Page","Page1G","Page2M","Page4K","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability","PageSize"],"type":["AllocatedFrames","MmiRef","UnmappedFrames"]}; \ No newline at end of file diff --git a/doc/memory/struct.AllocatedPages.html b/doc/memory/struct.AllocatedPages.html index d0bd264598..b2ee120554 100644 --- a/doc/memory/struct.AllocatedPages.html +++ b/doc/memory/struct.AllocatedPages.html @@ -1,16 +1,18 @@ -AllocatedPages in memory - Rust

      Struct memory::AllocatedPages

      pub struct AllocatedPages { /* private fields */ }
      Expand description

      Represents a range of allocated VirtualAddresses, specified in Pages.

      +AllocatedPages in memory - Rust

      Struct memory::AllocatedPages

      pub struct AllocatedPages<P = Page4K>where
      +    P: PageSize,{ /* private fields */ }
      Expand description

      Represents a range of allocated VirtualAddresses, specified in Pages.

      These pages are not initially mapped to any physical memory frames, you must do that separately in order to actually use their memory; see the MappedPages type for more.

      This object represents ownership of the allocated virtual pages; if this object falls out of scope, its allocated pages will be auto-deallocated upon drop.

      -

      Implementations§

      §

      impl AllocatedPages

      pub const fn empty() -> AllocatedPages

      Returns an empty AllocatedPages object that performs no page allocation. +

      Implementations§

      §

      impl<P> AllocatedPages<P>where + P: PageSize,

      pub const fn empty() -> AllocatedPages<P>

      Returns an empty AllocatedPages object that performs no page allocation. Can be used as a placeholder, but will not permit any real usage.

      -

      pub fn start_address(&self) -> VirtualAddress

      Returns the starting VirtualAddress in this range of pages.

      -

      pub fn size_in_bytes(&self) -> usize

      Returns the size in bytes of this range of pages.

      -

      pub fn size_in_pages(&self) -> usize

      Returns the size in number of pages of this range of pages.

      -

      pub fn start(&self) -> &Page<Page4K>

      Returns the starting Page in this range of pages.

      -

      pub fn end(&self) -> &Page<Page4K>

      Returns the ending Page (inclusive) in this range of pages.

      -

      pub fn range(&self) -> &PageRange<Page4K>

      Returns a reference to the inner PageRange, which is cloneable/iterable.

      +

      pub const fn start_address(&self) -> VirtualAddress

      Returns the starting VirtualAddress in this range of pages.

      +

      pub const fn size_in_bytes(&self) -> usize

      Returns the size in bytes of this range of pages.

      +

      pub const fn size_in_pages(&self) -> usize

      Returns the size in number of pages of this range of pages.

      +

      pub const fn start(&self) -> &Page<P>

      Returns the starting Page in this range of pages.

      +

      pub const fn end(&self) -> &Page<P>

      Returns the ending Page (inclusive) in this range of pages.

      +

      pub const fn range(&self) -> &PageRange<P>

      Returns a reference to the inner PageRange, which is cloneable/iterable.

      pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

      Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

      If the given addr is not covered by this range of pages, this returns None.

      @@ -24,7 +26,7 @@
      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 merge(&mut self, ap: AllocatedPages) -> Result<(), AllocatedPages>

      Merges the given AllocatedPages object ap into this AllocatedPages object (self). +

      pub fn merge(&mut self, ap: AllocatedPages<P>) -> Result<(), AllocatedPages<P>>

      Merges the given AllocatedPages object ap into this AllocatedPages object (self). This is just for convenience and usability purposes, it performs no allocation or remapping.

      The ap must be virtually contiguous and come immediately after self, that is, self.end must equal ap.start. @@ -32,8 +34,8 @@

      Examples
      otherwise Err(ap) is returned.

      pub fn split( self, - at_page: Page<Page4K> -) -> Result<(AllocatedPages, AllocatedPages), AllocatedPages>

      Splits this AllocatedPages into two separate AllocatedPages objects:

      + at_page: Page<P> +) -> Result<(AllocatedPages<P>, AllocatedPages<P>), AllocatedPages<P>>

      Splits this AllocatedPages into two separate AllocatedPages objects:

      • [beginning : at_page - 1]
      • [at_page : end]
      • @@ -45,7 +47,15 @@
        Examples
      • If at_page == self.end + 1, the second returned AllocatedPages object will be empty.

      Returns an Err containing this AllocatedPages if at_page is otherwise out of bounds.

      -

    Trait Implementations§

    §

    impl Debug for AllocatedPages

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl Drop for AllocatedPages

    §

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    §

    impl<P> Debug for AllocatedPages<P>where + P: PageSize,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<P> Default for AllocatedPages<P>where + P: PageSize,

    §

    fn default() -> AllocatedPages<P>

    Returns the “default value” for a type. Read more
    §

    impl<P> Drop for AllocatedPages<P>where + P: PageSize,

    §

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for AllocatedPages<P>where + P: RefUnwindSafe,

    §

    impl<P> Send for AllocatedPages<P>where + P: Send,

    §

    impl<P> Sync for AllocatedPages<P>where + P: Sync,

    §

    impl<P> Unpin for AllocatedPages<P>where + P: Unpin,

    §

    impl<P> UnwindSafe for AllocatedPages<P>where + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.BorrowedMappedPages.html b/doc/memory/struct.BorrowedMappedPages.html index bc9c800204..d70b82fb51 100644 --- a/doc/memory/struct.BorrowedMappedPages.html +++ b/doc/memory/struct.BorrowedMappedPages.html @@ -1,4 +1,4 @@ -BorrowedMappedPages in memory - Rust
    pub struct BorrowedMappedPages<T, M = Immutable, B = MappedPages>where
    +BorrowedMappedPages in memory - Rust
    pub struct BorrowedMappedPages<T, M = Immutable, B = MappedPages>where
         T: FromBytes,
         M: Mutability,
         B: Borrow<MappedPages>,{ /* private fields */ }
    Expand description

    A borrowed MappedPages object that derefs to &T and optionally also &mut T.

    @@ -29,7 +29,7 @@

    Drop behavior

  • Also, you can manually end the borrow to reclaim the inner B MappedPages type via the Self::into_inner() method.
  • -

    Implementations§

    source§

    impl<T: FromBytes, B: Borrow<MappedPages>> BorrowedMappedPages<T, Immutable, B>

    source

    pub fn from(mp: B, byte_offset: usize) -> Result<Self, (B, &'static str)>

    Immutably borrows the given MappedPages as an instance of type &T +

    Implementations§

    source§

    impl<T: FromBytes, B: Borrow<MappedPages>> BorrowedMappedPages<T, Immutable, B>

    source

    pub fn from(mp: B, byte_offset: usize) -> Result<Self, (B, &'static str)>

    Immutably borrows the given MappedPages as an instance of type &T located at the given byte_offset into the MappedPages.

    See MappedPages::as_type() for more info.

    Arguments
    @@ -49,7 +49,7 @@
    Arguments

    Upon failure, this returns an error tuple containing the unmodified mp argument and a string describing the error.

    -
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedMappedPages<T, Mutable, B>

    source

    pub fn from_mut(mp: B, byte_offset: usize) -> Result<Self, (B, &'static str)>

    Mutably borrows the given MappedPages as an instance of type &mut T +

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedMappedPages<T, Mutable, B>

    source

    pub fn from_mut(mp: B, byte_offset: usize) -> Result<Self, (B, &'static str)>

    Mutably borrows the given MappedPages as an instance of type &mut T located at the given byte_offset into the MappedPages.

    See MappedPages::as_type_mut() for more info.

    Arguments
    @@ -69,26 +69,26 @@
    Arguments

    Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

    -
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedMappedPages<T, M, B>

    source

    pub fn into_inner(self) -> B

    Consumes this object and returns the inner MappedPages value +

    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedMappedPages<T, M, B>

    source

    pub fn into_inner(self) -> B

    Consumes this object and returns the inner MappedPages value (more specifically, the Borrow-able container holding the MappedPages).

    -
    source

    pub fn inner_ref(&self) -> &B

    Returns a reference to the inner MappedPages value +

    source

    pub fn inner_ref(&self) -> &B

    Returns a reference to the inner MappedPages value (more specifically, the Borrow-able container holding the MappedPages).

    -

    Trait Implementations§

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<T> for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages implement AsMut<T>.

    -
    source§

    fn as_mut(&mut self) -> &mut T

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> AsRef<T> for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages implement AsRef<T>.

    -
    source§

    fn as_ref(&self) -> &T

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<T> for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages implement Borrow<T>.

    -
    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowMut<T> for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages implement BorrowMut<T>.

    -
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages can deref into &T.

    -
    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages can deref into &mut T.

    -
    source§

    fn deref_mut(&mut self) -> &mut T

    Mutably dereferences the value.
    source§

    impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where +

    Trait Implementations§

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<T> for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages implement AsMut<T>.

    +
    source§

    fn as_mut(&mut self) -> &mut T

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> AsRef<T> for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages implement AsRef<T>.

    +
    source§

    fn as_ref(&self) -> &T

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<T> for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages implement Borrow<T>.

    +
    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowMut<T> for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages implement BorrowMut<T>.

    +
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedMappedPages can deref into &T.

    +
    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedMappedPages<T, Mutable, B>

    Only Mutable BorrowedMappedPages can deref into &mut T.

    +
    source§

    fn deref_mut(&mut self) -> &mut T

    Mutably dereferences the value.
    source§

    impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

    impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedMappedPages<T, M, B>

    Auto Trait Implementations§

    §

    impl<T, M, B> RefUnwindSafe for BorrowedMappedPages<T, M, B>where +operator. Read more

    source§

    impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedMappedPages<T, M, B>

    Auto Trait Implementations§

    §

    impl<T, M, B> RefUnwindSafe for BorrowedMappedPages<T, M, B>where B: RefUnwindSafe, M: RefUnwindSafe, T: RefUnwindSafe,

    §

    impl<T, M, B> Send for BorrowedMappedPages<T, M, B>where diff --git a/doc/memory/struct.BorrowedSliceMappedPages.html b/doc/memory/struct.BorrowedSliceMappedPages.html index c2d2f3ba3f..f6d4d8a734 100644 --- a/doc/memory/struct.BorrowedSliceMappedPages.html +++ b/doc/memory/struct.BorrowedSliceMappedPages.html @@ -1,9 +1,9 @@ -BorrowedSliceMappedPages in memory - Rust
    pub struct BorrowedSliceMappedPages<T, M = Immutable, B = MappedPages>where
    +BorrowedSliceMappedPages in memory - Rust
    pub struct BorrowedSliceMappedPages<T, M = Immutable, B = MappedPages>where
         T: FromBytes,
         M: Mutability,
         B: Borrow<MappedPages>,{ /* private fields */ }
    Expand description

    A borrowed MappedPages object that derefs to a slice &[T] and optionally also &mut [T].

    See the docs of BorrowedMappedPages for more detail.

    -

    Implementations§

    source§

    impl<T: FromBytes, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, Immutable, B>

    source

    pub fn from( +

    Implementations§

    source§

    impl<T: FromBytes, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, Immutable, B>

    source

    pub fn from( mp: B, byte_offset: usize, length: usize @@ -30,7 +30,7 @@

    Arguments

    Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

    -

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedSliceMappedPages<T, Mutable, B>

    source

    pub fn from_mut( +

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedSliceMappedPages<T, Mutable, B>

    source

    pub fn from_mut( mp: B, byte_offset: usize, length: usize @@ -57,8 +57,8 @@

    Arguments

    Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

    -
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, M, B>

    source

    pub fn into_inner(self) -> B

    Consumes this object and returns the inner MappedPages.

    -
    source

    pub fn inner_ref(&self) -> &B

    Returns a reference to the inner borrowed MappedPages.

    +
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, M, B>

    source

    pub fn into_inner(self) -> B

    Consumes this object and returns the inner MappedPages.

    +
    source

    pub fn inner_ref(&self) -> &B

    Returns a reference to the inner borrowed MappedPages.

    Methods from Deref<Target = [T]>§

    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    Panics

    This panics if the length of the resulting slice would overflow a usize.

    @@ -2427,22 +2427,22 @@
    Examples

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.

    To lowercase the value in-place, use make_ascii_lowercase.

    -

    Trait Implementations§

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages implement AsMut<T>.

    -
    source§

    fn as_mut(&mut self) -> &mut [T]

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> AsRef<[T]> for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages implement AsRef<[T]>.

    -
    source§

    fn as_ref(&self) -> &[T]

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages implement Borrow<T>.

    -
    source§

    fn borrow(&self) -> &[T]

    Immutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages implement BorrowMut<T>.

    -
    source§

    fn borrow_mut(&mut self) -> &mut [T]

    Mutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages can deref into &[T].

    -
    §

    type Target = [T]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &[T]

    Dereferences the value.
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages can deref into &mut T.

    -
    source§

    fn deref_mut(&mut self) -> &mut [T]

    Mutably dereferences the value.
    source§

    impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where +

    Trait Implementations§

    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages implement AsMut<T>.

    +
    source§

    fn as_mut(&mut self) -> &mut [T]

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> AsRef<[T]> for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages implement AsRef<[T]>.

    +
    source§

    fn as_ref(&self) -> &[T]

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages implement Borrow<T>.

    +
    source§

    fn borrow(&self) -> &[T]

    Immutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages implement BorrowMut<T>.

    +
    source§

    fn borrow_mut(&mut self) -> &mut [T]

    Mutably borrows from an owned value. Read more
    source§

    impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>

    Both Mutable and Immutable BorrowedSliceMappedPages can deref into &[T].

    +
    §

    type Target = [T]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &[T]

    Dereferences the value.
    source§

    impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>

    Only Mutable BorrowedSliceMappedPages can deref into &mut T.

    +
    source§

    fn deref_mut(&mut self) -> &mut [T]

    Mutably dereferences the value.
    source§

    impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

    impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedSliceMappedPages<T, M, B>

    Auto Trait Implementations§

    §

    impl<T, M, B> RefUnwindSafe for BorrowedSliceMappedPages<T, M, B>where +operator. Read more

    source§

    impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedSliceMappedPages<T, M, B>

    Auto Trait Implementations§

    §

    impl<T, M, B> RefUnwindSafe for BorrowedSliceMappedPages<T, M, B>where B: RefUnwindSafe, M: RefUnwindSafe, T: RefUnwindSafe,

    §

    impl<T, M, B> Send for BorrowedSliceMappedPages<T, M, B>where diff --git a/doc/memory/struct.CopyableFrameRange.html b/doc/memory/struct.CopyableFrameRange.html deleted file mode 100644 index 314bf1fe86..0000000000 --- a/doc/memory/struct.CopyableFrameRange.html +++ /dev/null @@ -1,23 +0,0 @@ -CopyableFrameRange in memory - Rust
    pub struct CopyableFrameRange<P = Page4K>where
    -    P: PageSize,{ /* private fields */ }
    Expand description

    A FrameRange that implements Copy.

    -

    Trait Implementations§

    §

    impl<P> Clone for CopyableFrameRange<P>where - P: Clone + PageSize,

    §

    fn clone(&self) -> CopyableFrameRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> From<CopyableFrameRange<P>> for FrameRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(cr: CopyableFrameRange<P>) -> FrameRange<P>

    Converts to this type from the input type.
    §

    impl<P> From<FrameRange<P>> for CopyableFrameRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(r: FrameRange<P>) -> CopyableFrameRange<P>

    Converts to this type from the input type.
    §

    impl<P> Copy for CopyableFrameRange<P>where - P: Copy + PageSize,

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for CopyableFrameRange<P>where - P: RefUnwindSafe,

    §

    impl<P> Send for CopyableFrameRange<P>where - P: Send,

    §

    impl<P> Sync for CopyableFrameRange<P>where - P: Sync,

    §

    impl<P> Unpin for CopyableFrameRange<P>where - P: Unpin,

    §

    impl<P> UnwindSafe for CopyableFrameRange<P>where - P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/doc/memory/struct.CopyablePageRange.html b/doc/memory/struct.CopyablePageRange.html deleted file mode 100644 index f091995995..0000000000 --- a/doc/memory/struct.CopyablePageRange.html +++ /dev/null @@ -1,23 +0,0 @@ -CopyablePageRange in memory - Rust
    pub struct CopyablePageRange<P = Page4K>where
    -    P: PageSize,{ /* private fields */ }
    Expand description

    A PageRange that implements Copy.

    -

    Trait Implementations§

    §

    impl<P> Clone for CopyablePageRange<P>where - P: Clone + PageSize,

    §

    fn clone(&self) -> CopyablePageRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> From<CopyablePageRange<P>> for PageRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(cr: CopyablePageRange<P>) -> PageRange<P>

    Converts to this type from the input type.
    §

    impl<P> From<PageRange<P>> for CopyablePageRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(r: PageRange<P>) -> CopyablePageRange<P>

    Converts to this type from the input type.
    §

    impl<P> Copy for CopyablePageRange<P>where - P: Copy + PageSize,

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for CopyablePageRange<P>where - P: RefUnwindSafe,

    §

    impl<P> Send for CopyablePageRange<P>where - P: Send,

    §

    impl<P> Sync for CopyablePageRange<P>where - P: Sync,

    §

    impl<P> Unpin for CopyablePageRange<P>where - P: Unpin,

    §

    impl<P> UnwindSafe for CopyablePageRange<P>where - P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for Twhere - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/doc/memory/struct.EarlyIdentityMappedPages.html b/doc/memory/struct.EarlyIdentityMappedPages.html index e60d40fcf7..aae228bc7c 100644 --- a/doc/memory/struct.EarlyIdentityMappedPages.html +++ b/doc/memory/struct.EarlyIdentityMappedPages.html @@ -1,4 +1,4 @@ -EarlyIdentityMappedPages in memory - Rust
    pub struct EarlyIdentityMappedPages { /* private fields */ }
    Expand description

    The set of identity mappings that should be dropped before starting the first application.

    +EarlyIdentityMappedPages in memory - Rust
    pub struct EarlyIdentityMappedPages { /* private fields */ }
    Expand description

    The set of identity mappings that should be dropped before starting the first application.

    Currently there are only 4 identity mappings, used for the base kernel image:

    1. the .init early text section,
    2. @@ -6,7 +6,7 @@
    3. the .rodata section, which includes all read-only data,
    4. the .data section, which includes .bss and all read-write data.
    -

    Trait Implementations§

    source§

    impl Debug for EarlyIdentityMappedPages

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for EarlyIdentityMappedPages

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.Frame.html b/doc/memory/struct.Frame.html index fb202b8a38..a9e8e614fa 100644 --- a/doc/memory/struct.Frame.html +++ b/doc/memory/struct.Frame.html @@ -1,18 +1,29 @@ -Frame in memory - Rust

    Struct memory::Frame

    pub struct Frame<P = Page4K>where
    +Frame in memory - Rust

    Struct memory::Frame

    pub struct Frame<P = Page4K>where
         P: PageSize,{ /* private fields */ }
    Expand description

    A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.

    Implementations§

    §

    impl Frame<Page4K>

    pub const fn containing_address(addr: PhysicalAddress) -> Frame<Page4K>

    Returns the 4KiB Frame containing the given PhysicalAddress.

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Frame<Page4K>

    Returns a new Frame that is aligned up from this Frame to the nearest multiple of alignment_4k_pages.

    +

    pub const fn from_4k_into_generic<P>(self) -> Frame<P>where + P: PageSize,

    Converts a known 4K-sized Frame into a +Frame<P> with a generic PageSize parameter.

    §

    impl Frame<Page2M>

    pub const fn containing_address_2mb(addr: PhysicalAddress) -> Frame<Page2M>

    Returns the 2MiB huge Frame containing the given PhysicalAddress.

    +

    pub const fn from_2m_into_generic<P>(self) -> Frame<P>where + P: PageSize,

    Converts a known 2M-sized Frame into a +Frame<P> with a generic PageSize parameter.

    §

    impl Frame<Page1G>

    pub const fn containing_address_1gb(addr: PhysicalAddress) -> Frame<Page1G>

    Returns the 1GiB huge Frame containing the given PhysicalAddress.

    +

    pub const fn from_1g_into_generic<P>(self) -> Frame<P>where + P: PageSize,

    Converts a known 1G-sized Frame into a +Frame<P> with a generic PageSize parameter.

    §

    impl<P> Frame<P>where - P: PageSize + 'static,

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    + P: PageSize,

    pub const MIN: Frame<P> = _

    The minimum (smallest) valid value a Frame can have.

    +

    pub const MAX: Frame<P> = _

    The maximum (largest) valid value a Frame can have.

    +

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress at the start of this Frame.

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Frame.

    Trait Implementations§

    §

    impl<P> Add<usize> for Frame<P>where - P: PageSize + 'static,

    §

    type Output = Frame<P>

    The resulting type after applying the + operator.
    §

    fn add(self, rhs: usize) -> Frame<P>

    Performs the + operation. Read more
    §

    impl<P> AddAssign<usize> for Frame<P>where - P: PageSize + 'static,

    §

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    §

    impl<P> Clone for Frame<P>where + P: PageSize,

    §

    type Output = Frame<P>

    The resulting type after applying the + operator.
    §

    fn add(self, rhs: usize) -> Frame<P>

    Performs the + operation. Read more
    §

    impl<P> AddAssign<usize> for Frame<P>where + P: PageSize,

    §

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    §

    impl<P> Clone for Frame<P>where P: Clone + PageSize,

    §

    fn clone(&self) -> Frame<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> Debug for Frame<P>where - P: PageSize + 'static,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl From<Frame<Page1G>> for Frame<Page4K>

    §

    fn from(p: Frame<Page1G>) -> Frame<Page4K>

    Converts to this type from the input type.
    §

    impl From<Frame<Page2M>> for Frame<Page4K>

    §

    fn from(p: Frame<Page2M>) -> Frame<Page4K>

    Converts to this type from the input type.
    §

    impl<P> Ord for Frame<P>where + P: PageSize,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl From<Frame<Page1G>> for Frame<Page4K>

    §

    fn from(p: Frame<Page1G>) -> Frame<Page4K>

    Converts to this type from the input type.
    §

    impl From<Frame<Page2M>> for Frame<Page4K>

    §

    fn from(p: Frame<Page2M>) -> Frame<Page4K>

    Converts to this type from the input type.
    §

    impl<P> Ord for Frame<P>where P: Ord + PageSize,

    §

    fn cmp(&self, other: &Frame<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere @@ -23,15 +34,15 @@ P: PartialOrd<P> + PageSize,

    §

    fn partial_cmp(&self, other: &Frame<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
    §

    impl<P> Step for Frame<P>where - P: PageSize + 'static,

    §

    fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    §

    fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor + P: PageSize,
    §

    fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    §

    fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    §

    fn backward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    fn forward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    unsafe fn forward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    fn backward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    unsafe fn backward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    §

    impl<P> Sub<usize> for Frame<P>where - P: PageSize + 'static,

    §

    type Output = Frame<P>

    The resulting type after applying the - operator.
    §

    fn sub(self, rhs: usize) -> Frame<P>

    Performs the - operation. Read more
    §

    impl<P> SubAssign<usize> for Frame<P>where - P: PageSize + 'static,

    §

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    §

    impl TryFrom<Frame<Page4K>> for Frame<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Frame<Page4K>) -> Result<Frame<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<Frame<Page4K>> for Frame<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Frame<Page4K>) -> Result<Frame<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Copy for Frame<P>where + P: PageSize,

    §

    type Output = Frame<P>

    The resulting type after applying the - operator.
    §

    fn sub(self, rhs: usize) -> Frame<P>

    Performs the - operation. Read more
    §

    impl<P> SubAssign<usize> for Frame<P>where + P: PageSize,

    §

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    §

    impl TryFrom<Frame<Page4K>> for Frame<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Frame<Page4K>) -> Result<Frame<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<Frame<Page4K>> for Frame<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Frame<Page4K>) -> Result<Frame<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Copy for Frame<P>where P: Copy + PageSize,

    §

    impl<P> Eq for Frame<P>where P: Eq + PageSize,

    §

    impl<P> StructuralEq for Frame<P>where P: PageSize,

    §

    impl<P> StructuralPartialEq for Frame<P>where diff --git a/doc/memory/struct.FrameRange.html b/doc/memory/struct.FrameRange.html index ee3525cece..097330d0d6 100644 --- a/doc/memory/struct.FrameRange.html +++ b/doc/memory/struct.FrameRange.html @@ -1,13 +1,15 @@ -FrameRange in memory - Rust

    Struct memory::FrameRange

    pub struct FrameRange<P = Page4K>(/* private fields */)
    +FrameRange in memory - Rust

    Struct memory::FrameRange

    pub struct FrameRange<P = Page4K>(/* private fields */)
     where
         P: PageSize;
    Expand description

    A range of Frames that are contiguous in physical memory.

    -

    Implementations§

    §

    impl FrameRange<Page4K>

    pub const fn empty() -> FrameRange<Page4K>

    Creates a FrameRange that will always yield None when iterated.

    -

    pub const fn from_phys_addr( +

    Implementations§

    §

    impl FrameRange<Page4K>

    pub const fn from_phys_addr( starting_addr: PhysicalAddress, size_in_bytes: usize ) -> FrameRange<Page4K>

    A convenience method for creating a new FrameRange that spans all Frames from the given PhysicalAddress to an end bound based on the given size.

    §

    impl<P> FrameRange<P>where - P: PageSize + 'static,

    pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

    Creates a new range of Frames that spans from start to end, both inclusive bounds.

    + P: PageSize,

    pub const fn empty() -> FrameRange<P>

    Creates an empty FrameRange that will always yield None when iterated.

    +

    pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

    Creates a new range of Frames that spans from start to end, both inclusive bounds.

    +

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

    Returns the starting Frame in this FrameRange.

    +

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

    Returns the ending Frame in this FrameRange.

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    pub const 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.

    @@ -23,11 +25,11 @@
    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.

    -
    §

    impl<P> FrameRange<P>where - P: PageSize + Copy + 'static,

    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.

    +

    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).

    +

    pub fn into_4k_frames(self) -> FrameRange<Page4K>

    Converts this range of Frames into an identical 4K-sized range.

    +

    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 @@ -35,14 +37,14 @@
    Examples
    U: PartialOrd<Idx> + ?Sized,

    Returns true if item is contained in the range.

    Trait Implementations§

    §

    impl<P> Clone for FrameRange<P>where P: Clone + PageSize,

    §

    fn clone(&self) -> FrameRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> Debug for FrameRange<P>where - P: PageSize + 'static,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<P> Deref for FrameRange<P>where - P: PageSize + 'static,

    §

    type Target = RangeInclusive<Frame<P>>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &RangeInclusive<Frame<P>>

    Dereferences the value.
    §

    impl DerefMut for FrameRange<Page4K>

    §

    fn deref_mut(&mut self) -> &mut RangeInclusive<Frame<Page4K>>

    Mutably dereferences the value.
    §

    impl<P> From<CopyableFrameRange<P>> for FrameRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(cr: CopyableFrameRange<P>) -> FrameRange<P>

    Converts to this type from the input type.
    §

    impl<P> From<FrameRange<P>> for CopyableFrameRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(r: FrameRange<P>) -> CopyableFrameRange<P>

    Converts to this type from the input type.
    §

    impl From<FrameRange<Page1G>> for FrameRange<Page4K>

    §

    fn from(r: FrameRange<Page1G>) -> FrameRange<Page4K>

    Converts to this type from the input type.
    §

    impl From<FrameRange<Page2M>> for FrameRange<Page4K>

    §

    fn from(r: FrameRange<Page2M>) -> FrameRange<Page4K>

    Converts to this type from the input type.
    §

    impl<P> IntoIterator for FrameRange<P>where - P: PageSize + 'static,

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <FrameRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> PartialEq<FrameRange<P>> for FrameRange<P>where + P: PageSize,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<P> Default for FrameRange<P>where + P: PageSize,

    §

    fn default() -> FrameRange<P>

    Returns the “default value” for a type. Read more
    §

    impl<P> Deref for FrameRange<P>where + P: PageSize,

    §

    type Target = RangeInclusive<Frame<P>>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &RangeInclusive<Frame<P>>

    Dereferences the value.
    §

    impl DerefMut for FrameRange<Page4K>

    §

    fn deref_mut(&mut self) -> &mut RangeInclusive<Frame<Page4K>>

    Mutably dereferences the value.
    §

    impl From<FrameRange<Page1G>> for FrameRange<Page4K>

    §

    fn from(r: FrameRange<Page1G>) -> FrameRange<Page4K>

    Converts to this type from the input type.
    §

    impl From<FrameRange<Page2M>> for FrameRange<Page4K>

    §

    fn from(r: FrameRange<Page2M>) -> FrameRange<Page4K>

    Converts to this type from the input type.
    §

    impl<P> IntoIterator for &FrameRange<P>where + P: PageSize,

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <&FrameRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> IntoIterator for FrameRange<P>where + P: PageSize,

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <FrameRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> PartialEq<FrameRange<P>> for FrameRange<P>where P: PartialEq<P> + PageSize,

    §

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

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    §

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Eq for FrameRange<P>where +sufficient, and should not be overridden without very good reason.

    §

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Eq for FrameRange<P>where P: Eq + PageSize,

    §

    impl<P> StructuralEq for FrameRange<P>where P: PageSize,

    §

    impl<P> StructuralPartialEq for FrameRange<P>where P: PageSize,

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for FrameRange<P>where @@ -53,7 +55,7 @@
    Examples
    P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for Twhere U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/doc/memory/struct.Immutable.html b/doc/memory/struct.Immutable.html index b96dc60c33..00cba6dcfc 100644 --- a/doc/memory/struct.Immutable.html +++ b/doc/memory/struct.Immutable.html @@ -1,7 +1,7 @@ -Immutable in memory - Rust

    Struct memory::Immutable

    source ·
    #[non_exhaustive]
    pub struct Immutable {}
    Expand description

    A marker type used to indicate that a BorrowedMappedPages +Immutable in memory - Rust

    Struct memory::Immutable

    source ·
    #[non_exhaustive]
    pub struct Immutable {}
    Expand description

    A marker type used to indicate that a BorrowedMappedPages or BorrowedSliceMappedPages is borrowed immutably.

    Implements the Mutability trait.

    -

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.InitialMemoryMappings.html b/doc/memory/struct.InitialMemoryMappings.html index b9cb6c6e3e..6090e8e54a 100644 --- a/doc/memory/struct.InitialMemoryMappings.html +++ b/doc/memory/struct.InitialMemoryMappings.html @@ -1,4 +1,4 @@ -InitialMemoryMappings in memory - Rust
    pub struct InitialMemoryMappings {
    +InitialMemoryMappings in memory - Rust
    pub struct InitialMemoryMappings {
         pub page_table: PageTable,
         pub text: NoDrop<MappedPages>,
         pub rodata: NoDrop<MappedPages>,
    @@ -26,7 +26,7 @@
     
     
    §additional: NoDrop<MappedPages>

    The list of additional mappings that must be kept forever.

    Currently, this contains only one mapping: the early VGA buffer.

    -

    Trait Implementations§

    source§

    impl Debug for InitialMemoryMappings

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for InitialMemoryMappings

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.MappedPages.html b/doc/memory/struct.MappedPages.html index 951647990d..d1bb513ab7 100644 --- a/doc/memory/struct.MappedPages.html +++ b/doc/memory/struct.MappedPages.html @@ -1,14 +1,14 @@ -MappedPages in memory - Rust

    Struct memory::MappedPages

    source ·
    pub struct MappedPages { /* private fields */ }
    Expand description

    Represents a contiguous range of virtual memory pages that are currently mapped. +MappedPages in memory - Rust

    Struct memory::MappedPages

    source ·
    pub struct MappedPages { /* private fields */ }
    Expand description

    Represents a contiguous range of virtual memory pages that are currently mapped. A MappedPages object can only have a single range of contiguous pages, not multiple disjoint ranges. This does not guarantee that its pages are mapped to frames that are contiguous in physical memory.

    This object also represents ownership of those pages; if this object falls out of scope, it will be dropped, and the pages will be unmapped and then also de-allocated. Thus, it ensures memory safety by guaranteeing that this object must be held in order to access data stored in these mapped pages, much like a guard type.

    -

    Implementations§

    source§

    impl MappedPages

    source

    pub const fn empty() -> MappedPages

    Returns an empty MappedPages object that performs no allocation or mapping actions. +

    Implementations§

    source§

    impl MappedPages

    source

    pub const fn empty() -> MappedPages

    Returns an empty MappedPages object that performs no allocation or mapping actions. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn flags(&self) -> PteFlagsArch

    Returns the flags that describe this MappedPages page table permissions.

    -
    source

    pub fn merge( +

    source

    pub fn flags(&self) -> PteFlagsArch

    Returns the flags that describe this MappedPages page table permissions.

    +
    source

    pub fn merge( &mut self, mp: MappedPages ) -> Result<(), (&'static str, MappedPages)>

    Merges the given MappedPages object mp into this MappedPages object (self).

    @@ -25,7 +25,7 @@ which prevents the mp from being dropped.

    Note

    No remapping actions or page reallocations will occur on either a failure or a success.

    -
    source

    pub fn split( +

    source

    pub fn split( self, at_page: Page ) -> Result<(MappedPages, MappedPages), MappedPages>

    Splits this MappedPages into two separate MappedPages objects:

    @@ -42,7 +42,7 @@
    Note

    Returns an Err containing this MappedPages (self) if at_page is not within its bounds.

    Note

    No remapping actions or page reallocations will occur on either a failure or a success.

    -
    source

    pub fn deep_copy<F: Into<PteFlagsArch>>( +

    source

    pub fn deep_copy<F: Into<PteFlagsArch>>( &self, active_table_mapper: &mut Mapper, new_flags: Option<F> @@ -55,7 +55,7 @@

    Note
    since it avoids extra remap() operations.

    Returns a new MappedPages object with the same in-memory contents as this object, but at a completely new memory region.

    -
    source

    pub fn remap<F: Into<PteFlagsArch>>( +

    source

    pub fn remap<F: Into<PteFlagsArch>>( &mut self, active_table_mapper: &mut Mapper, new_flags: F @@ -63,7 +63,7 @@

    Note

    Note that attempting to change certain “reserved” flags will have no effect. For example, the EXCLUSIVE flag cannot be changed beause arbitrarily setting it would violate safety.

    -
    source

    pub fn unmap_into_parts( +

    source

    pub fn unmap_into_parts( self, active_table_mapper: &mut Mapper ) -> Result<(AllocatedPages, Option<AllocatedFrames>), Self>

    Consumes and unmaps this MappedPages object without auto-deallocating its AllocatedPages and AllocatedFrames, @@ -72,7 +72,7 @@

    Note

    Note that only the first contiguous range of AllocatedFrames will be returned, if any were unmapped. All other non-contiguous ranges will be auto-dropped and deallocated. This is due to how frame deallocation works.

    -
    source

    pub fn as_type<T: FromBytes>( +

    source

    pub fn as_type<T: FromBytes>( &self, byte_offset: usize ) -> Result<&T, &'static str>

    Reinterprets this MappedPages’s underlying memory region as a struct of the given type T, @@ -102,12 +102,12 @@

    Arguments
    with a lifetime dependent upon the lifetime of this MappedPages object. This ensures safety by guaranteeing that the returned struct reference cannot be used after this MappedPages object is dropped and unmapped.

    -
    source

    pub fn as_type_mut<T: FromBytes>( +

    source

    pub fn as_type_mut<T: FromBytes>( &mut self, byte_offset: usize ) -> Result<&mut T, &'static str>

    Same as MappedPages::as_type(), but returns a mutable reference to the type T.

    Thus, it also checks that the underlying mapping is writable.

    -
    source

    pub fn as_slice<T: FromBytes>( +

    source

    pub fn as_slice<T: FromBytes>( &self, byte_offset: usize, length: usize @@ -130,26 +130,26 @@

    Arguments
    with a lifetime dependent upon the lifetime of this MappedPages object. This ensures safety by guaranteeing that the returned slice cannot be used after this MappedPages object is dropped and unmapped.

    -
    source

    pub fn as_slice_mut<T: FromBytes>( +

    source

    pub fn as_slice_mut<T: FromBytes>( &mut self, byte_offset: usize, length: usize ) -> Result<&mut [T], &'static str>

    Same as MappedPages::as_slice(), but returns a mutable slice.

    Thus, it checks that the underlying mapping is writable.

    -
    source

    pub fn into_borrowed<T: FromBytes>( +

    source

    pub fn into_borrowed<T: FromBytes>( self, byte_offset: usize ) -> Result<BorrowedMappedPages<T, Immutable>, (MappedPages, &'static str)>

    A convenience function for BorrowedMappedPages::from().

    -
    source

    pub fn into_borrowed_mut<T: FromBytes>( +

    source

    pub fn into_borrowed_mut<T: FromBytes>( self, byte_offset: usize ) -> Result<BorrowedMappedPages<T, Mutable>, (MappedPages, &'static str)>

    A convenience function for BorrowedMappedPages::from_mut().

    -
    source

    pub fn into_borrowed_slice<T: FromBytes>( +

    source

    pub fn into_borrowed_slice<T: FromBytes>( self, byte_offset: usize, length: usize ) -> Result<BorrowedSliceMappedPages<T, Immutable>, (MappedPages, &'static str)>

    A convenience function for BorrowedSliceMappedPages::from().

    -
    source

    pub fn into_borrowed_slice_mut<T: FromBytes>( +

    source

    pub fn into_borrowed_slice_mut<T: FromBytes>( self, byte_offset: usize, length: usize @@ -157,9 +157,9 @@

    Arguments

    Methods from Deref<Target = AllocatedPages>§

    pub fn start_address(&self) -> VirtualAddress

    Returns the starting VirtualAddress in this range of pages.

    pub fn size_in_bytes(&self) -> usize

    Returns the size in bytes of this range of pages.

    pub fn size_in_pages(&self) -> usize

    Returns the size in number of pages of this range of pages.

    -

    pub fn start(&self) -> &Page<Page4K>

    Returns the starting Page in this range of pages.

    -

    pub fn end(&self) -> &Page<Page4K>

    Returns the ending Page (inclusive) in this range of pages.

    -

    pub fn range(&self) -> &PageRange<Page4K>

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    +

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

    Returns the starting Page in this range of pages.

    +

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

    Returns the ending Page (inclusive) in this range of pages.

    +

    pub fn range(&self) -> &PageRange<P>

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    pub fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

    If the given addr is not covered by this range of pages, this returns None.

    @@ -173,7 +173,7 @@
    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.

    -

    Trait Implementations§

    source§

    impl Debug for MappedPages

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for MappedPages

    §

    type Target = AllocatedPages

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &AllocatedPages

    Dereferences the value.
    source§

    impl Drop for MappedPages

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for MappedPages

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for MappedPages

    §

    type Target = AllocatedPages<Page4K>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &AllocatedPages

    Dereferences the value.
    source§

    impl Drop for MappedPages

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.Mapper.html b/doc/memory/struct.Mapper.html index e128c7b6c9..ce3ed567cf 100644 --- a/doc/memory/struct.Mapper.html +++ b/doc/memory/struct.Mapper.html @@ -1,24 +1,31 @@ -Mapper in memory - Rust

    Struct memory::Mapper

    source ·
    pub struct Mapper { /* private fields */ }

    Implementations§

    source§

    impl Mapper

    source

    pub fn dump_pte(&self, virtual_address: VirtualAddress)

    Dumps all page table entries at all four page table levels for the given VirtualAddress, +Mapper in memory - Rust

    Struct memory::Mapper

    source ·
    pub struct Mapper { /* private fields */ }

    Implementations§

    source§

    impl Mapper

    source

    pub fn dump_pte(&self, virtual_address: VirtualAddress)

    Dumps all page table entries at all four page table levels for the given VirtualAddress, and also shows their PteFlags.

    The page table details are written to the log as an info message.

    -
    source

    pub fn translate( +

    source

    pub fn translate( &self, virtual_address: VirtualAddress ) -> Option<PhysicalAddress>

    Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

    -
    source

    pub fn translate_page(&self, page: Page) -> Option<Frame>

    Translates a virtual memory Page to a physical memory Frame by walking the page tables.

    -
    source

    pub fn map_allocated_pages_to<F: Into<PteFlagsArch>>( +

    source

    pub fn translate_page(&self, page: Page) -> Option<Frame>

    Translates a virtual memory Page to a physical memory Frame by walking the page tables.

    +

    Note that this only supports translating a 4K page into a 4K frame, +but it still correctly handles the cases where huge pages are used in the page tables.

    +
    source

    pub fn map_allocated_pages_to<P, FL>( &mut self, pages: AllocatedPages, - frames: AllocatedFrames, - flags: F -) -> Result<MappedPages, &'static str>

    Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

    + frames: AllocatedFrames<P>, + flags: FL +) -> Result<MappedPages, &'static str>where + P: PageSize, + FL: Into<PteFlagsArch>,

    Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

    Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

    -
    source

    pub fn map_allocated_pages<F: Into<PteFlagsArch>>( +

    source

    pub fn map_allocated_pages<FL: Into<PteFlagsArch>>( &mut self, pages: AllocatedPages, - flags: F -) -> Result<MappedPages, &'static str>

    Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

    + flags: FL +) -> Result<MappedPages, &'static str>

    Maps the given 4K-sized AllocatedPages to randomly chosen (allocated) physical frames.

    Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

    +
    Note on huge pages
    +

    This function only supports 4K-sized pages, not huge pages. +To use huge pages, you must provide the huge frames and call Self::map_allocated_pages_to().

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere diff --git a/doc/memory/struct.MemoryManagementInfo.html b/doc/memory/struct.MemoryManagementInfo.html index e538fd41ac..6c2005e3db 100644 --- a/doc/memory/struct.MemoryManagementInfo.html +++ b/doc/memory/struct.MemoryManagementInfo.html @@ -1,4 +1,4 @@ -MemoryManagementInfo in memory - Rust
    pub struct MemoryManagementInfo {
    +MemoryManagementInfo in memory - Rust
    pub struct MemoryManagementInfo {
         pub page_table: PageTable,
         pub extra_mapped_pages: Vec<MappedPages>,
     }
    Expand description

    This holds all the information for a Task’s memory mappings and address space @@ -7,7 +7,7 @@

    §extra_mapped_pages: Vec<MappedPages>

    The list of additional memory mappings that have the same lifetime as this MMI and are thus owned by this MMI. This currently includes only the mappings for the heap and the early VGA buffer.

    -

    Trait Implementations§

    source§

    impl Debug for MemoryManagementInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for MemoryManagementInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.Mutable.html b/doc/memory/struct.Mutable.html index 37a56fdcf9..7c2ed6598b 100644 --- a/doc/memory/struct.Mutable.html +++ b/doc/memory/struct.Mutable.html @@ -1,7 +1,7 @@ -Mutable in memory - Rust

    Struct memory::Mutable

    source ·
    #[non_exhaustive]
    pub struct Mutable {}
    Expand description

    A marker type used to indicate that a BorrowedMappedPages +Mutable in memory - Rust

    Struct memory::Mutable

    source ·
    #[non_exhaustive]
    pub struct Mutable {}
    Expand description

    A marker type used to indicate that a BorrowedMappedPages or BorrowedSliceMappedPages is borrowed mutably.

    Implements the Mutability trait.

    -

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/struct.Page.html b/doc/memory/struct.Page.html index d854f7c444..4dd7531c90 100644 --- a/doc/memory/struct.Page.html +++ b/doc/memory/struct.Page.html @@ -1,25 +1,36 @@ -Page in memory - Rust

    Struct memory::Page

    pub struct Page<P = Page4K>where
    +Page in memory - Rust

    Struct memory::Page

    pub struct Page<P = Page4K>where
         P: PageSize,{ /* private fields */ }
    Expand description

    A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.

    Implementations§

    §

    impl Page<Page4K>

    pub const fn containing_address(addr: VirtualAddress) -> Page<Page4K>

    Returns the 4KiB Page containing the given VirtualAddress.

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Page<Page4K>

    Returns a new Page that is aligned up from this Page to the nearest multiple of alignment_4k_pages.

    +

    pub const fn from_4k_into_generic<P>(self) -> Page<P>where + P: PageSize,

    Converts a known 4K-sized Page into a +Page<P> with a generic PageSize parameter.

    §

    impl Page<Page2M>

    pub const fn containing_address_2mb(addr: VirtualAddress) -> Page<Page2M>

    Returns the 2MiB huge Page containing the given VirtualAddress.

    +

    pub const fn from_2m_into_generic<P>(self) -> Page<P>where + P: PageSize,

    Converts a known 2M-sized Page into a +Page<P> with a generic PageSize parameter.

    §

    impl Page<Page1G>

    pub const fn containing_address_1gb(addr: VirtualAddress) -> Page<Page1G>

    Returns the 1GiB huge Page containing the given VirtualAddress.

    +

    pub const fn from_1g_into_generic<P>(self) -> Page<P>where + P: PageSize,

    Converts a known 1G-sized Page into a +Page<P> with a generic PageSize parameter.

    §

    impl<P> Page<P>where - P: PageSize + 'static,

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Page.

    + P: PageSize,

    pub const MIN: Page<P> = _

    The minimum (smallest) valid value a Page can have.

    +

    pub const MAX: Page<P> = _

    The maximum (largest) valid value a Page can have.

    +

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Page.

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress at the start of this Page.

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Page.

    §

    impl<P> Page<P>where - P: PageSize + 'static,

    pub const fn p4_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

    + P: PageSize,

    pub const fn p4_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

    pub const fn p3_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

    pub const fn p2_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

    pub const fn p1_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

    Using this returned usize value as an index into the P1 entries list will give you the final PTE, from which you can extract the mapped Frame using PageTableEntry::pointed_frame().

    Trait Implementations§

    §

    impl<P> Add<usize> for Page<P>where - P: PageSize + 'static,

    §

    type Output = Page<P>

    The resulting type after applying the + operator.
    §

    fn add(self, rhs: usize) -> Page<P>

    Performs the + operation. Read more
    §

    impl<P> AddAssign<usize> for Page<P>where - P: PageSize + 'static,

    §

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    §

    impl<P> Clone for Page<P>where + P: PageSize,

    §

    type Output = Page<P>

    The resulting type after applying the + operator.
    §

    fn add(self, rhs: usize) -> Page<P>

    Performs the + operation. Read more
    §

    impl<P> AddAssign<usize> for Page<P>where + P: PageSize,

    §

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    §

    impl<P> Clone for Page<P>where P: Clone + PageSize,

    §

    fn clone(&self) -> Page<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> Debug for Page<P>where - P: PageSize + 'static,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl From<Page<Page1G>> for Page<Page4K>

    §

    fn from(p: Page<Page1G>) -> Page<Page4K>

    Converts to this type from the input type.
    §

    impl From<Page<Page2M>> for Page<Page4K>

    §

    fn from(p: Page<Page2M>) -> Page<Page4K>

    Converts to this type from the input type.
    §

    impl<P> Ord for Page<P>where + P: PageSize,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl From<Page<Page1G>> for Page<Page4K>

    §

    fn from(p: Page<Page1G>) -> Page<Page4K>

    Converts to this type from the input type.
    §

    impl From<Page<Page2M>> for Page<Page4K>

    §

    fn from(p: Page<Page2M>) -> Page<Page4K>

    Converts to this type from the input type.
    §

    impl<P> Ord for Page<P>where P: Ord + PageSize,

    §

    fn cmp(&self, other: &Page<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere @@ -30,15 +41,15 @@ P: PartialOrd<P> + PageSize,

    §

    fn partial_cmp(&self, other: &Page<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
    §

    impl<P> Step for Page<P>where - P: PageSize + 'static,

    §

    fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    §

    fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor + P: PageSize,
    §

    fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    §

    fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    §

    fn backward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    fn forward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    unsafe fn forward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    fn backward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    unsafe fn backward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    §

    impl<P> Sub<usize> for Page<P>where - P: PageSize + 'static,

    §

    type Output = Page<P>

    The resulting type after applying the - operator.
    §

    fn sub(self, rhs: usize) -> Page<P>

    Performs the - operation. Read more
    §

    impl<P> SubAssign<usize> for Page<P>where - P: PageSize + 'static,

    §

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    §

    impl TryFrom<Page<Page4K>> for Page<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Page<Page4K>) -> Result<Page<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<Page<Page4K>> for Page<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Page<Page4K>) -> Result<Page<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Copy for Page<P>where + P: PageSize,

    §

    type Output = Page<P>

    The resulting type after applying the - operator.
    §

    fn sub(self, rhs: usize) -> Page<P>

    Performs the - operation. Read more
    §

    impl<P> SubAssign<usize> for Page<P>where + P: PageSize,

    §

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    §

    impl TryFrom<Page<Page4K>> for Page<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Page<Page4K>) -> Result<Page<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<Page<Page4K>> for Page<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: Page<Page4K>) -> Result<Page<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Copy for Page<P>where P: Copy + PageSize,

    §

    impl<P> Eq for Page<P>where P: Eq + PageSize,

    §

    impl<P> StructuralEq for Page<P>where P: PageSize,

    §

    impl<P> StructuralPartialEq for Page<P>where diff --git a/doc/memory/struct.PageRange.html b/doc/memory/struct.PageRange.html index 7755ba6280..3991ddf625 100644 --- a/doc/memory/struct.PageRange.html +++ b/doc/memory/struct.PageRange.html @@ -1,13 +1,15 @@ -PageRange in memory - Rust

    Struct memory::PageRange

    pub struct PageRange<P = Page4K>(/* private fields */)
    +PageRange in memory - Rust

    Struct memory::PageRange

    pub struct PageRange<P = Page4K>(/* private fields */)
     where
         P: PageSize;
    Expand description

    A range of Pages that are contiguous in virtual memory.

    -

    Implementations§

    §

    impl PageRange<Page4K>

    pub const fn empty() -> PageRange<Page4K>

    Creates a PageRange that will always yield None when iterated.

    -

    pub const fn from_virt_addr( +

    Implementations§

    §

    impl PageRange<Page4K>

    pub const fn from_virt_addr( starting_addr: VirtualAddress, size_in_bytes: usize ) -> PageRange<Page4K>

    A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

    §

    impl<P> PageRange<P>where - P: PageSize + 'static,

    pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

    Creates a new range of Pages that spans from start to end, both inclusive bounds.

    + P: PageSize,

    pub const fn empty() -> PageRange<P>

    Creates an empty PageRange that will always yield None when iterated.

    +

    pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

    Creates a new range of Pages that spans from start to end, both inclusive bounds.

    +

    pub const fn start(&self) -> &Page<P>

    Returns the starting Page in this PageRange.

    +

    pub const fn end(&self) -> &Page<P>

    Returns the ending Page in this PageRange.

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress of the starting Page in this PageRange.

    pub const fn size_in_pages(&self) -> usize

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

    @@ -23,11 +25,11 @@
    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: Page<P>) -> PageRange<P>

    Returns a new separate PageRange that is extended to include the given Page.

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

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

    -
    §

    impl<P> PageRange<P>where - P: PageSize + Copy + 'static,

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

    Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

    +

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

    Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

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

    -

    Methods from Deref<Target = RangeInclusive<Page<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).

    +

    pub fn into_4k_pages(self) -> PageRange<Page4K>

    Converts this range of Pages into an identical 4K-sized range.

    +

    Methods from Deref<Target = RangeInclusive<Page<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 @@ -35,11 +37,11 @@
    Examples
    U: PartialOrd<Idx> + ?Sized,

    Returns true if item is contained in the range.

    Trait Implementations§

    §

    impl<P> Clone for PageRange<P>where P: Clone + PageSize,

    §

    fn clone(&self) -> PageRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl<P> Debug for PageRange<P>where - P: PageSize + 'static,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<P> Deref for PageRange<P>where - P: PageSize + 'static,

    §

    type Target = RangeInclusive<Page<P>>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &RangeInclusive<Page<P>>

    Dereferences the value.
    §

    impl DerefMut for PageRange<Page4K>

    §

    fn deref_mut(&mut self) -> &mut RangeInclusive<Page<Page4K>>

    Mutably dereferences the value.
    §

    impl<P> From<CopyablePageRange<P>> for PageRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(cr: CopyablePageRange<P>) -> PageRange<P>

    Converts to this type from the input type.
    §

    impl<P> From<PageRange<P>> for CopyablePageRange<P>where - P: PageSize + Copy + 'static,

    §

    fn from(r: PageRange<P>) -> CopyablePageRange<P>

    Converts to this type from the input type.
    §

    impl From<PageRange<Page1G>> for PageRange<Page4K>

    §

    fn from(r: PageRange<Page1G>) -> PageRange<Page4K>

    Converts to this type from the input type.
    §

    impl From<PageRange<Page2M>> for PageRange<Page4K>

    §

    fn from(r: PageRange<Page2M>) -> PageRange<Page4K>

    Converts to this type from the input type.
    §

    impl<P> IntoIterator for PageRange<P>where - P: PageSize + 'static,

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <PageRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> PartialEq<PageRange<P>> for PageRange<P>where + P: PageSize,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl<P> Default for PageRange<P>where + P: PageSize,

    §

    fn default() -> PageRange<P>

    Returns the “default value” for a type. Read more
    §

    impl<P> Deref for PageRange<P>where + P: PageSize,

    §

    type Target = RangeInclusive<Page<P>>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &RangeInclusive<Page<P>>

    Dereferences the value.
    §

    impl DerefMut for PageRange<Page4K>

    §

    fn deref_mut(&mut self) -> &mut RangeInclusive<Page<Page4K>>

    Mutably dereferences the value.
    §

    impl From<PageRange<Page1G>> for PageRange<Page4K>

    §

    fn from(r: PageRange<Page1G>) -> PageRange<Page4K>

    Converts to this type from the input type.
    §

    impl From<PageRange<Page2M>> for PageRange<Page4K>

    §

    fn from(r: PageRange<Page2M>) -> PageRange<Page4K>

    Converts to this type from the input type.
    §

    impl<P> IntoIterator for &PageRange<P>where + P: PageSize,

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <&PageRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> IntoIterator for PageRange<P>where + P: PageSize,

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    §

    fn into_iter(self) -> <PageRange<P> as IntoIterator>::IntoIter

    Creates an iterator from a value. Read more
    §

    impl<P> PartialEq<PageRange<P>> for PageRange<P>where P: PartialEq<P> + PageSize,

    §

    fn eq(&self, other: &PageRange<P>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    §

    impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: PageRange<Page4K>) -> Result<PageRange<Page1G>, &'static str>

    Performs the conversion.
    §

    impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    §

    fn try_from(p: PageRange<Page4K>) -> Result<PageRange<Page2M>, &'static str>

    Performs the conversion.
    §

    impl<P> Eq for PageRange<P>where @@ -53,7 +55,7 @@
    Examples
    P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for Twhere U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/doc/memory/struct.PageTable.html b/doc/memory/struct.PageTable.html index 485a0a4815..96c488b5db 100644 --- a/doc/memory/struct.PageTable.html +++ b/doc/memory/struct.PageTable.html @@ -1,6 +1,6 @@ -PageTable in memory - Rust

    Struct memory::PageTable

    source ·
    pub struct PageTable { /* private fields */ }
    Expand description

    A top-level root (P4) page table.

    +PageTable in memory - Rust

    Struct memory::PageTable

    source ·
    pub struct PageTable { /* private fields */ }
    Expand description

    A top-level root (P4) page table.

    Auto-derefs into a Mapper for easy invocation of memory mapping functions.

    -

    Implementations§

    source§

    impl PageTable

    source

    pub fn new_table( +

    Implementations§

    source§

    impl PageTable

    source

    pub fn new_table( current_page_table: &mut PageTable, new_p4_frame: AllocatedFrames, page: Option<AllocatedPages> @@ -12,7 +12,7 @@ Note that this new page table has no current mappings beyond the recursive P4 mapping, so you will need to create or copy over any relevant mappings before using (switching) to this new page table in order to ensure the system keeps running.

    -

    source

    pub fn with<F, R>( +

    source

    pub fn with<F, R>( &mut self, other_table: &mut PageTable, f: F @@ -24,31 +24,38 @@ mapper.

    Note

    This does not perform any task switching or changing of the current page table register (e.g., cr3).

    -
    source

    pub fn switch(&mut self, new_table: &PageTable)

    Switches from the currently-active page table (this PageTable, i.e., self) to the given new_table. +

    source

    pub fn switch(&mut self, new_table: &PageTable)

    Switches from the currently-active page table (this PageTable, i.e., self) to the given new_table. After this function, the given new_table will be the currently-active PageTable.

    -
    source

    pub fn physical_address(&self) -> PhysicalAddress

    Returns the physical address of this page table’s top-level p4 frame

    -

    Methods from Deref<Target = Mapper>§

    source

    pub fn dump_pte(&self, virtual_address: VirtualAddress)

    Dumps all page table entries at all four page table levels for the given VirtualAddress, +

    source

    pub fn physical_address(&self) -> PhysicalAddress

    Returns the physical address of this page table’s top-level p4 frame

    +

    Methods from Deref<Target = Mapper>§

    source

    pub fn dump_pte(&self, virtual_address: VirtualAddress)

    Dumps all page table entries at all four page table levels for the given VirtualAddress, and also shows their PteFlags.

    The page table details are written to the log as an info message.

    -
    source

    pub fn translate( +

    source

    pub fn translate( &self, virtual_address: VirtualAddress ) -> Option<PhysicalAddress>

    Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

    -
    source

    pub fn translate_page(&self, page: Page) -> Option<Frame>

    Translates a virtual memory Page to a physical memory Frame by walking the page tables.

    -
    source

    pub fn map_allocated_pages_to<F: Into<PteFlagsArch>>( +

    source

    pub fn translate_page(&self, page: Page) -> Option<Frame>

    Translates a virtual memory Page to a physical memory Frame by walking the page tables.

    +

    Note that this only supports translating a 4K page into a 4K frame, +but it still correctly handles the cases where huge pages are used in the page tables.

    +
    source

    pub fn map_allocated_pages_to<P, FL>( &mut self, pages: AllocatedPages, - frames: AllocatedFrames, - flags: F -) -> Result<MappedPages, &'static str>

    Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

    + frames: AllocatedFrames<P>, + flags: FL +) -> Result<MappedPages, &'static str>where + P: PageSize, + FL: Into<PteFlagsArch>,

    Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

    Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

    -
    source

    pub fn map_allocated_pages<F: Into<PteFlagsArch>>( +

    source

    pub fn map_allocated_pages<FL: Into<PteFlagsArch>>( &mut self, pages: AllocatedPages, - flags: F -) -> Result<MappedPages, &'static str>

    Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

    + flags: FL +) -> Result<MappedPages, &'static str>

    Maps the given 4K-sized AllocatedPages to randomly chosen (allocated) physical frames.

    Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

    -

    Trait Implementations§

    source§

    impl Debug for PageTable

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PageTable

    §

    type Target = Mapper

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Mapper

    Dereferences the value.
    source§

    impl DerefMut for PageTable

    source§

    fn deref_mut(&mut self) -> &mut Mapper

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +
    Note on huge pages
    +

    This function only supports 4K-sized pages, not huge pages. +To use huge pages, you must provide the huge frames and call Self::map_allocated_pages_to().

    +

    Trait Implementations§

    source§

    impl Debug for PageTable

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for PageTable

    §

    type Target = Mapper

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Mapper

    Dereferences the value.
    source§

    impl DerefMut for PageTable

    source§

    fn deref_mut(&mut self) -> &mut Mapper

    Mutably dereferences the value.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/memory/trait.Mutability.html b/doc/memory/trait.Mutability.html index d7cb2ff157..df3acf4340 100644 --- a/doc/memory/trait.Mutability.html +++ b/doc/memory/trait.Mutability.html @@ -1,4 +1,4 @@ -Mutability in memory - Rust

    Trait memory::Mutability

    source ·
    pub trait Mutability: Sealed { }
    Expand description

    A trait for parameterizing a BorrowedMappedPages +Mutability in memory - Rust

    Trait memory::Mutability

    source ·
    pub trait Mutability: Sealed { }
    Expand description

    A trait for parameterizing a BorrowedMappedPages or BorrowedSliceMappedPages as mutably or immutably borrowed.

    Only Mutable and Immutable are able to implement this trait.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/doc/memory/trait.PageSize.html b/doc/memory/trait.PageSize.html index e76de5f922..f977341b8b 100644 --- a/doc/memory/trait.PageSize.html +++ b/doc/memory/trait.PageSize.html @@ -1,4 +1,4 @@ -PageSize in memory - Rust

    Trait memory::PageSize

    pub trait PageSize: Ord + PartialOrd<Self> + Clone + Copy + Sealed {
    +PageSize in memory - Rust

    Trait memory::PageSize

    pub trait PageSize: Ord + PartialOrd<Self> + Clone + Copy + Sealed + 'static {
         const SIZE: MemChunkSize;
         const NUM_4K_PAGES: usize;
         const SIZE_IN_BYTES: usize;
    diff --git a/doc/memory/type.AllocatedFrames.html b/doc/memory/type.AllocatedFrames.html
    index 74653d08d4..c97932e64e 100644
    --- a/doc/memory/type.AllocatedFrames.html
    +++ b/doc/memory/type.AllocatedFrames.html
    @@ -1,5 +1,9 @@
    -AllocatedFrames in memory - Rust

    Type Alias memory::AllocatedFrames

    pub type AllocatedFrames = Frames<frame_allocator::::AllocatedFrames::{constant#0}>;
    Expand description

    A type alias for Frames in the Allocated state.

    -

    Aliased Type§

    struct AllocatedFrames { /* private fields */ }

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

    pub fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    +AllocatedFrames in memory - Rust

    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.

    @@ -16,11 +20,12 @@
    Examples

    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).

    +

    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> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &FrameRange<Page4K>

    Dereferences the value.
    \ No newline at end of file +

    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.
    \ No newline at end of file diff --git a/doc/memory/type.MmiRef.html b/doc/memory/type.MmiRef.html index 81ffc832bd..c38f27261d 100644 --- a/doc/memory/type.MmiRef.html +++ b/doc/memory/type.MmiRef.html @@ -1,4 +1,4 @@ -MmiRef in memory - Rust

    Type Alias memory::MmiRef

    source ·
    pub type MmiRef = Arc<IrqSafeMutex<MemoryManagementInfo>>;
    Expand description

    A shareable reference to a MemoryManagementInfo struct wrapper in a lock.

    +MmiRef in memory - Rust

    Type Alias memory::MmiRef

    source ·
    pub type MmiRef = Arc<IrqSafeMutex<MemoryManagementInfo>>;
    Expand description

    A shareable reference to a MemoryManagementInfo struct wrapper in a lock.

    Aliased Type§

    struct MmiRef { /* private fields */ }

    Trait Implementations§

    1.0.0 · source§

    impl<T, A> Deref for Arc<T, A>where A: Allocator, T: ?Sized,

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    \ No newline at end of file diff --git a/doc/memory/type.UnmappedFrames.html b/doc/memory/type.UnmappedFrames.html index 1af9a7f945..aa903350cf 100644 --- a/doc/memory/type.UnmappedFrames.html +++ b/doc/memory/type.UnmappedFrames.html @@ -1,5 +1,9 @@ -UnmappedFrames in memory - Rust

    Type Alias memory::UnmappedFrames

    pub type UnmappedFrames = Frames<frame_allocator::::UnmappedFrames::{constant#0}>;
    Expand description

    A type alias for Frames in the Unmapped state.

    -

    Aliased Type§

    struct UnmappedFrames { /* private fields */ }

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

    pub fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    +UnmappedFrames in memory - Rust

    Type Alias memory::UnmappedFrames

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

    A type alias for Frames in the Unmapped state.

    +

    Aliased Type§

    struct UnmappedFrames<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.

    @@ -16,11 +20,12 @@
    Examples

    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).

    +

    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> Deref for Frames<S>

    §

    type Target = FrameRange<Page4K>

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &FrameRange<Page4K>

    Dereferences the value.
    \ No newline at end of file +

    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.
    \ No newline at end of file diff --git a/doc/memory_structs/all.html b/doc/memory_structs/all.html index 6f3a511b33..be79471d09 100644 --- a/doc/memory_structs/all.html +++ b/doc/memory_structs/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/doc/memory_structs/index.html b/doc/memory_structs/index.html index 33d9f7116e..94b269941e 100644 --- a/doc/memory_structs/index.html +++ b/doc/memory_structs/index.html @@ -1,9 +1,9 @@ memory_structs - Rust

    Crate memory_structs

    source ·
    Expand description

    This crate contains basic types used for memory management.

    +
  • All Items
  • Crate memory_structs

    source ·
    Expand description

    This crate contains basic types used for memory management.

    The types of interest are divided into three categories:

    1. addresses: VirtualAddress and PhysicalAddress.
    2. “chunk” types: Page and Frame.
    3. ranges of chunks: PageRange and FrameRange.
    -

    Structs

    • A FrameRange that implements Copy.
    • A PageRange that implements Copy.
    • A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.
    • A range of Frames that are contiguous in physical memory.
    • A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.
    • Marker struct used to indicate a page size of 1GiB.
    • Marker struct used to indicate a page size of 2MiB.
    • Marker struct used to indicate the default page size of 4KiB.
    • A range of Pages that are contiguous in virtual memory.
    • A physical memory address, which is a usize under the hood.
    • A virtual memory address, which is a usize under the hood.

    Enums

    • Enum used to indicate the size of a page or frame.
    • The possible states that a range of exclusively-owned pages or frames can be in.

    Traits

    • Trait that represents the size of a page or frame, i.e., for normal or huge pages.
    \ No newline at end of file +

    Structs

    • A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.
    • A range of Frames that are contiguous in physical memory.
    • A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.
    • Marker struct used to indicate a page size of 1GiB.
    • Marker struct used to indicate a page size of 2MiB.
    • Marker struct used to indicate the default page size of 4KiB.
    • A range of Pages that are contiguous in virtual memory.
    • A physical memory address, which is a usize under the hood.
    • A virtual memory address, which is a usize under the hood.

    Enums

    • Enum used to indicate the size of a page or frame.
    • The possible states that a range of exclusively-owned pages or frames can be in.

    Traits

    • Trait that represents the size of a page or frame, i.e., for normal or huge pages.
    \ No newline at end of file diff --git a/doc/memory_structs/sidebar-items.js b/doc/memory_structs/sidebar-items.js index 5e2fc8dc00..5ce3fd9f0e 100644 --- a/doc/memory_structs/sidebar-items.js +++ b/doc/memory_structs/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["MemChunkSize","MemoryState"],"struct":["CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Page","Page1G","Page2M","Page4K","PageRange","PhysicalAddress","VirtualAddress"],"trait":["PageSize"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["MemChunkSize","MemoryState"],"struct":["Frame","FrameRange","Page","Page1G","Page2M","Page4K","PageRange","PhysicalAddress","VirtualAddress"],"trait":["PageSize"]}; \ No newline at end of file diff --git a/doc/memory_structs/struct.CopyableFrameRange.html b/doc/memory_structs/struct.CopyableFrameRange.html deleted file mode 100644 index 4cf5976cfa..0000000000 --- a/doc/memory_structs/struct.CopyableFrameRange.html +++ /dev/null @@ -1,17 +0,0 @@ -CopyableFrameRange in memory_structs - Rust
    pub struct CopyableFrameRange<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A FrameRange that implements Copy.

    -

    Trait Implementations§

    source§

    impl<P: Clone + PageSize> Clone for CopyableFrameRange<P>

    source§

    fn clone(&self) -> CopyableFrameRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>

    source§

    fn from(cr: CopyableFrameRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>

    source§

    fn from(r: FrameRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Copy + PageSize> Copy for CopyableFrameRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for CopyableFrameRange<P>where - P: RefUnwindSafe,

    §

    impl<P> Send for CopyableFrameRange<P>where - P: Send,

    §

    impl<P> Sync for CopyableFrameRange<P>where - P: Sync,

    §

    impl<P> Unpin for CopyableFrameRange<P>where - P: Unpin,

    §

    impl<P> UnwindSafe for CopyableFrameRange<P>where - P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/doc/memory_structs/struct.CopyablePageRange.html b/doc/memory_structs/struct.CopyablePageRange.html deleted file mode 100644 index 2bbce2ddb2..0000000000 --- a/doc/memory_structs/struct.CopyablePageRange.html +++ /dev/null @@ -1,17 +0,0 @@ -CopyablePageRange in memory_structs - Rust
    pub struct CopyablePageRange<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A PageRange that implements Copy.

    -

    Trait Implementations§

    source§

    impl<P: Clone + PageSize> Clone for CopyablePageRange<P>

    source§

    fn clone(&self) -> CopyablePageRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>

    source§

    fn from(cr: CopyablePageRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>

    source§

    fn from(r: PageRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Copy + PageSize> Copy for CopyablePageRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for CopyablePageRange<P>where - P: RefUnwindSafe,

    §

    impl<P> Send for CopyablePageRange<P>where - P: Send,

    §

    impl<P> Sync for CopyablePageRange<P>where - P: Sync,

    §

    impl<P> Unpin for CopyablePageRange<P>where - P: Unpin,

    §

    impl<P> UnwindSafe for CopyablePageRange<P>where - P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for Twhere - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/doc/memory_structs/struct.Frame.html b/doc/memory_structs/struct.Frame.html index 76f49cb666..81c16f55c9 100644 --- a/doc/memory_structs/struct.Frame.html +++ b/doc/memory_structs/struct.Frame.html @@ -1,25 +1,33 @@ -Frame in memory_structs - Rust

    Struct memory_structs::Frame

    source ·
    pub struct Frame<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.

    -

    Implementations§

    source§

    impl Frame<Page4K>

    source

    pub const fn containing_address(addr: PhysicalAddress) -> Frame

    Returns the 4KiB Frame containing the given PhysicalAddress.

    -
    source

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Frame

    Returns a new Frame that is aligned up from this Frame to the nearest multiple of alignment_4k_pages.

    -
    source§

    impl Frame<Page2M>

    source

    pub const fn containing_address_2mb(addr: PhysicalAddress) -> Frame<Page2M>

    Returns the 2MiB huge Frame containing the given PhysicalAddress.

    -
    source§

    impl Frame<Page1G>

    source

    pub const fn containing_address_1gb(addr: PhysicalAddress) -> Frame<Page1G>

    Returns the 1GiB huge Frame containing the given PhysicalAddress.

    -
    source§

    impl<P: PageSize + 'static> Frame<P>

    source

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    -
    source

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress at the start of this Frame.

    -
    source

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Frame.

    -

    Trait Implementations§

    source§

    impl<P: PageSize + 'static> Add<usize> for Frame<P>

    §

    type Output = Frame<P>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: usize) -> Frame<P>

    Performs the + operation. Read more
    source§

    impl<P: PageSize + 'static> AddAssign<usize> for Frame<P>

    source§

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    source§

    impl<P: Clone + PageSize> Clone for Frame<P>

    source§

    fn clone(&self) -> Frame<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + 'static> Debug for Frame<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Frame<Page1G>> for Frame<Page4K>

    source§

    fn from(p: Frame<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<Frame<Page2M>> for Frame<Page4K>

    source§

    fn from(p: Frame<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Ord + PageSize> Ord for Frame<P>

    source§

    fn cmp(&self, other: &Frame<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +Frame in memory_structs - Rust

    Struct memory_structs::Frame

    source ·
    pub struct Frame<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.

    +

    Implementations§

    source§

    impl Frame<Page4K>

    source

    pub const fn containing_address(addr: PhysicalAddress) -> Frame

    Returns the 4KiB Frame containing the given PhysicalAddress.

    +
    source

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Frame

    Returns a new Frame that is aligned up from this Frame to the nearest multiple of alignment_4k_pages.

    +
    source

    pub const fn from_4k_into_generic<P: PageSize>(self) -> Frame<P>

    Converts a known 4K-sized Frame into a +Frame<P> with a generic PageSize parameter.

    +
    source§

    impl Frame<Page2M>

    source

    pub const fn containing_address_2mb(addr: PhysicalAddress) -> Frame<Page2M>

    Returns the 2MiB huge Frame containing the given PhysicalAddress.

    +
    source

    pub const fn from_2m_into_generic<P: PageSize>(self) -> Frame<P>

    Converts a known 2M-sized Frame into a +Frame<P> with a generic PageSize parameter.

    +
    source§

    impl Frame<Page1G>

    source

    pub const fn containing_address_1gb(addr: PhysicalAddress) -> Frame<Page1G>

    Returns the 1GiB huge Frame containing the given PhysicalAddress.

    +
    source

    pub const fn from_1g_into_generic<P: PageSize>(self) -> Frame<P>

    Converts a known 1G-sized Frame into a +Frame<P> with a generic PageSize parameter.

    +
    source§

    impl<P: PageSize> Frame<P>

    source

    pub const MIN: Frame<P> = _

    The minimum (smallest) valid value a Frame can have.

    +
    source

    pub const MAX: Frame<P> = _

    The maximum (largest) valid value a Frame can have.

    +
    source

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Frame.

    +
    source

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress at the start of this Frame.

    +
    source

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Frame.

    +

    Trait Implementations§

    source§

    impl<P: PageSize> Add<usize> for Frame<P>

    §

    type Output = Frame<P>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: usize) -> Frame<P>

    Performs the + operation. Read more
    source§

    impl<P: PageSize> AddAssign<usize> for Frame<P>

    source§

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    source§

    impl<P: Clone + PageSize> Clone for Frame<P>

    source§

    fn clone(&self) -> Frame<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize> Debug for Frame<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Frame<Page1G>> for Frame<Page4K>

    source§

    fn from(p: Frame<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<Frame<Page2M>> for Frame<Page4K>

    source§

    fn from(p: Frame<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Ord + PageSize> Ord for Frame<P>

    source§

    fn cmp(&self, other: &Frame<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>

    source§

    fn eq(&self, other: &Frame<P>) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>

    source§

    fn eq(&self, other: &Frame<P>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<P: PartialOrd + PageSize> PartialOrd<Frame<P>> for Frame<P>

    source§

    fn partial_cmp(&self, other: &Frame<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

    impl<P: PartialOrd + PageSize> PartialOrd<Frame<P>> for Frame<P>

    source§

    fn partial_cmp(&self, other: &Frame<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<P: PageSize + 'static> Step for Frame<P>

    source§

    fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    source§

    fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor -of self count times. Read more
    source§

    fn backward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor +operator. Read more
    source§

    impl<P: PageSize> Step for Frame<P>

    source§

    fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    source§

    fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor +of self count times. Read more
    source§

    fn backward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    fn forward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    unsafe fn forward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    fn backward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    unsafe fn backward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor -of self count times. Read more
    source§

    impl<P: PageSize + 'static> Sub<usize> for Frame<P>

    §

    type Output = Frame<P>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: usize) -> Frame<P>

    Performs the - operation. Read more
    source§

    impl<P: PageSize + 'static> SubAssign<usize> for Frame<P>

    source§

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    source§

    impl TryFrom<Frame<Page4K>> for Frame<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Frame) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<Frame<Page4K>> for Frame<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Frame) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Copy + PageSize> Copy for Frame<P>

    source§

    impl<P: Eq + PageSize> Eq for Frame<P>

    source§

    impl<P: PageSize> StructuralEq for Frame<P>

    source§

    impl<P: PageSize> StructuralPartialEq for Frame<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for Frame<P>where +of self count times. Read more

    source§

    impl<P: PageSize> Sub<usize> for Frame<P>

    §

    type Output = Frame<P>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: usize) -> Frame<P>

    Performs the - operation. Read more
    source§

    impl<P: PageSize> SubAssign<usize> for Frame<P>

    source§

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    source§

    impl TryFrom<Frame<Page4K>> for Frame<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Frame) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<Frame<Page4K>> for Frame<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Frame) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Copy + PageSize> Copy for Frame<P>

    source§

    impl<P: Eq + PageSize> Eq for Frame<P>

    source§

    impl<P: PageSize> StructuralEq for Frame<P>

    source§

    impl<P: PageSize> StructuralPartialEq for Frame<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for Frame<P>where P: RefUnwindSafe,

    §

    impl<P> Send for Frame<P>where P: Send,

    §

    impl<P> Sync for Frame<P>where P: Sync,

    §

    impl<P> Unpin for Frame<P>where diff --git a/doc/memory_structs/struct.FrameRange.html b/doc/memory_structs/struct.FrameRange.html index 97d439af68..7e3cebf323 100644 --- a/doc/memory_structs/struct.FrameRange.html +++ b/doc/memory_structs/struct.FrameRange.html @@ -1,37 +1,40 @@ -FrameRange in memory_structs - Rust
    pub struct FrameRange<P: PageSize = Page4K>(/* private fields */);
    Expand description

    A range of Frames that are contiguous in physical memory.

    -

    Implementations§

    source§

    impl FrameRange<Page4K>

    source

    pub const fn empty() -> Self

    Creates a FrameRange that will always yield None when iterated.

    -
    source

    pub const fn from_phys_addr( +FrameRange in memory_structs - Rust
    pub struct FrameRange<P: PageSize = Page4K>(/* private fields */);
    Expand description

    A range of Frames that are contiguous in physical memory.

    +

    Implementations§

    source§

    impl FrameRange<Page4K>

    source

    pub const fn from_phys_addr( starting_addr: PhysicalAddress, size_in_bytes: usize ) -> FrameRange

    A convenience method for creating a new FrameRange that spans all Frames from the given PhysicalAddress to an end bound based on the given size.

    -
    source§

    impl<P: PageSize + 'static> FrameRange<P>

    source

    pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

    Creates a new range of Frames that spans from start to end, both inclusive bounds.

    -
    source

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    -
    source

    pub const fn size_in_frames(&self) -> usize

    Returns the number of Frames covered by this iterator.

    +
    source§

    impl<P: PageSize> FrameRange<P>

    source

    pub const fn empty() -> Self

    Creates an empty FrameRange that will always yield None when iterated.

    +
    source

    pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

    Creates a new range of Frames that spans from start to end, both inclusive bounds.

    +
    source

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

    Returns the starting Frame in this FrameRange.

    +
    source

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

    Returns the ending Frame in this FrameRange.

    +
    source

    pub const fn start_address(&self) -> PhysicalAddress

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    +
    source

    pub const 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.

    -
    source

    pub const fn size_in_bytes(&self) -> usize

    Returns the size of this range in bytes.

    -
    source

    pub const fn contains_address(&self, addr: PhysicalAddress) -> bool

    Returns true if this FrameRange contains the given PhysicalAddress.

    -
    source

    pub const 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().

    +
    source

    pub const fn size_in_bytes(&self) -> usize

    Returns the size of this range in bytes.

    +
    source

    pub const fn contains_address(&self, addr: PhysicalAddress) -> bool

    Returns true if this FrameRange contains the given PhysicalAddress.

    +
    source

    pub const 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).

    -
    source

    pub const 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.

    +
    source

    pub const 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.

    -
    source

    pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

    -
    source

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

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

    -
    source§

    impl<P: PageSize + Copy + 'static> FrameRange<P>

    source

    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.

    +
    source

    pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

    +
    source

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

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

    +
    source

    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 into_4k_frames(self) -> FrameRange<Page4K>

    Converts this range of Frames into an identical 4K-sized range.

    +

    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§

    source§

    impl<P: Clone + PageSize> Clone for FrameRange<P>

    source§

    fn clone(&self) -> FrameRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + 'static> Debug for FrameRange<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<P: PageSize + 'static> Deref for FrameRange<P>

    §

    type Target = RangeInclusive<Frame<P>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &RangeInclusive<Frame<P>>

    Dereferences the value.
    source§

    impl DerefMut for FrameRange

    source§

    fn deref_mut(&mut self) -> &mut RangeInclusive<Frame>

    Mutably dereferences the value.
    source§

    impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>

    source§

    fn from(cr: CopyableFrameRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>

    source§

    fn from(r: FrameRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl From<FrameRange<Page1G>> for FrameRange<Page4K>

    source§

    fn from(r: FrameRange<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<FrameRange<Page2M>> for FrameRange<Page4K>

    source§

    fn from(r: FrameRange<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + 'static> IntoIterator for FrameRange<P>

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>

    source§

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

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl<P: Clone + PageSize> Clone for FrameRange<P>

    source§

    fn clone(&self) -> FrameRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize> Debug for FrameRange<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<P: PageSize> Default for FrameRange<P>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<P: PageSize> Deref for FrameRange<P>

    §

    type Target = RangeInclusive<Frame<P>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &RangeInclusive<Frame<P>>

    Dereferences the value.
    source§

    impl DerefMut for FrameRange

    source§

    fn deref_mut(&mut self) -> &mut RangeInclusive<Frame>

    Mutably dereferences the value.
    source§

    impl From<FrameRange<Page1G>> for FrameRange<Page4K>

    source§

    fn from(r: FrameRange<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<FrameRange<Page2M>> for FrameRange<Page4K>

    source§

    fn from(r: FrameRange<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize> IntoIterator for &FrameRange<P>

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PageSize> IntoIterator for FrameRange<P>

    §

    type Item = Frame<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Frame<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>

    source§

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

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: FrameRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: FrameRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Eq + PageSize> Eq for FrameRange<P>

    source§

    impl<P: PageSize> StructuralEq for FrameRange<P>

    source§

    impl<P: PageSize> StructuralPartialEq for FrameRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for FrameRange<P>where +sufficient, and should not be overridden without very good reason.

    source§

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: FrameRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: FrameRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Eq + PageSize> Eq for FrameRange<P>

    source§

    impl<P: PageSize> StructuralEq for FrameRange<P>

    source§

    impl<P: PageSize> StructuralPartialEq for FrameRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for FrameRange<P>where P: RefUnwindSafe,

    §

    impl<P> Send for FrameRange<P>where P: Send,

    §

    impl<P> Sync for FrameRange<P>where P: Sync,

    §

    impl<P> Unpin for FrameRange<P>where @@ -39,7 +42,7 @@
    Examples
    P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for Twhere U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/doc/memory_structs/struct.Page.html b/doc/memory_structs/struct.Page.html index 68f6b82d7c..f24b8d02be 100644 --- a/doc/memory_structs/struct.Page.html +++ b/doc/memory_structs/struct.Page.html @@ -1,31 +1,39 @@ -Page in memory_structs - Rust

    Struct memory_structs::Page

    source ·
    pub struct Page<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.

    -

    Implementations§

    source§

    impl Page<Page4K>

    source

    pub const fn containing_address(addr: VirtualAddress) -> Page

    Returns the 4KiB Page containing the given VirtualAddress.

    -
    source

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Page

    Returns a new Page that is aligned up from this Page to the nearest multiple of alignment_4k_pages.

    -
    source§

    impl Page<Page2M>

    source

    pub const fn containing_address_2mb(addr: VirtualAddress) -> Page<Page2M>

    Returns the 2MiB huge Page containing the given VirtualAddress.

    -
    source§

    impl Page<Page1G>

    source

    pub const fn containing_address_1gb(addr: VirtualAddress) -> Page<Page1G>

    Returns the 1GiB huge Page containing the given VirtualAddress.

    -
    source§

    impl<P: PageSize + 'static> Page<P>

    source

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Page.

    -
    source

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress at the start of this Page.

    -
    source

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Page.

    -
    source§

    impl<P: PageSize + 'static> Page<P>

    source

    pub const fn p4_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

    -
    source

    pub const fn p3_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

    -
    source

    pub const fn p2_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

    -
    source

    pub const fn p1_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

    +Page in memory_structs - Rust

    Struct memory_structs::Page

    source ·
    pub struct Page<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.

    +

    Implementations§

    source§

    impl Page<Page4K>

    source

    pub const fn containing_address(addr: VirtualAddress) -> Page

    Returns the 4KiB Page containing the given VirtualAddress.

    +
    source

    pub const fn align_up(&self, alignment_4k_pages: usize) -> Page

    Returns a new Page that is aligned up from this Page to the nearest multiple of alignment_4k_pages.

    +
    source

    pub const fn from_4k_into_generic<P: PageSize>(self) -> Page<P>

    Converts a known 4K-sized Page into a +Page<P> with a generic PageSize parameter.

    +
    source§

    impl Page<Page2M>

    source

    pub const fn containing_address_2mb(addr: VirtualAddress) -> Page<Page2M>

    Returns the 2MiB huge Page containing the given VirtualAddress.

    +
    source

    pub const fn from_2m_into_generic<P: PageSize>(self) -> Page<P>

    Converts a known 2M-sized Page into a +Page<P> with a generic PageSize parameter.

    +
    source§

    impl Page<Page1G>

    source

    pub const fn containing_address_1gb(addr: VirtualAddress) -> Page<Page1G>

    Returns the 1GiB huge Page containing the given VirtualAddress.

    +
    source

    pub const fn from_1g_into_generic<P: PageSize>(self) -> Page<P>

    Converts a known 1G-sized Page into a +Page<P> with a generic PageSize parameter.

    +
    source§

    impl<P: PageSize> Page<P>

    source

    pub const MIN: Page<P> = _

    The minimum (smallest) valid value a Page can have.

    +
    source

    pub const MAX: Page<P> = _

    The maximum (largest) valid value a Page can have.

    +
    source

    pub const fn number(&self) -> usize

    Returns the 4K-sized number of this Page.

    +
    source

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress at the start of this Page.

    +
    source

    pub const fn page_size(&self) -> MemChunkSize

    Returns the size of this Page.

    +
    source§

    impl<P: PageSize> Page<P>

    source

    pub const fn p4_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

    +
    source

    pub const fn p3_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

    +
    source

    pub const fn p2_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

    +
    source

    pub const fn p1_index(&self) -> usize

    Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

    Using this returned usize value as an index into the P1 entries list will give you the final PTE, from which you can extract the mapped Frame using PageTableEntry::pointed_frame().

    -

    Trait Implementations§

    source§

    impl<P: PageSize + 'static> Add<usize> for Page<P>

    §

    type Output = Page<P>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: usize) -> Page<P>

    Performs the + operation. Read more
    source§

    impl<P: PageSize + 'static> AddAssign<usize> for Page<P>

    source§

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    source§

    impl<P: Clone + PageSize> Clone for Page<P>

    source§

    fn clone(&self) -> Page<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + 'static> Debug for Page<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Page<Page1G>> for Page<Page4K>

    source§

    fn from(p: Page<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<Page<Page2M>> for Page<Page4K>

    source§

    fn from(p: Page<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Ord + PageSize> Ord for Page<P>

    source§

    fn cmp(&self, other: &Page<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

    impl<P: PageSize> Add<usize> for Page<P>

    §

    type Output = Page<P>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: usize) -> Page<P>

    Performs the + operation. Read more
    source§

    impl<P: PageSize> AddAssign<usize> for Page<P>

    source§

    fn add_assign(&mut self, rhs: usize)

    Performs the += operation. Read more
    source§

    impl<P: Clone + PageSize> Clone for Page<P>

    source§

    fn clone(&self) -> Page<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize> Debug for Page<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Page<Page1G>> for Page<Page4K>

    source§

    fn from(p: Page<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<Page<Page2M>> for Page<Page4K>

    source§

    fn from(p: Page<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: Ord + PageSize> Ord for Page<P>

    source§

    fn cmp(&self, other: &Page<P>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>

    source§

    fn eq(&self, other: &Page<P>) -> bool

    This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,
    Restrict a value to a certain interval. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>

    source§

    fn eq(&self, other: &Page<P>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<P: PartialOrd + PageSize> PartialOrd<Page<P>> for Page<P>

    source§

    fn partial_cmp(&self, other: &Page<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +sufficient, and should not be overridden without very good reason.
    source§

    impl<P: PartialOrd + PageSize> PartialOrd<Page<P>> for Page<P>

    source§

    fn partial_cmp(&self, other: &Page<P>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl<P: PageSize + 'static> Step for Page<P>

    source§

    fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    source§

    fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor -of self count times. Read more
    source§

    fn backward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor +operator. Read more
    source§

    impl<P: PageSize> Step for Page<P>

    source§

    fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the number of successor steps required to get from start to end. Read more
    source§

    fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor +of self count times. Read more
    source§

    fn backward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    fn forward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    unsafe fn forward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the successor of self count times. Read more
    source§

    fn backward(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor of self count times. Read more
    source§

    unsafe fn backward_unchecked(start: Self, count: usize) -> Self

    🔬This is a nightly-only experimental API. (step_trait)
    Returns the value that would be obtained by taking the predecessor -of self count times. Read more
    source§

    impl<P: PageSize + 'static> Sub<usize> for Page<P>

    §

    type Output = Page<P>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: usize) -> Page<P>

    Performs the - operation. Read more
    source§

    impl<P: PageSize + 'static> SubAssign<usize> for Page<P>

    source§

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    source§

    impl TryFrom<Page<Page4K>> for Page<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Page) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<Page<Page4K>> for Page<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Page) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Copy + PageSize> Copy for Page<P>

    source§

    impl<P: Eq + PageSize> Eq for Page<P>

    source§

    impl<P: PageSize> StructuralEq for Page<P>

    source§

    impl<P: PageSize> StructuralPartialEq for Page<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for Page<P>where +of self count times. Read more

    source§

    impl<P: PageSize> Sub<usize> for Page<P>

    §

    type Output = Page<P>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: usize) -> Page<P>

    Performs the - operation. Read more
    source§

    impl<P: PageSize> SubAssign<usize> for Page<P>

    source§

    fn sub_assign(&mut self, rhs: usize)

    Performs the -= operation. Read more
    source§

    impl TryFrom<Page<Page4K>> for Page<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Page) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<Page<Page4K>> for Page<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: Page) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Copy + PageSize> Copy for Page<P>

    source§

    impl<P: Eq + PageSize> Eq for Page<P>

    source§

    impl<P: PageSize> StructuralEq for Page<P>

    source§

    impl<P: PageSize> StructuralPartialEq for Page<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for Page<P>where P: RefUnwindSafe,

    §

    impl<P> Send for Page<P>where P: Send,

    §

    impl<P> Sync for Page<P>where P: Sync,

    §

    impl<P> Unpin for Page<P>where diff --git a/doc/memory_structs/struct.PageRange.html b/doc/memory_structs/struct.PageRange.html index 1be5f2dfb7..97e059b84b 100644 --- a/doc/memory_structs/struct.PageRange.html +++ b/doc/memory_structs/struct.PageRange.html @@ -1,37 +1,40 @@ -PageRange in memory_structs - Rust
    pub struct PageRange<P: PageSize = Page4K>(/* private fields */);
    Expand description

    A range of Pages that are contiguous in virtual memory.

    -

    Implementations§

    source§

    impl PageRange<Page4K>

    source

    pub const fn empty() -> Self

    Creates a PageRange that will always yield None when iterated.

    -
    source

    pub const fn from_virt_addr( +PageRange in memory_structs - Rust
    pub struct PageRange<P: PageSize = Page4K>(/* private fields */);
    Expand description

    A range of Pages that are contiguous in virtual memory.

    +

    Implementations§

    source§

    impl PageRange<Page4K>

    source

    pub const fn from_virt_addr( starting_addr: VirtualAddress, size_in_bytes: usize ) -> PageRange

    A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

    -
    source§

    impl<P: PageSize + 'static> PageRange<P>

    source

    pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

    Creates a new range of Pages that spans from start to end, both inclusive bounds.

    -
    source

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress of the starting Page in this PageRange.

    -
    source

    pub const fn size_in_pages(&self) -> usize

    Returns the number of Pages covered by this iterator.

    +
    source§

    impl<P: PageSize> PageRange<P>

    source

    pub const fn empty() -> Self

    Creates an empty PageRange that will always yield None when iterated.

    +
    source

    pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

    Creates a new range of Pages that spans from start to end, both inclusive bounds.

    +
    source

    pub const fn start(&self) -> &Page<P>

    Returns the starting Page in this PageRange.

    +
    source

    pub const fn end(&self) -> &Page<P>

    Returns the ending Page in this PageRange.

    +
    source

    pub const fn start_address(&self) -> VirtualAddress

    Returns the VirtualAddress of the starting Page in this PageRange.

    +
    source

    pub const fn size_in_pages(&self) -> usize

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

    -
    source

    pub const fn size_in_bytes(&self) -> usize

    Returns the size of this range in bytes.

    -
    source

    pub const fn contains_address(&self, addr: VirtualAddress) -> bool

    Returns true if this PageRange contains the given VirtualAddress.

    -
    source

    pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

    +
    source

    pub const fn size_in_bytes(&self) -> usize

    Returns the size of this range in bytes.

    +
    source

    pub const fn contains_address(&self, addr: VirtualAddress) -> bool

    Returns true if this PageRange contains the given VirtualAddress.

    +
    source

    pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

    If the given addr is not covered by this range of Pages, this returns None.

    Examples

    If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).

    -
    source

    pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

    Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., self.start_address() + offset.

    +
    source

    pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

    Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., self.start_address() + offset.

    If the given offset is not within this range of Pages, 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.

    -
    source

    pub fn to_extended(&self, to_include: Page<P>) -> PageRange<P>

    Returns a new separate PageRange that is extended to include the given Page.

    -
    source

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

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

    -
    source§

    impl<P: PageSize + Copy + 'static> PageRange<P>

    source

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

    Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

    +
    source

    pub fn to_extended(&self, to_include: Page<P>) -> PageRange<P>

    Returns a new separate PageRange that is extended to include the given Page.

    +
    source

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

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

    +
    source

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

    Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

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

    -

    Methods from Deref<Target = RangeInclusive<Page<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 into_4k_pages(self) -> PageRange<Page4K>

    Converts this range of Pages into an identical 4K-sized range.

    +

    Methods from Deref<Target = RangeInclusive<Page<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§

    source§

    impl<P: Clone + PageSize> Clone for PageRange<P>

    source§

    fn clone(&self) -> PageRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize + 'static> Debug for PageRange<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<P: PageSize + 'static> Deref for PageRange<P>

    §

    type Target = RangeInclusive<Page<P>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &RangeInclusive<Page<P>>

    Dereferences the value.
    source§

    impl DerefMut for PageRange

    source§

    fn deref_mut(&mut self) -> &mut RangeInclusive<Page>

    Mutably dereferences the value.
    source§

    impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>

    source§

    fn from(cr: CopyablePageRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>

    source§

    fn from(r: PageRange<P>) -> Self

    Converts to this type from the input type.
    source§

    impl From<PageRange<Page1G>> for PageRange<Page4K>

    source§

    fn from(r: PageRange<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<PageRange<Page2M>> for PageRange<Page4K>

    source§

    fn from(r: PageRange<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize + 'static> IntoIterator for PageRange<P>

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>

    source§

    fn eq(&self, other: &PageRange<P>) -> bool

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl<P: Clone + PageSize> Clone for PageRange<P>

    source§

    fn clone(&self) -> PageRange<P>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<P: PageSize> Debug for PageRange<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<P: PageSize> Default for PageRange<P>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<P: PageSize> Deref for PageRange<P>

    §

    type Target = RangeInclusive<Page<P>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &RangeInclusive<Page<P>>

    Dereferences the value.
    source§

    impl DerefMut for PageRange

    source§

    fn deref_mut(&mut self) -> &mut RangeInclusive<Page>

    Mutably dereferences the value.
    source§

    impl From<PageRange<Page1G>> for PageRange<Page4K>

    source§

    fn from(r: PageRange<Page1G>) -> Self

    Converts to this type from the input type.
    source§

    impl From<PageRange<Page2M>> for PageRange<Page4K>

    source§

    fn from(r: PageRange<Page2M>) -> Self

    Converts to this type from the input type.
    source§

    impl<P: PageSize> IntoIterator for &PageRange<P>

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PageSize> IntoIterator for PageRange<P>

    §

    type Item = Page<P>

    The type of the elements being iterated over.
    §

    type IntoIter = RangeInclusiveIterator<Page<P>>

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>

    source§

    fn eq(&self, other: &PageRange<P>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: PageRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: PageRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Eq + PageSize> Eq for PageRange<P>

    source§

    impl<P: PageSize> StructuralEq for PageRange<P>

    source§

    impl<P: PageSize> StructuralPartialEq for PageRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for PageRange<P>where +sufficient, and should not be overridden without very good reason.

    source§

    impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: PageRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>

    §

    type Error = &'static str

    The type returned in the event of a conversion error.
    source§

    fn try_from(p: PageRange) -> Result<Self, &'static str>

    Performs the conversion.
    source§

    impl<P: Eq + PageSize> Eq for PageRange<P>

    source§

    impl<P: PageSize> StructuralEq for PageRange<P>

    source§

    impl<P: PageSize> StructuralPartialEq for PageRange<P>

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for PageRange<P>where P: RefUnwindSafe,

    §

    impl<P> Send for PageRange<P>where P: Send,

    §

    impl<P> Sync for PageRange<P>where P: Sync,

    §

    impl<P> Unpin for PageRange<P>where @@ -39,7 +42,7 @@
    Examples
    P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for Twhere U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/doc/memory_structs/trait.PageSize.html b/doc/memory_structs/trait.PageSize.html index 558c1b1ec0..d14381afe8 100644 --- a/doc/memory_structs/trait.PageSize.html +++ b/doc/memory_structs/trait.PageSize.html @@ -1,4 +1,4 @@ -PageSize in memory_structs - Rust

    pub trait PageSize: Ord + PartialOrd + Clone + Copy + Sealed {
    +PageSize in memory_structs - Rust
    pub trait PageSize: Ord + PartialOrd + Clone + Copy + Sealed + 'static {
         const SIZE: MemChunkSize;
         const NUM_4K_PAGES: usize;
         const SIZE_IN_BYTES: usize;
    diff --git a/doc/page_allocator/enum.AllocationError.html b/doc/page_allocator/enum.AllocationError.html
    index 7299fb60b5..d07533918b 100644
    --- a/doc/page_allocator/enum.AllocationError.html
    +++ b/doc/page_allocator/enum.AllocationError.html
    @@ -1,14 +1,14 @@
    -AllocationError in page_allocator - Rust
    pub enum AllocationError {
    -    AddressNotFree(Page, usize),
    -    OutOfAddressSpace(usize, Option<PageRange>),
    +AllocationError in page_allocator - Rust
    pub enum AllocationError {
    +    AddressNotFree(Page<Page4K>, usize),
    +    OutOfAddressSpace(usize, Option<PageRange<Page4K>>),
         NotInitialized,
     }
    Expand description

    Possible errors returned by the page allocator.

    -

    Variants§

    §

    AddressNotFree(Page, usize)

    The requested address was not free: it was already allocated, or is outside the range of this allocator.

    -
    §

    OutOfAddressSpace(usize, Option<PageRange>)

    The address space was full, or there was not a large-enough chunk +

    Variants§

    §

    AddressNotFree(Page<Page4K>, usize)

    The requested address was not free: it was already allocated, or is outside the range of this allocator.

    +
    §

    OutOfAddressSpace(usize, Option<PageRange<Page4K>>)

    The address space was full, or there was not a large-enough chunk or enough remaining chunks (within the given PageRange, if any) that could satisfy the requested allocation size.

    §

    NotInitialized

    The allocator has not yet been initialized.

    -

    Trait Implementations§

    source§

    impl Debug for AllocationError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<AllocationError> for &'static str

    source§

    fn from(alloc_err: AllocationError) -> &'static str

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Debug for AllocationError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<AllocationError> for &'static str

    source§

    fn from(alloc_err: AllocationError) -> &'static str

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/page_allocator/enum.AllocationRequest.html b/doc/page_allocator/enum.AllocationRequest.html index 00c39d0cb8..27f89292f9 100644 --- a/doc/page_allocator/enum.AllocationRequest.html +++ b/doc/page_allocator/enum.AllocationRequest.html @@ -1,9 +1,9 @@ -AllocationRequest in page_allocator - Rust
    pub enum AllocationRequest<'r> {
    +AllocationRequest in page_allocator - Rust
    pub enum AllocationRequest<'r> {
         AtVirtualAddress(VirtualAddress),
         AlignedTo {
             alignment_4k_pages: usize,
         },
    -    WithinRange(&'r PageRange),
    +    WithinRange(&'r PageRange<Page4K>),
         Any,
     }
    Expand description

    Possible options when requesting pages from the page allocator.

    Variants§

    §

    AtVirtualAddress(VirtualAddress)

    The allocated pages must start exactly at the given VirtualAddress.

    @@ -11,7 +11,7 @@ but the starting page must be aligned to a multiple of alignment_4k_pages. An alignment of 1 page is equivalent to specifying no alignment requirement.

    Note: alignment is specified in number of 4KiB pages, not number of bytes.

    -
    §

    WithinRange(&'r PageRange)

    The allocated pages can be located anywhere within the given range.

    +
    §

    WithinRange(&'r PageRange<Page4K>)

    The allocated pages can be located anywhere within the given range.

    §

    Any

    The allocated pages can be located at any virtual address and have no special alignment requirements beyond a single page.

    Auto Trait Implementations§

    §

    impl<'r> RefUnwindSafe for AllocationRequest<'r>

    §

    impl<'r> Send for AllocationRequest<'r>

    §

    impl<'r> Sync for AllocationRequest<'r>

    §

    impl<'r> Unpin for AllocationRequest<'r>

    §

    impl<'r> UnwindSafe for AllocationRequest<'r>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere diff --git a/doc/page_allocator/fn.allocate_pages.html b/doc/page_allocator/fn.allocate_pages.html index 9249129030..72cdaf6ef8 100644 --- a/doc/page_allocator/fn.allocate_pages.html +++ b/doc/page_allocator/fn.allocate_pages.html @@ -1,3 +1,3 @@ -allocate_pages in page_allocator - Rust
    pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages>
    Expand description

    Allocates the given number of pages with no constraints on the starting virtual address.

    +allocate_pages in page_allocator - Rust
    pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages<Page4K>>
    Expand description

    Allocates the given number of pages with no constraints on the starting virtual address.

    See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/page_allocator/fn.allocate_pages_at.html b/doc/page_allocator/fn.allocate_pages_at.html index 55b86498f0..ba88cabdb9 100644 --- a/doc/page_allocator/fn.allocate_pages_at.html +++ b/doc/page_allocator/fn.allocate_pages_at.html @@ -1,6 +1,6 @@ -allocate_pages_at in page_allocator - Rust
    pub fn allocate_pages_at(
    +allocate_pages_at in page_allocator - Rust
    pub fn allocate_pages_at(
         vaddr: VirtualAddress,
         num_pages: usize
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates the given number of pages starting at (inclusive of) the page containing the given VirtualAddress.

    +) -> Result<AllocatedPages<Page4K>, &'static str>
    Expand description

    Allocates the given number of pages starting at (inclusive of) the page containing the given VirtualAddress.

    See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/page_allocator/fn.allocate_pages_by_bytes.html b/doc/page_allocator/fn.allocate_pages_by_bytes.html index 0dd315856d..64874a6431 100644 --- a/doc/page_allocator/fn.allocate_pages_by_bytes.html +++ b/doc/page_allocator/fn.allocate_pages_by_bytes.html @@ -1,4 +1,6 @@ -allocate_pages_by_bytes in page_allocator - Rust
    pub fn allocate_pages_by_bytes(num_bytes: usize) -> Option<AllocatedPages>
    Expand description

    Allocates pages with no constraints on the starting virtual address, +allocate_pages_by_bytes in page_allocator - Rust

    pub fn allocate_pages_by_bytes(
    +    num_bytes: usize
    +) -> Option<AllocatedPages<Page4K>>
    Expand description

    Allocates pages with no constraints on the starting virtual address, with a size given by the number of bytes.

    This function still allocates whole pages by rounding up the number of bytes. See allocate_pages_deferred() for more details.

    diff --git a/doc/page_allocator/fn.allocate_pages_by_bytes_at.html b/doc/page_allocator/fn.allocate_pages_by_bytes_at.html index c2625bf2ad..3a30a86252 100644 --- a/doc/page_allocator/fn.allocate_pages_by_bytes_at.html +++ b/doc/page_allocator/fn.allocate_pages_by_bytes_at.html @@ -1,7 +1,7 @@ -allocate_pages_by_bytes_at in page_allocator - Rust
    pub fn allocate_pages_by_bytes_at(
    +allocate_pages_by_bytes_at in page_allocator - Rust
    pub fn allocate_pages_by_bytes_at(
         vaddr: VirtualAddress,
         num_bytes: usize
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates pages starting at the given VirtualAddress with a size given in number of bytes.

    +) -> Result<AllocatedPages<Page4K>, &'static str>
    Expand description

    Allocates pages starting at the given VirtualAddress with a size given in number of bytes.

    This function still allocates whole pages by rounding up the number of bytes. See allocate_pages_deferred() for more details.

    \ No newline at end of file diff --git a/doc/page_allocator/fn.allocate_pages_by_bytes_deferred.html b/doc/page_allocator/fn.allocate_pages_by_bytes_deferred.html index bb74811c42..1aa1792f32 100644 --- a/doc/page_allocator/fn.allocate_pages_by_bytes_deferred.html +++ b/doc/page_allocator/fn.allocate_pages_by_bytes_deferred.html @@ -1,7 +1,7 @@ -allocate_pages_by_bytes_deferred in page_allocator - Rust
    pub fn allocate_pages_by_bytes_deferred(
    +allocate_pages_by_bytes_deferred in page_allocator - Rust
    pub fn allocate_pages_by_bytes_deferred(
         request: AllocationRequest<'_>,
         num_bytes: usize
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str>
    Expand description

    Similar to allocated_pages_deferred(), +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    Similar to allocated_pages_deferred(), but accepts a size value for the allocated pages in number of bytes instead of number of pages.

    This function still allocates whole pages by rounding up the number of bytes.

    \ No newline at end of file diff --git a/doc/page_allocator/fn.allocate_pages_by_bytes_in_range.html b/doc/page_allocator/fn.allocate_pages_by_bytes_in_range.html index cf3c93e373..52828dc36c 100644 --- a/doc/page_allocator/fn.allocate_pages_by_bytes_in_range.html +++ b/doc/page_allocator/fn.allocate_pages_by_bytes_in_range.html @@ -1,6 +1,6 @@ -allocate_pages_by_bytes_in_range in page_allocator - Rust
    pub fn allocate_pages_by_bytes_in_range(
    +allocate_pages_by_bytes_in_range in page_allocator - Rust
    pub fn allocate_pages_by_bytes_in_range(
         num_bytes: usize,
    -    range: &PageRange
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates pages with a size given in number of bytes with the constraint that + range: &PageRange<Page4K> +) -> Result<AllocatedPages<Page4K>, &'static str>

    Expand description

    Allocates pages with a size given in number of bytes with the constraint that they must be within the given inclusive range of pages.

    \ No newline at end of file diff --git a/doc/page_allocator/fn.allocate_pages_deferred.html b/doc/page_allocator/fn.allocate_pages_deferred.html index 04600a51ae..a1331e31b9 100644 --- a/doc/page_allocator/fn.allocate_pages_deferred.html +++ b/doc/page_allocator/fn.allocate_pages_deferred.html @@ -1,7 +1,7 @@ -allocate_pages_deferred in page_allocator - Rust
    pub fn allocate_pages_deferred(
    +allocate_pages_deferred in page_allocator - Rust
    pub fn allocate_pages_deferred(
         request: AllocationRequest<'_>,
         num_pages: usize
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str>
    Expand description

    The core page allocation routine that allocates the given number of virtual pages, +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str>

    Expand description

    The core page allocation routine that allocates the given number of virtual pages, optionally at the requested starting VirtualAddress.

    This simply reserves a range of virtual addresses, it does not allocate actual physical memory frames nor do any memory mapping. diff --git a/doc/page_allocator/fn.allocate_pages_in_range.html b/doc/page_allocator/fn.allocate_pages_in_range.html index 559c9dafb6..8efeccfee1 100644 --- a/doc/page_allocator/fn.allocate_pages_in_range.html +++ b/doc/page_allocator/fn.allocate_pages_in_range.html @@ -1,6 +1,6 @@ -allocate_pages_in_range in page_allocator - Rust

    pub fn allocate_pages_in_range(
    +allocate_pages_in_range in page_allocator - Rust
    pub fn allocate_pages_in_range(
         num_pages: usize,
    -    range: &PageRange
    -) -> Result<AllocatedPages, &'static str>
    Expand description

    Allocates the given number of pages with the constraint that + range: &PageRange<Page4K> +) -> Result<AllocatedPages<Page4K>, &'static str>

    Expand description

    Allocates the given number of pages with the constraint that they must be within the given inclusive range of pages.

    \ No newline at end of file diff --git a/doc/page_allocator/index.html b/doc/page_allocator/index.html index a3e8a16ed1..01481fca2e 100644 --- a/doc/page_allocator/index.html +++ b/doc/page_allocator/index.html @@ -1,5 +1,5 @@ page_allocator - Rust

    Crate page_allocator

    source ·
    Expand description

    Provides an allocator for virtual memory pages. +

  • All Items
  • Crate page_allocator

    source ·
    Expand description

    Provides an allocator for virtual memory pages. The minimum unit of allocation is a single page.

    This also supports early allocation of pages (up to 32 separate chunks) before heap allocation is available, and does so behind the scenes using the same single interface.

    diff --git a/doc/page_allocator/struct.AllocatedPages.html b/doc/page_allocator/struct.AllocatedPages.html index 470f422f72..2651e527de 100644 --- a/doc/page_allocator/struct.AllocatedPages.html +++ b/doc/page_allocator/struct.AllocatedPages.html @@ -1,39 +1,39 @@ -AllocatedPages in page_allocator - Rust
    pub struct AllocatedPages { /* private fields */ }
    Expand description

    Represents a range of allocated VirtualAddresses, specified in Pages.

    +AllocatedPages in page_allocator - Rust
    pub struct AllocatedPages<P: PageSize = Page4K> { /* private fields */ }
    Expand description

    Represents a range of allocated VirtualAddresses, specified in Pages.

    These pages are not initially mapped to any physical memory frames, you must do that separately in order to actually use their memory; see the MappedPages type for more.

    This object represents ownership of the allocated virtual pages; if this object falls out of scope, its allocated pages will be auto-deallocated upon drop.

    -

    Implementations§

    source§

    impl AllocatedPages

    source

    pub const fn empty() -> AllocatedPages

    Returns an empty AllocatedPages object that performs no page allocation. +

    Implementations§

    source§

    impl<P: PageSize> AllocatedPages<P>

    source

    pub const fn empty() -> AllocatedPages<P>

    Returns an empty AllocatedPages object that performs no page allocation. Can be used as a placeholder, but will not permit any real usage.

    -
    source

    pub fn start_address(&self) -> VirtualAddress

    Returns the starting VirtualAddress in this range of pages.

    -
    source

    pub fn size_in_bytes(&self) -> usize

    Returns the size in bytes of this range of pages.

    -
    source

    pub fn size_in_pages(&self) -> usize

    Returns the size in number of pages of this range of pages.

    -
    source

    pub fn start(&self) -> &Page

    Returns the starting Page in this range of pages.

    -
    source

    pub fn end(&self) -> &Page

    Returns the ending Page (inclusive) in this range of pages.

    -
    source

    pub fn range(&self) -> &PageRange

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    -
    source

    pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this range of pages, +

    source

    pub const fn start_address(&self) -> VirtualAddress

    Returns the starting VirtualAddress in this range of pages.

    +
    source

    pub const fn size_in_bytes(&self) -> usize

    Returns the size in bytes of this range of pages.

    +
    source

    pub const fn size_in_pages(&self) -> usize

    Returns the size in number of pages of this range of pages.

    +
    source

    pub const fn start(&self) -> &Page<P>

    Returns the starting Page in this range of pages.

    +
    source

    pub const fn end(&self) -> &Page<P>

    Returns the ending Page (inclusive) in this range of pages.

    +
    source

    pub const fn range(&self) -> &PageRange<P>

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    +
    source

    pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

    If the given addr is not covered by this range of pages, this returns None.

    Examples

    If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).

    -
    source

    pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

    Returns the VirtualAddress at the given offset into this range of pages, +

    source

    pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

    Returns the VirtualAddress at the given offset into this range of pages, i.e., self.start_address() + offset.

    If the given offset is not within this range of pages, 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.

    -
    source

    pub fn merge(&mut self, ap: AllocatedPages) -> Result<(), AllocatedPages>

    Merges the given AllocatedPages object ap into this AllocatedPages object (self). +

    source

    pub fn merge(&mut self, ap: AllocatedPages<P>) -> Result<(), AllocatedPages<P>>

    Merges the given AllocatedPages object ap into this AllocatedPages object (self). This is just for convenience and usability purposes, it performs no allocation or remapping.

    The ap must be virtually contiguous and come immediately after self, that is, self.end must equal ap.start. If this condition is met, self is modified and Ok(()) is returned, otherwise Err(ap) is returned.

    -
    source

    pub fn split( +

    source

    pub fn split( self, - at_page: Page -) -> Result<(AllocatedPages, AllocatedPages), AllocatedPages>

    Splits this AllocatedPages into two separate AllocatedPages objects:

    + at_page: Page<P> +) -> Result<(AllocatedPages<P>, AllocatedPages<P>), AllocatedPages<P>>

    Splits this AllocatedPages into two separate AllocatedPages objects:

    • [beginning : at_page - 1]
    • [at_page : end]
    • @@ -45,7 +45,12 @@
      Examples
    • If at_page == self.end + 1, the second returned AllocatedPages object will be empty.

    Returns an Err containing this AllocatedPages if at_page is otherwise out of bounds.

    -

    Trait Implementations§

    source§

    impl Debug for AllocatedPages

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Drop for AllocatedPages

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl<P: PageSize> Debug for AllocatedPages<P>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<P: PageSize> Default for AllocatedPages<P>

    source§

    fn default() -> AllocatedPages<P>

    Returns the “default value” for a type. Read more
    source§

    impl<P: PageSize> Drop for AllocatedPages<P>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<P> RefUnwindSafe for AllocatedPages<P>where + P: RefUnwindSafe,

    §

    impl<P> Send for AllocatedPages<P>where + P: Send,

    §

    impl<P> Sync for AllocatedPages<P>where + P: Sync,

    §

    impl<P> Unpin for AllocatedPages<P>where + P: Unpin,

    §

    impl<P> UnwindSafe for AllocatedPages<P>where + P: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/page_allocator/struct.DeferredAllocAction.html b/doc/page_allocator/struct.DeferredAllocAction.html index 62b3857644..6d5cd1767a 100644 --- a/doc/page_allocator/struct.DeferredAllocAction.html +++ b/doc/page_allocator/struct.DeferredAllocAction.html @@ -1,4 +1,4 @@ -DeferredAllocAction in page_allocator - Rust
    pub struct DeferredAllocAction<'list> { /* private fields */ }
    Expand description

    A series of pending actions related to page allocator bookkeeping, +DeferredAllocAction in page_allocator - Rust

    pub struct DeferredAllocAction<'list> { /* private fields */ }
    Expand description

    A series of pending actions related to page allocator bookkeeping, which may result in heap allocation.

    The actions are triggered upon dropping this struct. This struct can be returned from the allocate_pages() family of functions @@ -8,7 +8,7 @@

    The vast majority of use cases don’t care about such precise control, so you can simply drop this struct at any time or ignore it with a let _ = ... binding to instantly drop it.

    -

    Trait Implementations§

    source§

    impl<'list> Drop for DeferredAllocAction<'list>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>

    §

    impl<'list> Send for DeferredAllocAction<'list>

    §

    impl<'list> Sync for DeferredAllocAction<'list>

    §

    impl<'list> Unpin for DeferredAllocAction<'list>

    §

    impl<'list> !UnwindSafe for DeferredAllocAction<'list>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl<'list> Drop for DeferredAllocAction<'list>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>

    §

    impl<'list> Send for DeferredAllocAction<'list>

    §

    impl<'list> Sync for DeferredAllocAction<'list>

    §

    impl<'list> Unpin for DeferredAllocAction<'list>

    §

    impl<'list> !UnwindSafe for DeferredAllocAction<'list>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/doc/page_table_entry/struct.PageTableEntry.html b/doc/page_table_entry/struct.PageTableEntry.html index 0d37e2ea39..c51eee55e9 100644 --- a/doc/page_table_entry/struct.PageTableEntry.html +++ b/doc/page_table_entry/struct.PageTableEntry.html @@ -14,7 +14,11 @@
    source

    pub fn flags(&self) -> PteFlagsArch

    Returns this PageTableEntry’s flags.

    source

    pub fn pointed_frame(&self) -> Option<Frame>

    Returns the physical Frame pointed to (mapped by) this PageTableEntry. If this page table entry is not PRESENT, this returns None.

    -
    source

    pub fn set_entry(&mut self, frame: AllocatedFrame<'_>, flags: PteFlagsArch)

    Sets this PageTableEntry to map the given frame with the given flags.

    +
    source

    pub fn set_entry<P: PageSize>( + &mut self, + frame: AllocatedFrame<'_, P>, + flags: PteFlagsArch +)

    Sets this PageTableEntry to map the given frame with the given flags.

    This is the actual mapping action that informs the MMU of a new mapping.

    Note: this performs no checks about the current value of this page table entry.

    source

    pub fn set_flags(&mut self, new_flags: PteFlagsArch)

    Sets the flags components of this PageTableEntry to new_flags.

    diff --git a/doc/page_table_entry/struct.UnmappedFrameRange.html b/doc/page_table_entry/struct.UnmappedFrameRange.html index 5b0625ce90..c5f800a370 100644 --- a/doc/page_table_entry/struct.UnmappedFrameRange.html +++ b/doc/page_table_entry/struct.UnmappedFrameRange.html @@ -1,9 +1,11 @@ -UnmappedFrameRange in page_table_entry - Rust
    pub struct UnmappedFrameRange(/* private fields */);
    Expand description

    A range of frames that have been unmapped from a PageTableEntry +UnmappedFrameRange in page_table_entry - Rust

    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_address(&self) -> PhysicalAddress

    Returns the [PhysicalAddress] of the starting [Frame] in this FrameRange.

    +

    Methods from Deref<Target = FrameRange>§

    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 [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

    Returns the size of this range in bytes.

    @@ -20,8 +22,8 @@
    Examples

    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 [Frame]s 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).

    +

    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 diff --git a/doc/search-index.js b/doc/search-index.js index ffb794bdfc..2dfea3497f 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -54,7 +54,7 @@ var searchIndex = JSON.parse('{\ "fault_log":{"doc":"This crate logs all the faults occuring within Theseus. …","t":"NNNNNDENNNNNNNNNNENNNMMLLLLLLFLLLLLLMMLMMLLLLLLFFMLLLFFFLFFMMMLLLLLLLLLLLL","n":["BoundRangeExceeded","DeviceNotAvailable","DivideByZero","DoubleFault","FaultCrateReplaced","FaultEntry","FaultType","GeneralProtectionFault","InvalidOpCode","InvalidTSS","IterativelyCrateReplaced","MultipleFaultRecovery","NMI","None","Overflow","PageFault","Panic","RecoveryAction","SegmentNotPresent","TaskRestarted","UnknownException","action_taken","address_accessed","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear_fault_log","clone","clone","clone","clone_into","clone_into","clone_into","cpu","crate_error_occured","eq","error_code","fault_type","fmt","fmt","fmt","from","from","from","from_exception_number","get_the_most_recent_match","instruction_pointer","into","into","into","log_exception","log_handled_fault","log_panic_entry","new","print_fault_log","remove_unhandled_exceptions","replaced_crates","running_app_crate","running_task","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"fault_log"],[74,"core::fmt"],[75,"core::fmt"],[76,"core::panic::panic_info"],[77,"alloc::vec"],[78,"core::result"],[79,"core::any"]],"d":["","","","","Crate where fault is observed is replaced, and then task …","A data structure to hold information about each fault. ","The possible faults (panics and exceptions) encountered …","","","","Different Crate than the crate where fault is observed is …","This fault is handled as a recovery for different fault. …","","No action taken on this fault.","","","","The different types of recovery procedures used for the …","","Task restarted only. No crate replaced.","","Recovery Action taken as a result of the fault","For page faults the address the program attempted to …","","","","","","","Clears the log of faults so far occured in the system ","","","","","","","The ID of the CPU on which the error occured.","Crate the address at which exception occured located","","Error code returned with the exception","Type of fault","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Utility function to get Fault type from exception number. ","Provides the most recent entry in the log for given crate …","Address at which exception occured","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Add a new exception instance to the fault log. Generally …","Add a FaultEntry to fault log.","Add a new panic instance to the fault log. ","Returns an empty FaultEntry with only fault_type field …","Prints the fault log","Removes the unhandled faults from the fault log and …","List of crates reloaded from memory to recover from fault","If available the application crate that spawned the task","Task runnning immediately before the Exception","","","","","","","","","","","",""],"i":[2,2,2,2,3,0,0,2,2,2,3,3,2,3,2,2,2,0,2,3,2,4,4,2,3,4,2,3,4,0,2,3,4,2,3,4,4,4,3,4,4,2,3,4,2,3,4,0,0,4,2,3,4,0,0,0,4,0,0,4,4,4,2,3,4,2,3,4,2,3,4,2,3,4],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],1],[2,2],[3,3],[4,4],[[-1,-2],1,[],[]],[[-1,-2],1,[],[]],[[-1,-2],1,[],[]],0,0,[[3,3],5],0,0,[[2,6],7],[[3,6],7],[[4,6],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[8,2],[9,[[10,[4]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[8,11,[10,[12]],[10,[11]]],1],[4,1],[13,1],[2,4],[[],1],[[],[[14,[4]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,16,[]],[-1,16,[]],[-1,16,[]]],"c":[],"p":[[15,"tuple"],[4,"FaultType",0],[4,"RecoveryAction",0],[3,"FaultEntry",0],[15,"bool"],[3,"Formatter",74],[6,"Result",74],[15,"u8"],[15,"str"],[4,"Option",75],[15,"usize"],[15,"u64"],[3,"PanicInfo",76],[3,"Vec",77],[4,"Result",78],[3,"TypeId",79]],"b":[]},\ "first_application":{"doc":"This crate contains a simple routine to start the first …","t":"F","n":["start"],"q":[[0,"first_application"],[1,"core::result"]],"d":["Starts the first applications that run in Theseus by …"],"i":[0],"f":[[[],[[3,[1,2]]]]],"c":[],"p":[[15,"tuple"],[15,"str"],[4,"Result",1]],"b":[]},\ "font":{"doc":"","t":"RRH","n":["CHARACTER_HEIGHT","CHARACTER_WIDTH","FONT_BASIC"],"q":[[0,"font"]],"d":["The height of a character.","The width of a character.","The bitmap array of characters."],"i":[0,0,0],"f":[0,0,0],"c":[],"p":[],"b":[]},\ -"frame_allocator":{"doc":"Provides an allocator for physical memory frames. The …","t":"NDGDDDENGGENDNDNNGFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLMM","n":["AllocateAt","AllocatedFrame","AllocatedFrames","AllocatedFramesIter","DeferredAllocAction","Frames","FramesIteratorRequest","Free","FreeFrames","MappedFrames","MemoryRegionType","Next","PhysicalMemoryRegion","Reserved","SplitFrames","Stop","Unknown","UnmappedFrames","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","as_allocated_frame","as_allocated_frame","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","cmp","deref","deref","deref","drop","drop","empty","eq","eq","eq","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from","from","from","init","inspect_then_allocate_free_frames","into","into","into","into","into","into","into","into","into_allocated_frames","into_allocated_frames","into_allocated_frames","into_allocated_frames","into_iter","into_iter","into_mapped_frames","into_mapped_frames","merge","new","next","partial_cmp","partial_cmp","split_at","split_range","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","typ","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","num_frames","requested_frame"],"q":[[0,"frame_allocator"],[124,"frame_allocator::FramesIteratorRequest"],[126,"core::option"],[127,"memory_structs"],[128,"core::result"],[129,"memory_structs"],[130,"memory_structs"],[131,"core::fmt"],[132,"core::clone"],[133,"core::ops::function"],[134,"core::any"]],"d":["Stop iterating, and then attempt to allocate the specified …","A reference to a single frame within a range of …","A type alias for Frames in the Allocated state.","An iterator over each AllocatedFrame in a range of …","A series of pending actions related to frame allocator …","A range of contiguous frames in physical memory.","An enum that must be returned by the function passed into […","Memory that is available for any general purpose.","A type alias for Frames in the Free state.","A type alias for Frames in the Mapped state.","Types of physical memory. See each variant’s …","Keep iterating to the next chunk of frames.","PhysicalMemoryRegion represents a range of contiguous …","Memory that is reserved for special use and is only ever …","The result of splitting a Frames object into multiple …","Stop iterating, and do not allocate anything.","Memory of an unknown type. This is a default value that …","A type alias for Frames in the Unmapped state.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Returns an AllocatedFrame if this AllocatedFrames object …","Returns an AllocatedFrame if this AllocatedFrames object …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns a new Frames with an empty range of frames. Can …","","","","","","","","The Frames covered by this region, an inclusive range. ","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Initialize the frame allocator with the given list of …","Iterates over all free frames and invokes the given func …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes this Frames in the Free state and converts them …","Consumes this Frames in the Unmapped state and converts …","Consumes this Frames in the Free state and converts them …","Consumes this Frames in the Unmapped state and converts …","","","Consumes this Frames in the Allocated state and converts …","Consumes this Frames in the Allocated state and converts …","Merges the given other Frames object into this Frames …","","","","","Splits this Frames into two separate Frames objects:","Splits up the given Frames into multiple smaller Frames.","","","","","","","","","","","","","","","","","","","The type of this memory region, e.g., whether it’s in a …","","","","","","","","","",""],"i":[28,0,0,0,0,0,0,13,0,0,0,28,0,13,0,28,13,0,0,0,0,0,0,0,2,10,25,26,7,28,11,11,13,10,10,9,25,26,7,28,11,13,10,9,11,13,11,13,11,10,11,10,9,7,10,10,11,13,10,11,13,10,9,11,25,26,7,28,11,13,10,9,0,0,25,26,7,28,11,13,10,9,22,23,10,10,2,25,2,10,10,11,25,11,10,10,10,11,13,25,26,7,28,11,13,10,9,25,26,7,28,11,13,10,9,11,25,26,7,28,11,13,10,9,29,29],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,[[3,[2]]]],[[4,1],[[6,[2,5]]]],[1,[[3,[2]]]],[[4,1],[[6,[2,5]]]],[[[3,[4]],1],[[6,[[8,[2,7]],5]]]],[[[3,[4]],1],[[6,[[8,[2,7]],5]]]],[2,9],[10,9],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[10,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,11],[13,13],[[-1,-2],8,[],[]],[[-1,-2],8,[],[]],[[11,11],14],[[10,10],14],[11,15],[10,15],[9],[7,8],[10,8],[[],10],[[11,11],16],[[13,13],16],[[10,10],16],[[11,17],18],[[13,17],18],[[10,17],18],[[9,17],18],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-1,-2],[[6,[5]]],19,[19,20]],[-1,[[6,[[3,[2]],5]]],21],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[22,2],[23,2],[10,2],[10,2],[2],[-1,-2,[],[]],[2,24],[10,24],[[10,10],[[6,[8,10]]]],[[15,13],11],[25,3],[[11,11],[[3,[14]]]],[[10,10],[[3,[14]]]],[[10,12],[[6,[[8,[10,10]],10]]]],[[10,15],[[6,[26,10]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],0,[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],0,0],"c":[],"p":[[15,"usize"],[6,"AllocatedFrames",0],[4,"Option",126],[3,"PhysicalAddress",127],[15,"str"],[4,"Result",128],[3,"DeferredAllocAction",0],[15,"tuple"],[3,"AllocatedFrame",0],[3,"Frames",0],[3,"PhysicalMemoryRegion",0],[3,"Frame",127],[4,"MemoryRegionType",0],[4,"Ordering",129],[3,"FrameRange",127],[15,"bool"],[3,"Formatter",130],[6,"Result",130],[8,"IntoIterator",131],[8,"Clone",132],[8,"FnMut",133],[6,"FreeFrames",0],[6,"UnmappedFrames",0],[6,"MappedFrames",0],[3,"AllocatedFramesIter",0],[3,"SplitFrames",0],[3,"TypeId",134],[4,"FramesIteratorRequest",0],[13,"AllocateAt",124]],"b":[[84,"impl-Frames%3C%7BMemoryState::Free%7D%3E"],[85,"impl-Frames%3C%7BMemoryState::Unmapped%7D%3E"]]},\ +"frame_allocator":{"doc":"Provides an allocator for physical memory frames. The …","t":"NDGDDDENGGENDNDNNGFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLMM","n":["AllocateAt","AllocatedFrame","AllocatedFrames","AllocatedFramesIter","DeferredAllocAction","Frames","FramesIteratorRequest","Free","FreeFrames","MappedFrames","MemoryRegionType","Next","PhysicalMemoryRegion","Reserved","SplitFrames","Stop","Unknown","UnmappedFrames","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","as_allocated_frame","as_allocated_frame","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","cmp","deref","deref","deref","drop","drop","empty","eq","eq","eq","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from","from","from","init","inspect_then_allocate_free_frames","into","into","into","into","into","into","into","into","into_allocated_frames","into_allocated_frames","into_allocated_frames","into_allocated_frames","into_iter","into_iter","into_mapped_frames","into_mapped_frames","merge","new","next","partial_cmp","partial_cmp","split_at","split_range","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","typ","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","num_frames","requested_frame"],"q":[[0,"frame_allocator"],[124,"frame_allocator::FramesIteratorRequest"],[126,"memory_structs"],[127,"core::option"],[128,"memory_structs"],[129,"memory_structs"],[130,"memory_structs"],[131,"core::fmt"],[132,"core::clone"],[133,"core::ops::function"],[134,"core::any"]],"d":["Stop iterating, and then attempt to allocate the specified …","A reference to a single frame within a range of …","A type alias for Frames in the Allocated state.","An iterator over each AllocatedFrame in a range of …","A series of pending actions related to frame allocator …","A range of contiguous frames in physical memory.","An enum that must be returned by the function passed into …","Memory that is available for any general purpose.","A type alias for Frames in the Free state, which only …","A type alias for Frames in the Mapped state.","Types of physical memory. See each variant’s …","Keep iterating to the next chunk of frames.","PhysicalMemoryRegion represents a range of contiguous …","Memory that is reserved for special use and is only ever …","The result of splitting a Frames object into multiple …","Stop iterating, and do not allocate anything.","Memory of an unknown type. This is a default value that …","A type alias for Frames in the Unmapped state.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Returns an AllocatedFrame if this AllocatedFrames object …","Returns an AllocatedFrame if this AllocatedFrames object …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns a new Frames with an empty range of frames. Can …","","","","","","","","The Frames covered by this region, an inclusive range. ","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Initialize the frame allocator with the given list of …","Iterates over all free frames and invokes the given func …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes this Frames in the Free state and converts them …","Consumes this Frames in the Unmapped state and converts …","Consumes this Frames in the Free state and converts them …","Consumes this Frames in the Unmapped state and converts …","","","Consumes this Frames in the Allocated state and converts …","Consumes this Frames in the Allocated state and converts …","Merges the given other Frames object into this Frames …","","","","","Splits this Frames into two separate Frames objects:","Splits up the given Frames into multiple smaller Frames.","","","","","","","","","","","","","","","","","","","The type of this memory region, e.g., whether it’s in a …","","","","","","","","","",""],"i":[31,0,0,0,0,0,0,15,0,0,0,31,0,15,0,31,15,0,0,0,0,0,0,0,3,12,28,29,8,31,13,13,15,12,12,10,28,29,8,31,13,15,12,10,13,15,13,15,13,12,13,12,10,8,12,12,13,15,12,13,15,12,10,13,28,29,8,31,13,15,12,10,0,0,28,29,8,31,13,15,12,10,25,26,12,12,3,28,3,12,12,13,28,13,12,12,12,13,15,28,29,8,31,13,15,12,10,28,29,8,31,13,15,12,10,13,28,29,8,31,13,15,12,10,32,32],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,[[4,[[3,[2]]]]]],[[5,1],[[7,[[3,[2]],6]]]],[1,[[4,[[3,[2]]]]]],[[5,1],[[7,[[3,[2]],6]]]],[[[4,[5]],1],[[7,[[9,[[3,[2]],8]],6]]]],[[[4,[5]],1],[[7,[[9,[[3,[2]],8]],6]]]],[[[3,[-1]]],[[10,[-1]]],11],[[[12,[-1]]],[[10,[-1]]],11],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[13,14],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[12,[-1]]],[[14,[-1]]],11],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[13,13],[15,15],[[-1,-2],9,[],[]],[[-1,-2],9,[],[]],[[13,13],16],[[[12,[-1]],[12,[-1]]],16,11],[13,17],[[[12,[-1]]],[],11],[[[10,[-1]]],[],11],[8,9],[[[12,[-1]]],9,11],[[],[[12,[-1]]],11],[[13,13],18],[[15,15],18],[[[12,[-1]],[12,[-1]]],18,11],[[13,19],20],[[15,19],20],[[[12,[-1]],19],20,11],[[[10,[-1]],19],20,[21,11]],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-1,-2],[[7,[6]]],22,[22,23]],[-1,[[7,[[4,[[3,[2]]]],6]]],24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,[[3,[2]]]],[26,3],[[[12,[2]]],[[3,[2]]]],[[[12,[2]]],3],[[[3,[-1]]],[],11],[-1,-2,[],[]],[[[3,[-1]]],[[27,[-1]]],11],[[[12,[-1]]],[[27,[-1]]],11],[[[12,[-1]],[12,[-1]]],[[7,[9,[12,[-1]]]]],11],[[17,15],13],[[[28,[-1]]],4,11],[[13,13],[[4,[16]]]],[[[12,[-1]],[12,[-1]]],[[4,[16]]],11],[[[12,[-1]],[14,[-1]]],[[7,[[9,[[12,[-1]],[12,[-1]]]],[12,[-1]]]]],11],[[[12,[-1]],[17,[-1]]],[[7,[[29,[-1]],[12,[-1]]]]],11],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],0,[-1,30,[]],[-1,30,[]],[-1,30,[]],[-1,30,[]],[-1,30,[]],[-1,30,[]],[-1,30,[]],[-1,30,[]],0,0],"c":[],"p":[[15,"usize"],[3,"Page4K",126],[6,"AllocatedFrames",0],[4,"Option",127],[3,"PhysicalAddress",126],[15,"str"],[4,"Result",128],[3,"DeferredAllocAction",0],[15,"tuple"],[3,"AllocatedFrame",0],[8,"PageSize",126],[3,"Frames",0],[3,"PhysicalMemoryRegion",0],[3,"Frame",126],[4,"MemoryRegionType",0],[4,"Ordering",129],[3,"FrameRange",126],[15,"bool"],[3,"Formatter",130],[6,"Result",130],[8,"Debug",130],[8,"IntoIterator",131],[8,"Clone",132],[8,"FnMut",133],[6,"FreeFrames",0],[6,"UnmappedFrames",0],[6,"MappedFrames",0],[3,"AllocatedFramesIter",0],[3,"SplitFrames",0],[3,"TypeId",134],[4,"FramesIteratorRequest",0],[13,"AllocateAt",124]],"b":[[84,"impl-Frames%3C%7BMemoryState::Free%7D%3E"],[85,"impl-Frames%3C%7BMemoryState::Unmapped%7D%3E"]]},\ "framebuffer":{"doc":"This crate defines a Framebuffer structure, which is …","t":"DLLLLLLLLLLLLLLFLLLLALLLDIDMKLLMMLLLLLLLLKLLLLLLLLLLMMLLLLMMLLLLLLLLKLL","n":["Framebuffer","borrow","borrow_mut","buffer","buffer_mut","composite_buffer","contains","draw_pixel","fill","from","get_hash","get_pixel","get_size","hash","index_of","init","into","new","overlaps_with","overwrite_pixel","pixel","try_from","try_into","type_id","AlphaPixel","Pixel","RGBPixel","alpha","blend","blend","blend","blue","blue","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","composite_buffer","composite_buffer","composite_buffer","fmt","fmt","from","from","from","from","get_hash","get_hash","green","green","hash","hash","into","into","red","red","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","weight_blend","weight_blend","weight_blend"],"q":[[0,"framebuffer"],[24,"framebuffer::pixel"],[71,"shapes"],[72,"core::hash"],[73,"core::marker"],[74,"core::hash"],[75,"core::hash"],[76,"memory_structs"],[77,"core::any"],[78,"core::fmt"],[79,"core::fmt"]],"d":["A framebuffer is a region of memory interpreted as a 2-D …","","","Returns a reference to this framebuffer’s memory as a …","Returns a mutable reference to this framebuffer’s memory …","Composites src to the buffer starting from index.","Checks if the given coordinate is within the framebuffer’…","Draw a pixel at the given coordinate. The pixel will be …","Fills (overwrites) the entire framebuffer with the given …","Returns the argument unchanged.","","Returns the pixel value at the given coordinate in this …","Returns the (width, height) of this framebuffer.","","Returns the index of the given coordinate in this …","Initializes the final framebuffer based on graphics mode …","Calls U::from(self).","Creates a new framebuffer with rectangular dimensions of …","Checks if a framebuffer overlaps with an area.","Overwites a pixel at the given coordinate in this …","Defines the Pixel trait as well as basic pixel formats, …","","","","An Alpha Pixel is a pixel with an alpha channel","A pixel provides methods to blend with others.","An RGB Pixel is a pixel with no extra channel.","","blend with another pixel considering their extra channel.","","","","","","","","","","","","","Composites the src pixel slice to the dest pixel slice.","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Blend two pixels linearly with weights, as blend for origin…","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,19,3,18,19,18,19,18,19,18,19,18,19,18,19,3,18,19,18,19,18,18,19,19,18,19,18,19,18,19,18,19,18,19,18,19,18,19,18,19,18,19,3,18,19],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[[2,[-1]]],3],[[[1,[-1]]],[[2,[-1]]],3],[[[1,[-1]],[2,[-1]],4],5,3],[[[1,[-1]],6],7,3],[[[1,[-1]],6,-1],5,3],[[[1,[-1]],-1],5,3],[-1,-1,[]],[[-1,-2],8,[9,10],11],[[[1,[-1]],6],[[12,[-1]]],3],[[[1,[-1]]],[[5,[4,4]]],3],[[[1,[-1]],-2],5,3,13],[[[1,[-1]],6],[[12,[4]]],3],[[],[[15,[[1,[-1]],14]]],3],[-1,-2,[],[]],[[4,4,[12,[16]]],[[15,[[1,[-1]],14]]],3],[[[1,[-1]],6,4,4],7,3],[[[1,[-1]],6,-1],5,3],0,[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,17,[]],0,0,0,0,[[-1,-1],-1,[]],[[18,18],18],[[19,19],19],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18,18],[19,19],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[[2,[-1]],[2,[-1]]],5,[]],[[[2,[18]],[2,[18]]],5],[[[2,[19]],[2,[19]]],5],[[18,20],21],[[19,20],21],[-1,-1,[]],[22,18],[-1,-1,[]],[22,19],[[-1,-2],8,[9,10],11],[[-1,-2],8,[9,10],11],0,0,[[18,-1],5,13],[[19,-1],5,13],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[[-1,-1,23],-1,[]],[[18,18,23],18],[[19,19,23],19]],"c":[],"p":[[3,"Framebuffer",0],[15,"slice"],[8,"Pixel",24],[15,"usize"],[15,"tuple"],[3,"Coord",71],[15,"bool"],[15,"u64"],[8,"Hash",72],[8,"Sized",73],[8,"BuildHasher",72],[4,"Option",74],[8,"Hasher",72],[15,"str"],[4,"Result",75],[3,"PhysicalAddress",76],[3,"TypeId",77],[3,"RGBPixel",24],[3,"AlphaPixel",24],[3,"Formatter",78],[6,"Result",78],[3,"Color",79],[15,"f32"]],"b":[]},\ "framebuffer_compositor":{"doc":"This crate defines a framebuffer compositor.","t":"RDHDLLLLLLLLLLLLLLLL","n":["CACHE_BLOCK_HEIGHT","CacheBlock","FRAME_COMPOSITOR","FrameCompositor","borrow","borrow","borrow_mut","borrow_mut","composite","from","from","into","into","overlaps_with","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"framebuffer_compositor"],[20,"framebuffer"],[21,"core::result"],[22,"core::iter::traits::collect"],[23,"framebuffer::pixel"],[24,"core::clone"],[25,"core::any"]],"d":["The height of a cache block. In every iteration the …","A CacheBlock represents the cached (previously-composited) …","The instance of the framebuffer compositor.","The framebuffer compositor structure. It caches …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Checks if a cache block overlaps with another one","","","","","",""],"i":[0,0,0,0,9,1,9,1,1,9,1,9,1,9,9,1,9,1,9,1],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,-1,[2,[-2]],-3],[[5,[3,4]]],6,7,[6,8]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[9,9],10],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,11,[]],[-1,11,[]]],"c":[],"p":[[3,"FrameCompositor",0],[3,"Framebuffer",20],[15,"tuple"],[15,"str"],[4,"Result",21],[8,"IntoIterator",22],[8,"Pixel",23],[8,"Clone",24],[3,"CacheBlock",0],[15,"bool"],[3,"TypeId",25]],"b":[]},\ "framebuffer_drawer":{"doc":"This crate contains a series of basic draw functions to …","t":"FFFF","n":["draw_circle","draw_line","draw_rectangle","fill_rectangle"],"q":[[0,"framebuffer_drawer"],[4,"framebuffer"],[5,"shapes"],[6,"framebuffer::pixel"]],"d":["Draw a circle in the framebuffer. coordinate is the …","Draws a line in a framebuffer. The part exceeding the …","Draws a rectangle in a framebuffer. The part exceeding the …","Fills a rectangle in a framebuffer with color. The part …"],"i":[0,0,0,0],"f":[[[[1,[-1]],2,3,-1],4,5],[[[1,[-1]],2,2,-1],4,5],[[[1,[-1]],2,3,3,-1],4,5],[[[1,[-1]],2,3,3,-1],4,5]],"c":[],"p":[[3,"Framebuffer",4],[3,"Coord",5],[15,"usize"],[15,"tuple"],[8,"Pixel",6]],"b":[]},\ @@ -86,10 +86,10 @@ var searchIndex = JSON.parse('{\ "logger":{"doc":"A basic logger implementation for system-wide logging in …","t":"RRRFFFFFF","n":["DEFAULT_LOG_LEVEL","EARLY_LOG_BUFFER_SIZE","LOG_MAX_WRITERS","early_init","init","set_log_level","take_early_log_writers","write_fmt","write_str"],"q":[[0,"logger"],[9,"log"],[10,"core::option"],[11,"core::iter::traits::collect"],[12,"serial_port_basic::arch"],[13,"core::fmt"],[14,"core::fmt"]],"d":["By default, Theseus will print all log levels, including …","The size of the buffer used to save early log messages.","The maximum number of output streams that a logger can …","Initializes Theseus’s early system logger for use before …","Initialize the fully-featured Theseus system logger.","Set the log level, which determines whether a given log …","Removes all of the writers (output streams) from the early …","Convenience function for writing formatted arguments to …","Convenience function for writing a simple string to the …"],"i":[0,0,0,0,0,0,0,0,0],"f":[0,0,0,[[[2,[1]],-1],3,4],[[[2,[1]],-1],3,4],[1,3],[[],[[6,[[2,[5]]]]]],[7,8],[9,8]],"c":[],"p":[[4,"Level",9],[4,"Option",10],[15,"tuple"],[8,"IntoIterator",11],[3,"SerialPort",12],[15,"array"],[3,"Arguments",13],[6,"Result",13],[15,"str"]],"b":[]},\ "madt":{"doc":"Support for the MADT ACPI table, which includes interrupt …","t":"NNNNNRDEDDDDDDDNNMMLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLFLMMMMLLLLLLLLLLLLLLLLLMMFMLLLLLLLLLLMLMLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["IntSrcOverride","IoApic","LocalApic","LocalApicAddressOverride","LocalX2Apic","MADT_SIGNATURE","Madt","MadtEntry","MadtIntSrcOverride","MadtIoApic","MadtIter","MadtLocalApic","MadtLocalApicAddressOverride","MadtLocalX2Apic","MadtNonMaskableInterrupt","NonMaskableInterrupt","UnknownOrCorrupt","address","apic_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bsp_init","bus_source","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","find_nmi_entry_for_processor","flags","flags","flags","flags","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get","gsi","gsi_base","handle","id","into","into","into","into","into","into","into","into","into","into_iter","irq_source","iter","lint","local_apic_phys_addr","next","phys_addr","processor","processor","processor","sdt","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","x2apic_id"],"q":[[0,"madt"],[138,"memory::paging"],[139,"core::result"],[140,"core::fmt"],[141,"core::fmt"],[142,"core::option"],[143,"acpi_table"],[144,"sdt"],[145,"core::any"]],"d":["A Interrupt Source Override MADT entry.","A IOAPIC MADT entry.","A Local APIC MADT entry.","A Local APIC Address Override MADT entry.","A Local X2APIC MADT entry.","","A wrapper around the MADT ACPI table (Multiple APIC …","The set of possible MADT Entries.","MADT Interrupt Source Override","MADT I/O APIC","An Iterator over the dynamic entries of the MADT. Its …","MADT Local APIC","MADT Local APIC Address Override. If this struct exists, …","MADT Local X2APIC","MADT Non-maskable Interrupt. Use these to configure the …","A Non-Maskable Interrupt MADT entry.","The MADT table had an entry of an unknown type or …","I/O APIC address","Local APIC ID","","","","","","","","","","","","","","","","","","","Performs initialization functions of the IOAPIC and …","Bus Source","","","","","","","","","","","","","","","","","Finds the Non-Maskable Interrupt (NMI) entry in the MADT …","Returns the flags value in this MADT table.","Flags. 1 means that the processor is enabled","Flags","Flags","Flags. 1 means that the processor is enabled","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Finds the MADT in the given AcpiTables and returns a …","Global system interrupt","Global system interrupt base","The handler for parsing the MADT table and adding it to …","I/O APIC ID","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","IRQ Source","Returns an Iterator over the MADT’s entries, which are …","LINT (either 0 or 1)","Returns the Local APIC physical address value in this MADT …","","Local APIC physical address","Processor ID","which processor this is for, 0xFF means all processors","Processor ID","Returns a reference to the Sdt header in this MADT table.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Local X2APIC ID"],"i":[7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,7,7,9,8,1,6,7,8,9,10,11,12,13,1,6,7,8,9,10,11,12,13,1,10,6,7,8,9,10,11,12,13,6,7,8,9,10,11,12,13,0,1,8,10,11,13,7,8,9,10,11,12,13,1,6,7,8,9,10,11,12,13,1,10,9,0,9,1,6,7,8,9,10,11,12,13,6,10,1,11,1,6,12,8,11,13,1,6,7,8,9,10,11,12,13,1,6,7,8,9,10,11,12,13,1,6,7,8,9,10,11,12,13,1,6,7,8,9,10,11,12,13,13],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,2],[[5,[3,4]]]],0,[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[14,6],[[3,[15,16]]]],[1,14],0,0,0,0,[[7,17],18],[[8,17],18],[[9,17],18],[[10,17],18],[[11,17],18],[[12,17],18],[[13,17],18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[19,[[20,[1]]]],0,0,[[19,21,22,23],[[5,[3,4]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[1,6],0,[1,14],[6,20],0,0,0,0,[1,24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],0],"c":[],"p":[[3,"Madt",0],[3,"PageTable",138],[15,"tuple"],[15,"str"],[4,"Result",139],[3,"MadtIter",0],[4,"MadtEntry",0],[3,"MadtLocalApic",0],[3,"MadtIoApic",0],[3,"MadtIntSrcOverride",0],[3,"MadtNonMaskableInterrupt",0],[3,"MadtLocalApicAddressOverride",0],[3,"MadtLocalX2Apic",0],[15,"u32"],[15,"u8"],[15,"u16"],[3,"Formatter",140],[6,"Result",140],[3,"AcpiTables",141],[4,"Option",142],[6,"AcpiSignature",141],[15,"usize"],[3,"PhysicalAddress",143],[3,"Sdt",144],[3,"TypeId",145]],"b":[]},\ "memfs":{"doc":"This crate contains an implementation of an in-memory …","t":"DLLLLLLLLLLLLLLLLL","n":["MemFile","as_mapping","borrow","borrow_mut","create","flush","from","from_mapped_pages","get_name","get_parent_dir","into","len","read_at","set_parent_dir","try_from","try_into","type_id","write_at"],"q":[[0,"memfs"],[18,"memory::paging::mapper"],[19,"core::result"],[20,"alloc::string"],[21,"fs_node"],[22,"fs_node"],[23,"core::option"],[24,"fs_node"]],"d":["The struct that represents a file in memory that is backed …","","","","Allocates writable memory space for the given contents and …","","Returns the argument unchanged.","Creates a new MemFile in the given parent directory with …","","","Calls U::from(self).","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,[[4,[2,3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[5,6],[[4,[7,3]]]],[1,[[4,[8,9]]]],[-1,-1,[]],[[2,5,10,6],[[4,[7,3]]]],[1,5],[1,[[11,[6]]]],[-1,-2,[],[]],[1,10],[[1,[13,[12]],10],[[4,[10,9]]]],[[1,14],8],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,15,[]],[[1,[13,[12]],10],[[4,[10,9]]]]],"c":[],"p":[[3,"MemFile",0],[3,"MappedPages",18],[15,"str"],[4,"Result",19],[3,"String",20],[6,"DirRef",21],[6,"FileRef",21],[15,"tuple"],[4,"IoError",22],[15,"usize"],[4,"Option",23],[15,"u8"],[15,"slice"],[6,"WeakDirRef",21],[3,"TypeId",24]],"b":[]},\ -"memory":{"doc":"This crate implements the main memory management subsystem …","t":"SSNNGDENNDDSDDSSSSRSSDDDNSNNDDRNDDEDEGIDSSSNRSSSRDDDDDIDDDDDSSNGSSDSSSNSSSSLLLLLLLLLLLLLLMLLLLLLLLFFFFFFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLMFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLMLLFLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["ACCESSED","ACCESSED","AlignedTo","Allocated","AllocatedFrames","AllocatedPages","AllocationRequest","Any","AtVirtualAddress","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","CopyableFrameRange","CopyablePageRange","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","DMA_FLAGS","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Huge1G","Huge2M","Immutable","InitialMemoryMappings","MMIO_FLAGS","Mapped","MappedPages","Mapper","MemChunkSize","MemoryManagementInfo","MemoryState","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","NUM_4K_PAGES","Normal4K","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","SIZE","SIZE_IN_BYTES","Unmapped","UnmappedFrames","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","WithinRange","_GLOBAL","_GLOBAL","_USER_ACCESSIBLE","_USER_ACCESSIBLE","accessed","accessed","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","additional","address_at_offset","address_at_offset","address_at_offset","adjust_for_higher_level_pte","align_up","align_up","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","as_mut","as_mut","as_ref","as_ref","as_slice","as_slice_mut","as_type","as_type_mut","backward_checked","backward_checked","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","boot_info","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","complement","complement","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains","contains","contains_address","contains_address","contains_range","contains_range","create_contiguous_mapping","create_identity_mapping","create_mapping","data","deep_copy","default","default","default","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","device_memory","device_memory","difference","difference","dirty","dirty","drop","drop","dump_pte","empty","empty","empty","empty","empty","empty","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","exclusive","exclusive","executable","executable","extend","extend","extra_mapped_pages","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_mut","from_mut","from_name","from_name","from_phys_addr","from_virt_addr","get_kernel_mmi_ref","get_pat_index","hash","hash","hash","hash","identity","init","init_post_heap","inner_ref","inner_ref","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","iter","iter","iter_names","iter_names","map_allocated_pages","map_allocated_pages_to","map_frame_range","merge","merge","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","offset_of_address","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","page_table","page_table","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pat_index","physical_address","range","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","size_in_pages","split","split","stack","stack_guard","start","start_address","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","switch","symmetric_difference","symmetric_difference","text","to_extended","to_extended","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","toggle","toggle","translate","translate","translate_page","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","unmap_into_parts","valid","valid","value","value","with","writable","writable","zero","zero","alignment_4k_pages"],"q":[[0,"memory"],[707,"memory::AllocationRequest"],[708,"core::option"],[709,"frame_allocator"],[710,"core::result"],[711,"frame_allocator"],[712,"zerocopy"],[713,"core::borrow"],[714,"core::borrow"],[715,"core::cmp"],[716,"core::cmp"],[717,"range_inclusive"],[718,"core::cmp"],[719,"core::fmt"],[720,"core::fmt"],[721,"core::hash"],[722,"core::hash"],[723,"bitflags::iter"],[724,"bitflags::iter"],[725,"core::any"],[726,"core::ops::function"]],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","The allocated pages may be located at any virtual address, …","Memory is allocated and can be used for a mapping","A type alias for Frames in the Allocated state.","Represents a range of allocated VirtualAddresses, …","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","A FrameRange that implements Copy.","A PageRange that implements Copy.","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","Mapping flags that can be used to map DMA (Direct Memory …","Note: code that invokes memory management functions in …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","The set of identity mappings that should be dropped before …","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","If set, this page table entry represents a “huge” …","","","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","Mapping flags that can be used to map MMIO registers.","Memory is mapped (PTE has been set)","Represents a contiguous range of virtual memory pages that …","","Enum used to indicate the size of a page or frame.","This holds all the information for a Task’s memory …","The possible states that a range of exclusively-owned …","A shareable reference to a MemoryManagementInfo struct …","A trait for parameterizing a BorrowedMappedPages or …","A marker type used to indicate that a BorrowedMappedPages …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","","","Page size is 4096 bytes, 4KiB pages.","","","(For P1-level (lowest level) page tables ONLY): If the …","A mask for the bits of a page table entry that contain the …","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A top-level root (P4) page table.","A physical memory address, which is a usize under the hood.","Common, architecture-independent flags for a page table …","Page table entry (PTE) flags on x86_64.","Page table entry (PTE) flags on x86_64.","","","Memory has been unmapped (PTE has been cleared)","A type alias for Frames in the Unmapped state.","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","A virtual memory address, which is a usize under the hood.","If set, this page is writable.If not set, this page is …","If set, this page is writable.If not set, this page is …","If set, writes to this page go directly to memory.It not …","The allocated pages can be located anywhere within the …","If set, this page is mapped identically across all address …","If set, this page is mapped identically across all address …","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (ring 3) can access this page.If not …","Returns a copy of this PteFlags with the ACCESSED bit set …","Returns a copy of this PteFlagsX86_64 with the ACCESSED …","","","","","","","","","","","","","The list of additional mappings that must be kept forever.","Returns the VirtualAddress at the given offset into this …","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","Get a flags value with all known bits set.","Get a flags value with all known bits set.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_slice(), but returns a mutable …","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_type(), but returns a mutable …","","","The bitwise and (&) of the bits in two flags values.","","","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","","","The bitwise and (&) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","","The bitwise or (|) of the bits in two flags values.","","Get the underlying bits value.","","Get the underlying bits value.","The bitwise exclusive-or (^) of the bits in two flags …","","","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","The bitwise exclusive-or (^) of the bits in two flags …","The boot information mappings.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Whether all set bits in a source flags value are also set …","Whether all set bits in a source flags value are also set …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","A convenience function that creates a new memory mapping …","Creates an identity mapping at a random available virtual …","A convenience function that creates a new memory mapping. …","The kernel’s .data section mappings/","Creates a deep copy of this MappedPages memory region, by …","","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the DEVICE_MEMORY bit …","Returns a copy of this PteFlagsX86_64 with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","Returns a copy of this PteFlags with the DIRTY bit set or …","Returns a copy of this PteFlagsX86_64 with the DIRTY bit …","","","Dumps all page table entries at all four page table levels …","Get a flags value with all bits unset.","Returns an empty AllocatedPages object that performs no …","Get a flags value with all bits unset.","Creates a PageRange that will always yield None when …","Returns an empty MappedPages object that performs no …","Creates a FrameRange that will always yield None when …","Returns the ending Page (inclusive) in this range of pages.","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the EXCLUSIVE bit set …","Returns a copy of this PteFlagsX86_64 with the EXCLUSIVE …","Returns a copy of this PteFlags with the NOT_EXECUTABLE …","Returns a copy of this PteFlagsX86_64 with the …","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","The list of additional memory mappings that have the same …","Returns the flags that describe this MappedPages page …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Immutably borrows the given MappedPages as a slice &[T] of …","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Convert from a bits value.","Convert from a bits value.","","Convert from a bits value exactly.","Convert from a bits value exactly.","","Convert from a bits value, unsetting any unknown bits.","Convert from a bits value, unsetting any unknown bits.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","Mutably borrows the given MappedPages as an instance of …","Mutably borrows the given MappedPages as a slice &mut [T] …","Get a flags value with the bits of a flag with the given …","Get a flags value with the bits of a flag with the given …","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","Returns a reference to the kernel’s MemoryManagementInfo…","","","","","","The list of identity mappings that should be dropped …","Initializes the virtual memory management system. Consumes …","Finishes initializing the memory management system after …","Returns a reference to the inner MappedPages value (more …","Returns a reference to the inner borrowed MappedPages.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","Whether any set bits in a source flags value are also set …","Whether any set bits in a source flags value are also set …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","A convenience function for BorrowedMappedPages::from().","A convenience function for BorrowedMappedPages::from_mut().","A convenience function for BorrowedSliceMappedPages::from()…","A convenience function for …","Consumes this object and returns the inner MappedPages …","Consumes this object and returns the inner MappedPages.","","","","","","","Whether all known bits in this flags value are set.","Whether all known bits in this flags value are set.","","","","","Whether all bits in this flags value are unset.","Whether all bits in this flags value are unset.","","","","","","","","","","Yield a set of contained flags values.","Yield a set of contained flags values.","Yield a set of contained named flags values.","Yield a set of contained named flags values.","Maps the given AllocatedPages to randomly chosen …","Maps the given virtual AllocatedPages to the given …","A convenience function that maps randomly-allocated pages …","Merges the given AllocatedPages object ap into this …","Merges the given MappedPages object mp into this …","Returns a new PteFlags with the default value, in which:","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Returns a new PteFlagsX86_64 with the default value, in …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Initializes a new top-level P4 PageTable whose root is …","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","the PageTable that should be switched to when this Task is …","The currently active page table.","","","","","","","","","","Returns a copy of this PteFlagsX86_64 with the PAT index …","Returns the physical address of this page table’s …","Returns a reference to the inner PageRange, which is …","Change the mapping flags of this MappedPages’s page …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The kernel’s .rodata section mappings.","Call insert when value is true or remove when value is …","Call insert when value is true or remove when value is …","Set the function callback that will be invoked every time …","Returns the size in bytes of this range of pages.","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the size in number of pages of this range of pages.","Returns the number of Pages covered by this iterator.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","Returns the starting Page in this range of pages.","Returns the starting VirtualAddress in this range of pages.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","The intersection of a source flags value with the …","","","","","The intersection of a source flags value with the …","","","The intersection of a source flags value with the …","","","","","The intersection of a source flags value with the …","","","Switches from the currently-active page table (this …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The kernel’s .text section mappings, which includes .init…","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","A convenience function to translate the given virtual …","Translates a VirtualAddress to a PhysicalAddress by …","Translates a virtual memory Page to a physical memory Frame…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","Consumes and unmaps this MappedPages object without …","Returns a copy of this PteFlags with the VALID bit set or …","Returns a copy of this PteFlagsX86_64 with the VALID bit …","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Temporarily maps the given other PageTable to the …","Returns a copy of this PteFlags with the WRITABLE bit set …","Returns a copy of this PteFlagsX86_64 with the WRITABLE …","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0.",""],"i":[1,3,20,43,0,0,0,20,20,0,0,3,0,0,1,3,1,3,0,1,3,0,0,0,43,3,48,48,0,0,0,43,0,0,0,0,0,0,0,0,1,3,8,48,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,8,8,43,0,1,3,0,1,3,3,20,1,3,1,3,1,3,4,4,6,6,7,9,4,4,6,6,7,9,51,11,13,14,3,7,9,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,27,23,27,25,25,25,25,7,9,1,4,6,3,1,4,6,3,1,4,6,3,1,4,6,3,1,1,3,3,1,4,6,3,1,4,6,3,51,1,48,15,40,32,33,43,11,23,23,4,20,27,27,6,3,22,53,7,41,9,13,35,25,50,14,51,52,36,1,48,15,40,32,33,43,11,23,23,4,20,27,27,6,3,22,53,7,41,9,13,35,25,50,14,51,52,36,1,15,32,33,4,6,3,7,9,13,35,14,36,1,15,32,33,4,6,3,7,9,13,35,14,36,15,32,33,23,4,27,6,7,9,1,3,7,9,7,9,7,9,1,3,13,14,13,14,0,0,0,51,25,1,4,6,3,23,27,41,13,25,14,23,27,41,13,14,1,3,1,3,1,3,11,25,40,1,11,3,13,25,14,11,1,15,32,33,43,23,4,27,6,3,7,9,13,14,1,3,1,3,1,3,50,25,1,1,1,1,1,48,15,32,33,11,4,4,4,4,4,4,4,6,6,6,6,6,6,6,3,3,3,3,3,7,41,9,13,25,50,14,51,52,7,9,6,1,1,48,15,40,32,33,43,11,23,23,4,20,27,27,6,3,3,22,53,7,7,7,41,9,9,9,13,13,13,13,35,35,25,50,14,14,14,14,51,52,36,36,1,3,1,1,3,3,1,3,1,3,23,27,1,3,14,13,0,3,23,4,27,6,51,0,0,23,27,1,3,1,3,1,3,1,48,15,40,32,33,43,11,23,4,4,20,27,6,6,3,22,53,7,41,9,13,35,25,50,14,51,52,36,25,25,25,25,23,27,1,3,13,14,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,1,3,1,3,40,40,0,11,25,1,4,6,3,13,14,4,6,41,1,3,7,9,11,13,14,13,14,7,7,7,7,4,7,9,50,51,15,32,33,23,4,27,6,7,9,3,41,11,25,1,3,51,1,3,0,11,13,14,14,11,13,11,25,51,51,11,11,7,9,13,14,7,9,1,4,4,6,6,3,7,9,1,4,4,6,6,3,7,9,41,1,3,51,13,14,1,15,32,33,4,6,3,7,9,13,35,14,36,4,6,1,3,0,40,40,1,48,15,40,32,33,43,11,23,4,20,27,6,3,22,53,7,7,7,41,9,9,9,13,13,13,35,25,50,14,14,14,51,52,36,1,48,15,40,32,33,43,11,23,4,20,27,6,3,22,53,7,41,9,13,35,25,50,14,51,52,36,1,48,15,40,32,33,43,11,23,4,20,27,6,3,22,53,7,41,9,13,35,25,50,14,51,52,36,1,3,25,1,3,4,6,41,1,3,4,6,67],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[3,2],3],[[4,4],4],[[4,5],4],[[6,5],6],[[6,6],6],[[[7,[-1]],5],[[7,[-1]]],8],[[[9,[-1]],5],[[9,[-1]]],8],[[4,5],10],[[4,4],10],[[6,6],10],[[6,5],10],[[[7,[-1]],5],10,8],[[[9,[-1]],5],10,8],0,[[11,5],[[12,[4]]]],[[[13,[-1]],5],[[12,[4]]],8],[[[14,[-1]],5],[[12,[6]]],8],[3,3],[[[7,[15]],5],[[7,[15]]]],[[[9,[15]],5],[[9,[15]]]],[[],1],[[],3],[5,[[12,[16]]]],[[6,5],[[18,[16,17]]]],[5,[[12,[16]]]],[[6,5],[[18,[16,17]]]],[[[12,[6]],5],[[18,[[10,[16,19]],17]]]],[[[12,[6]],5],[[18,[[10,[16,19]],17]]]],[5,[[12,[11]]]],[[4,5],[[18,[11,17]]]],[5,[[12,[11]]]],[[4,5],[[18,[11,17]]]],[[20,5],[[18,[[10,[11,21]],17]]]],[[5,[13,[15]]],[[18,[11,17]]]],[[20,5],[[18,[[10,[11,21]],17]]]],[[5,[13,[15]]],[[18,[11,17]]]],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[[25,5,5],[[18,[[28,[-1]],17]]],24],[[25,5,5],[[18,[[28,[-1]],17]]],24],[[25,5],[[18,[-1,17]]],24],[[25,5],[[18,[-1,17]]],24],[[[7,[-1]],5],[[12,[[7,[-1]]]]],8],[[[9,[-1]],5],[[12,[[9,[-1]]]]],8],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],[1,31],[1,31],[3,31],[3,31],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[15,15],[32,32],[33,33],[4,4],[6,6],[3,3],[[[7,[-1]]],[[7,[-1]]],[34,8]],[[[9,[-1]]],[[9,[-1]]],[34,8]],[[[13,[-1]]],[[13,[-1]]],[34,8]],[[[35,[-1]]],[[35,[-1]]],[34,8]],[[[14,[-1]]],[[14,[-1]]],[34,8]],[[[36,[-1]]],[[36,[-1]]],[34,8]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[15,15],37],[[32,32],37],[[33,33],37],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],37,[24,38],29,[[30,[25]]]],[[4,4],37],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],37,[24,38],29,[[30,[25]]]],[[6,6],37],[[[7,[-1]],[7,[-1]]],37,[38,8]],[[[9,[-1]],[9,[-1]]],37,[38,8]],[1,1],[3,3],[4,[[7,[15]]]],[6,[[9,[15]]]],[4,[[7,[33]]]],[6,[[9,[33]]]],[4,[[7,[32]]]],[6,[[9,[32]]]],[[1,1],2],[[3,3],2],[[[13,[-1]],4],2,8],[[[14,[-1]],6],2,8],[[[13,[-1]],[13,[-1]]],2,8],[[[14,[-1]],[14,[-1]]],2,8],[[5,-1],[[18,[[10,[25,6]],17]]],[[39,[3]]]],[[5,-1],[[18,[25,17]]],[[39,[3]]]],[[5,-1],[[18,[25,17]]],[[39,[3]]]],0,[[25,40,[12,[-1]]],[[18,[25,17]]],[[39,[3]]]],[[],1],[[],4],[[],6],[[],3],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[41,40],[[[13,[-1]]],[[42,[[7,[-1]]]]],8],[25,11],[[[14,[-1]]],[[42,[[9,[-1]]]]],8],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[41,40],[[[13,[15]]],[[42,[[7,[15]]]]]],[[[14,[15]]],[[42,[[9,[15]]]]]],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[11,10],[25,10],[[40,4],10],[[],1],[[],11],[[],3],[[],[[13,[15]]]],[[],25],[[],[[14,[15]]]],[11,[[7,[15]]]],[[1,1],2],[[15,15],2],[[32,32],2],[[33,33],2],[[43,43],2],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],2,[24,44],29,[[30,[25]]]],[[4,4],2],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],2,[24,44],29,[[30,[25]]]],[[6,6],2],[[3,3],2],[[[7,[-1]],[7,[-1]]],2,[]],[[[9,[-1]],[9,[-1]]],2,[]],[[[13,[-1]],[13,[-1]]],2,[]],[[[14,[-1]],[14,[-1]]],2,[]],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[[1,-1],10,45],[[3,-1],10,45],0,[25,3],[[1,46],[[18,[10,47]]]],[[1,46],[[18,[10,47]]]],[[1,46],[[18,[10,47]]]],[[1,46],[[18,[10,47]]]],[[1,46],[[18,[10,47]]]],[[48,46],[[18,[10,47]]]],[[15,46],[[18,[10,47]]]],[[32,46],[[18,[10,47]]]],[[33,46],[[18,[10,47]]]],[[11,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[4,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[6,46],[[18,[10,47]]]],[[3,46],[[18,[10,47]]]],[[3,46],[[18,[10,47]]]],[[3,46],[[18,[10,47]]]],[[3,46],[[18,[10,47]]]],[[3,46],[[18,[10,47]]]],[[[7,[-1]],46],[[18,[10,47]]],8],[[41,46],49],[[[9,[-1]],46],[[18,[10,47]]],8],[[[13,[-1]],46],[[18,[10,47]]],8],[[25,46],49],[[50,46],49],[[[14,[-1]],46],[[18,[10,47]]],8],[[51,46],49],[[52,46],49],[[[7,[-1]],5],[[12,[[7,[-1]]]]],8],[[[9,[-1]],5],[[12,[[9,[-1]]]]],8],[6,5],[3,1],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-1,5],[[18,[[23,[-2,53,-1]],[10,[-1,17]]]]],[[30,[25]]],24],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-1,5,5],[[18,[[27,[-2,53,-1]],[10,[-1,17]]]]],[[30,[25]]],24],[-1,-1,[]],[-1,-1,[]],[1,3],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[33]]],[[7,[15]]]],[[[7,[32]]],[[7,[15]]]],[-1,-1,[]],[[[9,[32]]],[[9,[15]]]],[[[9,[33]]],[[9,[15]]]],[-1,-1,[]],[-1,-1,[]],[[[35,[-1]]],[[13,[-1]]],[8,54]],[[[13,[32]]],[[13,[15]]]],[[[13,[33]]],[[13,[15]]]],[[[13,[-1]]],[[35,[-1]]],[8,54]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[14,[32]]],[[14,[15]]]],[[[36,[-1]]],[[14,[-1]]],[8,54]],[[[14,[33]]],[[14,[15]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[14,[-1]]],[[36,[-1]]],[8,54]],[-1,-1,[]],[31,[[12,[1]]]],[31,[[12,[3]]]],[31,1],[31,1],[31,3],[31,3],[31,1],[31,3],[-1,1,45],[-1,3,45],[[-1,5],[[18,[[23,[-2,22,-1]],[10,[-1,17]]]]],[[26,[25]]],24],[[-1,5,5],[[18,[[27,[-2,22,-1]],[10,[-1,17]]]]],[[26,[25]]],24],[17,[[12,[1]]]],[17,[[12,[3]]]],[[6,5],[[14,[15]]]],[[4,5],[[13,[15]]]],[[],[[12,[55]]]],[3,56],[[[23,[-1,-2,-3]],-4],10,[24,57],29,[[30,[25]]],58],[[4,-1],10,58],[[[27,[-1,-2,-3]],-4],10,[24,57],29,[[30,[25]]],58],[[6,-1],10,58],0,[[-1,4],[[18,[51,17]]],59],[[41,25,25],55],[[[23,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[1,1],10],[[3,3],10],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[25,5],[[18,[[23,[-1,53]],[10,[25,17]]]]],24],[[25,5],[[18,[[23,[-1,22]],[10,[25,17]]]]],24],[[25,5,5],[[18,[[27,[-1,53]],[10,[25,17]]]]],24],[[25,5,5],[[18,[[27,[-1,22]],[10,[25,17]]]]],24],[[[23,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[1],[3],[[[13,[-1]]],[],8],[[[14,[-1]]],[],8],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,[[60,[1]]]],[3,[[60,[3]]]],[1,[[61,[1]]]],[3,[[61,[3]]]],[[40,11,-1],[[18,[25,17]]],[[39,[3]]]],[[40,11,62,-1],[[18,[25,17]]],[[39,[3]]]],[[6,5,-1],[[18,[25,17]]],[[39,[3]]]],[[11,11],[[18,[10,11]]]],[[25,25],[[18,[10,[10,[17,25]]]]]],[[],1],[5,[[12,[4]]]],[5,[[12,[6]]]],[[],3],[[[7,[-1]],[7,[-1]]],[[13,[-1]]],8],[[[9,[-1]],[9,[-1]]],[[14,[-1]]],8],[5,4],[5,6],[[41,62,[12,[11]]],[[18,[41,17]]]],[1,1],[3,3],[[[7,[-1]]],5,8],[[[9,[-1]]],5,8],[[11,4],[[12,[5]]]],[[[13,[-1]],4],[[12,[5]]],8],[[[14,[-1]],6],[[12,[5]]],8],[[[13,[-1]],[13,[-1]]],[[12,[[13,[-1]]]]],[8,54]],[[[14,[-1]],[14,[-1]]],[[12,[[14,[-1]]]]],[8,54]],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[4,5],[[[7,[-1]]],48,8],[[[9,[-1]]],48,8],0,0,[[15,15],[[12,[37]]]],[[32,32],[[12,[37]]]],[[33,33],[[12,[37]]]],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],[[12,[37]]],[24,63],29,[[30,[25]]]],[[4,4],[[12,[37]]]],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],[[12,[37]]],[24,63],29,[[30,[25]]]],[[6,6],[[12,[37]]]],[[[7,[-1]],[7,[-1]]],[[12,[37]]],[]],[[[9,[-1]],[9,[-1]]],[[12,[37]]],[]],[[3,56],3],[41,6],[11,[[13,[15]]]],[[25,40,-1],[[18,[10,17]]],[[39,[3]]]],[[1,1],10],[[3,3],10],0,[[1,1,2],10],[[3,3,2],10],[[],10],[11,5],[[[13,[-1]]],5,8],[[[14,[-1]]],5,8],[[[14,[-1]]],5,8],[11,5],[[[13,[-1]]],5,8],[[11,[7,[15]]],[[18,[[10,[11,11]],11]]]],[[25,7],[[18,[[10,[25,25]],25]]]],0,0,[11,[[7,[15]]]],[11,4],[[[7,[-1]]],4,8],[[[9,[-1]]],6,8],[[[13,[-1]]],4,8],[[[14,[-1]]],6,8],[[[7,[-1]],[7,[-1]]],[[12,[5]]],8],[[[9,[-1]],[9,[-1]]],[[12,[5]]],8],[[1,1],1],[[4,5],4],[[4,4],4],[[6,6],6],[[6,5],6],[[3,3],3],[[[7,[-1]],5],[[7,[-1]]],8],[[[9,[-1]],5],[[9,[-1]]],8],[[1,1],10],[[4,5],10],[[4,4],10],[[6,5],10],[[6,6],10],[[3,3],10],[[[7,[-1]],5],10,8],[[[9,[-1]],5],10,8],[[41,41],10],[[1,1],1],[[3,3],3],0,[[[13,[-1]],[7,[-1]]],[[13,[-1]]],8],[[[14,[-1]],[9,[-1]]],[[14,[-1]]],8],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,64,[]],[-1,64,[]],[[1,1],10],[[3,3],10],[4,[[12,[6]]]],[[40,4],[[12,[6]]]],[[40,7],[[12,[9]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[[[7,[15]]],[[18,[[7,[33]],17]]]],[-1,[[18,[-2]]],[],[]],[[[7,[15]]],[[18,[[7,[32]],17]]]],[-1,[[18,[-2]]],[],[]],[[[9,[15]]],[[18,[[9,[33]],17]]]],[-1,[[18,[-2]]],[],[]],[[[9,[15]]],[[18,[[9,[32]],17]]]],[-1,[[18,[-2]]],[],[]],[[[13,[15]]],[[18,[[13,[33]],17]]]],[[[13,[15]]],[[18,[[13,[32]],17]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[[[14,[15]]],[[18,[[14,[32]],17]]]],[-1,[[18,[-2]]],[],[]],[[[14,[15]]],[[18,[[14,[33]],17]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[-1,65,[]],[[1,1],1],[[3,3],3],[[25,40],[[18,[[10,[11,[12,[62]]]],25]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[41,41,-1],[[18,[-2,17]]],66,[]],[[1,2],1],[[3,2],3],[[],4],[[],6],0],"c":[],"p":[[3,"PteFlags",0],[15,"bool"],[3,"PteFlagsArch",0],[3,"VirtualAddress",0],[15,"usize"],[3,"PhysicalAddress",0],[3,"Page",0],[8,"PageSize",0],[3,"Frame",0],[15,"tuple"],[3,"AllocatedPages",0],[4,"Option",708],[3,"PageRange",0],[3,"FrameRange",0],[3,"Page4K",0],[3,"Frames",709],[15,"str"],[4,"Result",710],[3,"DeferredAllocAction",709],[4,"AllocationRequest",0],[3,"DeferredAllocAction",711],[3,"Mutable",0],[3,"BorrowedMappedPages",0],[8,"FromBytes",712],[3,"MappedPages",0],[8,"BorrowMut",713],[3,"BorrowedSliceMappedPages",0],[15,"slice"],[8,"Mutability",0],[8,"Borrow",713],[15,"u64"],[3,"Page2M",0],[3,"Page1G",0],[8,"Clone",714],[3,"CopyablePageRange",0],[3,"CopyableFrameRange",0],[4,"Ordering",715],[8,"Ord",715],[8,"Into",716],[3,"Mapper",0],[3,"PageTable",0],[3,"RangeInclusive",717],[4,"MemoryState",0],[8,"PartialEq",715],[8,"IntoIterator",718],[3,"Formatter",719],[3,"Error",719],[4,"MemChunkSize",0],[6,"Result",719],[3,"MemoryManagementInfo",0],[3,"InitialMemoryMappings",0],[3,"EarlyIdentityMappedPages",0],[3,"Immutable",0],[8,"Copy",720],[6,"MmiRef",0],[15,"u8"],[8,"Hash",721],[8,"Hasher",721],[8,"BootInformation",722],[3,"Iter",723],[3,"IterNames",723],[6,"AllocatedFrames",0],[8,"PartialOrd",715],[3,"String",724],[3,"TypeId",725],[8,"FnOnce",726],[13,"AlignedTo",707]],"b":[[77,"impl-Add-for-VirtualAddress"],[78,"impl-Add%3Cusize%3E-for-VirtualAddress"],[79,"impl-Add%3Cusize%3E-for-PhysicalAddress"],[80,"impl-Add-for-PhysicalAddress"],[83,"impl-AddAssign%3Cusize%3E-for-VirtualAddress"],[84,"impl-AddAssign-for-VirtualAddress"],[85,"impl-AddAssign-for-PhysicalAddress"],[86,"impl-AddAssign%3Cusize%3E-for-PhysicalAddress"],[138,"impl-Flags-for-PteFlags"],[139,"impl-PteFlags"],[140,"impl-Flags-for-PteFlagsX86_64"],[141,"impl-PteFlagsX86_64"],[316,"impl-Binary-for-PteFlags"],[317,"impl-Debug-for-PteFlags"],[318,"impl-LowerHex-for-PteFlags"],[319,"impl-Octal-for-PteFlags"],[320,"impl-UpperHex-for-PteFlags"],[326,"impl-Binary-for-VirtualAddress"],[327,"impl-Debug-for-VirtualAddress"],[328,"impl-Display-for-VirtualAddress"],[329,"impl-Octal-for-VirtualAddress"],[330,"impl-UpperHex-for-VirtualAddress"],[331,"impl-Pointer-for-VirtualAddress"],[332,"impl-LowerHex-for-VirtualAddress"],[333,"impl-Debug-for-PhysicalAddress"],[334,"impl-LowerHex-for-PhysicalAddress"],[335,"impl-Binary-for-PhysicalAddress"],[336,"impl-Pointer-for-PhysicalAddress"],[337,"impl-Display-for-PhysicalAddress"],[338,"impl-UpperHex-for-PhysicalAddress"],[339,"impl-Octal-for-PhysicalAddress"],[340,"impl-Octal-for-PteFlagsX86_64"],[341,"impl-UpperHex-for-PteFlagsX86_64"],[342,"impl-LowerHex-for-PteFlagsX86_64"],[343,"impl-Binary-for-PteFlagsX86_64"],[344,"impl-Debug-for-PteFlagsX86_64"],[378,"impl-From%3CPage%3CPage1G%3E%3E-for-Page"],[379,"impl-From%3CPage%3CPage2M%3E%3E-for-Page"],[381,"impl-From%3CFrame%3CPage2M%3E%3E-for-Frame"],[382,"impl-From%3CFrame%3CPage1G%3E%3E-for-Frame"],[385,"impl-From%3CCopyablePageRange%3CP%3E%3E-for-PageRange%3CP%3E"],[386,"impl-From%3CPageRange%3CPage2M%3E%3E-for-PageRange"],[387,"impl-From%3CPageRange%3CPage1G%3E%3E-for-PageRange"],[392,"impl-From%3CFrameRange%3CPage2M%3E%3E-for-FrameRange"],[393,"impl-From%3CCopyableFrameRange%3CP%3E%3E-for-FrameRange%3CP%3E"],[394,"impl-From%3CFrameRange%3CPage1G%3E%3E-for-FrameRange"],[402,"impl-Flags-for-PteFlags"],[403,"impl-PteFlags"],[404,"impl-PteFlagsX86_64"],[405,"impl-Flags-for-PteFlagsX86_64"],[565,"impl-Sub%3Cusize%3E-for-VirtualAddress"],[566,"impl-Sub-for-VirtualAddress"],[567,"impl-Sub-for-PhysicalAddress"],[568,"impl-Sub%3Cusize%3E-for-PhysicalAddress"],[573,"impl-SubAssign%3Cusize%3E-for-VirtualAddress"],[574,"impl-SubAssign-for-VirtualAddress"],[575,"impl-SubAssign%3Cusize%3E-for-PhysicalAddress"],[576,"impl-SubAssign-for-PhysicalAddress"],[622,"impl-TryFrom%3CPage%3E-for-Page%3CPage1G%3E"],[624,"impl-TryFrom%3CPage%3E-for-Page%3CPage2M%3E"],[626,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage1G%3E"],[628,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage2M%3E"],[630,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage1G%3E"],[631,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage2M%3E"],[635,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage2M%3E"],[637,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage1G%3E"]],"a":{"cache":[278,279,476,477],"cacheable":[278,279,476,477],"mmi":[35],"next_multiple_of":[94,95],"no_exec":[310,311,484,485],"non-cacheable":[278,279,476,477],"page attribute table":[417,536],"pat":[417,536],"present":[487,488,698,699],"read_only":[489,490,703,704],"slot":[417,536]}},\ +"memory":{"doc":"This crate implements the main memory management subsystem …","t":"SSNNGDENNDDSSSSSRSSDDDNSNNDDSSSSRNDDEDEGIDSSSNRSSSRDDDDDIDDDDDSSNGSSDSSSNSSSSLLLLLLLLLLLLLLMLLLLLLLLFFFFFFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLMFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLMLLFLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["ACCESSED","ACCESSED","AlignedTo","Allocated","AllocatedFrames","AllocatedPages","AllocationRequest","Any","AtVirtualAddress","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","DMA_FLAGS","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Huge1G","Huge2M","Immutable","InitialMemoryMappings","MAX","MAX","MIN","MIN","MMIO_FLAGS","Mapped","MappedPages","Mapper","MemChunkSize","MemoryManagementInfo","MemoryState","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","NUM_4K_PAGES","Normal4K","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","SIZE","SIZE_IN_BYTES","Unmapped","UnmappedFrames","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","WithinRange","_GLOBAL","_GLOBAL","_USER_ACCESSIBLE","_USER_ACCESSIBLE","accessed","accessed","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","additional","address_at_offset","address_at_offset","address_at_offset","adjust_for_higher_level_pte","align_up","align_up","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","as_mut","as_mut","as_ref","as_ref","as_slice","as_slice_mut","as_type","as_type_mut","backward_checked","backward_checked","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","boot_info","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chunk_sized_expr","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","complement","complement","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains","contains","contains_address","contains_address","contains_range","contains_range","create_contiguous_mapping","create_identity_mapping","create_mapping","data","deep_copy","default","default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","device_memory","device_memory","difference","difference","dirty","dirty","drop","drop","dump_pte","empty","empty","empty","empty","empty","empty","end","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","exclusive","exclusive","executable","executable","extend","extend","extra_mapped_pages","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_1g_into_generic","from_1g_into_generic","from_2m_into_generic","from_2m_into_generic","from_4k_into_generic","from_4k_into_generic","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_mut","from_mut","from_name","from_name","from_phys_addr","from_virt_addr","get_kernel_mmi_ref","get_pat_index","hash","hash","hash","hash","identity","init","init_post_heap","inner_ref","inner_ref","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_4k_frames","into_4k_pages","into_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","iter","iter","iter_names","iter_names","map_allocated_pages","map_allocated_pages_to","map_frame_range","merge","merge","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","offset_of_address","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","page_table","page_table","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pat_index","physical_address","range","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","size_in_pages","split","split","stack","stack_guard","start","start","start","start_address","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","switch","symmetric_difference","symmetric_difference","text","to_extended","to_extended","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","toggle","toggle","translate","translate","translate_page","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","unmap_into_parts","valid","valid","value","value","with","writable","writable","zero","zero","alignment_4k_pages"],"q":[[0,"memory"],[703,"memory::AllocationRequest"],[704,"core::option"],[705,"frame_allocator"],[706,"core::result"],[707,"frame_allocator"],[708,"zerocopy"],[709,"core::borrow"],[710,"core::borrow"],[711,"core::cmp"],[712,"core::cmp"],[713,"range_inclusive"],[714,"core::cmp"],[715,"core::fmt"],[716,"core::fmt"],[717,"core::hash"],[718,"bitflags::iter"],[719,"bitflags::iter"],[720,"core::any"],[721,"core::ops::function"]],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","The allocated pages may be located at any virtual address, …","Memory is allocated and can be used for a mapping","A type alias for Frames in the Allocated state.","Represents a range of allocated VirtualAddresses, …","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","Mapping flags that can be used to map DMA (Direct Memory …","Note: code that invokes memory management functions in …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","The set of identity mappings that should be dropped before …","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","If set, this page table entry represents a “huge” …","","","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","The maximum (largest) valid value a Page can have.","The maximum (largest) valid value a Frame can have.","The minimum (smallest) valid value a Page can have.","The minimum (smallest) valid value a Frame can have.","Mapping flags that can be used to map MMIO registers.","Memory is mapped (PTE has been set)","Represents a contiguous range of virtual memory pages that …","","Enum used to indicate the size of a page or frame.","This holds all the information for a Task’s memory …","The possible states that a range of exclusively-owned …","A shareable reference to a MemoryManagementInfo struct …","A trait for parameterizing a BorrowedMappedPages or …","A marker type used to indicate that a BorrowedMappedPages …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","","","Page size is 4096 bytes, 4KiB pages.","","","(For P1-level (lowest level) page tables ONLY): If the …","A mask for the bits of a page table entry that contain the …","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A top-level root (P4) page table.","A physical memory address, which is a usize under the hood.","Common, architecture-independent flags for a page table …","Page table entry (PTE) flags on x86_64.","Page table entry (PTE) flags on x86_64.","","","Memory has been unmapped (PTE has been cleared)","A type alias for Frames in the Unmapped state.","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","A virtual memory address, which is a usize under the hood.","If set, this page is writable.If not set, this page is …","If set, this page is writable.If not set, this page is …","If set, writes to this page go directly to memory.It not …","The allocated pages can be located anywhere within the …","If set, this page is mapped identically across all address …","If set, this page is mapped identically across all address …","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (ring 3) can access this page.If not …","Returns a copy of this PteFlags with the ACCESSED bit set …","Returns a copy of this PteFlagsX86_64 with the ACCESSED …","","","","","","","","","","","","","The list of additional mappings that must be kept forever.","Returns the VirtualAddress at the given offset into this …","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","Get a flags value with all known bits set.","Get a flags value with all known bits set.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_slice(), but returns a mutable …","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_type(), but returns a mutable …","","","The bitwise and (&) of the bits in two flags values.","","","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","","","The bitwise and (&) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","","","The bitwise or (|) of the bits in two flags values.","","Get the underlying bits value.","Get the underlying bits value.","","The bitwise exclusive-or (^) of the bits in two flags …","","","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","","","The bitwise exclusive-or (^) of the bits in two flags …","The boot information mappings.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A macro for applying the same field/method accessors to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Whether all set bits in a source flags value are also set …","Whether all set bits in a source flags value are also set …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","A convenience function that creates a new memory mapping …","Creates an identity mapping at a random available virtual …","A convenience function that creates a new memory mapping. …","The kernel’s .data section mappings/","Creates a deep copy of this MappedPages memory region, by …","","","","","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the DEVICE_MEMORY bit …","Returns a copy of this PteFlagsX86_64 with the …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","Returns a copy of this PteFlags with the DIRTY bit set or …","Returns a copy of this PteFlagsX86_64 with the DIRTY bit …","","","Dumps all page table entries at all four page table levels …","Get a flags value with all bits unset.","Returns an empty AllocatedPages object that performs no …","Get a flags value with all bits unset.","Creates an empty PageRange that will always yield None …","Returns an empty MappedPages object that performs no …","Creates an empty FrameRange that will always yield None …","Returns the ending Page (inclusive) in this range of pages.","Returns the ending Page in this PageRange.","Returns the ending Frame in this FrameRange.","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the EXCLUSIVE bit set …","Returns a copy of this PteFlagsX86_64 with the EXCLUSIVE …","Returns a copy of this PteFlags with the NOT_EXECUTABLE …","Returns a copy of this PteFlagsX86_64 with the …","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","The list of additional memory mappings that have the same …","Returns the flags that describe this MappedPages page …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","Returns the argument unchanged.","Immutably borrows the given MappedPages as a slice &[T] of …","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Converts a known 1G-sized Page into a Page<P> with a …","Converts a known 1G-sized Frame into a Frame<P> with a …","Converts a known 2M-sized Page into a Page<P> with a …","Converts a known 2M-sized Frame into a Frame<P> with a …","Converts a known 4K-sized Page into a Page<P> with a …","Converts a known 4K-sized Frame into a Frame<P> with a …","Convert from a bits value.","Convert from a bits value.","Convert from a bits value exactly.","","","Convert from a bits value exactly.","Convert from a bits value, unsetting any unknown bits.","Convert from a bits value, unsetting any unknown bits.","The bitwise or (|) of the bits in each flags value.","The bitwise or (|) of the bits in each flags value.","Mutably borrows the given MappedPages as an instance of …","Mutably borrows the given MappedPages as a slice &mut [T] …","Get a flags value with the bits of a flag with the given …","Get a flags value with the bits of a flag with the given …","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","Returns a reference to the kernel’s MemoryManagementInfo…","","","","","","The list of identity mappings that should be dropped …","Initializes the virtual memory management system. Consumes …","Finishes initializing the memory management system after …","Returns a reference to the inner MappedPages value (more …","Returns a reference to the inner borrowed MappedPages.","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","The bitwise and (&) of the bits in two flags values.","Whether any set bits in a source flags value are also set …","Whether any set bits in a source flags value are also set …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Converts this range of Frames into an identical 4K-sized …","Converts this range of Pages into an identical 4K-sized …","A convenience function for BorrowedMappedPages::from().","A convenience function for BorrowedMappedPages::from_mut().","A convenience function for BorrowedSliceMappedPages::from()…","A convenience function for …","Consumes this object and returns the inner MappedPages …","Consumes this object and returns the inner MappedPages.","","","","","","","","","Whether all known bits in this flags value are set.","Whether all known bits in this flags value are set.","","","","","Whether all bits in this flags value are unset.","Whether all bits in this flags value are unset.","","","","","","","","","","Yield a set of contained flags values.","Yield a set of contained flags values.","Yield a set of contained named flags values.","Yield a set of contained named flags values.","Maps the given 4K-sized AllocatedPages to randomly chosen …","Maps the given virtual AllocatedPages to the given …","A convenience function that maps randomly-allocated pages …","Merges the given AllocatedPages object ap into this …","Merges the given MappedPages object mp into this …","Returns a new PteFlags with the default value, in which:","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Returns a new PteFlagsX86_64 with the default value, in …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Initializes a new top-level P4 PageTable whose root is …","The bitwise negation (!) of the bits in a flags value, …","The bitwise negation (!) of the bits in a flags value, …","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","the PageTable that should be switched to when this Task is …","The currently active page table.","","","","","","","","","","Returns a copy of this PteFlagsX86_64 with the PAT index …","Returns the physical address of this page table’s …","Returns a reference to the inner PageRange, which is …","Change the mapping flags of this MappedPages’s page …","The intersection of a source flags value with the …","The intersection of a source flags value with the …","The kernel’s .rodata section mappings.","Call insert when value is true or remove when value is …","Call insert when value is true or remove when value is …","Set the function callback that will be invoked every time …","Returns the size in bytes of this range of pages.","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the size in number of pages of this range of pages.","Returns the number of Pages covered by this iterator.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","Returns the starting Page in this range of pages.","Returns the starting Page in this PageRange.","Returns the starting Frame in this FrameRange.","Returns the starting VirtualAddress in this range of pages.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","The intersection of a source flags value with the …","","","","","The intersection of a source flags value with the …","","","The intersection of a source flags value with the …","","","","","The intersection of a source flags value with the …","","","Switches from the currently-active page table (this …","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","The kernel’s .text section mappings, which includes .init…","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","The bitwise exclusive-or (^) of the bits in two flags …","The bitwise exclusive-or (^) of the bits in two flags …","A convenience function to translate the given virtual …","Translates a VirtualAddress to a PhysicalAddress by …","Translates a virtual memory Page to a physical memory Frame…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The bitwise or (|) of the bits in two flags values.","The bitwise or (|) of the bits in two flags values.","Consumes and unmaps this MappedPages object without …","Returns a copy of this PteFlags with the VALID bit set or …","Returns a copy of this PteFlagsX86_64 with the VALID bit …","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Temporarily maps the given other PageTable to the …","Returns a copy of this PteFlags with the WRITABLE bit set …","Returns a copy of this PteFlagsX86_64 with the WRITABLE …","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0.",""],"i":[1,3,20,41,0,0,0,20,20,0,0,3,1,3,1,3,0,1,3,0,0,0,41,3,46,46,0,0,7,9,7,9,0,41,0,0,0,0,0,0,0,0,1,3,8,46,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,8,8,41,0,1,3,0,1,3,3,20,1,3,1,3,1,3,4,4,6,6,7,9,4,4,6,6,7,9,49,11,13,14,3,7,9,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,27,23,27,25,25,25,25,7,9,1,4,6,3,1,4,6,3,1,4,6,3,1,4,6,3,1,1,3,3,1,4,6,3,1,4,6,3,49,1,46,15,38,32,33,41,11,4,23,23,20,27,27,6,3,22,51,7,39,9,13,25,14,48,49,50,1,46,15,38,32,33,41,11,4,23,23,20,27,27,6,3,22,51,7,39,9,13,25,14,48,49,50,0,1,15,32,33,4,6,3,7,9,13,14,1,15,32,33,4,6,3,7,9,13,14,15,32,33,4,23,27,6,7,9,1,3,7,9,7,9,7,9,1,3,13,14,13,14,0,0,0,49,25,1,11,4,6,3,13,14,23,27,39,13,25,14,23,27,39,13,14,1,3,1,3,1,3,11,25,38,1,11,3,13,25,14,11,13,14,1,15,32,33,41,4,23,27,6,3,7,9,13,14,1,3,1,3,1,3,48,25,1,1,1,1,1,46,15,32,33,11,4,4,4,4,4,4,4,6,6,6,6,6,6,6,3,3,3,3,3,7,39,9,13,25,14,48,49,50,7,9,6,1,1,46,15,38,32,33,41,11,4,23,23,20,27,27,6,3,3,22,51,7,7,7,39,9,9,9,13,13,13,25,14,14,14,48,49,50,7,9,7,9,7,9,1,3,1,1,3,3,1,3,1,3,23,27,1,3,14,13,0,3,4,23,27,6,49,0,0,23,27,1,3,1,3,1,3,1,46,15,38,32,33,41,11,4,4,23,20,27,6,6,3,22,51,7,39,9,13,25,14,48,49,50,14,13,25,25,25,25,23,27,1,3,13,13,14,14,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,1,3,1,3,38,38,0,11,25,1,4,6,3,13,14,4,6,39,1,3,7,9,11,13,14,13,14,7,7,7,7,4,7,9,48,49,15,32,33,4,23,27,6,7,9,3,39,11,25,1,3,49,1,3,0,11,13,14,14,11,13,11,25,49,49,11,13,14,11,7,9,13,14,7,9,1,4,4,6,6,3,7,9,1,4,4,6,6,3,7,9,39,1,3,49,13,14,1,15,32,33,4,6,3,7,9,13,14,4,6,1,3,0,38,38,1,46,15,38,32,33,41,11,4,23,20,27,6,3,22,51,7,7,7,39,9,9,9,13,13,13,25,14,14,14,48,49,50,1,46,15,38,32,33,41,11,4,23,20,27,6,3,22,51,7,39,9,13,25,14,48,49,50,1,46,15,38,32,33,41,11,4,23,20,27,6,3,22,51,7,39,9,13,25,14,48,49,50,1,3,25,1,3,4,6,39,1,3,4,6,64],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[3,2],3],[[4,4],4],[[4,5],4],[[6,5],6],[[6,6],6],[[[7,[-1]],5],[[7,[-1]]],8],[[[9,[-1]],5],[[9,[-1]]],8],[[4,5],10],[[4,4],10],[[6,5],10],[[6,6],10],[[[7,[-1]],5],10,8],[[[9,[-1]],5],10,8],0,[[[11,[-1]],5],[[12,[4]]],8],[[[13,[-1]],5],[[12,[4]]],8],[[[14,[-1]],5],[[12,[6]]],8],[3,3],[[[7,[15]],5],[[7,[15]]]],[[[9,[15]],5],[[9,[15]]]],[[],1],[[],3],[5,[[12,[[16,[15]]]]]],[[6,5],[[18,[[16,[15]],17]]]],[5,[[12,[[16,[15]]]]]],[[6,5],[[18,[[16,[15]],17]]]],[[[12,[6]],5],[[18,[[10,[[16,[15]],19]],17]]]],[[[12,[6]],5],[[18,[[10,[[16,[15]],19]],17]]]],[5,[[12,[[11,[15]]]]]],[[4,5],[[18,[[11,[15]],17]]]],[5,[[12,[[11,[15]]]]]],[[4,5],[[18,[[11,[15]],17]]]],[[20,5],[[18,[[10,[[11,[15]],21]],17]]]],[[5,[13,[15]]],[[18,[[11,[15]],17]]]],[[20,5],[[18,[[10,[[11,[15]],21]],17]]]],[[5,[13,[15]]],[[18,[[11,[15]],17]]]],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[[25,5,5],[[18,[[28,[-1]],17]]],24],[[25,5,5],[[18,[[28,[-1]],17]]],24],[[25,5],[[18,[-1,17]]],24],[[25,5],[[18,[-1,17]]],24],[[[7,[-1]],5],[[12,[[7,[-1]]]]],8],[[[9,[-1]],5],[[12,[[9,[-1]]]]],8],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],[1,31],[1,31],[3,31],[3,31],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1],10],[[4,4],10],[[6,6],10],[[3,3],10],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[-1,-2,[],[]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[15,15],[32,32],[33,33],[4,4],[6,6],[3,3],[[[7,[-1]]],[[7,[-1]]],[34,8]],[[[9,[-1]]],[[9,[-1]]],[34,8]],[[[13,[-1]]],[[13,[-1]]],[34,8]],[[[14,[-1]]],[[14,[-1]]],[34,8]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[-1,-2],10,[],[]],[[15,15],35],[[32,32],35],[[33,33],35],[[4,4],35],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],35,[24,36],29,[[30,[25]]]],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],35,[24,36],29,[[30,[25]]]],[[6,6],35],[[[7,[-1]],[7,[-1]]],35,[36,8]],[[[9,[-1]],[9,[-1]]],35,[36,8]],[1,1],[3,3],[4,[[7,[15]]]],[6,[[9,[15]]]],[4,[[7,[33]]]],[6,[[9,[33]]]],[4,[[7,[32]]]],[6,[[9,[32]]]],[[1,1],2],[[3,3],2],[[[13,[-1]],4],2,8],[[[14,[-1]],6],2,8],[[[13,[-1]],[13,[-1]]],2,8],[[[14,[-1]],[14,[-1]]],2,8],[[5,-1],[[18,[[10,[25,6]],17]]],[[37,[3]]]],[[5,-1],[[18,[25,17]]],[[37,[3]]]],[[5,-1],[[18,[25,17]]],[[37,[3]]]],0,[[25,38,[12,[-1]]],[[18,[25,17]]],[[37,[3]]]],[[],1],[[],[[11,[-1]]],8],[[],4],[[],6],[[],3],[[],[[13,[-1]]],8],[[],[[14,[-1]]],8],[[[23,[-1,-2,-3]]],-1,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],[[28,[-1]]],24,29,[[30,[25]]]],[39,38],[[[13,[-1]]],[[40,[[7,[-1]]]]],8],[25,11],[[[14,[-1]]],[[40,[[9,[-1]]]]],8],[[[23,[-1,22,-2]]],-1,24,[[26,[25]]]],[[[27,[-1,22,-2]]],[[28,[-1]]],24,[[26,[25]]]],[39,38],[[[13,[15]]],[[40,[[7,[15]]]]]],[[[14,[15]]],[[40,[[9,[15]]]]]],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[[[11,[-1]]],10,8],[25,10],[[38,4],10],[[],1],[[],[[11,[-1]]],8],[[],3],[[],[[13,[-1]]],8],[[],25],[[],[[14,[-1]]],8],[[[11,[-1]]],[[7,[-1]]],8],[[[13,[-1]]],[[7,[-1]]],8],[[[14,[-1]]],[[9,[-1]]],8],[[1,1],2],[[15,15],2],[[32,32],2],[[33,33],2],[[41,41],2],[[4,4],2],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],2,[24,42],29,[[30,[25]]]],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],2,[24,42],29,[[30,[25]]]],[[6,6],2],[[3,3],2],[[[7,[-1]],[7,[-1]]],2,[]],[[[9,[-1]],[9,[-1]]],2,[]],[[[13,[-1]],[13,[-1]]],2,[]],[[[14,[-1]],[14,[-1]]],2,[]],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[[1,-1],10,43],[[3,-1],10,43],0,[25,3],[[1,44],[[18,[10,45]]]],[[1,44],[[18,[10,45]]]],[[1,44],[[18,[10,45]]]],[[1,44],[[18,[10,45]]]],[[1,44],[[18,[10,45]]]],[[46,44],[[18,[10,45]]]],[[15,44],[[18,[10,45]]]],[[32,44],[[18,[10,45]]]],[[33,44],[[18,[10,45]]]],[[[11,[-1]],44],[[18,[10,45]]],8],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[4,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[6,44],[[18,[10,45]]]],[[3,44],[[18,[10,45]]]],[[3,44],[[18,[10,45]]]],[[3,44],[[18,[10,45]]]],[[3,44],[[18,[10,45]]]],[[3,44],[[18,[10,45]]]],[[[7,[-1]],44],[[18,[10,45]]],8],[[39,44],47],[[[9,[-1]],44],[[18,[10,45]]],8],[[[13,[-1]],44],[[18,[10,45]]],8],[[25,44],47],[[[14,[-1]],44],[[18,[10,45]]],8],[[48,44],47],[[49,44],47],[[50,44],47],[[[7,[-1]],5],[[12,[[7,[-1]]]]],8],[[[9,[-1]],5],[[12,[[9,[-1]]]]],8],[6,5],[3,1],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-1,5],[[18,[[23,[-2,51,-1]],[10,[-1,17]]]]],[[30,[25]]],24],[-1,-1,[]],[[-1,5,5],[[18,[[27,[-2,51,-1]],[10,[-1,17]]]]],[[30,[25]]],24],[-1,-1,[]],[-1,-1,[]],[1,3],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[32]]],[[7,[15]]]],[-1,-1,[]],[[[7,[33]]],[[7,[15]]]],[-1,-1,[]],[[[9,[32]]],[[9,[15]]]],[[[9,[33]]],[[9,[15]]]],[-1,-1,[]],[-1,-1,[]],[[[13,[32]]],[[13,[15]]]],[[[13,[33]]],[[13,[15]]]],[-1,-1,[]],[-1,-1,[]],[[[14,[32]]],[[14,[15]]]],[[[14,[33]]],[[14,[15]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[33]]],[[7,[-1]]],8],[[[9,[33]]],[[9,[-1]]],8],[[[7,[32]]],[[7,[-1]]],8],[[[9,[32]]],[[9,[-1]]],8],[[[7,[15]]],[[7,[-1]]],8],[[[9,[15]]],[[9,[-1]]],8],[31,[[12,[1]]]],[31,[[12,[3]]]],[31,1],[31,1],[31,3],[31,3],[31,1],[31,3],[-1,1,43],[-1,3,43],[[-1,5],[[18,[[23,[-2,22,-1]],[10,[-1,17]]]]],[[26,[25]]],24],[[-1,5,5],[[18,[[27,[-2,22,-1]],[10,[-1,17]]]]],[[26,[25]]],24],[17,[[12,[1]]]],[17,[[12,[3]]]],[[6,5],[[14,[15]]]],[[4,5],[[13,[15]]]],[[],[[12,[52]]]],[3,53],[[4,-1],10,54],[[[23,[-1,-2,-3]],-4],10,[24,55],29,[[30,[25]]],54],[[[27,[-1,-2,-3]],-4],10,[24,55],29,[[30,[25]]],54],[[6,-1],10,54],0,[[-1,4],[[18,[49,17]]],56],[[39,25,25],52],[[[23,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[1,1],10],[[3,3],10],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[14,[-1]]],[[14,[15]]],8],[[[13,[-1]]],[[13,[15]]],8],[[25,5],[[18,[[23,[-1,51]],[10,[25,17]]]]],24],[[25,5],[[18,[[23,[-1,22]],[10,[25,17]]]]],24],[[25,5,5],[[18,[[27,[-1,51]],[10,[25,17]]]]],24],[[25,5,5],[[18,[[27,[-1,22]],[10,[25,17]]]]],24],[[[23,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[[[27,[-1,-2,-3]]],-3,24,29,[[30,[25]]]],[1],[3],[[[13,[-1]]],[],8],[[[13,[-1]]],[],8],[[[14,[-1]]],[],8],[[[14,[-1]]],[],8],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,[[57,[1]]]],[3,[[57,[3]]]],[1,[[58,[1]]]],[3,[[58,[3]]]],[[38,11,-1],[[18,[25,17]]],[[37,[3]]]],[[38,11,[59,[-1]],-2],[[18,[25,17]]],8,[[37,[3]]]],[[6,5,-1],[[18,[25,17]]],[[37,[3]]]],[[[11,[-1]],[11,[-1]]],[[18,[10,[11,[-1]]]]],8],[[25,25],[[18,[10,[10,[17,25]]]]]],[[],1],[5,[[12,[4]]]],[5,[[12,[6]]]],[[],3],[[[7,[-1]],[7,[-1]]],[[13,[-1]]],8],[[[9,[-1]],[9,[-1]]],[[14,[-1]]],8],[5,4],[5,6],[[39,59,[12,[11]]],[[18,[39,17]]]],[1,1],[3,3],[[[7,[-1]]],5,8],[[[9,[-1]]],5,8],[[[11,[-1]],4],[[12,[5]]],8],[[[13,[-1]],4],[[12,[5]]],8],[[[14,[-1]],6],[[12,[5]]],8],[[[13,[-1]],[13,[-1]]],[[12,[[13,[-1]]]]],8],[[[14,[-1]],[14,[-1]]],[[12,[[14,[-1]]]]],8],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[[[7,[-1]]],5,8],[4,5],[[[7,[-1]]],46,8],[[[9,[-1]]],46,8],0,0,[[15,15],[[12,[35]]]],[[32,32],[[12,[35]]]],[[33,33],[[12,[35]]]],[[4,4],[[12,[35]]]],[[[23,[-1,-2,-3]],[23,[-1,-2,-3]]],[[12,[35]]],[24,60],29,[[30,[25]]]],[[[27,[-1,-2,-3]],[27,[-1,-2,-3]]],[[12,[35]]],[24,60],29,[[30,[25]]]],[[6,6],[[12,[35]]]],[[[7,[-1]],[7,[-1]]],[[12,[35]]],[]],[[[9,[-1]],[9,[-1]]],[[12,[35]]],[]],[[3,53],3],[39,6],[[[11,[-1]]],[[13,[-1]]],8],[[25,38,-1],[[18,[10,17]]],[[37,[3]]]],[[1,1],10],[[3,3],10],0,[[1,1,2],10],[[3,3,2],10],[[],10],[[[11,[-1]]],5,8],[[[13,[-1]]],5,8],[[[14,[-1]]],5,8],[[[14,[-1]]],5,8],[[[11,[-1]]],5,8],[[[13,[-1]]],5,8],[[[11,[-1]],[7,[-1]]],[[18,[[10,[[11,[-1]],[11,[-1]]]],[11,[-1]]]]],8],[[25,7],[[18,[[10,[25,25]],25]]]],0,0,[[[11,[-1]]],[[7,[-1]]],8],[[[13,[-1]]],[[7,[-1]]],8],[[[14,[-1]]],[[9,[-1]]],8],[[[11,[-1]]],4,8],[[[7,[-1]]],4,8],[[[9,[-1]]],6,8],[[[13,[-1]]],4,8],[[[14,[-1]]],6,8],[[[7,[-1]],[7,[-1]]],[[12,[5]]],8],[[[9,[-1]],[9,[-1]]],[[12,[5]]],8],[[1,1],1],[[4,4],4],[[4,5],4],[[6,5],6],[[6,6],6],[[3,3],3],[[[7,[-1]],5],[[7,[-1]]],8],[[[9,[-1]],5],[[9,[-1]]],8],[[1,1],10],[[4,5],10],[[4,4],10],[[6,5],10],[[6,6],10],[[3,3],10],[[[7,[-1]],5],10,8],[[[9,[-1]],5],10,8],[[39,39],10],[[1,1],1],[[3,3],3],0,[[[13,[-1]],[7,[-1]]],[[13,[-1]]],8],[[[14,[-1]],[9,[-1]]],[[14,[-1]]],8],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[[1,1],10],[[3,3],10],[4,[[12,[6]]]],[[38,4],[[12,[6]]]],[[38,7],[[12,[9]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[[[7,[15]]],[[18,[[7,[33]],17]]]],[[[7,[15]]],[[18,[[7,[32]],17]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[[[9,[15]]],[[18,[[9,[33]],17]]]],[[[9,[15]]],[[18,[[9,[32]],17]]]],[[[13,[15]]],[[18,[[13,[32]],17]]]],[[[13,[15]]],[[18,[[13,[33]],17]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[[[14,[15]]],[[18,[[14,[32]],17]]]],[[[14,[15]]],[[18,[[14,[33]],17]]]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[-1,62,[]],[[1,1],1],[[3,3],3],[[25,38],[[18,[[10,[11,[12,[59]]]],25]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[39,39,-1],[[18,[-2,17]]],63,[]],[[1,2],1],[[3,2],3],[[],4],[[],6],0],"c":[],"p":[[3,"PteFlags",0],[15,"bool"],[3,"PteFlagsArch",0],[3,"VirtualAddress",0],[15,"usize"],[3,"PhysicalAddress",0],[3,"Page",0],[8,"PageSize",0],[3,"Frame",0],[15,"tuple"],[3,"AllocatedPages",0],[4,"Option",704],[3,"PageRange",0],[3,"FrameRange",0],[3,"Page4K",0],[3,"Frames",705],[15,"str"],[4,"Result",706],[3,"DeferredAllocAction",705],[4,"AllocationRequest",0],[3,"DeferredAllocAction",707],[3,"Mutable",0],[3,"BorrowedMappedPages",0],[8,"FromBytes",708],[3,"MappedPages",0],[8,"BorrowMut",709],[3,"BorrowedSliceMappedPages",0],[15,"slice"],[8,"Mutability",0],[8,"Borrow",709],[15,"u64"],[3,"Page2M",0],[3,"Page1G",0],[8,"Clone",710],[4,"Ordering",711],[8,"Ord",711],[8,"Into",712],[3,"Mapper",0],[3,"PageTable",0],[3,"RangeInclusive",713],[4,"MemoryState",0],[8,"PartialEq",711],[8,"IntoIterator",714],[3,"Formatter",715],[3,"Error",715],[4,"MemChunkSize",0],[6,"Result",715],[3,"MemoryManagementInfo",0],[3,"InitialMemoryMappings",0],[3,"EarlyIdentityMappedPages",0],[3,"Immutable",0],[6,"MmiRef",0],[15,"u8"],[8,"Hasher",716],[8,"Hash",716],[8,"BootInformation",717],[3,"Iter",718],[3,"IterNames",718],[6,"AllocatedFrames",0],[8,"PartialOrd",711],[3,"String",719],[3,"TypeId",720],[8,"FnOnce",721],[13,"AlignedTo",703]],"b":[[79,"impl-Add-for-VirtualAddress"],[80,"impl-Add%3Cusize%3E-for-VirtualAddress"],[81,"impl-Add%3Cusize%3E-for-PhysicalAddress"],[82,"impl-Add-for-PhysicalAddress"],[85,"impl-AddAssign%3Cusize%3E-for-VirtualAddress"],[86,"impl-AddAssign-for-VirtualAddress"],[87,"impl-AddAssign%3Cusize%3E-for-PhysicalAddress"],[88,"impl-AddAssign-for-PhysicalAddress"],[140,"impl-Flags-for-PteFlags"],[141,"impl-PteFlags"],[142,"impl-PteFlagsX86_64"],[143,"impl-Flags-for-PteFlagsX86_64"],[316,"impl-UpperHex-for-PteFlags"],[317,"impl-Octal-for-PteFlags"],[318,"impl-Debug-for-PteFlags"],[319,"impl-LowerHex-for-PteFlags"],[320,"impl-Binary-for-PteFlags"],[326,"impl-UpperHex-for-VirtualAddress"],[327,"impl-Pointer-for-VirtualAddress"],[328,"impl-Debug-for-VirtualAddress"],[329,"impl-Display-for-VirtualAddress"],[330,"impl-Binary-for-VirtualAddress"],[331,"impl-LowerHex-for-VirtualAddress"],[332,"impl-Octal-for-VirtualAddress"],[333,"impl-Octal-for-PhysicalAddress"],[334,"impl-Binary-for-PhysicalAddress"],[335,"impl-UpperHex-for-PhysicalAddress"],[336,"impl-LowerHex-for-PhysicalAddress"],[337,"impl-Debug-for-PhysicalAddress"],[338,"impl-Display-for-PhysicalAddress"],[339,"impl-Pointer-for-PhysicalAddress"],[340,"impl-Binary-for-PteFlagsX86_64"],[341,"impl-Octal-for-PteFlagsX86_64"],[342,"impl-LowerHex-for-PteFlagsX86_64"],[343,"impl-Debug-for-PteFlagsX86_64"],[344,"impl-UpperHex-for-PteFlagsX86_64"],[377,"impl-From%3CPage%3CPage2M%3E%3E-for-Page"],[379,"impl-From%3CPage%3CPage1G%3E%3E-for-Page"],[381,"impl-From%3CFrame%3CPage2M%3E%3E-for-Frame"],[382,"impl-From%3CFrame%3CPage1G%3E%3E-for-Frame"],[385,"impl-From%3CPageRange%3CPage2M%3E%3E-for-PageRange"],[386,"impl-From%3CPageRange%3CPage1G%3E%3E-for-PageRange"],[389,"impl-From%3CFrameRange%3CPage2M%3E%3E-for-FrameRange"],[390,"impl-From%3CFrameRange%3CPage1G%3E%3E-for-FrameRange"],[402,"impl-PteFlags"],[403,"impl-Flags-for-PteFlags"],[404,"impl-Flags-for-PteFlagsX86_64"],[405,"impl-PteFlagsX86_64"],[470,"impl-IntoIterator-for-%26PageRange%3CP%3E"],[471,"impl-IntoIterator-for-PageRange%3CP%3E"],[472,"impl-IntoIterator-for-FrameRange%3CP%3E"],[473,"impl-IntoIterator-for-%26FrameRange%3CP%3E"],[569,"impl-Sub-for-VirtualAddress"],[570,"impl-Sub%3Cusize%3E-for-VirtualAddress"],[571,"impl-Sub%3Cusize%3E-for-PhysicalAddress"],[572,"impl-Sub-for-PhysicalAddress"],[577,"impl-SubAssign%3Cusize%3E-for-VirtualAddress"],[578,"impl-SubAssign-for-VirtualAddress"],[579,"impl-SubAssign%3Cusize%3E-for-PhysicalAddress"],[580,"impl-SubAssign-for-PhysicalAddress"],[624,"impl-TryFrom%3CPage%3E-for-Page%3CPage1G%3E"],[625,"impl-TryFrom%3CPage%3E-for-Page%3CPage2M%3E"],[629,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage1G%3E"],[630,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage2M%3E"],[631,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage2M%3E"],[632,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage1G%3E"],[636,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage2M%3E"],[637,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage1G%3E"]],"a":{"cache":[276,277,478,479],"cacheable":[276,277,478,479],"mmi":[37],"next_multiple_of":[96,97],"no_exec":[310,311,486,487],"non-cacheable":[276,277,478,479],"page attribute table":[417,538],"pat":[417,538],"present":[489,490,694,695],"read_only":[491,492,699,700],"slot":[417,538]}},\ "memory_aarch64":{"doc":"This crate implements the virtual memory subsystem …","t":"DDDOLLLLLLFMFFMFMLLLLLFMLLLFMFMMCFFLLLLLLLLL","n":["AggregatedSectionMemoryBounds","MmuConfig","SectionMemoryBounds","asm_set_mmu_config_x2_x3","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","configure_translation_registers","data","disable_mmu","enable_mmu","end","find_section_memory_bounds","flags","fmt","fmt","from","from","from","get_p4","init","into","into","into","read_mmu_config","rodata","set_as_active_page_table_root","start","text","tlb_flush_all","tlb_flush_by_theseus_asid","tlb_flush_virt_addr","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"memory_aarch64"],[44,"core::option"],[45,"core::result"],[46,"boot_info"],[47,"core::ops::function"],[48,"core::fmt"],[49,"core::fmt"],[50,"memory_structs"]],"d":["The address bounds and flags of the initial kernel …","See read_mmu_config","The address bounds and mapping flags of a section’s …","Configures the MMU based on the pointer to a MmuConfig, in …","","","","","","","Configures paging for Theseus.","","Disable the MMU using aarch64 registers","Enable the MMU using aarch64 registers","The ending virtual address and physical address.","Finds the addresses in memory of the main kernel sections, …","The page table entry flags that should be used for mapping …","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the current top-level page table address.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Reads the current MMU configuration of the current CPU …","","Sets the given page_table as active by updating the TTBR0 …","The starting virtual address and physical address.","","","Flushes all TLB entries with Theseus’ ASID (=0).","Flushes the specific virtual address in TLB.","","","","","","","","",""],"i":[0,0,0,0,13,3,2,13,3,2,0,2,0,0,3,0,3,3,2,13,3,2,0,2,13,3,2,0,2,0,3,2,0,0,0,13,3,2,13,3,2,13,3,2],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],1],0,[[],1],[[],1],0,[[-1,-2],[[7,[[1,[2,[5,[[4,[3]]]]]],6]]],8,9],0,[[3,10],11],[[2,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],12],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],13],0,[12,1],0,0,0,[[],1],[14,1],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]]],"c":[],"p":[[15,"tuple"],[3,"AggregatedSectionMemoryBounds",0],[3,"SectionMemoryBounds",0],[4,"Option",44],[15,"array"],[15,"str"],[4,"Result",45],[8,"BootInformation",46],[8,"Fn",47],[3,"Formatter",48],[6,"Result",48],[3,"PhysicalAddress",49],[3,"MmuConfig",0],[3,"VirtualAddress",49],[3,"TypeId",50]],"b":[]},\ "memory_initialization":{"doc":"","t":"F","n":["init_memory_management"],"q":[[0,"memory_initialization"],[1,"memory_structs"],[2,"memory"],[3,"memory::paging::mapper"],[4,"no_drop"],[5,"stack"],[6,"bootloader_modules"],[7,"alloc::vec"],[8,"memory"],[9,"boot_info"]],"d":["Initializes the virtual memory management system and …"],"i":[0],"f":[[[-1,1],[[11,[[9,[2,[4,[3]],[4,[3]],[4,[3]],[4,[5]],[7,[6]],[4,[8]]]],10]]],12]],"c":[],"p":[[3,"VirtualAddress",1],[6,"MmiRef",2],[3,"MappedPages",3],[3,"NoDrop",4],[3,"Stack",5],[3,"BootloaderModule",6],[3,"Vec",7],[3,"EarlyIdentityMappedPages",2],[15,"tuple"],[15,"str"],[4,"Result",8],[8,"BootInformation",9]],"b":[]},\ -"memory_structs":{"doc":"This crate contains basic types used for memory management.","t":"NDDDDNNNNEESNDDDDDIDSSNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Allocated","CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Free","Huge1G","Huge2M","Mapped","MemChunkSize","MemoryState","NUM_4K_PAGES","Normal4K","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PhysicalAddress","SIZE","SIZE_IN_BYTES","Unmapped","VirtualAddress","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","address_at_offset","address_at_offset","align_up","align_up","backward_checked","backward_checked","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","cmp","cmp","cmp","cmp","cmp","cmp","cmp","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains_address","contains_address","contains_range","contains_range","default","default","deref","deref","deref_mut","deref_mut","empty","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_phys_addr","from_virt_addr","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","new","new","new","new","new_canonical","new_canonical","number","number","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","to_extended","to_extended","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","zero","zero"],"q":[[0,"memory_structs"],[298,"core::option"],[299,"core::clone"],[300,"core::cmp"],[301,"core::cmp"],[302,"core::cmp"],[303,"core::fmt"],[304,"core::hash"],[305,"core::cmp"],[306,"core::any"]],"d":["Memory is allocated and can be used for a mapping","A FrameRange that implements Copy.","A PageRange that implements Copy.","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","","","Memory is mapped (PTE has been set)","Enum used to indicate the size of a page or frame.","The possible states that a range of exclusively-owned …","","","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A physical memory address, which is a usize under the hood.","","","Memory has been unmapped (PTE has been cleared)","A virtual memory address, which is a usize under the hood.","","","","","","","","","","","","","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","","","","","","","Creates a PageRange that will always yield None when …","Creates a FrameRange that will always yield None when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","","","","","","","","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the number of Pages covered by this iterator.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","","","","","","","","","","","","","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0."],"i":[21,0,0,0,0,21,23,23,21,0,0,5,23,0,0,0,0,0,0,0,5,5,21,0,1,1,3,3,4,6,1,1,3,3,4,6,8,10,4,6,4,6,1,3,1,3,1,3,1,3,1,3,1,3,23,11,12,13,21,1,3,4,6,8,15,10,16,23,11,12,13,21,1,3,4,6,8,15,10,16,11,12,13,1,3,4,6,8,15,10,16,11,12,13,1,3,4,6,4,6,4,6,4,6,8,10,8,10,1,3,8,10,8,10,8,10,11,12,13,21,1,3,4,6,8,10,23,11,12,13,1,1,1,1,1,1,1,3,3,3,3,3,3,3,4,6,8,10,4,6,3,23,11,12,13,21,1,3,4,4,4,6,6,6,8,8,8,8,15,15,10,10,10,10,16,16,10,8,1,3,23,11,12,13,21,1,1,3,3,4,6,8,15,10,16,8,10,1,3,8,10,1,3,4,6,8,10,8,10,4,4,4,4,1,4,6,11,12,13,1,3,4,6,8,10,10,8,4,6,8,10,4,6,1,1,3,3,4,6,1,1,3,3,4,6,8,10,23,11,12,13,21,1,3,4,4,4,6,6,6,8,8,8,15,10,10,10,16,23,11,12,13,21,1,3,4,6,8,15,10,16,23,11,12,13,21,1,3,4,6,8,15,10,16,1,3,1,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,1],1],[[1,2],1],[[3,2],3],[[3,3],3],[[[4,[-1]],2],[[4,[-1]]],5],[[[6,[-1]],2],[[6,[-1]]],5],[[1,1],7],[[1,2],7],[[3,2],7],[[3,3],7],[[[4,[-1]],2],7,5],[[[6,[-1]],2],7,5],[[[8,[-1]],2],[[9,[1]]],5],[[[10,[-1]],2],[[9,[3]]],5],[[[4,[11]],2],4],[[[6,[11]],2],6],[[[4,[-1]],2],[[9,[[4,[-1]]]]],5],[[[6,[-1]],2],[[9,[[6,[-1]]]]],5],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,11],[12,12],[13,13],[1,1],[3,3],[[[4,[-1]]],[[4,[-1]]],[14,5]],[[[6,[-1]]],[[6,[-1]]],[14,5]],[[[8,[-1]]],[[8,[-1]]],[14,5]],[[[15,[-1]]],[[15,[-1]]],[14,5]],[[[10,[-1]]],[[10,[-1]]],[14,5]],[[[16,[-1]]],[[16,[-1]]],[14,5]],[[11,11],17],[[12,12],17],[[13,13],17],[[1,1],17],[[3,3],17],[[[4,[-1]],[4,[-1]]],17,[18,5]],[[[6,[-1]],[6,[-1]]],17,[18,5]],[1,4],[3,6],[1,[[4,[13]]]],[3,[[6,[13]]]],[1,[[4,[12]]]],[3,[[6,[12]]]],[[[8,[-1]],1],19,5],[[[10,[-1]],3],19,5],[[[8,[-1]],[8,[-1]]],19,5],[[[10,[-1]],[10,[-1]]],19,5],[[],1],[[],3],[[[8,[-1]]],[[20,[[4,[-1]]]]],5],[[[10,[-1]]],[[20,[[6,[-1]]]]],5],[8,[[20,[4]]]],[10,[[20,[6]]]],[[],[[8,[11]]]],[[],[[10,[11]]]],[[11,11],19],[[12,12],19],[[13,13],19],[[21,21],19],[[1,1],19],[[3,3],19],[[[4,[-1]],[4,[-1]]],19,[22,5]],[[[6,[-1]],[6,[-1]]],19,[22,5]],[[[8,[-1]],[8,[-1]]],19,[22,5]],[[[10,[-1]],[10,[-1]]],19,[22,5]],[[23,24],25],[[11,24],25],[[12,24],25],[[13,24],25],[[1,24],25],[[1,24],25],[[1,24],25],[[1,24],25],[[1,24],25],[[1,24],25],[[1,24],25],[[3,24],25],[[3,24],25],[[3,24],25],[[3,24],25],[[3,24],25],[[3,24],25],[[3,24],25],[[[4,[-1]],24],25,5],[[[6,[-1]],24],25,5],[[[8,[-1]],24],25,5],[[[10,[-1]],24],25,5],[[[4,[-1]],2],[[9,[[4,[-1]]]]],5],[[[6,[-1]],2],[[9,[[6,[-1]]]]],5],[3,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[4,[12]]],[[4,[11]]]],[-1,-1,[]],[[[4,[13]]],[[4,[11]]]],[[[6,[13]]],[[6,[11]]]],[[[6,[12]]],[[6,[11]]]],[-1,-1,[]],[[[15,[-1]]],[[8,[-1]]],[5,26]],[-1,-1,[]],[[[8,[12]]],[[8,[11]]]],[[[8,[13]]],[[8,[11]]]],[[[8,[-1]]],[[15,[-1]]],[5,26]],[-1,-1,[]],[-1,-1,[]],[[[10,[12]]],[[10,[11]]]],[[[10,[13]]],[[10,[11]]]],[[[16,[-1]]],[[10,[-1]]],[5,26]],[-1,-1,[]],[[[10,[-1]]],[[16,[-1]]],[5,26]],[[3,2],10],[[1,2],8],[[1,-1],7,27],[[3,-1],7,27],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[3,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[8,[-1]]],[],5],[[[10,[-1]]],[],5],[2,[[9,[1]]]],[2,[[9,[3]]]],[[[4,[-1]],[4,[-1]]],[[8,[-1]]],5],[[[6,[-1]],[6,[-1]]],[[10,[-1]]],5],[2,1],[2,3],[[[4,[-1]]],2,5],[[[6,[-1]]],2,5],[[[8,[-1]],1],[[9,[2]]],5],[[[10,[-1]],3],[[9,[2]]],5],[[[8,[-1]],[8,[-1]]],[[9,[[8,[-1]]]]],[5,26]],[[[10,[-1]],[10,[-1]]],[[9,[[10,[-1]]]]],[5,26]],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[1,2],[[[4,[-1]]],23,5],[[[6,[-1]]],23,5],[[11,11],[[9,[17]]]],[[12,12],[[9,[17]]]],[[13,13],[[9,[17]]]],[[1,1],[[9,[17]]]],[[3,3],[[9,[17]]]],[[[4,[-1]],[4,[-1]]],[[9,[17]]],[28,5]],[[[6,[-1]],[6,[-1]]],[[9,[17]]],[28,5]],[[[8,[-1]]],2,5],[[[10,[-1]]],2,5],[[[10,[-1]]],2,5],[[[8,[-1]]],2,5],[[[4,[-1]]],1,5],[[[6,[-1]]],3,5],[[[8,[-1]]],1,5],[[[10,[-1]]],3,5],[[[4,[-1]],[4,[-1]]],[[9,[2]]],5],[[[6,[-1]],[6,[-1]]],[[9,[2]]],5],[[1,2],1],[[1,1],1],[[3,2],3],[[3,3],3],[[[4,[-1]],2],[[4,[-1]]],5],[[[6,[-1]],2],[[6,[-1]]],5],[[1,2],7],[[1,1],7],[[3,3],7],[[3,2],7],[[[4,[-1]],2],7,5],[[[6,[-1]],2],7,5],[[[8,[-1]],[4,[-1]]],[[8,[-1]]],5],[[[10,[-1]],[6,[-1]]],[[10,[-1]]],5],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[4,[[29,[[4,[13]],30]]]],[-1,[[29,[-2]]],[],[]],[4,[[29,[[4,[12]],30]]]],[6,[[29,[[6,[12]],30]]]],[6,[[29,[[6,[13]],30]]]],[-1,[[29,[-2]]],[],[]],[8,[[29,[[8,[13]],30]]]],[-1,[[29,[-2]]],[],[]],[8,[[29,[[8,[12]],30]]]],[-1,[[29,[-2]]],[],[]],[10,[[29,[[10,[12]],30]]]],[-1,[[29,[-2]]],[],[]],[10,[[29,[[10,[13]],30]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[1,2],[3,2],[[],1],[[],3]],"c":[],"p":[[3,"VirtualAddress",0],[15,"usize"],[3,"PhysicalAddress",0],[3,"Page",0],[8,"PageSize",0],[3,"Frame",0],[15,"tuple"],[3,"PageRange",0],[4,"Option",298],[3,"FrameRange",0],[3,"Page4K",0],[3,"Page2M",0],[3,"Page1G",0],[8,"Clone",299],[3,"CopyablePageRange",0],[3,"CopyableFrameRange",0],[4,"Ordering",300],[8,"Ord",300],[15,"bool"],[3,"RangeInclusive",301],[4,"MemoryState",0],[8,"PartialEq",300],[4,"MemChunkSize",0],[3,"Formatter",302],[6,"Result",302],[8,"Copy",303],[8,"Hasher",304],[8,"PartialOrd",300],[4,"Result",305],[15,"str"],[3,"TypeId",306]],"b":[[24,"impl-Add-for-VirtualAddress"],[25,"impl-Add%3Cusize%3E-for-VirtualAddress"],[26,"impl-Add%3Cusize%3E-for-PhysicalAddress"],[27,"impl-Add-for-PhysicalAddress"],[30,"impl-AddAssign-for-VirtualAddress"],[31,"impl-AddAssign%3Cusize%3E-for-VirtualAddress"],[32,"impl-AddAssign%3Cusize%3E-for-PhysicalAddress"],[33,"impl-AddAssign-for-PhysicalAddress"],[130,"impl-Display-for-VirtualAddress"],[131,"impl-UpperHex-for-VirtualAddress"],[132,"impl-Octal-for-VirtualAddress"],[133,"impl-Binary-for-VirtualAddress"],[134,"impl-Debug-for-VirtualAddress"],[135,"impl-Pointer-for-VirtualAddress"],[136,"impl-LowerHex-for-VirtualAddress"],[137,"impl-Debug-for-PhysicalAddress"],[138,"impl-UpperHex-for-PhysicalAddress"],[139,"impl-Display-for-PhysicalAddress"],[140,"impl-Binary-for-PhysicalAddress"],[141,"impl-Pointer-for-PhysicalAddress"],[142,"impl-Octal-for-PhysicalAddress"],[143,"impl-LowerHex-for-PhysicalAddress"],[158,"impl-From%3CPage%3CPage2M%3E%3E-for-Page"],[160,"impl-From%3CPage%3CPage1G%3E%3E-for-Page"],[161,"impl-From%3CFrame%3CPage1G%3E%3E-for-Frame"],[162,"impl-From%3CFrame%3CPage2M%3E%3E-for-Frame"],[164,"impl-From%3CCopyablePageRange%3CP%3E%3E-for-PageRange%3CP%3E"],[166,"impl-From%3CPageRange%3CPage2M%3E%3E-for-PageRange"],[167,"impl-From%3CPageRange%3CPage1G%3E%3E-for-PageRange"],[171,"impl-From%3CFrameRange%3CPage2M%3E%3E-for-FrameRange"],[172,"impl-From%3CFrameRange%3CPage1G%3E%3E-for-FrameRange"],[173,"impl-From%3CCopyableFrameRange%3CP%3E%3E-for-FrameRange%3CP%3E"],[233,"impl-Sub%3Cusize%3E-for-VirtualAddress"],[234,"impl-Sub-for-VirtualAddress"],[235,"impl-Sub%3Cusize%3E-for-PhysicalAddress"],[236,"impl-Sub-for-PhysicalAddress"],[239,"impl-SubAssign%3Cusize%3E-for-VirtualAddress"],[240,"impl-SubAssign-for-VirtualAddress"],[241,"impl-SubAssign-for-PhysicalAddress"],[242,"impl-SubAssign%3Cusize%3E-for-PhysicalAddress"],[254,"impl-TryFrom%3CPage%3E-for-Page%3CPage1G%3E"],[256,"impl-TryFrom%3CPage%3E-for-Page%3CPage2M%3E"],[257,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage2M%3E"],[258,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage1G%3E"],[260,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage1G%3E"],[262,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage2M%3E"],[264,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage2M%3E"],[266,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage1G%3E"]],"a":{"next_multiple_of":[38,39]}},\ +"memory_structs":{"doc":"This crate contains basic types used for memory management.","t":"NDDNNNSSSSNEESNDDDDDIDSSNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Allocated","Frame","FrameRange","Free","Huge1G","Huge2M","MAX","MAX","MIN","MIN","Mapped","MemChunkSize","MemoryState","NUM_4K_PAGES","Normal4K","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PhysicalAddress","SIZE","SIZE_IN_BYTES","Unmapped","VirtualAddress","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","address_at_offset","address_at_offset","align_up","align_up","backward_checked","backward_checked","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","cmp","cmp","cmp","cmp","cmp","cmp","cmp","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains_address","contains_address","contains_range","contains_range","default","default","default","default","deref","deref","deref_mut","deref_mut","empty","empty","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_1g_into_generic","from_1g_into_generic","from_2m_into_generic","from_2m_into_generic","from_4k_into_generic","from_4k_into_generic","from_phys_addr","from_virt_addr","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into","into_4k_frames","into_4k_pages","into_iter","into_iter","into_iter","into_iter","new","new","new","new","new_canonical","new_canonical","number","number","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","start","start","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","to_extended","to_extended","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","zero","zero"],"q":[[0,"memory_structs"],[296,"core::option"],[297,"core::clone"],[298,"core::cmp"],[299,"core::cmp"],[300,"core::cmp"],[301,"core::fmt"],[302,"core::cmp"],[303,"core::any"]],"d":["Memory is allocated and can be used for a mapping","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","","","The maximum (largest) valid value a Page can have.","The maximum (largest) valid value a Frame can have.","The minimum (smallest) valid value a Page can have.","The minimum (smallest) valid value a Frame can have.","Memory is mapped (PTE has been set)","Enum used to indicate the size of a page or frame.","The possible states that a range of exclusively-owned …","","","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A physical memory address, which is a usize under the hood.","","","Memory has been unmapped (PTE has been cleared)","A virtual memory address, which is a usize under the hood.","","","","","","","","","","","","","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","","","","","","","","","Creates an empty PageRange that will always yield None …","Creates an empty FrameRange that will always yield None …","Returns the ending Page in this PageRange.","Returns the ending Frame in this FrameRange.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Converts a known 1G-sized Page into a Page<P> with a …","Converts a known 1G-sized Frame into a Frame<P> with a …","Converts a known 2M-sized Page into a Page<P> with a …","Converts a known 2M-sized Frame into a Frame<P> with a …","Converts a known 4K-sized Page into a Page<P> with a …","Converts a known 4K-sized Frame into a Frame<P> with a …","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Converts this range of Frames into an identical 4K-sized …","Converts this range of Pages into an identical 4K-sized …","","","","","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","","","","","","","","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the number of Pages covered by this iterator.","Returns the starting Page in this PageRange.","Returns the starting Frame in this FrameRange.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","","","","","","","","","","","","","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0."],"i":[19,0,0,19,21,21,4,6,4,6,19,0,0,5,21,0,0,0,0,0,0,0,5,5,19,0,1,1,3,3,4,6,1,1,3,3,4,6,8,10,4,6,4,6,1,3,1,3,1,3,1,3,1,3,1,3,21,11,12,13,19,1,3,4,6,8,10,21,11,12,13,19,1,3,4,6,8,10,11,12,13,1,3,4,6,8,10,11,12,13,1,3,4,6,4,6,4,6,4,6,8,10,8,10,1,3,8,10,8,10,8,10,8,10,8,10,11,12,13,19,1,3,4,6,8,10,21,11,12,13,1,1,1,1,1,1,1,3,3,3,3,3,3,3,4,6,8,10,4,6,3,21,11,12,13,19,1,3,4,4,4,6,6,6,8,8,8,10,10,10,4,6,4,6,4,6,10,8,1,3,21,11,12,13,19,1,1,3,3,4,6,8,10,10,8,8,8,10,10,1,3,8,10,1,3,4,6,8,10,8,10,4,4,4,4,1,4,6,11,12,13,1,3,4,6,8,10,10,8,8,10,4,6,8,10,4,6,1,1,3,3,4,6,1,1,3,3,4,6,8,10,21,11,12,13,19,1,3,4,4,4,6,6,6,8,8,8,10,10,10,21,11,12,13,19,1,3,4,6,8,10,21,11,12,13,19,1,3,4,6,8,10,1,3,1,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[1,1],1],[[3,3],3],[[3,2],3],[[[4,[-1]],2],[[4,[-1]]],5],[[[6,[-1]],2],[[6,[-1]]],5],[[1,1],7],[[1,2],7],[[3,2],7],[[3,3],7],[[[4,[-1]],2],7,5],[[[6,[-1]],2],7,5],[[[8,[-1]],2],[[9,[1]]],5],[[[10,[-1]],2],[[9,[3]]],5],[[[4,[11]],2],4],[[[6,[11]],2],6],[[[4,[-1]],2],[[9,[[4,[-1]]]]],5],[[[6,[-1]],2],[[9,[[6,[-1]]]]],5],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[[1,1],1],[[3,3],3],[[1,1],7],[[3,3],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,11],[12,12],[13,13],[1,1],[3,3],[[[4,[-1]]],[[4,[-1]]],[14,5]],[[[6,[-1]]],[[6,[-1]]],[14,5]],[[[8,[-1]]],[[8,[-1]]],[14,5]],[[[10,[-1]]],[[10,[-1]]],[14,5]],[[11,11],15],[[12,12],15],[[13,13],15],[[1,1],15],[[3,3],15],[[[4,[-1]],[4,[-1]]],15,[16,5]],[[[6,[-1]],[6,[-1]]],15,[16,5]],[1,4],[3,6],[1,[[4,[13]]]],[3,[[6,[13]]]],[1,[[4,[12]]]],[3,[[6,[12]]]],[[[8,[-1]],1],17,5],[[[10,[-1]],3],17,5],[[[8,[-1]],[8,[-1]]],17,5],[[[10,[-1]],[10,[-1]]],17,5],[[],1],[[],3],[[],[[8,[-1]]],5],[[],[[10,[-1]]],5],[[[8,[-1]]],[[18,[[4,[-1]]]]],5],[[[10,[-1]]],[[18,[[6,[-1]]]]],5],[8,[[18,[4]]]],[10,[[18,[6]]]],[[],[[8,[-1]]],5],[[],[[10,[-1]]],5],[[[8,[-1]]],[[4,[-1]]],5],[[[10,[-1]]],[[6,[-1]]],5],[[11,11],17],[[12,12],17],[[13,13],17],[[19,19],17],[[1,1],17],[[3,3],17],[[[4,[-1]],[4,[-1]]],17,[20,5]],[[[6,[-1]],[6,[-1]]],17,[20,5]],[[[8,[-1]],[8,[-1]]],17,[20,5]],[[[10,[-1]],[10,[-1]]],17,[20,5]],[[21,22],23],[[11,22],23],[[12,22],23],[[13,22],23],[[1,22],23],[[1,22],23],[[1,22],23],[[1,22],23],[[1,22],23],[[1,22],23],[[1,22],23],[[3,22],23],[[3,22],23],[[3,22],23],[[3,22],23],[[3,22],23],[[3,22],23],[[3,22],23],[[[4,[-1]],22],23,5],[[[6,[-1]],22],23,5],[[[8,[-1]],22],23,5],[[[10,[-1]],22],23,5],[[[4,[-1]],2],[[9,[[4,[-1]]]]],5],[[[6,[-1]],2],[[9,[[6,[-1]]]]],5],[3,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[4,[12]]],[[4,[11]]]],[-1,-1,[]],[[[4,[13]]],[[4,[11]]]],[-1,-1,[]],[[[6,[12]]],[[6,[11]]]],[[[6,[13]]],[[6,[11]]]],[[[8,[12]]],[[8,[11]]]],[[[8,[13]]],[[8,[11]]]],[-1,-1,[]],[-1,-1,[]],[[[10,[12]]],[[10,[11]]]],[[[10,[13]]],[[10,[11]]]],[[[4,[13]]],[[4,[-1]]],5],[[[6,[13]]],[[6,[-1]]],5],[[[4,[12]]],[[4,[-1]]],5],[[[6,[12]]],[[6,[-1]]],5],[[[4,[11]]],[[4,[-1]]],5],[[[6,[11]]],[[6,[-1]]],5],[[3,2],10],[[1,2],8],[[1,-1],7,24],[[3,-1],7,24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[3,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[10,[-1]]],[[10,[11]]],5],[[[8,[-1]]],[[8,[11]]],5],[[[8,[-1]]],[],5],[[[8,[-1]]],[],5],[[[10,[-1]]],[],5],[[[10,[-1]]],[],5],[2,[[9,[1]]]],[2,[[9,[3]]]],[[[4,[-1]],[4,[-1]]],[[8,[-1]]],5],[[[6,[-1]],[6,[-1]]],[[10,[-1]]],5],[2,1],[2,3],[[[4,[-1]]],2,5],[[[6,[-1]]],2,5],[[[8,[-1]],1],[[9,[2]]],5],[[[10,[-1]],3],[[9,[2]]],5],[[[8,[-1]],[8,[-1]]],[[9,[[8,[-1]]]]],5],[[[10,[-1]],[10,[-1]]],[[9,[[10,[-1]]]]],5],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[[[4,[-1]]],2,5],[1,2],[[[4,[-1]]],21,5],[[[6,[-1]]],21,5],[[11,11],[[9,[15]]]],[[12,12],[[9,[15]]]],[[13,13],[[9,[15]]]],[[1,1],[[9,[15]]]],[[3,3],[[9,[15]]]],[[[4,[-1]],[4,[-1]]],[[9,[15]]],[25,5]],[[[6,[-1]],[6,[-1]]],[[9,[15]]],[25,5]],[[[8,[-1]]],2,5],[[[10,[-1]]],2,5],[[[10,[-1]]],2,5],[[[8,[-1]]],2,5],[[[8,[-1]]],[[4,[-1]]],5],[[[10,[-1]]],[[6,[-1]]],5],[[[4,[-1]]],1,5],[[[6,[-1]]],3,5],[[[8,[-1]]],1,5],[[[10,[-1]]],3,5],[[[4,[-1]],[4,[-1]]],[[9,[2]]],5],[[[6,[-1]],[6,[-1]]],[[9,[2]]],5],[[1,2],1],[[1,1],1],[[3,2],3],[[3,3],3],[[[4,[-1]],2],[[4,[-1]]],5],[[[6,[-1]],2],[[6,[-1]]],5],[[1,1],7],[[1,2],7],[[3,2],7],[[3,3],7],[[[4,[-1]],2],7,5],[[[6,[-1]],2],7,5],[[[8,[-1]],[4,[-1]]],[[8,[-1]]],5],[[[10,[-1]],[6,[-1]]],[[10,[-1]]],5],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[4,[[26,[[4,[13]],27]]]],[4,[[26,[[4,[12]],27]]]],[-1,[[26,[-2]]],[],[]],[6,[[26,[[6,[13]],27]]]],[6,[[26,[[6,[12]],27]]]],[-1,[[26,[-2]]],[],[]],[8,[[26,[[8,[13]],27]]]],[8,[[26,[[8,[12]],27]]]],[-1,[[26,[-2]]],[],[]],[10,[[26,[[10,[13]],27]]]],[10,[[26,[[10,[12]],27]]]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,[[26,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[1,2],[3,2],[[],1],[[],3]],"c":[],"p":[[3,"VirtualAddress",0],[15,"usize"],[3,"PhysicalAddress",0],[3,"Page",0],[8,"PageSize",0],[3,"Frame",0],[15,"tuple"],[3,"PageRange",0],[4,"Option",296],[3,"FrameRange",0],[3,"Page4K",0],[3,"Page2M",0],[3,"Page1G",0],[8,"Clone",297],[4,"Ordering",298],[8,"Ord",298],[15,"bool"],[3,"RangeInclusive",299],[4,"MemoryState",0],[8,"PartialEq",298],[4,"MemChunkSize",0],[3,"Formatter",300],[6,"Result",300],[8,"Hasher",301],[8,"PartialOrd",298],[4,"Result",302],[15,"str"],[3,"TypeId",303]],"b":[[26,"impl-Add%3Cusize%3E-for-VirtualAddress"],[27,"impl-Add-for-VirtualAddress"],[28,"impl-Add-for-PhysicalAddress"],[29,"impl-Add%3Cusize%3E-for-PhysicalAddress"],[32,"impl-AddAssign-for-VirtualAddress"],[33,"impl-AddAssign%3Cusize%3E-for-VirtualAddress"],[34,"impl-AddAssign%3Cusize%3E-for-PhysicalAddress"],[35,"impl-AddAssign-for-PhysicalAddress"],[130,"impl-Pointer-for-VirtualAddress"],[131,"impl-Display-for-VirtualAddress"],[132,"impl-LowerHex-for-VirtualAddress"],[133,"impl-Octal-for-VirtualAddress"],[134,"impl-Debug-for-VirtualAddress"],[135,"impl-UpperHex-for-VirtualAddress"],[136,"impl-Binary-for-VirtualAddress"],[137,"impl-Display-for-PhysicalAddress"],[138,"impl-Binary-for-PhysicalAddress"],[139,"impl-UpperHex-for-PhysicalAddress"],[140,"impl-Debug-for-PhysicalAddress"],[141,"impl-Octal-for-PhysicalAddress"],[142,"impl-Pointer-for-PhysicalAddress"],[143,"impl-LowerHex-for-PhysicalAddress"],[158,"impl-From%3CPage%3CPage2M%3E%3E-for-Page"],[160,"impl-From%3CPage%3CPage1G%3E%3E-for-Page"],[162,"impl-From%3CFrame%3CPage2M%3E%3E-for-Frame"],[163,"impl-From%3CFrame%3CPage1G%3E%3E-for-Frame"],[164,"impl-From%3CPageRange%3CPage2M%3E%3E-for-PageRange"],[165,"impl-From%3CPageRange%3CPage1G%3E%3E-for-PageRange"],[168,"impl-From%3CFrameRange%3CPage2M%3E%3E-for-FrameRange"],[169,"impl-From%3CFrameRange%3CPage1G%3E%3E-for-FrameRange"],[195,"impl-IntoIterator-for-PageRange%3CP%3E"],[196,"impl-IntoIterator-for-%26PageRange%3CP%3E"],[197,"impl-IntoIterator-for-%26FrameRange%3CP%3E"],[198,"impl-IntoIterator-for-FrameRange%3CP%3E"],[237,"impl-Sub%3Cusize%3E-for-VirtualAddress"],[238,"impl-Sub-for-VirtualAddress"],[239,"impl-Sub%3Cusize%3E-for-PhysicalAddress"],[240,"impl-Sub-for-PhysicalAddress"],[243,"impl-SubAssign-for-VirtualAddress"],[244,"impl-SubAssign%3Cusize%3E-for-VirtualAddress"],[245,"impl-SubAssign%3Cusize%3E-for-PhysicalAddress"],[246,"impl-SubAssign-for-PhysicalAddress"],[258,"impl-TryFrom%3CPage%3E-for-Page%3CPage1G%3E"],[259,"impl-TryFrom%3CPage%3E-for-Page%3CPage2M%3E"],[261,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage1G%3E"],[262,"impl-TryFrom%3CFrame%3E-for-Frame%3CPage2M%3E"],[264,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage1G%3E"],[265,"impl-TryFrom%3CPageRange%3E-for-PageRange%3CPage2M%3E"],[267,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage1G%3E"],[268,"impl-TryFrom%3CFrameRange%3E-for-FrameRange%3CPage2M%3E"]],"a":{"next_multiple_of":[40,41]}},\ "memory_x86_64":{"doc":"This crate implements the virtual memory subsystem …","t":"QDIIQQQQIQQDKLLLLMKMFKMLLKLLFFMLLLLLKKKKKKKKMKKKKKMMFFLLLLLL","n":["AdditionalReservedMemoryRegions","AggregatedSectionMemoryBounds","BootInformation","ElfSection","ElfSection","ElfSections","MemoryRegion","MemoryRegions","Module","Module","Modules","SectionMemoryBounds","additional_reserved_memory_regions","borrow","borrow","borrow_mut","borrow_mut","data","elf_sections","end","find_section_memory_bounds","flags","flags","fmt","fmt","framebuffer_info","from","from","get_p4","get_vga_mem_addr","init","into","into","is_empty","is_empty","is_empty","kernel_end","len","len","len","memory_regions","modules","name","name","rodata","rsdp","stack_size","start","start","start","start","text","tlb_flush_all","tlb_flush_virt_addr","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"memory_x86_64"],[60,"core::result"],[61,"core::option"],[62,"core::ops::function"],[63,"boot_info"],[64,"core::fmt"],[65,"core::fmt"],[66,"pte_flags"],[67,"memory_structs"]],"d":["","The address bounds and flags of the initial kernel …","","","","","","","","","","The address bounds and mapping flags of a section’s …","Returns additional reserved memory regions that aren’t …","","","","","","Returns the kernel’s ELF sections.","The ending virtual address and physical address.","Finds the addresses in memory of the main kernel sections, …","Returns the section’s flags.","The page table entry flags that should be used for mapping …","","","Returns information about the graphical framebuffer, if …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the current top-level page table address.","Gets the physical memory occupied by vga.","","Calls U::from(self).","Calls U::from(self).","Returns whether the section is empty.","Returns whether the module is empty.","Returns whether the boot information is empty.","Returns the end of the kernel’s image in memory.","Returns the section’s length in memory, as opposed to …","Returns the module’s length.","Returns the boot information’s length.","Returns memory regions describing the physical memory.","Returns the modules found in the kernel image.","Returns the section’s name.","Returns the module’s name.","","Returns the RSDP if it was provided by the bootloader.","Returns the stack size in bytes.","Returns the section’s starting virtual address.","Returns the module’s starting physical address.","Returns the boot information’s starting virtual address.","The starting virtual address and physical address.","","Flushes the whole TLB. ","Flushes the specific virtual address in TLB. ","","","","","",""],"i":[8,0,0,0,8,8,8,8,0,8,8,0,8,4,3,4,3,3,8,4,0,20,4,4,3,8,4,3,0,0,3,4,3,20,21,8,8,20,21,8,8,8,20,21,3,8,8,20,21,8,4,3,0,0,4,3,4,3,4,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[-1,[[2,[1]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[2,[1]]],[]],0,[[-1,-2],[[2,[[7,[3,[6,[[5,[4]]]]]],1]]],8,9],[-1,10,[]],0,[[4,11],12],[[3,11],12],[-1,[[5,[13]]],[]],[-1,-1,[]],[-1,-1,[]],[[],14],[[],[[2,[[7,[14,15,16]],1]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,[[2,[18,1]]],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,[[2,[1]]],[]],[-1,[],[]],[-1,1,[]],[-1,[[2,[1,1]]],[]],0,[-1,[[5,[14]]],[]],[-1,[[2,[15,1]]],[]],[-1,18,[]],[-1,14,[]],[-1,[[5,[18]]],[]],0,0,[[],7],[18,7],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,19,[]],[-1,19,[]]],"c":[],"p":[[15,"str"],[4,"Result",60],[3,"AggregatedSectionMemoryBounds",0],[3,"SectionMemoryBounds",0],[4,"Option",61],[15,"array"],[15,"tuple"],[8,"BootInformation",0],[8,"Fn",62],[3,"ElfSectionFlags",63],[3,"Formatter",64],[6,"Result",64],[3,"FramebufferInfo",63],[3,"PhysicalAddress",65],[15,"usize"],[3,"PteFlags",66],[15,"bool"],[3,"VirtualAddress",65],[3,"TypeId",67],[8,"ElfSection",0],[8,"Module",0]],"b":[]},\ "mlx5":{"doc":"A mlx5 driver for a ConnectX-5 100GbE Network Interface …","t":"RRDRLLLFLLLLLLLL","n":["CONNECTX5_DEV","CONNECTX5_EX_DEV","ConnectX5Nic","MLX_VEND","borrow","borrow_mut","from","get_mlx5_nic","init","into","mac_address","send","send_fastpath","try_from","try_into","type_id"],"q":[[0,"mlx5"],[16,"sync_irq"],[17,"core::option"],[18,"pci"],[19,"core::result"],[20,"nic_buffers"],[21,"memory_structs"],[22,"core::any"]],"d":["Device ID for the ConnectX-5 NIC","Device ID for the ConnectX-5-EX NIC","Struct representing a ConnectX-5 network interface card.","Vendor ID for Mellanox","","","Returns the argument unchanged.","Returns a reference to the NIC wrapped in a IrqSafeMutex, …","Initializes the new ConnectX-5 network interface card that …","Calls U::from(self).","Returns the MAC address of the physical function ","Adds a packet to be sent to the transmit queue and returns …","Adds a packet to be sent to the transmit queue.","","",""],"i":[0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],[[],[[3,[[2,[1]]]]]],[[4,5,5,6],[[8,[[2,[1]],7]]]],[-1,-2,[],[]],[1,[[10,[9]]]],[[1,11],[[8,[12,7]]]],[[1,13,[14,[9]]],12],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,15,[]]],"c":[],"p":[[3,"ConnectX5Nic",0],[6,"IrqSafeMutex",16],[4,"Option",17],[3,"PciDevice",18],[15,"usize"],[15,"u16"],[15,"str"],[4,"Result",19],[15,"u8"],[15,"array"],[3,"TransmitBuffer",20],[15,"tuple"],[3,"PhysicalAddress",21],[15,"slice"],[3,"TypeId",22]],"b":[]},\ "mlx_ethernet":{"doc":"This crate defines the layout of memory objects that make …","t":"DDDDDDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAAALLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLFAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLANENNNNNNNNNNNNNNNNNNNNNEDDDENEDDEEENNNNNNNNNNNNNNNNNDENNNNNNNNNNNNNNNNENNNNNNNNNNNNNNEENNNENNNNENNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLNDENNNLLLLLLLLLLLLLLLLLLLNNDENLLLLLLLLLLLLLLLLLLLNNNDELLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Cqn","Eqn","FgId","FtId","Lkey","Pd","Rqn","Sqn","Td","Tirn","Tisn","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","command_queue","completion_queue","event_queue","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","initialization_segment","into","into","into","into","into","into","into","into","into","into","into","log_page_size","receive_queue","send_queue","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","work_queue","AccessRegister","AccessRegisterOpMod","AllocPd","AllocTransportDomain","AllocUar","AllocationFail","AllocationSuccess","BadBlockNumber","BadCommandType","BadIndex","BadInputLen","BadInputPointer","BadOp","BadOutputLen","BadOutputPointer","BadParam","BadPkt","BadResState","BadResource","BadResourceState","BadSize","BadSysState","BootPages","CmdState","Command","CommandBuilder","CommandCompletionStatus","CommandDeliveryStatus","CommandNotCompleted","CommandOpcode","CommandQueue","CommandQueueEntry","CommandQueueError","CommandReturnStatus","CommandTransportType","Completed","CreateCq","CreateEq","CreateFlowGroup","CreateFlowTable","CreateRq","CreateSq","CreateTir","CreateTis","EnableHca","EswVport","Ethernet","EthernetOffloadCapabilities","EthernetOffloadCapabilities","ExceedLim","GeneralDeviceCapabilities","GeneralDeviceCapabilities","HCACapabilities","HcaPortType","HcaReturnPages","IB","IncorrectCommandOpcode","InitHca","InitPages","Initialized","InputLenErr","InternalErr","InternalError","InvalidCommandDeliveryStatus","InvalidCommandOpcode","InvalidCommandReturnStatus","InvalidMailboxOffset","InvalidPortType","InvalidSQState","ManagePages","ManagePagesOpMod","MissingInput","MissingInputPages","ModifyNicVportContext","ModifyRq","ModifySq","NoCommandEntryAvailable","NoResources","NotImplemented","OK","OutputLenErr","PCIe","PageAllocationFailed","Posted","QueryHcaCap","QueryHcaCapCurrentOpMod","QueryHcaCapMaxOpMod","QueryIssi","QueryNicVportContext","QueryPages","QueryPagesOpMod","QueryRq","QuerySpecialContexts","QuerySq","QueryVportState","QueryVportStateOpMod","Read","RegularPages","ReservedNotZero","ResourceBusy","SetDriverVersion","SetFlowTableEntry","SetFlowTableRoot","SetIssi","SignatureErr","Success","TokenErr","UnimplementedOpcode","Uplink","VnicVport","Write","allocated_pages","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","collapsed_cq","complete","cqn","create","create_and_execute_command","db_page","default","eq","eq","eqn","flow_group_id","flow_table_id","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_command_status","get_cq_number","get_delivery_status","get_device_capabilities","get_eq_number","get_flow_group_id","get_flow_table_id","get_max_mtu","get_port_type","get_protection_domain","get_query_issi_command_output","get_query_pages_command_output","get_receive_queue_number","get_reserved_lkey","get_return_status","get_send_queue_number","get_sq_state","get_tir_context_number","get_tis_context_number","get_transport_domain","get_uar","get_vport_mac_address","get_vport_state","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","mtu","new","opmod","owned_by_hw","pd","post","queue_size","rqn","sqn","td","tirn","tisn","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","uar","wait_for_command_completion","CompletionQueue","CompletionQueueDoorbellRecord","CompletionQueueEntry","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","check_packet_transmission","default","default","dump","dump","fmt","from","from","from","init","init","into","into","into","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","EventQueue","EventQueueEntry","borrow","borrow","borrow_mut","borrow_mut","default","dump","dump","fmt","from","from","init","init","into","into","try_from","try_from","try_into","try_into","type_id","type_id","Abort","InitializationSegment","InitializingState","NotAllowed","WaitingPermetion","WaitingResources","borrow","borrow","borrow_mut","borrow_mut","cmdq_entry_stride","device_is_initializing","fmt","from","from","into","into","num_cmdq_entries","set_physical_address_of_cmdq","try_from","try_from","try_into","try_into","type_id","type_id","Error","Ready","ReceiveQueue","ReceiveQueueState","Reset","borrow","borrow","borrow_mut","borrow_mut","create","fmt","from","from","into","into","refill","try_from","try_from","try_from","try_from_primitive","try_into","try_into","type_id","type_id","Error","Ready","Reset","SendQueue","SendQueueState","borrow","borrow","borrow_mut","borrow_mut","create","dump","fmt","from","from","into","into","nop","send","try_from","try_from","try_from","try_from_primitive","try_into","try_into","type_id","type_id","DoorbellRecord","WorkQueueEntryReceive","WorkQueueEntrySend","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","default","default","default","dump","dump","from","from","from","init","init","into","into","into","nop","send","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_buffer_info"],"q":[[0,"mlx_ethernet"],[140,"mlx_ethernet::command_queue"],[461,"mlx_ethernet::completion_queue"],[493,"mlx_ethernet::event_queue"],[515,"mlx_ethernet::initialization_segment"],[540,"mlx_ethernet::receive_queue"],[564,"mlx_ethernet::send_queue"],[590,"mlx_ethernet::work_queue"],[624,"core::fmt"],[625,"core::fmt"],[626,"core::any"],[627,"memory_structs"],[628,"alloc::vec"],[629,"memory::paging::mapper"],[630,"memory::paging::mapper"],[631,"memory::paging::mapper"],[632,"mpmc"]],"d":["completion queue number","event queue number","flow group id","flow table id","","protection domain","receive queue number","send queue number","transport domain","transport interface receive number","transport interface send number","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Defines the Command Queue that is used to pass commands …","Completion Queues (CQ) are circular buffers used by the …","Event Queues (EQ) are circular buffers used by the HCA to …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","This module defines the layout of the initialization …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Find the page size of the given num_bytes in units of 4KiB …","The Receive Queue (RQ) object holds the descriptor ring …","The Send Queue (SQ) object holds the descriptor ring used …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The Work Queue (WQ) contains a contiguous memory buffer …","","Possible values of the opcode modifer when the opcode is …","","","","","","","","","","","","","","","","","","","","","","The possible states a command can be in as it is updated …","A struct representing a Command Queue Entry in the Command …","Struct that makes it easier to pass the variety of …","","Return codes written by HW in the delivery status field of …","Trying to access the command entry before HW is done …","Command opcode written by SW in opcode field of the input …","A buffer of fixed-size entries that is used to pass …","Layout of a command passed to the NIC. The fields include …","Possible reasons for failure when executing a command","Command status written by HW in status field of the output …","Type of transport that carries the command.","The command has been processed by HW and output is ready …","","","","","","","","","","","","","","","","","The HCA capabilities are stored in this struct after being …","Possible values of the port type field returned when …","","Infiniband","Opcode value in the command entry is not what was expected","","","Command entries have been filled, but it is still owned by …","","","","Delivery status in the command entry is not a valid value","Opcode in the command entry is not a valid value","Return status in the command entry is not a valid value","Offset in a page is too large to map a …","The returned port type is not a valid value","The returned state of the SQ is invalid","","Possible values of the opcode modifer when the opcode is …","Any other input is not passed to a command that requires …","Allocated pages are not passed to a command that requires …","","","","All command entries are currently being used","","Some function has not been implemented for the given opcode","","","","A call to create a MappedPages failed","The command has been issued to the HW by ringing the …","","Possible values of the opcode modifer when the opcode is …","Possible values of the opcode modifer when the opcode is …","","","","Possible values of the opcode modifer when the opcode is …","","","","","Possible values of the opcode modifer when the opcode is …","","","","","","","","","","","","Initializing a comand entry for the given opcode has not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Polls a completion bit until the command has been …","","Create a command queue object.","Find an command queue entry that is not in use","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the status of command delivery. This only informs …","Get the device capabilities, which is the output of the …","","","","Get the maximum value the MTU can be set to, which is the …","Get the number of pages requested by the NIC, which is the …","Get the protection domain number, which is the output of …","Get the current ISSI version and the supported ISSI …","Get the number of pages requested by the NIC, which is the …","","Get the value of the reserved Lkey for Base Memory …","Returns the status of command execution. A None returned …","","","","","Get the transport domain number, which is the output of …","Get the User Access Region (UAR) number, which is the …","Get the port mac address, which is the output of the …","Get the Vport state in the format (max_tx_speed, …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Returns true if the command is currently under the …","","Posts an initialized command by ringing the doorbell in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Waits for ownership bit to be cleared, and then returns …","A data structure that contains the CQ buffer and is used …","A structure containing information of recently-posted CQ …","The layout of an entry in the CQ buffer.","","","","","","","Checks if a packet is transmitted by comparing the …","","","Prints out all entries in the CQ","Prints out the fields of a CQE in the format used by other …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Creates a completion queue by mapping the buffer as a …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","A data structure that contains the EQ buffer and is used …","The layout of an entry in the EQ buffer.","","","","","","Prints out all entries in the EQ","Prints out the fields of an EQE in the format used by …","","Returns the argument unchanged.","Returns the argument unchanged.","Creates an event queue by mapping the buffer as a slice of …","","Calls U::from(self).","Calls U::from(self).","","","","","","","","The initialization segment is located at offset 0 of PCI …","The possible values of the initialization state of the …","","","","","","","","Returns the required stride of command queue entries …","Returns true if the device is still initializing, and …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Returns the maximum number of entries that can be in the …","Sets the physical address of the command queue within the …","","","","","","","","","A data structure that contains the RQ ring of descriptors …","The possible states the RQ can be in.","","","","","","Creates a RQ by mapping the buffer as a slice of …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Refills the receive queue by updating WQEs with new packet …","","","","","","","","","","","","A data structure that contains the SQ ring of descriptors …","The possible states the SQ can be in.","","","","","Creates a SQ by mapping the buffer as a slice of …","Prints out all entries in the SQ","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Perform all the steps to complete a NOP: initialize the …","Perform all the steps to send a packet: initialize the …","","","","","","","","","The layout of a doorbell record in memory. A doorbell …","WQEs are built from multiple segments. In the case of …","WQEs are built from multiple segments. In the case of Send …","","","","","","","","","","Prints out the fields of a WQE in the format used by other …","Prints out the fields of a WQE in the format used by other …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","set a WQE to an initial state","set a WQE to an initial state","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Fill the control segment of the WQE to execute a NOP.","Fill the control, ethernet and data segments of the WQE to …","","","","","","","","","","Fill the data segment of the WQE to receive packets."],"i":[0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,21,0,21,21,21,61,61,36,36,37,37,36,37,37,36,37,37,37,37,37,37,37,62,0,0,0,0,0,33,0,0,0,0,0,0,35,21,21,21,21,21,21,21,21,21,63,38,22,23,37,22,23,0,0,61,38,33,21,62,35,36,36,37,33,33,33,33,33,33,21,0,33,33,21,21,21,33,37,33,37,36,64,33,35,21,0,0,21,21,21,0,21,21,21,21,0,24,62,36,37,21,21,21,21,36,36,36,33,63,63,24,18,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,21,22,23,24,21,22,23,24,18,25,18,26,26,18,27,21,35,18,18,18,36,21,37,38,39,27,40,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,26,26,27,26,26,26,26,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,18,18,18,27,18,25,18,18,18,18,18,18,21,22,23,24,64,33,61,62,63,25,18,26,36,36,21,21,37,37,22,23,24,38,38,35,39,27,40,36,21,37,38,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,64,33,61,62,63,25,18,26,36,21,37,22,23,24,38,35,39,27,40,18,26,0,0,0,46,47,48,46,47,48,46,47,48,46,47,47,46,47,48,46,47,46,47,48,46,47,48,46,47,48,46,47,48,0,0,51,50,51,50,50,51,50,50,51,50,51,50,51,50,51,50,51,50,51,50,65,0,0,65,65,65,65,32,65,32,32,32,32,65,32,65,32,32,32,65,32,65,32,65,32,55,55,0,0,55,54,55,54,55,54,55,54,55,54,55,54,54,55,55,55,54,55,54,55,43,43,43,0,0,56,43,56,43,56,56,43,56,43,56,43,56,56,56,43,43,43,56,43,56,43,0,0,0,58,59,60,58,59,60,58,59,60,59,60,58,59,60,59,60,58,59,60,59,59,58,59,60,58,59,60,58,59,60,60],"f":[0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],0,0,0,[[1,13],14],[[2,13],14],[[3,13],14],[[4,13],14],[[5,13],14],[[6,13],14],[[7,13],14],[[8,13],14],[[9,13],14],[[10,13],14],[[11,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[15,15],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[18,[20,[19]]],18],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[21,21],[22,22],[23,23],[24,24],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[[-1,-2],12,[],[]],[18,18],[[25,26],25],[[18,3],18],[[[29,[27,28]],30],[[16,[26,31]]]],[[26,18,32],[[16,[25,33]]]],[[18,19],18],[[],27],[[21,21],34],[[35,35],34],[[18,7],18],[[18,11],18],[[18,10],18],[[36,13],14],[[21,13],14],[[37,13],14],[[38,13],14],[[39,13],14],[[27,13],14],[[40,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[26,25],[[16,[39,33]]]],[[26,25],[[16,[[12,[3,39]],33]]]],[27,[[16,[36,33]]]],[[26,25],[[16,[[12,[40,39]],33]]]],[[26,25],[[16,[[12,[7,39]],33]]]],[[26,25],[[16,[[12,[11,39]],33]]]],[[26,25],[[16,[[12,[10,39]],33]]]],[[26,25],[[16,[[12,[41,39]],33]]]],[[26,25],[[16,[[12,[38,39]],33]]]],[[26,25],[[16,[[12,[4,39]],33]]]],[[26,25],[[16,[[12,[41,42,39]],33]]]],[[26,25],[[16,[[12,[15,39]],33]]]],[[26,25],[[16,[[12,[1,39]],33]]]],[[26,25],[[16,[[12,[6,39]],33]]]],[27,[[16,[37,33]]]],[[26,25],[[16,[[12,[2,39]],33]]]],[[26,25],[[16,[[12,[43,39]],33]]]],[[26,25],[[16,[[12,[8,39]],33]]]],[[26,25],[[16,[[12,[9,39]],33]]]],[[26,25],[[16,[[12,[5,39]],33]]]],[[26,25],[[16,[[12,[15,39]],33]]]],[[26,25],[[16,[[12,[[44,[42]],39]],33]]]],[[26,25],[[16,[[12,[41,42,42,39]],33]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[18,41],18],[21,18],[[18,41],18],[27,34],[[18,4],18],[[25,32],25],[[18,15],18],[[18,1],18],[[18,2],18],[[18,5],18],[[18,8],18],[[18,9],18],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[15,[[16,[36,[45,[36]]]]]],[15,[[16,[21,[45,[21]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[42,[[16,[37,[45,[37]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[42,[[16,[38,[45,[38]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[[],[[16,[36,[45,[36]]]]]],[[],[[16,[21,[45,[21]]]]]],[[],[[16,[37,[45,[37]]]]]],[[],[[16,[38,[45,[38]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[[18,15],18],[[26,25],12],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[46,30,41],12],[[],47],[[],48],[46,12],[[47,30],12],[[47,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[49,30,49,3],[[16,[46,31]]]],[47,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],50],[51,12],[[50,30],12],[[50,13],14],[-1,-1,[]],[-1,-1,[]],[[49,30,7],[[16,[51,31]]]],[50,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,42],[32,34],[[32,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,42],[[32,19],[[16,[12,31]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[49,30,15,[53,[52]],1,6,46],[[16,[54,31]]]],[[55,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[54,[[16,[12,31]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[42,[[16,[55,[45,[55]]]]]],[[],[[16,[55,[45,[55]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[49,30,49,49,2,9,6],[[16,[56,31]]]],[56,12],[[43,13],14],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[56,41],[[56,19,[57,[42]]],41],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[42,[[16,[43,[45,[43]]]]]],[[],[[16,[43,[45,[43]]]]]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],58],[[],59],[[],60],[[59,30],12],[[60,30],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[59,12],[60,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[59,15,15],12],[[59,15,15,15,19,[57,[42]]],12],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,[[16,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[[60,15,19,15],12]],"c":[],"p":[[3,"Rqn",0],[3,"Sqn",0],[3,"Cqn",0],[3,"Pd",0],[3,"Td",0],[3,"Lkey",0],[3,"Eqn",0],[3,"Tirn",0],[3,"Tisn",0],[3,"FtId",0],[3,"FgId",0],[15,"tuple"],[3,"Formatter",624],[6,"Result",624],[15,"u32"],[4,"Result",625],[3,"TypeId",626],[3,"CommandBuilder",140],[3,"PhysicalAddress",627],[3,"Vec",628],[4,"CommandOpcode",140],[4,"QueryHcaCapMaxOpMod",140],[4,"QueryHcaCapCurrentOpMod",140],[4,"AccessRegisterOpMod",140],[3,"Command",140],[3,"CommandQueue",140],[3,"CommandQueueEntry",140],[3,"Mutable",629],[3,"BorrowedSliceMappedPages",629],[15,"usize"],[15,"str"],[3,"InitializationSegment",515],[4,"CommandQueueError",140],[15,"bool"],[4,"CmdState",140],[4,"CommandDeliveryStatus",140],[4,"CommandReturnStatus",140],[4,"HcaPortType",140],[3,"CommandCompletionStatus",140],[3,"HCACapabilities",140],[15,"u16"],[15,"u8"],[4,"SendQueueState",564],[15,"array"],[3,"TryFromPrimitiveError",630],[3,"CompletionQueue",461],[3,"CompletionQueueEntry",461],[3,"CompletionQueueDoorbellRecord",461],[3,"MappedPages",629],[3,"EventQueueEntry",493],[3,"EventQueue",493],[3,"ReceiveBuffer",631],[3,"Queue",632],[3,"ReceiveQueue",540],[4,"ReceiveQueueState",540],[3,"SendQueue",564],[15,"slice"],[3,"DoorbellRecord",590],[3,"WorkQueueEntrySend",590],[3,"WorkQueueEntryReceive",590],[4,"ManagePagesOpMod",140],[4,"QueryPagesOpMod",140],[4,"QueryVportStateOpMod",140],[4,"CommandTransportType",140],[4,"InitializingState",515]],"b":[]},\ @@ -106,9 +106,9 @@ var searchIndex = JSON.parse('{\ "no_drop":{"doc":"A simple wrapper that prevents the inner object from being …","t":"DLLLLLLLLLLLL","n":["NoDrop","borrow","borrow_mut","deref","deref_mut","fmt","from","into","into_inner","new","try_from","try_into","type_id"],"q":[[0,"no_drop"],[13,"core::fmt"],[14,"core::fmt"],[15,"core::any"]],"d":["A wrapper for an inner object that ensures the inner …","","","","","","Returns the argument unchanged.","Calls U::from(self).","Consumes this NoDrop wrapper and returns the inner object.","Wraps the given obj in a NoDrop wrapper.","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[],[]],[[[1,[-1]]],[],[]],[[[1,[-1]],2],3,4],[-1,-1,[]],[-1,-2,[],[]],[[[1,[-1]]],-1,[]],[-1,[[1,[-1]]],[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,6,[]]],"c":[],"p":[[3,"NoDrop",0],[3,"Formatter",13],[6,"Result",13],[8,"Debug",13],[4,"Result",14],[3,"TypeId",15]],"b":[]},\ "ota_update_client":{"doc":"Functions to communicate with a network server that …","t":"ERDDNNFLLLLLLMFFFFFLLLLLLLMMFMLLLLLLLLLLLL","n":["CrateSet","DIFF_FILE_NAME","Diff","DownloadedFile","Exclude","Include","as_lines","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","content","default_remote_endpoint","download_available_update_builds","download_crates","download_diff","download_listing","from","from","from","includes","into","into","into","name","pairs","parse_diff_lines","state_transfer_functions","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip"],"q":[[0,"ota_update_client"],[42,"alloc::string"],[43,"alloc::vec"],[44,"core::result"],[45,"smoltcp::wire::ip"],[46,"net::interface"],[47,"alloc::sync"],[48,"alloc::collections::btree::set"],[49,"core::any"]],"d":["An enum used for specifying which crate files to download …","The name (and relative path) of the diff file inside each …","A representation of an diff file used to define an …","A file that has been downloaded over the network, …","The set of crates to exclude, i.e., all crates except for …","The set of crates to include, i.e., only these crates will …","Convenience function for converting a byte stream that is …","","","","","","","","The default remote endpoint, server IP and port, of the …","Connects to the update server over the given network …","Connects to the update server over the given network …","Connects to the update server over the given network …","Connects to the update server over the given network …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns true if this CrateSet specifies that the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","A list of tuples in which the first element is the old …","Parses a series of diff lines into a representation of an …","The list of state transfer functions which should be …","","","","","","","","","","","",""],"i":[0,0,0,0,12,12,0,11,12,14,11,12,14,11,0,0,0,0,0,11,12,14,12,11,12,14,11,14,0,14,11,12,14,11,12,14,11,12,14,11,12,14],"f":[0,0,0,0,0,0,[[[2,[1]]],[[6,[[4,[3]],5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[],7],[[[9,[8]],7],[[6,[[4,[3]],5]]]],[[[9,[8]],7,5,[10,[3]]],[[6,[[4,[11]],5]]]],[[[9,[8]],7,5],[[6,[[4,[3]],5]]]],[[[9,[8]],7,5],[[6,[[4,[3]],5]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[12,5],13],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[[4,[3]]],[[6,[14,5]]]],0,[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[15,"u8"],[15,"slice"],[3,"String",42],[3,"Vec",43],[15,"str"],[4,"Result",44],[3,"Endpoint",45],[3,"NetworkInterface",46],[3,"Arc",47],[3,"BTreeSet",48],[3,"DownloadedFile",0],[4,"CrateSet",0],[15,"bool"],[3,"Diff",0],[3,"TypeId",49]],"b":[]},\ "owned_borrowed_trait":{"doc":"An abstraction over an owned value or borrowed reference …","t":"DQSDIKLLLLLLLLLLLLLLKLLLLLLLL","n":["Borrowed","Inner","OWNED","Owned","OwnedOrBorrowed","as_inner","as_inner","as_inner","as_ref","as_ref","borrow","borrow","borrow_mut","borrow_mut","deref","deref","from","from","into","into","into_inner","into_inner","into_inner","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"owned_borrowed_trait"],[29,"core::result"],[30,"core::any"]],"d":["A wrapper that indicates the contained value is a borrowed …","The inner type of the owned value or borrowed reference.","true if the wrapper type contains an owned value, i.e., …","A wrapper that indicates the contained value is an owned …","A trait for abstracting over an owned value or borrowed …","Returns a reference to the inner value.","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Consumes this wrapper type and returns the contained value …","","","","","","","",""],"i":[0,5,5,0,0,5,1,2,1,2,1,2,1,2,1,2,1,2,1,2,5,1,2,1,2,1,2,1,2],"f":[0,0,0,0,0,[-1,[],[]],[[[1,[-1]]],[],[]],[[[2,[-1]]],[],[]],[[[1,[-1]]],-1,[]],[[[2,[-1]]],-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[],[]],[[[2,[-1]]],[],[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[[1,[-1]]],[],[]],[[[2,[-1]]],[],[]],[-1,[[3,[-2]]],[],[]],[-1,[[3,[-2]]],[],[]],[-1,[[3,[-2]]],[],[]],[-1,[[3,[-2]]],[],[]],[-1,4,[]],[-1,4,[]]],"c":[],"p":[[3,"Owned",0],[3,"Borrowed",0],[4,"Result",29],[3,"TypeId",30],[8,"OwnedOrBorrowed",0]],"b":[]},\ -"page_allocator":{"doc":"Provides an allocator for virtual memory pages. The …","t":"NNDEENNDNNNLFFFFFFFFLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLM","n":["AddressNotFree","AlignedTo","AllocatedPages","AllocationError","AllocationRequest","Any","AtVirtualAddress","DeferredAllocAction","NotInitialized","OutOfAddressSpace","WithinRange","address_at_offset","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","drop","drop","empty","end","fmt","fmt","from","from","from","from","init","into","into","into","into","merge","offset_of_address","range","size_in_bytes","size_in_pages","split","start","start_address","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","alignment_4k_pages"],"q":[[0,"page_allocator"],[63,"page_allocator::AllocationRequest"],[64,"memory_structs"],[65,"core::option"],[66,"core::result"],[67,"memory_structs"],[68,"core::fmt"]],"d":["The requested address was not free: it was already …","The allocated pages may be located at any virtual address, …","Represents a range of allocated VirtualAddresses, …","Possible errors returned by the page allocator.","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A series of pending actions related to page allocator …","The allocator has not yet been initialized.","The address space was full, or there was not a …","The allocated pages can be located anywhere within the …","Returns the VirtualAddress at the given offset into this …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","","","","","","","Returns an empty AllocatedPages object that performs no …","Returns the ending Page (inclusive) in this range of pages.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Initialize the page allocator.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Merges the given AllocatedPages object ap into this …","Returns the offset of the given VirtualAddress within this …","Returns a reference to the inner PageRange, which is …","Returns the size in bytes of this range of pages.","Returns the size in number of pages of this range of pages.","Splits this AllocatedPages into two separate AllocatedPages…","Returns the starting Page in this range of pages.","Returns the starting VirtualAddress in this range of pages.","","","","","","","","","","","","",""],"i":[14,7,0,0,0,7,7,0,14,14,7,1,0,0,0,0,0,0,0,0,1,8,7,14,1,8,7,14,1,8,1,1,1,14,1,8,7,14,0,1,8,7,14,1,1,1,1,1,1,1,1,1,8,7,14,1,8,7,14,1,8,7,14,16],"f":[0,0,0,0,0,0,0,0,0,0,0,[[1,2],[[4,[3]]]],[2,[[4,[1]]]],[[3,2],[[6,[1,5]]]],[2,[[4,[1]]]],[[3,2],[[6,[1,5]]]],[[7,2],[[6,[[9,[1,8]],5]]]],[[2,10],[[6,[1,5]]]],[[7,2],[[6,[[9,[1,8]],5]]]],[[2,10],[[6,[1,5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,9],[8,9],[[],1],[1,11],[[1,12],13],[[14,12],13],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[3,[[6,[9,5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,1],[[6,[9,1]]]],[[1,3],[[4,[2]]]],[1,10],[1,2],[1,2],[[1,11],[[6,[[9,[1,1]],1]]]],[1,11],[1,3],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],0],"c":[],"p":[[3,"AllocatedPages",0],[15,"usize"],[3,"VirtualAddress",64],[4,"Option",65],[15,"str"],[4,"Result",66],[4,"AllocationRequest",0],[3,"DeferredAllocAction",0],[15,"tuple"],[3,"PageRange",64],[3,"Page",64],[3,"Formatter",67],[6,"Result",67],[4,"AllocationError",0],[3,"TypeId",68],[13,"AlignedTo",63]],"b":[]},\ +"page_allocator":{"doc":"Provides an allocator for virtual memory pages. The …","t":"NNDEENNDNNNLFFFFFFFFLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLM","n":["AddressNotFree","AlignedTo","AllocatedPages","AllocationError","AllocationRequest","Any","AtVirtualAddress","DeferredAllocAction","NotInitialized","OutOfAddressSpace","WithinRange","address_at_offset","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","drop","drop","empty","end","fmt","fmt","from","from","from","from","init","into","into","into","into","merge","offset_of_address","range","size_in_bytes","size_in_pages","split","start","start_address","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","alignment_4k_pages"],"q":[[0,"page_allocator"],[64,"page_allocator::AllocationRequest"],[65,"memory_structs"],[66,"core::option"],[67,"memory_structs"],[68,"memory_structs"],[69,"core::fmt"]],"d":["The requested address was not free: it was already …","The allocated pages may be located at any virtual address, …","Represents a range of allocated VirtualAddresses, …","Possible errors returned by the page allocator.","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A series of pending actions related to page allocator …","The allocator has not yet been initialized.","The address space was full, or there was not a …","The allocated pages can be located anywhere within the …","Returns the VirtualAddress at the given offset into this …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","","","","","","","","Returns an empty AllocatedPages object that performs no …","Returns the ending Page (inclusive) in this range of pages.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Initialize the page allocator.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Merges the given AllocatedPages object ap into this …","Returns the offset of the given VirtualAddress within this …","Returns a reference to the inner PageRange, which is …","Returns the size in bytes of this range of pages.","Returns the size in number of pages of this range of pages.","Splits this AllocatedPages into two separate AllocatedPages…","Returns the starting Page in this range of pages.","Returns the starting VirtualAddress in this range of pages.","","","","","","","","","","","","",""],"i":[16,9,0,0,0,9,9,0,16,16,9,1,0,0,0,0,0,0,0,0,1,10,9,16,1,10,9,16,1,1,10,1,1,1,16,1,10,9,16,0,1,10,9,16,1,1,1,1,1,1,1,1,1,10,9,16,1,10,9,16,1,10,9,16,18],"f":[0,0,0,0,0,0,0,0,0,0,0,[[[1,[-1]],2],[[4,[3]]],5],[2,[[4,[[1,[6]]]]]],[[3,2],[[8,[[1,[6]],7]]]],[2,[[4,[[1,[6]]]]]],[[3,2],[[8,[[1,[6]],7]]]],[[9,2],[[8,[[11,[[1,[6]],10]],7]]]],[[2,[12,[6]]],[[8,[[1,[6]],7]]]],[[9,2],[[8,[[11,[[1,[6]],10]],7]]]],[[2,[12,[6]]],[[8,[[1,[6]],7]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[1,[-1]]],5],[[[1,[-1]]],11,5],[10,11],[[],[[1,[-1]]],5],[[[1,[-1]]],[[13,[-1]]],5],[[[1,[-1]],14],15,5],[[16,14],15],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[3,[[8,[11,7]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]],[1,[-1]]],[[8,[11,[1,[-1]]]]],5],[[[1,[-1]],3],[[4,[2]]],5],[[[1,[-1]]],[[12,[-1]]],5],[[[1,[-1]]],2,5],[[[1,[-1]]],2,5],[[[1,[-1]],[13,[-1]]],[[8,[[11,[[1,[-1]],[1,[-1]]]],[1,[-1]]]]],5],[[[1,[-1]]],[[13,[-1]]],5],[[[1,[-1]]],3,5],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],0],"c":[],"p":[[3,"AllocatedPages",0],[15,"usize"],[3,"VirtualAddress",65],[4,"Option",66],[8,"PageSize",65],[3,"Page4K",65],[15,"str"],[4,"Result",67],[4,"AllocationRequest",0],[3,"DeferredAllocAction",0],[15,"tuple"],[3,"PageRange",65],[3,"Page",65],[3,"Formatter",68],[6,"Result",68],[4,"AllocationError",0],[3,"TypeId",69],[13,"AlignedTo",64]],"b":[]},\ "page_attribute_table":{"doc":"Support for the Page Attribute Table (PAT) feature on x86.","t":"HEDDNNNNNNLLLLLLLLLLLLLLLFLLLLFLLLLLLLLLLL","n":["FIXED_PAT","MemoryCachingType","PageAttributeTable","PatNotSupported","Uncacheable","UncachedMinus","WriteBack","WriteCombining","WriteProtected","WriteThrough","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","fmt","fmt","from","from","from","from","from_bytes","init","into","into","into","into_bytes","is_supported","new","pat_slot_index","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"page_attribute_table"],[42,"core::fmt"],[43,"core::fmt"],[44,"core::any"]],"d":["Theseus’s fixed PageAttributeTable has slots that align …","The various types of memory caching that x86 supports for …","The Page Attribute Table (PAT) consists of 8 “slots” …","An empty error type indicating that the Page Attribute …","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Converts the given bytes directly into the bitfield struct.","Sets up and enables the Page Attribute Table (PAT) for …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the underlying bits.","Returns true if the Page Attribute Table is supported on …","Returns an instance with zero initialized data.","Returns the index of the PageAttributeTable (PAT) slot …","","","","","","","","",""],"i":[0,0,0,0,2,2,2,2,2,2,1,2,5,1,2,5,1,2,2,5,1,1,2,5,1,0,1,2,5,1,0,1,2,1,2,5,1,2,5,1,2,5],"f":[0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[[2,3],4],[[5,3],4],[-1,-1,[]],[6,1],[-1,-1,[]],[-1,-1,[]],[[[8,[7]]],1],[[],[[10,[9,5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,[[8,[7]]]],[[],11],[[],1],[2,7],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]]],"c":[],"p":[[3,"PageAttributeTable",0],[4,"MemoryCachingType",0],[3,"Formatter",42],[6,"Result",42],[3,"PatNotSupported",0],[15,"u64"],[15,"u8"],[15,"array"],[15,"tuple"],[4,"Result",43],[15,"bool"],[3,"TypeId",44]],"b":[],"a":{"mtrr":[1],"page attribute table":[1],"pat":[1]}},\ -"page_table_entry":{"doc":"Defines the structure of Page Table Entries (PTEs) on …","t":"NNDEDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Exclusive","NonExclusive","PageTableEntry","UnmapResult","UnmappedFrameRange","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","flags","from","from","from","into","into","into","is_unused","pointed_frame","set_entry","set_flags","set_unmapped","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","value","zero"],"q":[[0,"page_table_entry"],[35,"memory_structs"],[36,"pte_flags::pte_flags_x86_64"],[37,"memory_structs"],[38,"frame_allocator"],[39,"core::result"],[40,"core::any"]],"d":["","","A page table entry, which is a u64 value under the hood.","The frames returned from the action of unmapping a page …","A range of frames that have been unmapped from a …","","","","","","","","Returns this PageTableEntry’s flags.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if this entry is unused, i.e., cleared/zeroed …","Returns the physical Frame pointed to (mapped by) this …","Sets this PageTableEntry to map the given frame with the …","Sets the flags components of this PageTableEntry to …","Removes the mapping represented by this page table entry.","","","","","","","","","","","Zeroes out this entry, setting it as “unused”."],"i":[10,10,0,0,0,10,1,3,10,1,3,1,3,10,1,3,10,1,3,3,3,3,3,3,10,1,3,10,1,3,10,1,3,3,3],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[3,4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,5],[3,[[7,[6]]]],[[3,8,4],9],[[3,4],9],[3,10],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,[[11,[-2]]],[],[]],[-1,12,[]],[-1,12,[]],[-1,12,[]],[3,13],[3,9]],"c":[],"p":[[3,"UnmappedFrameRange",0],[3,"FrameRange",35],[3,"PageTableEntry",0],[3,"PteFlagsX86_64",36],[15,"bool"],[3,"Frame",35],[4,"Option",37],[3,"AllocatedFrame",38],[15,"tuple"],[4,"UnmapResult",0],[4,"Result",39],[3,"TypeId",40],[15,"u64"]],"b":[]},\ +"page_table_entry":{"doc":"Defines the structure of Page Table Entries (PTEs) on …","t":"NNDEDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Exclusive","NonExclusive","PageTableEntry","UnmapResult","UnmappedFrameRange","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","flags","from","from","from","into","into","into","is_unused","pointed_frame","set_entry","set_flags","set_unmapped","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","value","zero"],"q":[[0,"page_table_entry"],[35,"memory_structs"],[36,"pte_flags::pte_flags_x86_64"],[37,"memory_structs"],[38,"frame_allocator"],[39,"memory_structs"],[40,"core::any"]],"d":["","","A page table entry, which is a u64 value under the hood.","The frames returned from the action of unmapping a page …","A range of frames that have been unmapped from a …","","","","","","","","Returns this PageTableEntry’s flags.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if this entry is unused, i.e., cleared/zeroed …","Returns the physical Frame pointed to (mapped by) this …","Sets this PageTableEntry to map the given frame with the …","Sets the flags components of this PageTableEntry to …","Removes the mapping represented by this page table entry.","","","","","","","","","","","Zeroes out this entry, setting it as “unused”."],"i":[11,11,0,0,0,11,1,3,11,1,3,1,3,11,1,3,11,1,3,3,3,3,3,3,11,1,3,11,1,3,11,1,3,3,3],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[3,4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,5],[3,[[7,[6]]]],[[3,[8,[-1]],4],9,10],[[3,4],9],[3,11],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,[[12,[-2]]],[],[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[3,14],[3,9]],"c":[],"p":[[3,"UnmappedFrameRange",0],[3,"FrameRange",35],[3,"PageTableEntry",0],[3,"PteFlagsX86_64",36],[15,"bool"],[3,"Frame",35],[4,"Option",37],[3,"AllocatedFrame",38],[15,"tuple"],[8,"PageSize",35],[4,"UnmapResult",0],[4,"Result",39],[3,"TypeId",40],[15,"u64"]],"b":[]},\ "panic_entry":{"doc":"Provides the default entry points and lang items for …","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]},\ "panic_wrapper":{"doc":"Provides types and simple routines for handling panics. …","t":"F","n":["panic_wrapper"],"q":[[0,"panic_wrapper"],[1,"core::panic::panic_info"],[2,"core::result"]],"d":["Performs the standard panic handling routine, which …"],"i":[0],"f":[[1,[[4,[2,3]]]]],"c":[],"p":[[3,"PanicInfo",1],[15,"tuple"],[15,"str"],[4,"Result",2]],"b":[]},\ "path":{"doc":"File system paths.","t":"EDNNNDDNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Component","Components","CurDir","Normal","ParentDir","Path","PathBuf","RootDir","as_mut","as_mut","as_path","as_ref","as_ref","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","components","default","deref","deref_mut","eq","eq","eq","eq","extension","file_name","file_stem","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_iter","get","get_absolute","get_dir","get_file","into","into","into","into_iter","is_absolute","join","new","new","next","next_back","parent","partial_cmp","partial_cmp","partial_cmp","pop","push","relative","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"path"],[94,"core::cmp"],[95,"core::option"],[96,"core::fmt"],[97,"core::fmt"],[98,"core::convert"],[99,"alloc::string"],[100,"core::iter::traits::collect"],[101,"fs_node"],[102,"fs_node"],[103,"core::any"]],"d":["","An iterator over the components of a path.","","","","A slice of a path.","An owned, mutable path.","","","","Extracts a slice corresponding to the portion of the path …","","","","","","","","","","","","","","","","","","","","","","","","Produces an iterator over the Components of the path.","","","","","","","","Extracts the extension (without the leading dot) of …","Returns the final component of the Path, if there is one.","Extracts the stem (non-extension) portion of self.file_name…","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the file or directory at the given path.","Returns the file or directory at the given absolute path.","Returns the directory at the given path.","Returns the file at the given path.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if the path starts with the root.","Creates an owned PathBuf with path adjoined to self.","Wraps a string slice as a path slice.","Allocates an empty PathBuf.","","","Returns the path without its final component, if there is …","","","","Truncates self to self.parent.","Extends self with path.","Construct a relative path from a provided base directory …","","","","","","","","","","","","","","","",""],"i":[0,0,4,4,4,0,0,4,1,1,3,4,4,1,1,5,5,3,4,1,5,5,3,4,1,5,3,4,5,3,4,5,1,5,1,5,5,5,3,4,1,5,1,1,1,3,4,1,1,5,5,3,4,5,5,5,5,1,1,1,1,3,4,5,3,1,1,1,5,3,3,1,3,1,5,5,5,1,3,4,1,5,1,5,3,4,5,3,4,5,3,4,1,5],"f":[0,0,0,0,0,0,0,0,[1,1],[1,2],[3,1],[4,2],[4,1],[1,2],[1,1],[5,1],[5,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[5,1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,3],[4,4],[5,5],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[1,1],7],[[5,5],7],[1,3],[[],5],[5],[5],[[3,3],8],[[4,4],8],[[1,1],8],[[5,5],8],[1,[[9,[2]]]],[1,[[9,[2]]]],[1,[[9,[2]]]],[[3,10],11],[[4,10],11],[[1,10],11],[[1,10],11],[[5,10],11],[[5,10],11],[-1,-1,[]],[-1,-1,[]],[-1,5,[12,[13,[2]]]],[-1,-1,[]],[14,5],[-1,5,15],[[1,16],[[9,[17]]]],[1,[[9,[17]]]],[[1,16],[[9,[16]]]],[[1,16],[[9,[18]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,8],[[1,-1],5,[[13,[1]]]],[-1,1,[[13,[2]],12]],[[],5],[3,9],[3,9],[1,[[9,[1]]]],[[3,3],[[9,[7]]]],[[1,1],[[9,[7]]]],[[5,5],[[9,[7]]]],[5,8],[[5,-1],6,[[13,[1]]]],[[1,-1],[[9,[5]]],[[13,[1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[1],[-1,-2,[],[]],[-1,14,[]],[-1,14,[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]]],"c":[],"p":[[3,"Path",0],[15,"str"],[3,"Components",0],[4,"Component",0],[3,"PathBuf",0],[15,"tuple"],[4,"Ordering",94],[15,"bool"],[4,"Option",95],[3,"Formatter",96],[6,"Result",96],[8,"Sized",97],[8,"AsRef",98],[3,"String",99],[8,"IntoIterator",100],[6,"DirRef",101],[4,"FileOrDir",101],[6,"FileRef",101],[4,"Result",102],[3,"TypeId",103]],"b":[[8,"impl-AsMut%3CPath%3E-for-Path"],[9,"impl-AsMut%3Cstr%3E-for-Path"],[11,"impl-AsRef%3Cstr%3E-for-Component%3C\'a%3E"],[12,"impl-AsRef%3CPath%3E-for-Component%3C\'a%3E"],[13,"impl-AsRef%3Cstr%3E-for-Path"],[14,"impl-AsRef%3CPath%3E-for-Path"],[15,"impl-AsRef%3CPath%3E-for-PathBuf"],[16,"impl-AsRef%3Cstr%3E-for-PathBuf"],[47,"impl-Debug-for-Path"],[48,"impl-Display-for-Path"],[49,"impl-Debug-for-PathBuf"],[50,"impl-Display-for-PathBuf"],[53,"impl-From%3C%26T%3E-for-PathBuf"],[55,"impl-From%3CString%3E-for-PathBuf"]]},\ diff --git a/doc/src/frame_allocator/lib.rs.html b/doc/src/frame_allocator/lib.rs.html index 2294c4a4f9..6d7b02b564 100644 --- a/doc/src/frame_allocator/lib.rs.html +++ b/doc/src/frame_allocator/lib.rs.html @@ -1364,6 +1364,28 @@ 1364 1365 1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388

    //! Provides an allocator for physical memory frames.
     //! The minimum unit of allocation is a single frame. 
     //!
    @@ -1397,18 +1419,16 @@
     mod static_array_rb_tree;
     // mod static_array_linked_list;
     
    -use core::{borrow::Borrow, cmp::{Ordering, min, max}, ops::{Deref, DerefMut}, fmt};
    +use core::{borrow::Borrow, cmp::{Ordering, min, max}, fmt, mem, ops::{Deref, DerefMut}};
     use intrusive_collections::Bound;
     use kernel_config::memory::*;
     use log::{error, warn, debug, trace};
    -use memory_structs::{PhysicalAddress, Frame, FrameRange, MemoryState};
    +use memory_structs::{PhysicalAddress, Frame, FrameRange, MemoryState, PageSize, Page4K, Page2M, Page1G};
     use spin::Mutex;
     use static_array_rb_tree::*;
     use static_assertions::assert_not_impl_any;
     
    -const FRAME_SIZE: usize = PAGE_SIZE;
    -const MIN_FRAME: Frame = Frame::containing_address(PhysicalAddress::zero());
    -const MAX_FRAME: Frame = Frame::containing_address(PhysicalAddress::new_canonical(usize::MAX));
    +const FRAME_4K_SIZE_IN_BYTES: usize = PAGE_SIZE;
     
     // Note: we keep separate lists for "free, general-purpose" areas and "reserved" areas, as it's much faster. 
     
    @@ -1627,7 +1647,7 @@
     #[derive(Clone, Debug, Eq)]
     pub struct PhysicalMemoryRegion {
         /// The Frames covered by this region, an inclusive range. 
    -    pub frames: FrameRange,
    +    pub frames: FrameRange<Page4K>,
         /// The type of this memory region, e.g., whether it's in a free or reserved region.
         pub typ: MemoryRegionType,
     }
    @@ -1727,70 +1747,77 @@
     /// using a `Frame` value.
     /// It differs from the behavior of the `Deref` trait which returns a `FrameRange`.
     #[derive(Eq)]
    -pub struct Frames<const S: MemoryState> {
    +pub struct Frames<const S: MemoryState, P: PageSize = Page4K> {
         /// The type of this memory chunk, e.g., whether it's in a free or reserved region.
         typ: MemoryRegionType,
    -    /// The Frames covered by this chunk, an inclusive range.
    -    frames: FrameRange
    +    /// The specific (inclusive) range of frames covered by this memory chunk.
    +    frame_range: FrameRange<P>,
     }
     
    -/// A type alias for `Frames` in the `Free` state.
    -pub type FreeFrames = Frames<{MemoryState::Free}>;
    +/// A type alias for `Frames` in the `Free` state, which only suppports 4K pages.
    +pub type FreeFrames = Frames<{MemoryState::Free}, Page4K>;
    +
     /// A type alias for `Frames` in the `Allocated` state.
    -pub type AllocatedFrames = Frames<{MemoryState::Allocated}>;
    +#[allow(type_alias_bounds)]
    +pub type AllocatedFrames<P: PageSize = Page4K> = Frames<{MemoryState::Allocated}, P>;
     /// A type alias for `Frames` in the `Mapped` state.
    -pub type MappedFrames = Frames<{MemoryState::Mapped}>;
    +#[allow(type_alias_bounds)]
    +pub type MappedFrames<P: PageSize = Page4K> = Frames<{MemoryState::Mapped}, P>;
     /// A type alias for `Frames` in the `Unmapped` state.
    -pub type UnmappedFrames = Frames<{MemoryState::Unmapped}>;
    +#[allow(type_alias_bounds)]
    +pub type UnmappedFrames<P: PageSize = Page4K> = Frames<{MemoryState::Unmapped}, P>;
     
     // Frames must not be Cloneable, and it must not expose its inner frames as mutable.
    -assert_not_impl_any!(Frames<{MemoryState::Free}>: DerefMut, Clone);
    -assert_not_impl_any!(Frames<{MemoryState::Allocated}>: DerefMut, Clone);
    -assert_not_impl_any!(Frames<{MemoryState::Mapped}>: DerefMut, Clone);
    -assert_not_impl_any!(Frames<{MemoryState::Unmapped}>: DerefMut, Clone);
    +assert_not_impl_any!(FreeFrames: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Allocated}, Page4K>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Allocated}, Page2M>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Allocated}, Page1G>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Mapped},    Page4K>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Mapped},    Page2M>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Mapped},    Page1G>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Unmapped},  Page4K>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Unmapped},  Page2M>: DerefMut, Clone);
    +assert_not_impl_any!(Frames<{MemoryState::Unmapped},  Page1G>: DerefMut, Clone);
     
     
     impl FreeFrames {
         /// Creates a new `Frames` object in the `Free` state.
         ///
         /// The frame allocator logic is responsible for ensuring that no two `Frames` objects overlap.
    -    pub(crate) fn new(typ: MemoryRegionType, frames: FrameRange) -> Self {
    -        Frames {
    -            typ,
    -            frames,
    -        }
    +    pub(crate) fn new(typ: MemoryRegionType, frame_range: FrameRange) -> Self {
    +        Frames { typ, frame_range }
         }
     
         /// Consumes this `Frames` in the `Free` state and converts them into the `Allocated` state.
    -    pub fn into_allocated_frames(mut self) -> AllocatedFrames {  
    -        let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    +    pub fn into_allocated_frames(mut self) -> AllocatedFrames<Page4K> {  
    +        let frame_range = mem::take(&mut self.frame_range);  
             let af = Frames {
                 typ: self.typ,
    -            frames,
    +            frame_range,
             };
    -        core::mem::forget(self);
    -        af
    +        mem::forget(self); // TODO: is this necessary? we already replaced self with an empty range.
    +        af
         }
     }
     
    -impl AllocatedFrames {
    +impl<P: PageSize> AllocatedFrames<P> {
         /// Consumes this `Frames` in the `Allocated` state and converts them into the `Mapped` state.
         /// This should only be called once a `MappedPages` has been created from the `Frames`.
    -    pub fn into_mapped_frames(mut self) -> MappedFrames {    
    -        let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    +    pub fn into_mapped_frames(mut self) -> MappedFrames<P> {    
    +        let frame_range = mem::take(&mut self.frame_range);
             let mf = Frames {
                 typ: self.typ,
    -            frames,
    +            frame_range,
             };
    -        core::mem::forget(self);
    -        mf
    +        mem::forget(self); // TODO: is this necessary? we already replaced self with an empty range.
    +        mf
         }
     
         /// Returns an `AllocatedFrame` if this `AllocatedFrames` object contains only one frame.
         ///
         /// ## Panic
         /// Panics if this `AllocatedFrame` contains multiple frames or zero frames.
    -    pub fn as_allocated_frame(&self) -> AllocatedFrame {
    +    pub fn as_allocated_frame(&self) -> AllocatedFrame<P> {
             assert!(self.size_in_frames() == 1);
             AllocatedFrame {
                 frame: *self.start(),
    @@ -1802,13 +1829,13 @@
     impl UnmappedFrames {
         /// Consumes this `Frames` in the `Unmapped` state and converts them into the `Allocated` state.
         pub fn into_allocated_frames(mut self) -> AllocatedFrames {    
    -        let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    +        let frame_range = mem::take(&mut self.frame_range);
             let af = Frames {
                 typ: self.typ,
    -            frames
    +            frame_range,
             };
    -        core::mem::forget(self);
    -        af
    +        mem::forget(self); // TODO: is this necessary? we already replaced self with an empty range.
    +        af
         }
     }
     
    @@ -1822,24 +1849,28 @@
     /// This exists to break the cyclic dependency chain between this crate and
     /// the `page_table_entry` crate, since `page_table_entry` must depend on types
     /// from this crate in order to enforce safety when modifying page table entries.
    -pub(crate) fn into_unmapped_frames(frames: FrameRange) -> UnmappedFrames {
    -    let typ = if contains_any(&RESERVED_REGIONS.lock(), &frames) {
    +pub(crate) fn into_unmapped_frames(frame_range: FrameRange<Page4K>) -> UnmappedFrames {
    +    let typ = if contains_any(&RESERVED_REGIONS.lock(), &frame_range) {
             MemoryRegionType::Reserved
         } else {
             MemoryRegionType::Free
         };
    -    Frames{ typ, frames }
    +    Frames { typ, frame_range }
     }
     
     
    -impl<const S: MemoryState> Drop for Frames<S> {
    +impl<const S: MemoryState, P: PageSize> Drop for Frames<S, P> {
         fn drop(&mut self) {
             match S {
    -            MemoryState::Free => {
    +            // Dropping free frames returns them to the allocator's free list.
    +            MemoryState::Free => {
                     if self.size_in_frames() == 0 { return; }
             
    -                let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    -                let free_frames: FreeFrames = Frames { typ: self.typ, frames };
    +                let frame_range = mem::take(&mut self.frame_range);
    +                let free_frames: FreeFrames = Frames {
    +                    typ: self.typ,
    +                    frame_range: frame_range.into_4k_frames(),
    +                };
             
                     let mut list = if free_frames.typ == MemoryRegionType::Reserved {
                         FREE_RESERVED_FRAMES_LIST.lock()
    @@ -1908,29 +1939,40 @@
                             return;
                         }
                     }
    -                log::error!("BUG: couldn't insert deallocated {:?} into free frames list", self.frames);
    +                log::error!("BUG: couldn't insert deallocated {:?} into free frames list", self.frame_range);
                 }
    -            MemoryState::Allocated => { 
    -                // trace!("Converting AllocatedFrames to FreeFrames. Drop handler will be called again {:?}", self.frames);
    -                let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    -                let _to_drop = FreeFrames { typ: self.typ, frames }; 
    +            // Dropping allocated frames converts them into a 4K-sized `FreeFrames`,
    +            // which itself is then dropped.
    +            MemoryState::Allocated => { 
    +                // trace!("Converting AllocatedFrames to FreeFrames. Drop handler will be called again {:?}", self.frame_range);
    +                let frame_range = mem::take(&mut self.frame_range);
    +                let _to_drop = Frames::<{MemoryState::Free}, P> {
    +                    typ: self.typ,
    +                    frame_range,
    +                };
                 }
    -            MemoryState::Mapped => panic!("We should never drop a mapped frame! It should be forgotten instead."),
    -            MemoryState::Unmapped => {
    -                let frames = core::mem::replace(&mut self.frames, FrameRange::empty());  
    -                let _to_drop = AllocatedFrames { typ: self.typ, frames };
    +            // Dropping mapped frames currently should not ever happen.
    +            MemoryState::Mapped => panic!("We should never drop a mapped frame! It should be forgotten instead."),
    +            // Dropping unmapped frames converts them to `AllocatedFrames`,
    +            // which are then also dropped.
    +            MemoryState::Unmapped => {
    +                let frame_range = mem::take(&mut self.frame_range);
    +                let _to_drop = Frames::<{MemoryState::Allocated}, P> {
    +                    typ: self.typ,
    +                    frame_range,
    +                };
                 }
             }
         }
     }
     
    -impl<'f> IntoIterator for &'f AllocatedFrames {
    -    type IntoIter = AllocatedFramesIter<'f>;
    -    type Item = AllocatedFrame<'f>;
    +impl<'f, P: PageSize> IntoIterator for &'f AllocatedFrames<P> {
    +    type IntoIter = AllocatedFramesIter<'f, P>;
    +    type Item = AllocatedFrame<'f, P>;
         fn into_iter(self) -> Self::IntoIter {
             AllocatedFramesIter {
                 _owner: self,
    -            range: self.frames.iter(),
    +            range: self.frame_range.iter(),
             }
         }
     }
    @@ -1945,12 +1987,12 @@
     /// [`RangeInclusive`] instances rather than borrowing a reference to it.
     ///
     /// [`RangeInclusive`]: range_inclusive::RangeInclusive
    -pub struct AllocatedFramesIter<'f> {
    -    _owner: &'f AllocatedFrames,
    -    range: range_inclusive::RangeInclusiveIterator<Frame>,
    +pub struct AllocatedFramesIter<'f, P: PageSize> {
    +    _owner: &'f AllocatedFrames<P>,
    +    range: range_inclusive::RangeInclusiveIterator<Frame<P>>,
     }
    -impl<'f> Iterator for AllocatedFramesIter<'f> {
    -    type Item = AllocatedFrame<'f>;
    +impl<'f, P: PageSize> Iterator for AllocatedFramesIter<'f, P> {
    +    type Item = AllocatedFrame<'f, P>;
         fn next(&mut self) -> Option<Self::Item> {
             self.range.next().map(|frame|
                 AllocatedFrame {
    @@ -1964,36 +2006,38 @@
     /// 
     /// The lifetime of this type is tied to the lifetime of its owning `AllocatedFrames`.
     #[derive(Debug)]
    -pub struct AllocatedFrame<'f> {
    -    frame: Frame,
    +pub struct AllocatedFrame<'f, P: PageSize> {
    +    frame: Frame<P>,
         _phantom: core::marker::PhantomData<&'f Frame>,
     }
    -impl<'f> Deref for AllocatedFrame<'f> {
    -    type Target = Frame;
    +impl<'f, P: PageSize> Deref for AllocatedFrame<'f, P> {
    +    type Target = Frame<P>;
         fn deref(&self) -> &Self::Target {
             &self.frame
         }
     }
    -assert_not_impl_any!(AllocatedFrame: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedFrame<Page4K>: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedFrame<Page2M>: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedFrame<Page1G>: DerefMut, Clone);
     
     /// The result of splitting a `Frames` object into multiple smaller `Frames` objects.
    -pub struct SplitFrames<const S: MemoryState>  {
    -    before_start:   Option<Frames<S>>,
    -    start_to_end:   Frames<S>,
    -    after_end:      Option<Frames<S>>,
    +pub struct SplitFrames<const S: MemoryState, P: PageSize> {
    +    before_start:   Option<Frames<S, P>>,
    +    start_to_end:   Frames<S, P>,
    +    after_end:      Option<Frames<S, P>>,
     }
     
    -impl<const S: MemoryState> Frames<S> {
    +impl<const S: MemoryState, P: PageSize> Frames<S, P> {
         pub(crate) fn typ(&self) -> MemoryRegionType {
             self.typ
         }
     
         /// Returns a new `Frames` with an empty range of frames. 
         /// Can be used as a placeholder, but will not permit any real usage.
    -    pub const fn empty() -> Frames<S> {
    +    pub const fn empty() -> Frames<S, P> {
             Frames {
                 typ: MemoryRegionType::Unknown,
    -            frames: FrameRange::empty(),
    +            frame_range: FrameRange::empty(),
             }
         }
     
    @@ -2025,8 +2069,8 @@
             };
     
             // ensure the now-merged Frames doesn't run its drop handler
    -        core::mem::forget(other); 
    -        self.frames = frames;
    +        mem::forget(other); 
    +        self.frame_range = frames;
             Ok(())
         }
     
    @@ -2040,8 +2084,8 @@
         /// If `frames_to_extract` is not contained within `self`, then `self` is returned unchanged within an `Err`.
         pub fn split_range(
             self,
    -        frames_to_extract: FrameRange
    -    ) -> Result<SplitFrames<S>, Self> {
    +        frames_to_extract: FrameRange<P>
    +    ) -> Result<SplitFrames<S, P>, Self> {
             
             if !self.contains_range(&frames_to_extract) {
                 return Err(self);
    @@ -2050,25 +2094,25 @@
             let start_frame = *frames_to_extract.start();
             let start_to_end = frames_to_extract;
             
    -        let before_start = if start_frame == MIN_FRAME || start_frame == *self.start() {
    +        let before_start = if start_frame == Frame::<P>::MIN || start_frame == *self.start() {
                 None
             } else {
    -            Some(FrameRange::new(*self.start(), *start_to_end.start() - 1))
    +            Some(FrameRange::<P>::new(*self.start(), *start_to_end.start() - 1))
             };
     
    -        let after_end = if *start_to_end.end() == MAX_FRAME || *start_to_end.end() == *self.end() {
    +        let after_end = if *start_to_end.end() == Frame::<P>::MAX || *start_to_end.end() == *self.end() {
                 None
             } else {
    -            Some(FrameRange::new(*start_to_end.end() + 1, *self.end()))
    +            Some(FrameRange::<P>::new(*start_to_end.end() + 1, *self.end()))
             };
     
             let typ = self.typ;
             // ensure the original Frames doesn't run its drop handler and free its frames.
    -        core::mem::forget(self);
    +        mem::forget(self);
             Ok(SplitFrames { 
    -            before_start: before_start.map(|frames| Frames { typ, frames }),
    -            start_to_end: Frames { typ, frames: start_to_end }, 
    -            after_end: after_end.map(|frames| Frames { typ, frames }),
    +            before_start: before_start.map(|frame_range| Frames { typ, frame_range }),
    +            start_to_end: Frames { typ, frame_range: start_to_end }, 
    +            after_end: after_end.map(|frame_range| Frames { typ, frame_range }),
             })
         }
     
    @@ -2084,24 +2128,24 @@
         /// Returns an `Err` containing this `Frames` if `at_frame` is otherwise out of bounds, or if `self` was empty.
         /// 
         /// [`core::slice::split_at()`]: https://doc.rust-lang.org/core/primitive.slice.html#method.split_at
    -    pub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self> {
    +    pub fn split_at(self, at_frame: Frame<P>) -> Result<(Self, Self), Self> {
             if self.is_empty() { return Err(self); }
     
             let end_of_first = at_frame - 1;
     
             let (first, second) = if at_frame == *self.start() && at_frame <= *self.end() {
    -            let first  = FrameRange::empty();
    -            let second = FrameRange::new(at_frame, *self.end());
    +            let first  = FrameRange::<P>::empty();
    +            let second = FrameRange::<P>::new(at_frame, *self.end());
                 (first, second)
             } 
             else if at_frame == (*self.end() + 1) && end_of_first >= *self.start() {
    -            let first  = FrameRange::new(*self.start(), *self.end()); 
    -            let second = FrameRange::empty();
    +            let first  = FrameRange::<P>::new(*self.start(), *self.end()); 
    +            let second = FrameRange::<P>::empty();
                 (first, second)
             }
             else if at_frame > *self.start() && end_of_first <= *self.end() {
    -            let first  = FrameRange::new(*self.start(), end_of_first);
    -            let second = FrameRange::new(at_frame, *self.end());
    +            let first  = FrameRange::<P>::new(*self.start(), end_of_first);
    +            let second = FrameRange::<P>::new(at_frame, *self.end());
                 (first, second)
             }
             else {
    @@ -2110,44 +2154,43 @@
     
             let typ = self.typ;
             // ensure the original Frames doesn't run its drop handler and free its frames.
    -        core::mem::forget(self);   
    +        mem::forget(self);   
             Ok((
    -            Frames { typ, frames: first }, 
    -            Frames { typ, frames: second },
    +            Frames { typ, frame_range: first }, 
    +            Frames { typ, frame_range: second },
             ))
         }
     }
     
    -impl<const S: MemoryState> Deref for Frames<S> {
    -    type Target = FrameRange;
    -    fn deref(&self) -> &FrameRange {
    -        &self.frames
    +impl<const S: MemoryState, P: PageSize> Deref for Frames<S, P> {
    +    type Target = FrameRange<P>;
    +    fn deref(&self) -> &Self::Target {
    +        &self.frame_range
         }
     }
    -impl<const S: MemoryState> Ord for Frames<S> {
    +impl<const S: MemoryState, P: PageSize> Ord for Frames<S, P> {
         fn cmp(&self, other: &Self) -> Ordering {
    -        self.frames.start().cmp(other.frames.start())
    +        self.frame_range.start().cmp(other.frame_range.start())
         }
     }
    -impl<const S: MemoryState> PartialOrd for Frames<S> {
    +impl<const S: MemoryState, P: PageSize> PartialOrd for Frames<S, P> {
         fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
             Some(self.cmp(other))
         }
     }
    -impl<const S: MemoryState> PartialEq for Frames<S> {
    +impl<const S: MemoryState, P: PageSize> PartialEq for Frames<S, P> {
         fn eq(&self, other: &Self) -> bool {
    -        self.frames.start() == other.frames.start()
    +        self.frame_range.start() == other.frame_range.start()
         }
     }
    -impl<const S: MemoryState> Borrow<Frame> for &'_ Frames<S> {
    -    fn borrow(&self) -> &Frame {
    -        self.frames.start()
    +impl<const S: MemoryState, P: PageSize> Borrow<Frame<P>> for &'_ Frames<S, P> {
    +    fn borrow(&self) -> &Frame<P> {
    +        self.frame_range.start()
         }
     }
    -
    -impl<const S: MemoryState> fmt::Debug for Frames<S> {
    +impl<const S: MemoryState, P: PageSize> fmt::Debug for Frames<S, P> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    -        write!(f, "Frames({:?}, {:?})", self.frames, self.typ)
    +        write!(f, "Frames({:?}, {:?})", self.frame_range, self.typ)
         }
     }
     
    @@ -2191,8 +2234,8 @@
     }
     impl<'list> Drop for DeferredAllocAction<'list> {
         fn drop(&mut self) {
    -        let frames1 = core::mem::replace(&mut self.free1, Frames::empty());
    -        let frames2 = core::mem::replace(&mut self.free2, Frames::empty());
    +        let frames1 = mem::replace(&mut self.free1, Frames::empty());
    +        let frames2 = mem::replace(&mut self.free2, Frames::empty());
             
             // Insert all of the chunks, both allocated and free ones, into the list. 
             if frames1.size_in_frames() > 0 {
    @@ -2217,14 +2260,14 @@
     #[derive(Debug)]
     enum AllocationError {
         /// The requested address was not free: it was already allocated.
    -    AddressNotFree(Frame, usize),
    +    AddressNotFree(Frame<Page4K>, usize),
         /// The requested address was outside the range of this allocator.
    -    AddressNotFound(Frame, usize),
    +    AddressNotFound(Frame<Page4K>, usize),
         /// The address space was full, or there was not a large-enough chunk 
         /// or enough remaining chunks that could satisfy the requested allocation size.
         OutOfAddressSpace(usize),
         /// The starting address was found, but not all successive contiguous frames were available.
    -    ContiguousChunkNotFound(Frame, usize),
    +    ContiguousChunkNotFound(Frame<Page4K>, usize),
     }
     impl From<AllocationError> for &'static str {
         fn from(alloc_err: AllocationError) -> &'static str {
    @@ -2242,9 +2285,9 @@
     /// `requested_frame` to `requested_frame + num_frames`.
     fn find_specific_chunk(
         list: &mut StaticArrayRBTree<FreeFrames>,
    -    requested_frame: Frame,
    +    requested_frame: Frame<Page4K>,
         num_frames: usize
    -) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), AllocationError> {
    +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), AllocationError> {
     
         // The end frame is an inclusive bound, hence the -1. Parentheses are needed to avoid overflow.
         let requested_end_frame = requested_frame + (num_frames - 1);
    @@ -2326,7 +2369,7 @@
     fn find_any_chunk(
         list: &mut StaticArrayRBTree<FreeFrames>,
         num_frames: usize
    -) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), AllocationError> {
    +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), AllocationError> {
         // During the first pass, we ignore designated regions.
         match list.0 {
             Inner::Array(ref mut arr) => {
    @@ -2388,10 +2431,10 @@
     /// This function breaks up that chunk into multiple ones and returns an `AllocatedFrames` 
     /// from (part of) that chunk that has the same range as `frames_to_allocate`.
     fn allocate_from_chosen_chunk(
    -    frames_to_allocate: FrameRange,
    +    frames_to_allocate: FrameRange<Page4K>,
         initial_chunk_ref: ValueRefMut<FreeFrames>,
         next_chunk: Option<FreeFrames>,
    -) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), AllocationError> {
    +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), AllocationError> {
         // Remove the initial chunk from the free frame list.
         let mut chosen_chunk = retrieve_frames_from_ref(initial_chunk_ref)
             .expect("BUG: Failed to retrieve chunk from free list");
    @@ -2421,7 +2464,7 @@
     /// Returns `true` if the given list contains *any* of the given `frames`.
     fn contains_any(
         list: &StaticArrayRBTree<PhysicalMemoryRegion>,
    -    frames: &FrameRange,
    +    frames: &FrameRange<Page4K>,
     ) -> bool {
         match &list.0 {
             Inner::Array(ref arr) => {
    @@ -2461,11 +2504,12 @@
     fn add_reserved_region_to_lists(
         regions_list: &mut StaticArrayRBTree<PhysicalMemoryRegion>,
         frames_list: &mut StaticArrayRBTree<FreeFrames>,
    -    frames: FrameRange,
    -) -> Result<FrameRange, &'static str> {
    +    frames: FrameRange<Page4K>,
    +) -> Result<FrameRange<Page4K>, &'static str> {
     
         // first check the regions list for overlaps and proceed only if there are none.
    -    if contains_any(regions_list, &frames){
    +    if contains_any(regions_list, &frames) {
    +        error!("Failed to add reserved region {frames:X?} due to overlap with existing regions.");
             return Err("Failed to add reserved region that overlapped with existing reserved regions.");
         }
     
    @@ -2539,7 +2583,7 @@
     pub fn allocate_frames_deferred(
         requested_paddr: Option<PhysicalAddress>,
         num_frames: usize,
    -) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), &'static str> {
    +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), &'static str> {
         if num_frames == 0 {
             warn!("frame_allocator: requested an allocation of 0 frames... stupid!");
             return Err("cannot allocate zero frames");
    @@ -2596,13 +2640,13 @@
     pub fn allocate_frames_by_bytes_deferred(
         requested_paddr: Option<PhysicalAddress>,
         num_bytes: usize,
    -) -> Result<(AllocatedFrames, DeferredAllocAction<'static>), &'static str> {
    +) -> Result<(AllocatedFrames<Page4K>, DeferredAllocAction<'static>), &'static str> {
         let actual_num_bytes = if let Some(paddr) = requested_paddr {
    -        num_bytes + (paddr.value() % FRAME_SIZE)
    +        num_bytes + (paddr.value() % FRAME_4K_SIZE_IN_BYTES)
         } else {
             num_bytes
         };
    -    let num_frames = (actual_num_bytes + FRAME_SIZE - 1) / FRAME_SIZE; // round up
    +    let num_frames = (actual_num_bytes + FRAME_4K_SIZE_IN_BYTES - 1) / FRAME_4K_SIZE_IN_BYTES; // round up
         allocate_frames_deferred(requested_paddr, num_frames)
     }
     
    @@ -2610,7 +2654,7 @@
     /// Allocates the given number of frames with no constraints on the starting physical address.
     /// 
     /// See [`allocate_frames_deferred()`](fn.allocate_frames_deferred.html) for more details. 
    -pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames> {
    +pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames<Page4K>> {
         allocate_frames_deferred(None, num_frames)
             .map(|(af, _action)| af)
             .ok()
    @@ -2622,7 +2666,7 @@
     /// 
     /// This function still allocates whole frames by rounding up the number of bytes. 
     /// See [`allocate_frames_deferred()`](fn.allocate_frames_deferred.html) for more details. 
    -pub fn allocate_frames_by_bytes(num_bytes: usize) -> Option<AllocatedFrames> {
    +pub fn allocate_frames_by_bytes(num_bytes: usize) -> Option<AllocatedFrames<Page4K>> {
         allocate_frames_by_bytes_deferred(None, num_bytes)
             .map(|(af, _action)| af)
             .ok()
    @@ -2633,7 +2677,7 @@
     /// 
     /// This function still allocates whole frames by rounding up the number of bytes. 
     /// See [`allocate_frames_deferred()`](fn.allocate_frames_deferred.html) for more details. 
    -pub fn allocate_frames_by_bytes_at(paddr: PhysicalAddress, num_bytes: usize) -> Result<AllocatedFrames, &'static str> {
    +pub fn allocate_frames_by_bytes_at(paddr: PhysicalAddress, num_bytes: usize) -> Result<AllocatedFrames<Page4K>, &'static str> {
         allocate_frames_by_bytes_deferred(Some(paddr), num_bytes)
             .map(|(af, _action)| af)
     }
    @@ -2642,13 +2686,13 @@
     /// Allocates the given number of frames starting at (inclusive of) the frame containing the given `PhysicalAddress`.
     /// 
     /// See [`allocate_frames_deferred()`](fn.allocate_frames_deferred.html) for more details. 
    -pub fn allocate_frames_at(paddr: PhysicalAddress, num_frames: usize) -> Result<AllocatedFrames, &'static str> {
    +pub fn allocate_frames_at(paddr: PhysicalAddress, num_frames: usize) -> Result<AllocatedFrames<Page4K>, &'static str> {
         allocate_frames_deferred(Some(paddr), num_frames)
             .map(|(af, _action)| af)
     }
     
     
    -/// An enum that must be returned by the function passed into [`iter_free_frames()`]
    +/// An enum that must be returned by the function passed into [`inspect_then_allocate_free_frames()`]
     /// in order to define the post-iteration behavior.
     pub enum FramesIteratorRequest {
         /// Keep iterating to the next chunk of frames.
    @@ -2657,7 +2701,7 @@
         Stop,
         /// Stop iterating, and then attempt to allocate the specified frames.
         AllocateAt {
    -        requested_frame: Frame,
    +        requested_frame: Frame<Page4K>,
             num_frames: usize,
         }
     }
    @@ -2668,7 +2712,7 @@
     /// See [`FramesIteratorRequest`] for more detail.
     pub fn inspect_then_allocate_free_frames<F>(
         func: &mut F,
    -) -> Result<Option<AllocatedFrames>, &'static str>
    +) -> Result<Option<AllocatedFrames<Page4K>>, &'static str>
     where
         F: FnMut(&FreeFrames) -> FramesIteratorRequest
     {
    diff --git a/doc/src/memory/lib.rs.html b/doc/src/memory/lib.rs.html
    index 22b5aade10..3ca26721b0 100644
    --- a/doc/src/memory/lib.rs.html
    +++ b/doc/src/memory/lib.rs.html
    @@ -383,6 +383,7 @@
     383
     384
     385
    +386
     
    //! This crate implements the main memory management subsystem for Theseus.
     //!
     //! The primary type of interest is [`MappedPages`], which offers a robust
    @@ -397,6 +398,7 @@
     
     #![no_std]
     #![feature(ptr_internals)]
    +#![feature(more_qualified_paths)]
     
     extern crate alloc;
     
    diff --git a/doc/src/memory/paging/mapper.rs.html b/doc/src/memory/paging/mapper.rs.html
    index ec992053eb..6a37f3a920 100644
    --- a/doc/src/memory/paging/mapper.rs.html
    +++ b/doc/src/memory/paging/mapper.rs.html
    @@ -1325,6 +1325,154 @@
     1325
     1326
     1327
    +1328
    +1329
    +1330
    +1331
    +1332
    +1333
    +1334
    +1335
    +1336
    +1337
    +1338
    +1339
    +1340
    +1341
    +1342
    +1343
    +1344
    +1345
    +1346
    +1347
    +1348
    +1349
    +1350
    +1351
    +1352
    +1353
    +1354
    +1355
    +1356
    +1357
    +1358
    +1359
    +1360
    +1361
    +1362
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    +1390
    +1391
    +1392
    +1393
    +1394
    +1395
    +1396
    +1397
    +1398
    +1399
    +1400
    +1401
    +1402
    +1403
    +1404
    +1405
    +1406
    +1407
    +1408
    +1409
    +1410
    +1411
    +1412
    +1413
    +1414
    +1415
    +1416
    +1417
    +1418
    +1419
    +1420
    +1421
    +1422
    +1423
    +1424
    +1425
    +1426
    +1427
    +1428
    +1429
    +1430
    +1431
    +1432
    +1433
    +1434
    +1435
    +1436
    +1437
    +1438
    +1439
    +1440
    +1441
    +1442
    +1443
    +1444
    +1445
    +1446
    +1447
    +1448
    +1449
    +1450
    +1451
    +1452
    +1453
    +1454
    +1455
    +1456
    +1457
    +1458
    +1459
    +1460
    +1461
    +1462
    +1463
    +1464
    +1465
    +1466
    +1467
    +1468
    +1469
    +1470
    +1471
    +1472
    +1473
    +1474
    +1475
     
    // Copyright 2016 Philipp Oppermann. See the README.md
     // file at the top-level directory of this distribution.
     //
    @@ -1345,6 +1493,7 @@
         slice,
     };
     use log::{error, warn, debug, trace};
    +use memory_structs::{PageSize, Page4K};
     use crate::{BROADCAST_TLB_SHOOTDOWN_FUNC, VirtualAddress, PhysicalAddress, Page, Frame, FrameRange, AllocatedPages, AllocatedFrames, UnmappedFrames}; 
     use crate::paging::{
         get_current_p4,
    @@ -1377,7 +1526,8 @@
     /// This is safe because the frame allocator can only be initialized once, and also because
     /// only this crate has access to that function callback and can thus guarantee
     /// that it is only invoked for `UnmappedFrameRange`.
    -pub(super) static INTO_UNMAPPED_FRAMES_FUNC: Once<fn(FrameRange) -> UnmappedFrames> = Once::new();
    +pub(super) static INTO_UNMAPPED_FRAMES_FUNC:
    +    Once<  fn(FrameRange<Page4K>) -> UnmappedFrames<Page4K>  > = Once::new();
     
     /// A convenience function to translate the given virtual address into a
     /// physical address using the currently-active page table.
    @@ -1388,7 +1538,7 @@
     pub struct Mapper {
         p4: Unique<Table<Level4>>,
         /// The Frame contaning the top-level P4 page table.
    -    pub(crate) target_p4: Frame,
    +    pub(crate) target_p4: Frame<Page4K>,
     }
     
     impl Mapper {
    @@ -1402,7 +1552,7 @@
         /// to map the given `p4` frame.
         ///
         /// The given `p4` frame is the root frame of that upcoming page table.
    -    pub(crate) fn with_p4_frame(p4: Frame) -> Mapper {
    +    pub(crate) fn with_p4_frame(p4: Frame<Page4K>) -> Mapper {
             Mapper { 
                 p4: Unique::new(P4).unwrap(), // cannot panic; the P4 value is valid
                 target_p4: p4,
    @@ -1414,7 +1564,7 @@
         /// to map that new page table.
         ///
         /// The given `p4` frame is the root frame of that upcoming page table.
    -    pub(crate) fn upcoming(p4: Frame) -> Mapper {
    +    pub(crate) fn upcoming(p4: Frame<Page4K>) -> Mapper {
             Mapper {
                 p4: Unique::new(UPCOMING_P4).unwrap(),
                 target_p4: p4,
    @@ -1468,6 +1618,9 @@
         }
     
         /// Translates a virtual memory `Page` to a physical memory `Frame` by walking the page tables.
    +    ///
    +    /// Note that this only supports translating a 4K page into a 4K frame,
    +    /// but it still correctly handles the cases where huge pages are used in the page tables.
         pub fn translate_page(&self, page: Page) -> Option<Frame> {
             let p3 = self.p4().next_table(page.p4_index());
     
    @@ -1510,21 +1663,76 @@
                 .or_else(huge_page)
         }
     
    +    /*
    +     * An unfinished implementation of a generically-sized translate routine that handles huge pages.
    +     *
    +    /// Translates a virtual memory `Page` to a physical memory `Frame` by walking the page tables.
    +    pub fn translate_page<P: PageSize>(&self, page: Page<P>) -> Option<Frame<P>> {
    +        let p3 = self.p4().next_table(page.p4_index());
    +
    +        #[cfg(target_arch = "x86_64")]
    +        let huge_page = || {
    +            p3.and_then(|p3| {
    +                let p3_entry = &p3[page.p3_index()];
    +                // 1GiB page?
    +                if let Some(start_frame) = p3_entry.pointed_frame() {
    +                    if p3_entry.flags().is_huge() {
    +                        // address must be 1GiB aligned
    +                        assert!(start_frame.number() % (ENTRIES_PER_PAGE_TABLE * ENTRIES_PER_PAGE_TABLE) == 0);
    +                        return Some(
    +                            Frame::containing_address_1gb(PhysicalAddress::new_canonical(
    +                                PAGE_SIZE * (start_frame.number() + page.p2_index() * ENTRIES_PER_PAGE_TABLE + page.p1_index())
    +                            ))
    +                            .from_1g_into_generic()
    +                        );
    +                    }
    +                }
    +                if let Some(p2) = p3.next_table(page.p3_index()) {
    +                    let p2_entry = &p2[page.p2_index()];
    +                    // 2MiB page?
    +                    if let Some(start_frame) = p2_entry.pointed_frame() {
    +                        if p2_entry.flags().is_huge() {
    +                            // address must be 2MiB aligned
    +                            assert!(start_frame.number() % ENTRIES_PER_PAGE_TABLE == 0);
    +                            return Some(
    +                                Frame::containing_address_2mb(PhysicalAddress::new_canonical(
    +                                    PAGE_SIZE * (start_frame.number() + page.p1_index())
    +                                ))
    +                                .from_2m_into_generic()
    +                            );
    +                        }
    +                    }
    +                }
    +                None
    +            })
    +        };
    +        #[cfg(target_arch = "aarch64")]
    +        let huge_page = || { todo!("huge page (block descriptor) translation for aarch64") };
     
    -    /// An internal function that performs the actual mapping of a range of allocated `pages`
    +        p3.and_then(|p3| p3.next_table(page.p3_index()))
    +            .and_then(|p2| p2.next_table(page.p2_index()))
    +            .and_then(|p1| p1[page.p1_index()].pointed_frame())
    +            .map(Frame::from_4k_into_generic)
    +            .or_else(huge_page)
    +    }
    +    */
    +
    +
    +    /// An internal function that performs the actual mapping of a range of allocated `pages`
         /// to a range of allocated `frames`.
         /// 
         /// Returns a tuple of the new `MappedPages` object containing the allocated `pages`
         /// and the allocated `frames` object.
    -    pub(super) fn internal_map_to<Frames, Flags>(
    +    pub(super) fn internal_map_to<P, BF, FL>(
             &mut self,
    -        pages: AllocatedPages,
    -        frames: Frames,
    -        flags: Flags,
    -    ) -> Result<(MappedPages, Frames::Inner), &'static str> 
    -    where
    -        Frames: OwnedOrBorrowed<AllocatedFrames>,
    -        Flags: Into<PteFlagsArch>,
    +        pages: AllocatedPages/* <P> */,
    +        frames: BF,
    +        flags: FL,
    +    ) -> Result<(MappedPages, BF::Inner), &'static str> 
    +    where 
    +        P: PageSize,
    +        BF: OwnedOrBorrowed<AllocatedFrames<P>>,
    +        FL: Into<PteFlagsArch>,
         {
             let frames = frames.into_inner();
             let flags = flags.into();
    @@ -1534,7 +1742,7 @@
             // we are mapping it exclusively (i.e., owned `AllocatedFrames` are passed in).
             let actual_flags = flags
                 .valid(true)
    -            .exclusive(Frames::OWNED);
    +            .exclusive(BF::OWNED);
     
             let pages_count = pages.size_in_pages();
             let frames_count = frames.borrow().size_in_frames();
    @@ -1545,7 +1753,9 @@
                 return Err("map_allocated_pages_to(): page count must equal frame count");
             }
     
    -        // iterate over pages and frames in lockstep
    +        // TODO FIXME: implement huge pages here.
    +
    +        // iterate over pages and frames in lockstep
             for (page, frame) in pages.range().clone().into_iter().zip(frames.borrow().into_iter()) {
                 let p3 = self.p4_mut().next_table_create(page.p4_index(), higher_level_flags);
                 let p2 = p3.next_table_create(page.p3_index(), higher_level_flags);
    @@ -1573,12 +1783,16 @@
         /// Maps the given virtual `AllocatedPages` to the given physical `AllocatedFrames`.
         /// 
         /// Consumes the given `AllocatedPages` and returns a `MappedPages` object which contains those `AllocatedPages`.
    -    pub fn map_allocated_pages_to<F: Into<PteFlagsArch>>(
    +    pub fn map_allocated_pages_to<P, FL>(
             &mut self,
    -        pages: AllocatedPages,
    -        frames: AllocatedFrames,
    -        flags: F,
    -    ) -> Result<MappedPages, &'static str> {
    +        pages: AllocatedPages /* <P> */,
    +        frames: AllocatedFrames<P>,
    +        flags: FL,
    +    ) -> Result<MappedPages, &'static str>
    +    where 
    +        P: PageSize,
    +        FL: Into<PteFlagsArch>,
    +    {
             let (mapped_pages, frames) = self.internal_map_to(pages, Owned(frames), flags)?;
             
             // Currently we forget the actual `AllocatedFrames` object because
    @@ -1591,13 +1805,17 @@
         }
     
     
    -    /// Maps the given `AllocatedPages` to randomly chosen (allocated) physical frames.
    -    /// 
    +    /// Maps the given 4K-sized `AllocatedPages` to randomly chosen (allocated) physical frames.
    +    ///
         /// Consumes the given `AllocatedPages` and returns a `MappedPages` object which contains those `AllocatedPages`.
    -    pub fn map_allocated_pages<F: Into<PteFlagsArch>>(
    +    ///
    +    /// ## Note on huge pages
    +    /// This function only supports 4K-sized pages, not huge pages.
    +    /// To use huge pages, you must provide the huge frames and call [`Self::map_allocated_pages_to()`].
    +    pub fn map_allocated_pages<FL: Into<PteFlagsArch>>(
             &mut self,
             pages: AllocatedPages,
    -        flags: F,
    +        flags: FL,
         ) -> Result<MappedPages, &'static str> {
             let flags = flags.into();
             let higher_level_flags = flags.adjust_for_higher_level_pte();
    @@ -1652,11 +1870,11 @@
         /// Consumes the given `AllocatedPages` and returns a `MappedPages` object
         /// which contains those `AllocatedPages`.
         #[doc(hidden)]
    -    pub unsafe fn map_to_non_exclusive<F: Into<PteFlagsArch>>(
    +    pub unsafe fn map_to_non_exclusive<FL: Into<PteFlagsArch>>(
             mapper: &mut Self,
             pages: AllocatedPages,
    -        frames: &AllocatedFrames,
    -        flags: F,
    +        frames: &AllocatedFrames<Page4K>,
    +        flags: FL,
         ) -> Result<MappedPages, &'static str> {
             // In this function, none of the frames can be mapped as exclusive
             // because we're accepting a *reference* to an `AllocatedFrames`, not consuming it.
    @@ -1666,6 +1884,84 @@
     }
     
     
    +/// A macro for applying the same field/method accessors to all variants
    +/// in an enum based on the three possible [`PageSize`]s.
    +#[macro_export]
    +macro_rules! chunk_sized_expr {
    +    ($t:ty, $chunk:ident, .$($method:tt)*) => {
    +        match $chunk {
    +            <$t>::Normal4K(c) => c.$($method)*,
    +            <$t>::Huge2M(c)   => c.$($method)*,
    +            <$t>::Huge1G(c)   => c.$($method)*,
    +        }
    +    };
    +}
    +
    +/// A version of [`AllocatedPages`] that encodes its [`PageSize`] with internal enum variants.
    +#[derive(Debug)]
    +#[allow(dead_code)]
    +pub enum AllocatedPagesSized {
    +    // TODO: support huge pages via the `P: PageSize` parameter.
    +
    +    /// A range of normal 4K-sized allocated pages.
    +    Normal4K(AllocatedPages /* <Page4K> */),
    +    /// A range of huge 2M-sized allocated pages.
    +    Huge2M(AllocatedPages /* <Page2M> */),
    +    /// A range of huge 1G-sized allocated pages.
    +    Huge1G(AllocatedPages /* <Page1G> */),
    +}
    +impl Default for AllocatedPagesSized {
    +    fn default() -> Self {
    +        Self::empty()
    +    }
    +}
    +impl From<AllocatedPages/* <Page4K >*/> for AllocatedPagesSized {
    +    fn from(p: AllocatedPages/* <Page4K >*/) -> Self {
    +        Self::Normal4K(p)
    +    }
    +}
    +/*
    + * TODO: support huge pages via the `P: PageSize` parameter.
    + * 
    +impl From<AllocatedPages<Page2M>> for AllocatedPagesSized {
    +    fn from(p: AllocatedPages<Page2M>) -> Self {
    +        Self::Huge2M(chunk)
    +    }
    +}
    +impl From<AllocatedPages<Page1G>> for AllocatedPagesSized {
    +    fn from(p: AllocatedPages<Page1G>) -> Self {
    +        Self::Huge1G(chunk)
    +    }
    +}
    +*/
    +#[allow(dead_code)]
    +impl AllocatedPagesSized {
    +    /// Returns an empty `AllocatedPagesSized` object that performs no page allocation. 
    +    /// Can be used as a placeholder, but will not permit any real usage. 
    +    pub const fn empty() -> Self {
    +        Self::Normal4K(AllocatedPages::empty())
    +    }
    +    /// Returns the 4K-sized number of the starting page of the enclosed `AllocatedPages`.
    +    pub const fn number(&self) -> usize {
    +        chunk_sized_expr!(Self, self, .start().number())
    +    }
    +    /// Returns the virtual address of the starting page of the enclosed `AllocatedPages`.
    +    pub const fn start_address(&self) -> VirtualAddress {
    +        chunk_sized_expr!(Self, self, .start_address())
    +    }
    +    /// Converts this into a 4K-sized `AllocatedPages`.
    +    pub fn into_4k(self) -> AllocatedPages /* <Page4K> */ {
    +        // To make this a const fn, we cannot use the implementations of `Into`.
    +        match self {
    +            Self::Normal4K(p) => p,
    +            Self::Huge2M(p)   => p, /* TODO: support huge page range conversions */
    +            Self::Huge1G(p)   => p, /* TODO: support huge page range conversions */
    +        }
    +    }
    +}           
    +
    +
    +
     /// Represents a contiguous range of virtual memory pages that are currently mapped. 
     /// A `MappedPages` object can only have a single range of contiguous pages, not multiple disjoint ranges.
     /// This does not guarantee that its pages are mapped to frames that are contiguous in physical memory.
    @@ -1677,7 +1973,7 @@
     #[derive(Debug)]
     pub struct MappedPages {
         /// The Frame containing the top-level P4 page table that this MappedPages was originally mapped into. 
    -    page_table_p4: Frame,
    +    page_table_p4: Frame<Page4K>,
         /// The range of allocated virtual pages contained by this mapping.
         pages: AllocatedPages,
         // The PTE flags that define the page permissions of this mapping.
    diff --git a/doc/src/memory/paging/mod.rs.html b/doc/src/memory/paging/mod.rs.html
    index a68c47891b..5dca77be6d 100644
    --- a/doc/src/memory/paging/mod.rs.html
    +++ b/doc/src/memory/paging/mod.rs.html
    @@ -441,6 +441,7 @@
     441
     442
     443
    +444
     
    // Copyright 2016 Philipp Oppermann. See the README.md
     // file at the top-level directory of this distribution.
     //
    @@ -473,6 +474,7 @@
     use log::debug;
     use super::{
         Frame, FrameRange, PageRange, VirtualAddress, PhysicalAddress,
    +    Page4K,
         AllocatedPages, allocate_pages, AllocatedFrames, UnmappedFrames, PteFlags,
         InitialMemoryMappings, tlb_flush_all, tlb_flush_virt_addr,
         get_p4, find_section_memory_bounds,
    @@ -657,7 +659,7 @@
     
     
     /// Returns the current top-level (P4) root page table frame.
    -pub fn get_current_p4() -> Frame {
    +pub fn get_current_p4() -> Frame<Page4K> {
         Frame::containing_address(get_p4())
     }
     
    diff --git a/doc/src/memory_structs/lib.rs.html b/doc/src/memory_structs/lib.rs.html
    index 7b49df0349..649df29ded 100644
    --- a/doc/src/memory_structs/lib.rs.html
    +++ b/doc/src/memory_structs/lib.rs.html
    @@ -728,6 +728,65 @@
     728
     729
     730
    +731
    +732
    +733
    +734
    +735
    +736
    +737
    +738
    +739
    +740
    +741
    +742
    +743
    +744
    +745
    +746
    +747
    +748
    +749
    +750
    +751
    +752
    +753
    +754
    +755
    +756
    +757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
    +767
    +768
    +769
    +770
    +771
    +772
    +773
    +774
    +775
    +776
    +777
    +778
    +779
    +780
    +781
    +782
    +783
    +784
    +785
    +786
    +787
    +788
    +789
     
    //! This crate contains basic types used for memory management.
     //!
     //! The types of interest are divided into three categories:
    @@ -751,7 +810,7 @@
         marker::{ConstParamTy, PhantomData},
         ops::{Add, AddAssign, Deref, DerefMut, Sub, SubAssign},
     };
    -use kernel_config::memory::{MAX_PAGE_NUMBER, PAGE_SIZE, ENTRIES_PER_PAGE_TABLE};
    +use kernel_config::memory::{MAX_PAGE_NUMBER, MAX_VIRTUAL_ADDRESS, PAGE_SIZE, ENTRIES_PER_PAGE_TABLE};
     use zerocopy::FromBytes;
     use paste::paste;
     use derive_more::*;
    @@ -769,7 +828,7 @@
     ///
     /// This is used to parameterize `Page`- and `Frame`-related types with a page size,
     /// in order to define normal and huge pages in a generic manner.
    -pub trait PageSize: Ord + PartialOrd + Clone + Copy + private::Sealed {
    +pub trait PageSize: Ord + PartialOrd + Clone + Copy + private::Sealed + 'static {
         const SIZE: MemChunkSize;
         const NUM_4K_PAGES: usize;
         const SIZE_IN_BYTES: usize;
    @@ -1042,7 +1101,6 @@
     );
     
     
    -
     /// A macro for defining `Page` and `Frame` structs
     /// and implementing their common traits, which are generally identical.
     macro_rules! implement_page_frame {
    @@ -1075,6 +1133,15 @@
                             size: PhantomData
                         }
                     }
    +
    +                #[doc = "Converts a known 4K-sized `" $TypeName "` into a
    +                    `" $TypeName "<P>` with a generic `PageSize` parameter."]
    +                pub const fn from_4k_into_generic<P: PageSize>(self) -> $TypeName<P> {
    +                    $TypeName::<P> {
    +                        number: self.number,
    +                        size: PhantomData
    +                    }
    +                }
                 }
                 impl $TypeName<Page2M> {
                     #[doc = "Returns the 2MiB huge `" $TypeName "` containing the given `" $address "`."]
    @@ -1084,6 +1151,15 @@
                             size: PhantomData,
                         }
                     }
    +
    +                #[doc = "Converts a known 2M-sized `" $TypeName "` into a
    +                    `" $TypeName "<P>` with a generic `PageSize` parameter."]
    +                pub const fn from_2m_into_generic<P: PageSize>(self) -> $TypeName<P> {
    +                    $TypeName::<P> {
    +                        number: self.number,
    +                        size: PhantomData
    +                    }
    +                }
                 }
                 impl $TypeName<Page1G> {
                     #[doc = "Returns the 1GiB huge `" $TypeName "` containing the given `" $address "`."]
    @@ -1093,8 +1169,29 @@
                             size: PhantomData,
                         }
                     }
    +
    +                #[doc = "Converts a known 1G-sized `" $TypeName "` into a
    +                    `" $TypeName "<P>` with a generic `PageSize` parameter."]
    +                pub const fn from_1g_into_generic<P: PageSize>(self) -> $TypeName<P> {
    +                    $TypeName::<P> {
    +                        number: self.number,
    +                        size: PhantomData
    +                    }
    +                }
                 }
    -            impl<P: PageSize + 'static> $TypeName<P> {
    +            impl<P: PageSize> $TypeName<P> {
    +                #[doc = "The minimum (smallest) valid value a `" $TypeName "` can have."]
    +                pub const MIN: $TypeName<P> = $TypeName {
    +                    number: 0,
    +                    size: PhantomData,
    +                };
    +                
    +                #[doc = "The maximum (largest) valid value a `" $TypeName "` can have."]
    +                pub const MAX: $TypeName<P> = $TypeName {
    +                    number: (MAX_VIRTUAL_ADDRESS / P::SIZE_IN_BYTES) * P::NUM_4K_PAGES,
    +                    size: PhantomData,
    +                };
    +
                     #[doc = "Returns the 4K-sized number of this `" $TypeName "`."]
                     #[inline(always)]
                     pub const fn number(&self) -> usize {
    @@ -1111,12 +1208,12 @@
                         P::SIZE
                     }
                 }
    -            impl<P: PageSize + 'static> fmt::Debug for $TypeName<P> {
    +            impl<P: PageSize> fmt::Debug for $TypeName<P> {
                     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                         write!(f, concat!(stringify!($TypeName), "(", $prefix, "{:#X})"), self.start_address())
                     }
                 }
    -            impl<P: PageSize + 'static> Add<usize> for $TypeName<P> {
    +            impl<P: PageSize> Add<usize> for $TypeName<P> {
                     type Output = $TypeName<P>;
                     fn add(self, rhs: usize) -> $TypeName<P> {
                         // cannot exceed max page number (which is also max frame number)
    @@ -1129,7 +1226,7 @@
                         }
                     }
                 }
    -            impl<P: PageSize + 'static> AddAssign<usize> for $TypeName<P> {
    +            impl<P: PageSize> AddAssign<usize> for $TypeName<P> {
                     fn add_assign(&mut self, rhs: usize) {
                         *self = $TypeName {
                             number: core::cmp::min(
    @@ -1140,7 +1237,7 @@
                         }
                     }
                 }
    -            impl<P: PageSize + 'static> Sub<usize> for $TypeName<P> {
    +            impl<P: PageSize> Sub<usize> for $TypeName<P> {
                     type Output = $TypeName<P>;
                     fn sub(self, rhs: usize) -> $TypeName<P> {
                         $TypeName {
    @@ -1149,7 +1246,7 @@
                         }
                     }
                 }
    -            impl<P: PageSize + 'static> SubAssign<usize> for $TypeName<P> {
    +            impl<P: PageSize> SubAssign<usize> for $TypeName<P> {
                     fn sub_assign(&mut self, rhs: usize) {
                         *self = $TypeName {
                             number: self.number.saturating_sub(rhs.saturating_mul(P::NUM_4K_PAGES)),
    @@ -1157,7 +1254,7 @@
                         }
                     }
                 }
    -            impl<P: PageSize + 'static> Step for $TypeName<P> {
    +            impl<P: PageSize> Step for $TypeName<P> {
                     #[inline]
                     fn steps_between(start: &$TypeName<P>, end: &$TypeName<P>) -> Option<usize> {
                         Step::steps_between(&start.number, &end.number)
    @@ -1224,7 +1321,7 @@
     implement_page_frame!(Frame, "physical", "p", PhysicalAddress);
     
     // Implement other functions for the `Page` type that aren't relevant for `Frame.
    -impl<P: PageSize + 'static> Page<P> {
    +impl<P: PageSize> Page<P> {
         /// Returns the 9-bit part of this `Page`'s [`VirtualAddress`] that is the index into the P4 page table entries list.
         pub const fn p4_index(&self) -> usize {
             (self.number >> 27) & 0x1FF
    @@ -1262,11 +1359,6 @@
                 pub struct $TypeName<P: PageSize = Page4K>(RangeInclusive<$chunk::<P>>);
     
                 impl $TypeName<Page4K> {
    -                #[doc = "Creates a `" $TypeName "` that will always yield `None` when iterated."]
    -                pub const fn empty() -> Self {
    -                    Self::new($chunk { number: 1, size: PhantomData }, $chunk { number: 0, size: PhantomData })
    -                }
    -
                     #[doc = "A convenience method for creating a new `" $TypeName "` that spans \
                         all [`" $chunk "`]s from the given [`" $address "`] to an end bound based on the given size."]
                     pub const fn [<from_ $short _addr>](starting_addr: $address, size_in_bytes: usize) -> $TypeName {
    @@ -1282,12 +1374,30 @@
                         }
                     }
                 }
    -            impl<P: PageSize + 'static> $TypeName<P> {
    +            impl<P: PageSize> $TypeName<P> {
    +                #[doc = "Creates an empty `" $TypeName "` that will always yield `None` when iterated."]
    +                pub const fn empty() -> Self {
    +                    Self::new(
    +                        $chunk { number: 1, size: PhantomData },
    +                        $chunk { number: 0, size: PhantomData },
    +                    )
    +                }
    +
                     #[doc = "Creates a new range of [`" $chunk "`]s that spans from `start` to `end`, both inclusive bounds."]
                     pub const fn new(start: $chunk<P>, end: $chunk<P>) -> $TypeName<P> {
                         $TypeName(RangeInclusive::new(start, end))
                     }
     
    +                #[doc = "Returns the starting [`" $chunk "`] in this `" $TypeName "`."]
    +                pub const fn start(&self) -> &$chunk<P> {
    +                    self.0.start()
    +                }
    +
    +                #[doc = "Returns the ending [`" $chunk "`] in this `" $TypeName "`."]
    +                pub const fn end(&self) -> &$chunk<P> {
    +                    self.0.end()
    +                }
    +
                     #[doc = "Returns the [`" $address "`] of the starting [`" $chunk "`] in this `" $TypeName "`."]
                     pub const fn start_address(&self) -> $address {
                         self.0.start().start_address()
    @@ -1360,8 +1470,7 @@
                         && (other.start() >= self.start())
                         && (other.end() <= self.end())
                     }
    -            }
    -            impl<P: PageSize + Copy + 'static> $TypeName<P> {
    +
                     #[doc = "Returns an inclusive `" $TypeName "` representing the [`" $chunk "`]s that overlap \
                         across this `" $TypeName "` and the given other `" $TypeName "`.\n\n \
                         If there is no overlap between the two ranges, `None` is returned."]
    @@ -1374,13 +1483,32 @@
                             None
                         }
                     }
    +
    +                #[doc = "Converts this range of [`" $chunk "`]s into an identical 4K-sized range."]
    +                pub fn [<into_4k_ $chunk:lower s>](self) -> $TypeName<Page4K> {
    +                    $TypeName::<Page4K>::new(
    +                        $chunk::<Page4K> { number: self.0.start().number, size: PhantomData },
    +                        $chunk::<Page4K> {
    +                            // Add 1 because the end bound is inclusive;
    +                            // Subtract 1 because the 4K end bound should extend right up to the end
    +                            // of the 2M or 1G chunk, not one past it.
    +                            number: (self.0.end().number + (1 * P::NUM_4K_PAGES) - 1),
    +                            size: PhantomData,
    +                        },
    +                    )
    +                }
    +            }
    +            impl<P: PageSize> Default for $TypeName<P> {
    +                fn default() -> Self {
    +                    Self::empty()
    +                }
                 }
    -            impl<P: PageSize + 'static> fmt::Debug for $TypeName<P> {
    +            impl<P: PageSize> fmt::Debug for $TypeName<P> {
                     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                         write!(f, "{:?}", self.0)
                     }
                 }
    -            impl<P: PageSize + 'static> Deref for $TypeName<P> {
    +            impl<P: PageSize> Deref for $TypeName<P> {
                     type Target = RangeInclusive<$chunk<P>>;
                     fn deref(&self) -> &RangeInclusive<$chunk<P>> {
                         &self.0
    @@ -1391,39 +1519,29 @@
                         &mut self.0
                     }
                 }
    -            impl<P: PageSize + 'static> IntoIterator for $TypeName<P> {
    +            impl<P: PageSize> IntoIterator for &'_ $TypeName<P> {
                     type Item = $chunk<P>;
                     type IntoIter = RangeInclusiveIterator<$chunk<P>>;
                     fn into_iter(self) -> Self::IntoIter {
                         self.0.iter()
                     }
                 }
    -
    -            
    -            #[doc = "A `" $TypeName "` that implements `Copy`."]
    -            #[derive(Clone, Copy)]
    -            pub struct [<Copyable $TypeName>]<P: PageSize = Page4K> {
    -                start: $chunk<P>,
    -                end: $chunk<P>,
    -            }
    -            impl<P: PageSize + Copy + 'static> From<$TypeName<P>> for [<Copyable $TypeName>]<P> {
    -                fn from(r: $TypeName<P>) -> Self {
    -                    Self { start: *r.start(), end: *r.end() }
    -                }
    -            }
    -            impl<P: PageSize + Copy + 'static> From<[<Copyable $TypeName>]<P>> for $TypeName<P> {
    -                fn from(cr: [<Copyable $TypeName>]<P>) -> Self {
    -                    Self::new(cr.start, cr.end)
    +            impl<P: PageSize> IntoIterator for $TypeName<P> {
    +                type Item = $chunk<P>;
    +                type IntoIter = RangeInclusiveIterator<$chunk<P>>;
    +                fn into_iter(self) -> Self::IntoIter {
    +                    self.0.iter()
                     }
                 }
    +
                 impl From<$TypeName<Page2M>> for $TypeName<Page4K> {
                     fn from(r: $TypeName<Page2M>) -> Self {
    -                    Self::new($chunk::from(*r.start()), $chunk::from(*r.end()))
    +                    r.[<into_4k_ $chunk:lower s>]()
                     }
                 }
                 impl From<$TypeName<Page1G>> for $TypeName<Page4K> {
                     fn from(r: $TypeName<Page1G>) -> Self {
    -                    Self::new($chunk::from(*r.start()), $chunk::from(*r.end()))
    +                    r.[<into_4k_ $chunk:lower s>]()
                     }
                 }
                 impl TryFrom<$TypeName<Page4K>> for $TypeName<Page2M> {
    diff --git a/doc/src/page_allocator/lib.rs.html b/doc/src/page_allocator/lib.rs.html
    index 569352381a..0a418e6d85 100644
    --- a/doc/src/page_allocator/lib.rs.html
    +++ b/doc/src/page_allocator/lib.rs.html
    @@ -926,6 +926,16 @@
     926
     927
     928
    +929
    +930
    +931
    +932
    +933
    +934
    +935
    +936
    +937
    +938
     
    //! Provides an allocator for virtual memory pages.
     //! The minimum unit of allocation is a single page. 
     //! 
    @@ -960,7 +970,7 @@
     
     use core::{borrow::Borrow, cmp::{Ordering, max, min}, fmt, ops::{Deref, DerefMut}};
     use kernel_config::memory::*;
    -use memory_structs::{VirtualAddress, Page, PageRange};
    +use memory_structs::{VirtualAddress, Page, PageRange, PageSize, Page4K, Page2M, Page1G};
     use spin::{Mutex, Once};
     use static_array_rb_tree::*;
     
    @@ -1068,7 +1078,7 @@
     }
     
     
    -/// A range of contiguous pages.
    +/// A range of contiguous 4K-sized pages.
     ///
     /// # Ordering and Equality
     ///
    @@ -1082,11 +1092,11 @@
     #[derive(Debug, Clone, Eq)]
     struct Chunk {
     	/// The Pages covered by this chunk, an inclusive range. 
    -	pages: PageRange,
    +	pages: PageRange<Page4K>,
     }
     impl Chunk {
    -	fn as_allocated_pages(&self) -> AllocatedPages {
    -		AllocatedPages {
    +	fn as_allocated_pages(&self) -> AllocatedPages<Page4K> {
    +		AllocatedPages::<Page4K> {
     			pages: self.pages.clone(),
     		}
     	}
    @@ -1094,13 +1104,13 @@
     	/// Returns a new `Chunk` with an empty range of pages. 
     	fn empty() -> Chunk {
     		Chunk {
    -			pages: PageRange::empty(),
    +			pages: PageRange::<Page4K>::empty(),
     		}
     	}
     }
     impl Deref for Chunk {
    -    type Target = PageRange;
    -    fn deref(&self) -> &PageRange {
    +    type Target = PageRange<Page4K>;
    +    fn deref(&self) -> &PageRange<Page4K> {
             &self.pages
         }
     }
    @@ -1119,8 +1129,8 @@
             self.pages.start() == other.pages.start()
         }
     }
    -impl Borrow<Page> for &'_ Chunk {
    -	fn borrow(&self) -> &Page {
    +impl Borrow<Page<Page4K>> for &'_ Chunk {
    +	fn borrow(&self) -> &Page<Page4K> {
     		self.pages.start()
     	}
     }
    @@ -1133,55 +1143,62 @@
     /// 
     /// This object represents ownership of the allocated virtual pages;
     /// if this object falls out of scope, its allocated pages will be auto-deallocated upon drop. 
    -pub struct AllocatedPages {
    -	pages: PageRange,
    +pub struct AllocatedPages<P: PageSize = Page4K> {
    +	pages: PageRange<P>,
     }
     
     // AllocatedPages must not be Cloneable, and it must not expose its inner pages as mutable.
    -assert_not_impl_any!(AllocatedPages: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedPages<Page4K>: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedPages<Page2M>: DerefMut, Clone);
    +assert_not_impl_any!(AllocatedPages<Page1G>: DerefMut, Clone);
     
    -impl fmt::Debug for AllocatedPages {
    +impl<P: PageSize> fmt::Debug for AllocatedPages<P> {
         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
     		write!(f, "AllocatedPages({:?})", self.pages)
     	}
     }
    +impl<P: PageSize> Default for AllocatedPages<P> {
    +	fn default() -> AllocatedPages<P> {
    +		Self::empty()
    +	}
    +}
     
    -impl AllocatedPages {
    +impl<P: PageSize> AllocatedPages<P> {
     	/// Returns an empty AllocatedPages object that performs no page allocation. 
         /// Can be used as a placeholder, but will not permit any real usage. 
    -    pub const fn empty() -> AllocatedPages {
    +    pub const fn empty() -> AllocatedPages<P> {
             AllocatedPages {
    -			pages: PageRange::empty()
    +			pages: PageRange::<P>::empty()
     		}
     	}
     
     	/// Returns the starting `VirtualAddress` in this range of pages.
    -    pub fn start_address(&self) -> VirtualAddress {
    +    pub const fn start_address(&self) -> VirtualAddress {
             self.pages.start_address()
         }
     
     	/// Returns the size in bytes of this range of pages.
    -    pub fn size_in_bytes(&self) -> usize {
    +    pub const fn size_in_bytes(&self) -> usize {
             self.pages.size_in_bytes()
         }
     
     	/// Returns the size in number of pages of this range of pages.
    -    pub fn size_in_pages(&self) -> usize {
    +    pub const fn size_in_pages(&self) -> usize {
             self.pages.size_in_pages()
         }
     
     	/// Returns the starting `Page` in this range of pages.
    -	pub fn start(&self) -> &Page {
    +	pub const fn start(&self) -> &Page<P> {
     		self.pages.start()
     	}
     
     	/// Returns the ending `Page` (inclusive) in this range of pages.
    -	pub fn end(&self) -> &Page {
    +	pub const fn end(&self) -> &Page<P> {
     		self.pages.end()
     	}
     
     	/// Returns a reference to the inner `PageRange`, which is cloneable/iterable.
    -	pub fn range(&self) -> &PageRange {
    +	pub const fn range(&self) -> &PageRange<P> {
     		&self.pages
     	}
     
    @@ -1217,12 +1234,12 @@
     	/// that is, `self.end` must equal `ap.start`. 
     	/// If this condition is met, `self` is modified and `Ok(())` is returned,
     	/// otherwise `Err(ap)` is returned.
    -	pub fn merge(&mut self, ap: AllocatedPages) -> Result<(), AllocatedPages> {
    +	pub fn merge(&mut self, ap: AllocatedPages<P>) -> Result<(), AllocatedPages<P>> {
     		// make sure the pages are contiguous
     		if *ap.start() != (*self.end() + 1) {
     			return Err(ap);
     		}
    -		self.pages = PageRange::new(*self.start(), *ap.end());
    +		self.pages = PageRange::<P>::new(*self.start(), *ap.end());
     		// ensure the now-merged AllocatedPages doesn't run its drop handler and free its pages.
     		core::mem::forget(ap); 
     		Ok(())
    @@ -1240,22 +1257,25 @@
         /// Returns an `Err` containing this `AllocatedPages` if `at_page` is otherwise out of bounds.
     	/// 
         /// [`core::slice::split_at()`]: https://doc.rust-lang.org/core/primitive.slice.html#method.split_at
    -    pub fn split(self, at_page: Page) -> Result<(AllocatedPages, AllocatedPages), AllocatedPages> {
    +    pub fn split(
    +		self,
    +		at_page: Page<P>,
    +	) -> Result<(AllocatedPages<P>, AllocatedPages<P>), AllocatedPages<P>> {
             let end_of_first = at_page - 1;
     
             let (first, second) = if at_page == *self.start() && at_page <= *self.end() {
    -            let first  = PageRange::empty();
    -            let second = PageRange::new(at_page, *self.end());
    +            let first  = PageRange::<P>::empty();
    +            let second = PageRange::<P>::new(at_page, *self.end());
                 (first, second)
             } 
             else if at_page == (*self.end() + 1) && end_of_first >= *self.start() {
    -            let first  = PageRange::new(*self.start(), *self.end()); 
    -            let second = PageRange::empty();
    +            let first  = PageRange::<P>::new(*self.start(), *self.end()); 
    +            let second = PageRange::<P>::empty();
                 (first, second)
             }
             else if at_page > *self.start() && end_of_first <= *self.end() {
    -            let first  = PageRange::new(*self.start(), end_of_first);
    -            let second = PageRange::new(at_page, *self.end());
    +            let first  = PageRange::<P>::new(*self.start(), end_of_first);
    +            let second = PageRange::<P>::new(at_page, *self.end());
                 (first, second)
             }
             else {
    @@ -1265,19 +1285,19 @@
             // ensure the original AllocatedPages doesn't run its drop handler and free its pages.
             core::mem::forget(self);   
             Ok((
    -            AllocatedPages { pages: first }, 
    -            AllocatedPages { pages: second },
    +            AllocatedPages::<P> { pages: first }, 
    +            AllocatedPages::<P> { pages: second },
             ))
         }
     }
     
    -impl Drop for AllocatedPages {
    +impl<P: PageSize> Drop for AllocatedPages<P> {
         fn drop(&mut self) {
     		if self.size_in_pages() == 0 { return; }
     		// trace!("page_allocator: deallocating {:?}", self);
     
     		let chunk = Chunk {
    -			pages: self.pages.clone(),
    +			pages: self.pages.clone().into_4k_pages(),
     		};
     		let mut list = FREE_PAGE_LIST.lock();
     		match &mut list.0 {
    @@ -1375,11 +1395,11 @@
     #[derive(Debug)]
     pub enum AllocationError {
     	/// The requested address was not free: it was already allocated, or is outside the range of this allocator.
    -	AddressNotFree(Page, usize),
    +	AddressNotFree(Page<Page4K>, usize),
     	/// The address space was full, or there was not a large-enough chunk 
     	/// or enough remaining chunks (within the given `PageRange`, if any)
     	/// that could satisfy the requested allocation size.
    -	OutOfAddressSpace(usize, Option<PageRange>),
    +	OutOfAddressSpace(usize, Option<PageRange<Page4K>>),
     	/// The allocator has not yet been initialized.
     	NotInitialized,
     }
    @@ -1399,9 +1419,9 @@
     /// `requested_page` to `requested_page + num_pages`.
     fn find_specific_chunk(
     	list: &mut StaticArrayRBTree<Chunk>,
    -	requested_page: Page,
    +	requested_page: Page<Page4K>,
     	num_pages: usize
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), AllocationError> {
    +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), AllocationError> {
     
     	// The end page is an inclusive bound, hence the -1. Parentheses are needed to avoid overflow.
     	let requested_end_page = requested_page + (num_pages - 1); 
    @@ -1471,12 +1491,12 @@
     fn find_any_chunk(
     	list: &mut StaticArrayRBTree<Chunk>,
     	num_pages: usize,
    -	within_range: Option<&PageRange>,
    +	within_range: Option<&PageRange<Page4K>>,
     	alignment_4k_pages: usize,
     ) -> Result<(AllocatedPages, DeferredAllocAction<'static>), AllocationError> {
     	let designated_low_end = DESIGNATED_PAGES_LOW_END.get()
     		.ok_or(AllocationError::NotInitialized)?;
    -	let full_range = PageRange::new(*designated_low_end + 1, DESIGNATED_PAGES_HIGH_START - 1);
    +	let full_range = PageRange::<Page4K>::new(*designated_low_end + 1, DESIGNATED_PAGES_HIGH_START - 1);
     	let range = within_range.unwrap_or(&full_range);
     
     	// During the first pass, we only search within the given range.
    @@ -1628,11 +1648,11 @@
     /// This function breaks up that chunk into multiple ones and returns an `AllocatedPages` 
     /// from (part of) that chunk, ranging from `start_page` to `start_page + num_pages`.
     fn adjust_chosen_chunk(
    -	start_page: Page,
    +	start_page: Page<Page4K>,
     	num_pages: usize,
     	chosen_chunk: &Chunk,
     	mut chosen_chunk_ref: ValueRefMut<Chunk>,
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), AllocationError> {
    +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), AllocationError> {
     
     	// The new allocated chunk might start in the middle of an existing chunk,
     	// so we need to break up that existing chunk into 3 possible chunks: before, newly-allocated, and after.
    @@ -1641,20 +1661,20 @@
     	// an overlapping duplicate Chunk at either the very minimum or the very maximum of the address space.
     	let new_allocation = Chunk {
     		// The end page is an inclusive bound, hence the -1. Parentheses are needed to avoid overflow.
    -		pages: PageRange::new(start_page, start_page + (num_pages - 1)),
    +		pages: PageRange::<Page4K>::new(start_page, start_page + (num_pages - 1)),
     	};
     	let before = if start_page == MIN_PAGE {
     		None
     	} else {
     		Some(Chunk {
    -			pages: PageRange::new(*chosen_chunk.start(), *new_allocation.start() - 1),
    +			pages: PageRange::<Page4K>::new(*chosen_chunk.start(), *new_allocation.start() - 1),
     		})
     	};
     	let after = if new_allocation.end() == &MAX_PAGE { 
     		None
     	} else {
     		Some(Chunk {
    -			pages: PageRange::new(*new_allocation.end() + 1, *chosen_chunk.end()),
    +			pages: PageRange::<Page4K>::new(*new_allocation.end() + 1, *chosen_chunk.end()),
     		})
     	};
     
    @@ -1693,7 +1713,7 @@
     	/// Note: alignment is specified in number of 4KiB pages, not number of bytes.
     	AlignedTo { alignment_4k_pages: usize },
     	/// The allocated pages can be located anywhere within the given range.
    -	WithinRange(&'r PageRange),
    +	WithinRange(&'r PageRange<Page4K>),
     	/// The allocated pages can be located at any virtual address
     	/// and have no special alignment requirements beyond a single page.
     	Any,
    @@ -1724,7 +1744,7 @@
     pub fn allocate_pages_deferred(
     	request: AllocationRequest,
     	num_pages: usize,
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str> {
    +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str> {
     	if num_pages == 0 {
     		warn!("PageAllocator: requested an allocation of 0 pages... stupid!");
     		return Err("cannot allocate zero pages");
    @@ -1762,7 +1782,7 @@
     pub fn allocate_pages_by_bytes_deferred(
     	request: AllocationRequest,
     	num_bytes: usize,
    -) -> Result<(AllocatedPages, DeferredAllocAction<'static>), &'static str> {
    +) -> Result<(AllocatedPages<Page4K>, DeferredAllocAction<'static>), &'static str> {
     	let actual_num_bytes = if let AllocationRequest::AtVirtualAddress(vaddr) = request {
     		num_bytes + (vaddr.value() % PAGE_SIZE)
     	} else {
    @@ -1776,7 +1796,7 @@
     /// Allocates the given number of pages with no constraints on the starting virtual address.
     /// 
     /// See [`allocate_pages_deferred()`](fn.allocate_pages_deferred.html) for more details. 
    -pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages> {
    +pub fn allocate_pages(num_pages: usize) -> Option<AllocatedPages<Page4K>> {
     	allocate_pages_deferred(AllocationRequest::Any, num_pages)
     		.map(|(ap, _action)| ap)
     		.ok()
    @@ -1788,7 +1808,7 @@
     /// 
     /// This function still allocates whole pages by rounding up the number of bytes. 
     /// See [`allocate_pages_deferred()`](fn.allocate_pages_deferred.html) for more details. 
    -pub fn allocate_pages_by_bytes(num_bytes: usize) -> Option<AllocatedPages> {
    +pub fn allocate_pages_by_bytes(num_bytes: usize) -> Option<AllocatedPages<Page4K>> {
     	allocate_pages_by_bytes_deferred(AllocationRequest::Any, num_bytes)
     		.map(|(ap, _action)| ap)
     		.ok()
    @@ -1799,7 +1819,7 @@
     /// 
     /// This function still allocates whole pages by rounding up the number of bytes. 
     /// See [`allocate_pages_deferred()`](fn.allocate_pages_deferred.html) for more details. 
    -pub fn allocate_pages_by_bytes_at(vaddr: VirtualAddress, num_bytes: usize) -> Result<AllocatedPages, &'static str> {
    +pub fn allocate_pages_by_bytes_at(vaddr: VirtualAddress, num_bytes: usize) -> Result<AllocatedPages<Page4K>, &'static str> {
     	allocate_pages_by_bytes_deferred(AllocationRequest::AtVirtualAddress(vaddr), num_bytes)
     		.map(|(ap, _action)| ap)
     }
    @@ -1808,7 +1828,7 @@
     /// Allocates the given number of pages starting at (inclusive of) the page containing the given `VirtualAddress`.
     /// 
     /// See [`allocate_pages_deferred()`](fn.allocate_pages_deferred.html) for more details. 
    -pub fn allocate_pages_at(vaddr: VirtualAddress, num_pages: usize) -> Result<AllocatedPages, &'static str> {
    +pub fn allocate_pages_at(vaddr: VirtualAddress, num_pages: usize) -> Result<AllocatedPages<Page4K>, &'static str> {
     	allocate_pages_deferred(AllocationRequest::AtVirtualAddress(vaddr), num_pages)
     		.map(|(ap, _action)| ap)
     }
    @@ -1818,8 +1838,8 @@
     /// they must be within the given inclusive `range` of pages.
     pub fn allocate_pages_in_range(
     	num_pages: usize,
    -	range: &PageRange,
    -) -> Result<AllocatedPages, &'static str> {
    +	range: &PageRange<Page4K>,
    +) -> Result<AllocatedPages<Page4K>, &'static str> {
     	allocate_pages_deferred(AllocationRequest::WithinRange(range), num_pages)
     		.map(|(ap, _action)| ap)
     }
    @@ -1829,8 +1849,8 @@
     /// they must be within the given inclusive `range` of pages.
     pub fn allocate_pages_by_bytes_in_range(
     	num_bytes: usize,
    -	range: &PageRange,
    -) -> Result<AllocatedPages, &'static str> {
    +	range: &PageRange<Page4K>,
    +) -> Result<AllocatedPages<Page4K>, &'static str> {
     	allocate_pages_by_bytes_deferred(AllocationRequest::WithinRange(range), num_bytes)
     		.map(|(ap, _action)| ap)
     }
    diff --git a/doc/src/page_table_entry/lib.rs.html b/doc/src/page_table_entry/lib.rs.html
    index 836cf01831..9f3869814a 100644
    --- a/doc/src/page_table_entry/lib.rs.html
    +++ b/doc/src/page_table_entry/lib.rs.html
    @@ -150,7 +150,7 @@
     #![no_std]
     
     use core::ops::Deref;
    -use memory_structs::{Frame, FrameRange, PhysicalAddress};
    +use memory_structs::{Frame, FrameRange, PhysicalAddress, PageSize};
     use zerocopy::FromBytes;
     use frame_allocator::AllocatedFrame;
     use pte_flags::{PteFlagsArch, PTE_FRAME_MASK};
    @@ -227,7 +227,7 @@
         /// This is the actual mapping action that informs the MMU of a new mapping.
         ///
         /// Note: this performs no checks about the current value of this page table entry.
    -    pub fn set_entry(&mut self, frame: AllocatedFrame, flags: PteFlagsArch) {
    +    pub fn set_entry<P: PageSize>(&mut self, frame: AllocatedFrame<P>, flags: PteFlagsArch) {
             self.0 = (frame.start_address().value() as u64) | flags.bits();
         }
     
    diff --git a/doc/stack/struct.Stack.html b/doc/stack/struct.Stack.html
    index 2fe8a8ca7d..b20d35cb1a 100644
    --- a/doc/stack/struct.Stack.html
    +++ b/doc/stack/struct.Stack.html
    @@ -1,4 +1,4 @@
    -Stack in stack - Rust

    Struct stack::Stack

    source ·
    pub struct Stack { /* private fields */ }
    Expand description

    A range of mapped memory designated for use as a task’s stack.

    +Stack in stack - Rust

    Struct stack::Stack

    source ·
    pub struct Stack { /* private fields */ }
    Expand description

    A range of mapped memory designated for use as a task’s stack.

    There is an unmapped guard page beneath the stack, which is a standard approach to detect stack overflow.

    A stack is backed by and auto-derefs into MappedPages.

    @@ -133,12 +133,12 @@
    Arguments
    ) -> Result<&mut [T], &'static str>where T: FromBytes,

    Same as [MappedPages::as_slice()], but returns a mutable slice.

    Thus, it checks that the underlying mapping is writable.

    -

    Methods from Deref<Target = AllocatedPages>§

    pub fn start_address(&self) -> VirtualAddress

    Returns the starting VirtualAddress in this range of pages.

    +

    Methods from Deref<Target = AllocatedPages<Page4K>>§

    pub fn start_address(&self) -> VirtualAddress

    Returns the starting VirtualAddress in this range of pages.

    pub fn size_in_bytes(&self) -> usize

    Returns the size in bytes of this range of pages.

    pub fn size_in_pages(&self) -> usize

    Returns the size in number of pages of this range of pages.

    -

    pub fn start(&self) -> &Page<Page4K>

    Returns the starting Page in this range of pages.

    -

    pub fn end(&self) -> &Page<Page4K>

    Returns the ending Page (inclusive) in this range of pages.

    -

    pub fn range(&self) -> &PageRange<Page4K>

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    +

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

    Returns the starting Page in this range of pages.

    +

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

    Returns the ending Page (inclusive) in this range of pages.

    +

    pub fn range(&self) -> &PageRange<P>

    Returns a reference to the inner PageRange, which is cloneable/iterable.

    pub fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

    Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

    If the given addr is not covered by this range of pages, this returns None.