diff --git a/doc/frame_allocator/all.html b/doc/frame_allocator/all.html index 21afb19553..56652ea3b8 100644 --- a/doc/frame_allocator/all.html +++ b/doc/frame_allocator/all.html @@ -1 +1 @@ -
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.
-
source
. Read moreself
and other
values to be equal, and is used
+source
. Read moreself
and other
values to be equal, and is used
by ==
.Returns the argument unchanged.
diff --git a/doc/frame_allocator/fn.allocate_frames.html b/doc/frame_allocator/fn.allocate_frames.html index 6836fdff83..94d95aceee 100644 --- a/doc/frame_allocator/fn.allocate_frames.html +++ b/doc/frame_allocator/fn.allocate_frames.html @@ -1,3 +1,3 @@ -pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames>
Allocates the given number of frames with no constraints on the starting physical address.
+pub fn allocate_frames(num_frames: usize) -> Option<AllocatedFrames>
Allocates the given number of frames with no constraints on the starting physical address.
See allocate_frames_deferred()
for more details.
pub fn allocate_frames_at(
+allocate_frames_at in frame_allocator - Rust Function frame_allocator::allocate_frames_at
source · 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, &'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 ff7432b795..0625737e39 100644
--- a/doc/frame_allocator/fn.allocate_frames_by_bytes.html
+++ b/doc/frame_allocator/fn.allocate_frames_by_bytes.html
@@ -1,4 +1,4 @@
-allocate_frames_by_bytes in frame_allocator - Rust Function frame_allocator::allocate_frames_by_bytes
source · 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 Function frame_allocator::allocate_frames_by_bytes
source · pub fn allocate_frames_by_bytes(num_bytes: usize) -> Option<AllocatedFrames>
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 34cd5ecdf5..727af2c307 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 Function frame_allocator::allocate_frames_by_bytes_at
source · pub fn allocate_frames_by_bytes_at(
+allocate_frames_by_bytes_at in frame_allocator - Rust Function frame_allocator::allocate_frames_by_bytes_at
source · 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, &'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 8e64591405..b5e816fbdc 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, 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 38050ccfbc..08bbca10e2 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 Function frame_allocator::allocate_frames_deferred
source · pub fn allocate_frames_deferred(
+allocate_frames_deferred in frame_allocator - Rust Function frame_allocator::allocate_frames_deferred
source · 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, 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 42febf57db..d2e0bc28b1 100644
--- a/doc/frame_allocator/fn.init.html
+++ b/doc/frame_allocator/fn.init.html
@@ -1,7 +1,7 @@
-
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) -> AllocatedFrames, &'static str>where
+) -> Result<fn(_: FrameRange) -> UnmappedFrames, &'static str>where
P: Borrow<PhysicalMemoryRegion>,
F: IntoIterator<Item = P>,
R: IntoIterator<Item = P> + Clone,
Expand description
Initialize the frame allocator with the given list of available and reserved physical memory regions.
@@ -13,5 +13,5 @@
Return
Upon success, this function returns a callback function that allows the caller
(the memory subsystem init function) to convert a range of unmapped frames
-back into an AllocatedFrames
object.
+back into an UnmappedFrames
object.
\ No newline at end of file
diff --git a/doc/frame_allocator/index.html b/doc/frame_allocator/index.html
index 749c750db5..ca299c2127 100644
--- a/doc/frame_allocator/index.html
+++ b/doc/frame_allocator/index.html
@@ -1,4 +1,4 @@
-frame_allocator - Rust Crate frame_allocator
source · Expand description
Provides an allocator for physical memory frames.
+
frame_allocator - Rust 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.
@@ -9,11 +9,13 @@
The core allocation function is allocate_frames_deferred()
,
but there are several convenience functions that offer simpler interfaces for general usage.
Notes and Missing Features
-This allocator currently does not merge freed chunks (de-fragmentation).
-We don’t need to do so until we actually run out of address space or until
-a requested address is in a chunk that needs to be merged.
-Structs
- A reference to a single frame within a range of
AllocatedFrames
. - Represents a range of allocated physical memory [
Frame
]s; derefs to [FrameRange
]. - 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 region of physical memory.
Enums
- Types of physical memory. See each variant’s documentation.
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,
+
This allocator only makes one attempt to merge deallocated frames into existing
+free chunks for de-fragmentation. It does not iteratively merge adjacent chunks in order to
+maximally combine separate chunks into the biggest single chunk.
+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
- Types of physical memory. See each variant’s documentation.
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.
\ No newline at end of file
+optionally at the requested starting PhysicalAddress
.Initialize the frame allocator with the given list of available and reserved physical memory regions. Type Definitions
- A type alias for
Frames
in the Allocated
state. - A type alias for
Frames
in the Free
state. - 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/sidebar-items.js b/doc/frame_allocator/sidebar-items.js
index 7a4b637571..88e49be4bd 100644
--- a/doc/frame_allocator/sidebar-items.js
+++ b/doc/frame_allocator/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["MemoryRegionType"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","init"],"struct":["AllocatedFrame","AllocatedFrames","AllocatedFramesIter","DeferredAllocAction","PhysicalMemoryRegion"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["MemoryRegionType"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","init"],"struct":["AllocatedFrame","AllocatedFramesIter","DeferredAllocAction","Frames","PhysicalMemoryRegion","SplitFrames"],"type":["AllocatedFrames","FreeFrames","MappedFrames","UnmappedFrames"]};
\ No newline at end of file
diff --git a/doc/frame_allocator/struct.AllocatedFrame.html b/doc/frame_allocator/struct.AllocatedFrame.html
index e0ad7e8cde..f8887b9346 100644
--- a/doc/frame_allocator/struct.AllocatedFrame.html
+++ b/doc/frame_allocator/struct.AllocatedFrame.html
@@ -1,8 +1,8 @@
-AllocatedFrame in frame_allocator - Rust Struct frame_allocator::AllocatedFrame
source · pub struct AllocatedFrame<'f> { /* private fields */ }
Expand description
A reference to a single frame within a range of AllocatedFrames
.
+AllocatedFrame in frame_allocator - Rust Struct frame_allocator::AllocatedFrame
source · pub struct AllocatedFrame<'f> { /* 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 start_address(&self) -> PhysicalAddress
Returns the PhysicalAddress
at the start of this Frame
.
Trait Implementations§
source§impl<'f> Debug for AllocatedFrame<'f>
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§
Trait Implementations§
source§impl<'f> Debug for AllocatedFrame<'f>
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> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/doc/frame_allocator/struct.AllocatedFrames.html b/doc/frame_allocator/struct.AllocatedFrames.html
deleted file mode 100644
index 6303acef08..0000000000
--- a/doc/frame_allocator/struct.AllocatedFrames.html
+++ /dev/null
@@ -1,67 +0,0 @@
-AllocatedFrames in frame_allocator - Rust Struct frame_allocator::AllocatedFrames
source · pub struct AllocatedFrames { /* private fields */ }
Expand description
Represents a range of allocated physical memory [Frame
]s; derefs to [FrameRange
].
-These frames are not immediately accessible because they’re not yet mapped
-by any virtual memory pages.
-You must do that separately in order to create a MappedPages
type,
-which can then be used to access the contents of these frames.
-This object represents ownership of the range of allocated physical frames;
-if this object falls out of scope, its allocated frames will be auto-deallocated upon drop.
-Implementations§
source§impl AllocatedFrames
sourcepub const fn empty() -> AllocatedFrames
Returns an empty AllocatedFrames object that performs no frame allocation.
-Can be used as a placeholder, but will not permit any real usage.
-sourcepub fn merge(&mut self, other: AllocatedFrames) -> Result<(), AllocatedFrames>
Merges the given AllocatedFrames
object other
into this AllocatedFrames
object (self
).
-This is just for convenience and usability purposes, it performs no allocation or remapping.
-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.
-sourcepub fn split(
- self,
- at_frame: Frame
-) -> Result<(AllocatedFrames, AllocatedFrames), AllocatedFrames>
Splits this AllocatedFrames
into two separate AllocatedFrames
objects:
-
-[beginning : at_frame - 1]
-[at_frame : end]
-
-This function follows the behavior of core::slice::split_at()
,
-thus, either one of the returned AllocatedFrames
objects may be empty.
-
-- If
at_frame == self.start
, the first returned AllocatedFrames
object will be empty.
-- If
at_frame == self.end + 1
, the second returned AllocatedFrames
object will be empty.
-
-Returns an Err
containing this AllocatedFrames
if at_frame
is otherwise out of bounds.
-sourcepub fn as_allocated_frame(&self) -> AllocatedFrame<'_>
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 = 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 number of bytes.
-pub fn contains_address(&self, addr: PhysicalAddress) -> bool
Returns true
if this FrameRange
contains the given [PhysicalAddress
].
-pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>
Returns the offset of the given [PhysicalAddress
] within this FrameRange
, i.e., addr - self.start_address()
.
-If the given addr
is not covered by this range of [Frame
]s, this returns None
.
-Examples
-If the range covers addresses 0x2000
to 0x4000
, then offset_of_address(0x3500)
would return Some(0x1500)
.
-pub fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>
Returns the [PhysicalAddress
] at the given offset
into this FrameRange
within this FrameRange
, i.e., self.start_address() + offset
.
-If the given offset
is not within this range of [Frame
]s, this returns None
.
-Examples
-If the range covers addresses 0x2000
through 0x3FFF
, then address_at_offset(0x1500)
would return Some(0x3500)
, and address_at_offset(0x2000)
would return None
.
-pub fn to_extended(&self, to_include: Frame) -> FrameRange
Returns a new separate FrameRange
that is extended to include the given [Frame
].
-Methods from Deref<Target = RangeInclusive<Frame>>§
sourcepub fn iter(&self) -> RangeInclusiveIterator<Idx>
Returns an iterator with the same start
and end
values as the range.
-sourcepub fn contains<U>(&self, item: &U) -> boolwhere
- Idx: PartialOrd<U>,
- U: PartialOrd<Idx> + ?Sized,
Returns true
if item
is contained in the range.
-Trait Implementations§
source§impl Debug for AllocatedFrames
source§impl Deref for AllocatedFrames
source§impl Drop for AllocatedFrames
source§impl<'f> IntoIterator for &'f AllocatedFrames
Auto Trait Implementations§
§impl RefUnwindSafe for AllocatedFrames
§impl Send for AllocatedFrames
§impl Sync for AllocatedFrames
§impl Unpin for AllocatedFrames
§impl UnwindSafe for AllocatedFrames
Blanket Implementations§
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
\ No newline at end of file
diff --git a/doc/frame_allocator/struct.AllocatedFramesIter.html b/doc/frame_allocator/struct.AllocatedFramesIter.html
index 3b944be02f..397967df6d 100644
--- a/doc/frame_allocator/struct.AllocatedFramesIter.html
+++ b/doc/frame_allocator/struct.AllocatedFramesIter.html
@@ -1,11 +1,11 @@
-AllocatedFramesIter in frame_allocator - Rust Struct frame_allocator::AllocatedFramesIter
source · pub struct AllocatedFramesIter<'f> { /* private fields */ }
Expand description
An iterator over each AllocatedFrame
in a range of AllocatedFrames
.
+AllocatedFramesIter in frame_allocator - Rust Struct frame_allocator::AllocatedFramesIter
source · pub struct AllocatedFramesIter<'f> { /* 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
+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>
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 moresource§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 more1.0.0 · source§fn size_hint(&self) -> (usize, Option<usize>)
Returns the bounds on the remaining length of the iterator. Read more1.0.0 · source§fn count(self) -> usizewhere
diff --git a/doc/frame_allocator/struct.DeferredAllocAction.html b/doc/frame_allocator/struct.DeferredAllocAction.html
index 466debb55d..1ff3b1a59c 100644
--- a/doc/frame_allocator/struct.DeferredAllocAction.html
+++ b/doc/frame_allocator/struct.DeferredAllocAction.html
@@ -1,4 +1,4 @@
-DeferredAllocAction in frame_allocator - Rust Struct frame_allocator::DeferredAllocAction
source · pub struct DeferredAllocAction<'list> { /* private fields */ }
Expand description
A series of pending actions related to frame allocator bookkeeping,
+
DeferredAllocAction in frame_allocator - Rust Struct frame_allocator::DeferredAllocAction
source · 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§
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§
Trait Implementations§
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> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§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
new file mode 100644
index 0000000000..c45c61e43a
--- /dev/null
+++ b/doc/frame_allocator/struct.Frames.html
@@ -0,0 +1,114 @@
+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.
+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:
+
+Free
: frames are owned by the frame allocator and have not been allocated for any use.
+Allocated
: frames have been removed from the allocator’s free list and are owned elsewhere;
+they can now be used for mapping purposes.
+Mapped
: frames have been (and are currently) mapped by a range of virtual memory pages.
+Unmapped
: frames have been unmapped and can be returned to the frame allocator.
+
+The drop behavior for a Frames
object is based on its state:
+
+Free
: the frames will be added back to the frame allocator’s free list.
+Allocated
: the frames will be transitioned into the Free
state.
+Unmapped
: the frames will be transitioned into the Allocated
state.
+Mapped
: currently, Theseus does not actually drop mapped Frames
, but rather they are forgotten
+when they are mapped by virtual pages, and then re-created in the Unmapped
state
+after being unmapped from the page tables.
+
+As such, one can visualize the Frames
state diagram as such:
+
+(Free) <---> (Allocated) --> (Mapped) --> (Unmapped) --> (Allocated) <---> (Free)
+Ordering and Equality
+Frames
implements the Ord
trait, and its total ordering is ONLY based on
+its starting Frame
. This is useful so we can store Frames
in a sorted collection.
+Similarly, Frames
implements equality traits, Eq
and PartialEq
,
+both of which are also based ONLY on the starting Frame
of the Frames
.
+Thus, comparing two Frames
with the ==
or !=
operators may not work as expected.
+since it ignores their actual range of frames.
+Similarly, Frames
implements the Borrow
trait to return a Frame
,
+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}>
sourcepub 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}>
sourcepub fn into_mapped_frames(self) -> MappedFrames
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
.
+sourcepub fn as_allocated_frame(&self) -> AllocatedFrame<'_>
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}>
sourcepub 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>
sourcepub const fn empty() -> Frames<S>
Returns a new Frames
with an empty range of frames.
+Can be used as a placeholder, but will not permit any real usage.
+sourcepub 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.
+sourcepub fn split_range(
+ self,
+ frames_to_extract: FrameRange
+) -> Result<SplitFrames<S>, Self>
Splits up the given Frames
into multiple smaller Frames
.
+Returns a SplitFrames
instance containing three Frames
:
+
+- The range of frames in
self
that are before the beginning of frames_to_extract
.
+- The
Frames
containing the requested range of frames, frames_to_extract
.
+- 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
.
+sourcepub fn split_at(self, at_frame: Frame) -> Result<(Self, Self), Self>
Splits this Frames
into two separate Frames
objects:
+
+[beginning : at_frame - 1]
+[at_frame : end]
+
+This function follows the behavior of core::slice::split_at()
,
+thus, either one of the returned Frames
objects may be empty.
+
+- If
at_frame == self.start
, the first returned Frames
object will be empty.
+- 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
.
+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 number of bytes.
+pub fn contains_address(&self, addr: PhysicalAddress) -> bool
Returns true
if this FrameRange
contains the given [PhysicalAddress
].
+pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>
Returns the offset of the given [PhysicalAddress
] within this FrameRange
, i.e., addr - self.start_address()
.
+If the given addr
is not covered by this range of [Frame
]s, this returns None
.
+Examples
+If the range covers addresses 0x2000
to 0x4000
, then offset_of_address(0x3500)
would return Some(0x1500)
.
+pub fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>
Returns the [PhysicalAddress
] at the given offset
into this FrameRange
within this FrameRange
, i.e., self.start_address() + offset
.
+If the given offset
is not within this range of [Frame
]s, this returns None
.
+Examples
+If the range covers addresses 0x2000
through 0x3FFF
, then address_at_offset(0x1500)
would return Some(0x3500)
, and address_at_offset(0x2000)
would return None
.
+pub fn to_extended(&self, to_include: Frame) -> FrameRange
Returns a new separate FrameRange
that is extended to include the given [Frame
].
+pub fn overlap(&self, other: &FrameRange) -> Option<FrameRange>
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.
+pub fn contains_range(&self, other: &FrameRange) -> bool
Returns true
if the other
FrameRange
is fully contained within this FrameRange
.
+Methods from Deref<Target = RangeInclusive<Frame>>§
sourcepub fn iter(&self) -> RangeInclusiveIterator<Idx>
Returns an iterator with the same start
and end
values as the range.
+sourcepub fn contains<U>(&self, item: &U) -> boolwhere
+ Idx: PartialOrd<U>,
+ U: PartialOrd<Idx> + ?Sized,
Returns true
if item
is contained in the range.
+Trait Implementations§
source§impl<const S: MemoryState> Ord for Frames<S>
source§impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>
source§impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>
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 moresource§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> BorrowMut<T> for Twhere
+ T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
\ No newline at end of file
diff --git a/doc/frame_allocator/struct.PhysicalMemoryRegion.html b/doc/frame_allocator/struct.PhysicalMemoryRegion.html
index a18940be9a..4bdd1be1cc 100644
--- a/doc/frame_allocator/struct.PhysicalMemoryRegion.html
+++ b/doc/frame_allocator/struct.PhysicalMemoryRegion.html
@@ -1,8 +1,18 @@
-PhysicalMemoryRegion in frame_allocator - Rust Struct frame_allocator::PhysicalMemoryRegion
source · pub struct PhysicalMemoryRegion {
+PhysicalMemoryRegion in frame_allocator - Rust Struct frame_allocator::PhysicalMemoryRegion
source · pub struct PhysicalMemoryRegion {
pub frames: FrameRange,
pub typ: MemoryRegionType,
-}
Expand description
A region of physical memory.
-Fields§
§frames: FrameRange
§typ: MemoryRegionType
Implementations§
source§impl PhysicalMemoryRegion
sourcepub fn new(frames: FrameRange, typ: MemoryRegionType) -> PhysicalMemoryRegion
Methods from Deref<Target = FrameRange>§
pub fn start_address(&self) -> PhysicalAddress
Returns the [PhysicalAddress
] of the starting [Frame
] in this FrameRange
.
+}Expand description
PhysicalMemoryRegion
represents a range of contiguous frames in physical memory for bookkeeping purposes.
+It does not give access to the underlying frames.
+Ordering and Equality
+PhysicalMemoryRegion
implements the Ord
trait, and its total ordering is ONLY based on
+its starting Frame
. This is useful so we can store PhysicalMemoryRegion
s in a sorted collection.
+Similarly, PhysicalMemoryRegion
implements equality traits, Eq
and PartialEq
,
+both of which are also based ONLY on the starting Frame
of the PhysicalMemoryRegion
.
+Thus, comparing two PhysicalMemoryRegion
s with the ==
or !=
operators may not work as expected.
+since it ignores their actual range of frames.
+Fields§
§frames: FrameRange
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§
source§impl PhysicalMemoryRegion
sourcepub fn new(frames: FrameRange, typ: MemoryRegionType) -> PhysicalMemoryRegion
Methods from Deref<Target = 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 number of bytes.
@@ -18,6 +28,7 @@ Examples
pub fn to_extended(&self, to_include: Frame) -> FrameRange
Returns a new separate FrameRange
that is extended to include the given [Frame
].
pub fn overlap(&self, other: &FrameRange) -> Option<FrameRange>
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.
+pub fn contains_range(&self, other: &FrameRange) -> bool
Returns true
if the other
FrameRange
is fully contained within this FrameRange
.
Methods from Deref<Target = RangeInclusive<Frame>>§
sourcepub fn is_empty(&self) -> bool
Returns true
if the range contains no items.
@@ -25,9 +36,16 @@ Examples
sourcepub 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 Clone for PhysicalMemoryRegion
source§fn clone(&self) -> PhysicalMemoryRegion
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysicalMemoryRegion
Auto Trait Implementations§
§impl RefUnwindSafe for PhysicalMemoryRegion
§impl Send for PhysicalMemoryRegion
§impl Sync for PhysicalMemoryRegion
§impl Unpin for PhysicalMemoryRegion
§impl UnwindSafe for PhysicalMemoryRegion
Blanket Implementations§
Trait Implementations§
source§impl Borrow<Frame> for &PhysicalMemoryRegion
source§impl Clone for PhysicalMemoryRegion
source§fn clone(&self) -> PhysicalMemoryRegion
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysicalMemoryRegion
source§impl Deref for PhysicalMemoryRegion
source§impl Ord for PhysicalMemoryRegion
source§impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion
source§impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion
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 moresource§impl Eq for PhysicalMemoryRegion
source§impl StructuralEq for PhysicalMemoryRegion
Auto Trait Implementations§
§impl RefUnwindSafe for PhysicalMemoryRegion
§impl Send for PhysicalMemoryRegion
§impl Sync for PhysicalMemoryRegion
§impl Unpin for PhysicalMemoryRegion
§impl UnwindSafe for PhysicalMemoryRegion
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T, U> Into<U> for Twhere
U: From<T>,
source§fn into(self) -> U
Calls U::from(self)
.
diff --git a/doc/frame_allocator/struct.SplitFrames.html b/doc/frame_allocator/struct.SplitFrames.html
new file mode 100644
index 0000000000..d53ddccd25
--- /dev/null
+++ b/doc/frame_allocator/struct.SplitFrames.html
@@ -0,0 +1,12 @@
+SplitFrames in frame_allocator - Rust Struct frame_allocator::SplitFrames
source · 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> BorrowMut<T> for Twhere
+ T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
\ No newline at end of file
diff --git a/doc/frame_allocator/type.AllocatedFrames.html b/doc/frame_allocator/type.AllocatedFrames.html
new file mode 100644
index 0000000000..8acb4df7f5
--- /dev/null
+++ b/doc/frame_allocator/type.AllocatedFrames.html
@@ -0,0 +1,7 @@
+AllocatedFrames in frame_allocator - Rust Type Definition frame_allocator::AllocatedFrames
source · pub type AllocatedFrames = Frames<{ MemoryState::Allocated }>;
Expand description
A type alias for Frames
in the Allocated
state.
+Implementations§
source§impl AllocatedFrames
sourcepub fn into_mapped_frames(self) -> MappedFrames
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
.
+sourcepub fn as_allocated_frame(&self) -> AllocatedFrame<'_>
Returns an AllocatedFrame
if this AllocatedFrames
object contains only one frame.
+Panic
+Panics if this AllocatedFrame
contains multiple frames or zero frames.
+Trait Implementations§
source§impl<'f> IntoIterator for &'f AllocatedFrames
\ No newline at end of file
diff --git a/doc/frame_allocator/type.FreeFrames.html b/doc/frame_allocator/type.FreeFrames.html
new file mode 100644
index 0000000000..2bb70e9465
--- /dev/null
+++ b/doc/frame_allocator/type.FreeFrames.html
@@ -0,0 +1,3 @@
+FreeFrames in frame_allocator - Rust Type Definition frame_allocator::FreeFrames
source · pub type FreeFrames = Frames<{ MemoryState::Free }>;
Expand description
A type alias for Frames
in the Free
state.
+Implementations§
source§impl FreeFrames
sourcepub fn into_allocated_frames(self) -> AllocatedFrames
Consumes this Frames
in the Free
state and converts them into the Allocated
state.
+
\ No newline at end of file
diff --git a/doc/frame_allocator/type.MappedFrames.html b/doc/frame_allocator/type.MappedFrames.html
new file mode 100644
index 0000000000..3971509f30
--- /dev/null
+++ b/doc/frame_allocator/type.MappedFrames.html
@@ -0,0 +1,2 @@
+MappedFrames in frame_allocator - Rust Type Definition frame_allocator::MappedFrames
source · pub type MappedFrames = Frames<{ MemoryState::Mapped }>;
Expand description
A type alias for Frames
in the Mapped
state.
+
\ No newline at end of file
diff --git a/doc/frame_allocator/type.UnmappedFrames.html b/doc/frame_allocator/type.UnmappedFrames.html
new file mode 100644
index 0000000000..e450119f41
--- /dev/null
+++ b/doc/frame_allocator/type.UnmappedFrames.html
@@ -0,0 +1,3 @@
+UnmappedFrames in frame_allocator - Rust Type Definition frame_allocator::UnmappedFrames
source · pub type UnmappedFrames = Frames<{ MemoryState::Unmapped }>;
Expand description
A type alias for Frames
in the Unmapped
state.
+Implementations§
source§impl UnmappedFrames
sourcepub fn into_allocated_frames(self) -> AllocatedFrames
Consumes this Frames
in the Unmapped
state and converts them into the Allocated
state.
+
\ 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 a8653fe16b..dee1bcfa0e 100644
--- a/doc/implementors/core/borrow/trait.Borrow.js
+++ b/doc/implementors/core/borrow/trait.Borrow.js
@@ -1,4 +1,5 @@
(function() {var implementors = {
+"frame_allocator":[["impl Borrow<Frame> for &PhysicalMemoryRegion"],["impl<const S: MemoryState> Borrow<Frame> for &Frames<S>"]],
"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>"]],
"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 045583c68f..4442ae6058 100644
--- a/doc/implementors/core/clone/trait.Clone.js
+++ b/doc/implementors/core/clone/trait.Clone.js
@@ -27,7 +27,7 @@
"ixgbe":[["impl Clone for RxBufferSizeKiB"]],
"keycodes_ascii":[["impl Clone for KeyEvent"],["impl Clone for KeyAction"],["impl Clone for KeyboardModifiers"],["impl Clone for Keycode"]],
"madt":[["impl<'t> Clone for MadtEntry<'t>"],["impl<'t> Clone for MadtIter<'t>"],["impl Clone for MadtLocalX2Apic"],["impl Clone for MadtIntSrcOverride"],["impl Clone for MadtNonMaskableInterrupt"],["impl Clone for MadtLocalApicAddressOverride"],["impl Clone for MadtIoApic"],["impl Clone for MadtLocalApic"]],
-"memory_structs":[["impl Clone for PageRange"],["impl Clone for Frame"],["impl Clone for Page"],["impl Clone for CopyablePageRange"],["impl Clone for PhysicalAddress"],["impl Clone for VirtualAddress"],["impl Clone for CopyableFrameRange"],["impl Clone for FrameRange"]],
+"memory_structs":[["impl Clone for PhysicalAddress"],["impl Clone for Frame"],["impl Clone for CopyablePageRange"],["impl Clone for PageRange"],["impl Clone for Page"],["impl Clone for VirtualAddress"],["impl Clone for FrameRange"],["impl Clone for CopyableFrameRange"]],
"mlx_ethernet":[["impl Clone for Tisn"],["impl Clone for Tirn"],["impl Clone for FtId"],["impl Clone for AccessRegisterOpMod"],["impl Clone for Lkey"],["impl Clone for Pd"],["impl Clone for Sqn"],["impl Clone for Rqn"],["impl Clone for Cqn"],["impl Clone for CommandOpcode"],["impl Clone for FgId"],["impl Clone for QueryHcaCapCurrentOpMod"],["impl Clone for QueryHcaCapMaxOpMod"],["impl Clone for Td"],["impl Clone for Eqn"]],
"mod_mgmt":[["impl Clone for NamespaceDir"]],
"mouse_data":[["impl Clone for MouseEvent"],["impl Clone for MouseMovementRelative"],["impl Clone for MouseButtons"]],
diff --git a/doc/implementors/core/cmp/trait.Eq.js b/doc/implementors/core/cmp/trait.Eq.js
index 7733f7b258..2d0fa096e9 100644
--- a/doc/implementors/core/cmp/trait.Eq.js
+++ b/doc/implementors/core/cmp/trait.Eq.js
@@ -7,11 +7,11 @@
"cpu_local":[["impl Eq for PerCpuField"]],
"crate_metadata":[["impl Eq for RelocationEntry"]],
"crate_swap":[["impl Eq for SwapRequest"]],
-"frame_allocator":[["impl Eq for MemoryRegionType"]],
+"frame_allocator":[["impl Eq for MemoryRegionType"],["impl Eq for PhysicalMemoryRegion"],["impl<const S: MemoryState> Eq for Frames<S>"]],
"interrupts":[["impl Eq for EoiBehaviour"]],
"keycodes_ascii":[["impl Eq for KeyboardModifiers"]],
"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 FrameRange"],["impl Eq for PageRange"],["impl Eq for PhysicalAddress"],["impl Eq for Frame"],["impl Eq for Page"],["impl Eq for VirtualAddress"]],
+"memory_structs":[["impl Eq for PageRange"],["impl Eq for VirtualAddress"],["impl Eq for Page"],["impl Eq for Frame"],["impl Eq for FrameRange"],["impl Eq for MemoryState"],["impl Eq for PhysicalAddress"]],
"mlx_ethernet":[["impl Eq for CmdState"]],
"path":[["impl Eq for Path"]],
"pci":[["impl Eq for PciLocation"]],
diff --git a/doc/implementors/core/cmp/trait.Ord.js b/doc/implementors/core/cmp/trait.Ord.js
index 8043300e0c..3e38995f7f 100644
--- a/doc/implementors/core/cmp/trait.Ord.js
+++ b/doc/implementors/core/cmp/trait.Ord.js
@@ -3,9 +3,10 @@
"ata":[["impl Ord for AtaError"],["impl Ord for AtaStatus"]],
"boot_info":[["impl Ord for ElfSectionFlags"]],
"cpu":[["impl Ord for CpuId"]],
+"frame_allocator":[["impl Ord for PhysicalMemoryRegion"],["impl<const S: MemoryState> Ord for Frames<S>"]],
"keycodes_ascii":[["impl Ord for KeyboardModifiers"]],
"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 Ord for PhysicalAddress"],["impl Ord for Page"],["impl Ord for VirtualAddress"],["impl Ord for Frame"]],
+"memory_structs":[["impl Ord for Page"],["impl Ord for PhysicalAddress"],["impl Ord for VirtualAddress"],["impl Ord for Frame"]],
"pte_flags":[["impl Ord for PteFlagsAarch64"],["impl Ord for PteFlagsX86_64"],["impl Ord for PteFlags"]],
"runqueue_priority":[["impl Ord for PriorityTaskRef"]],
"shapes":[["impl Ord for Coord"]],
diff --git a/doc/implementors/core/cmp/trait.PartialEq.js b/doc/implementors/core/cmp/trait.PartialEq.js
index 6588d3ad93..5911f33b75 100644
--- a/doc/implementors/core/cmp/trait.PartialEq.js
+++ b/doc/implementors/core/cmp/trait.PartialEq.js
@@ -10,12 +10,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<MemoryRegionType> for MemoryRegionType"]],
+"frame_allocator":[["impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion"],["impl<const S: MemoryState> PartialEq<Frames<S>> for Frames<S>"],["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<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<PageRange> for PageRange"],["impl PartialEq<Frame> for Frame"],["impl PartialEq<FrameRange> for FrameRange"],["impl PartialEq<VirtualAddress> for VirtualAddress"],["impl PartialEq<Page> for Page"]],
+"memory_structs":[["impl PartialEq<FrameRange> for FrameRange"],["impl PartialEq<Frame> for Frame"],["impl PartialEq<PageRange> for PageRange"],["impl PartialEq<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<MemoryState> for MemoryState"],["impl PartialEq<Page> for Page"],["impl PartialEq<VirtualAddress> for VirtualAddress"]],
"mlx_ethernet":[["impl PartialEq<CommandOpcode> for CommandOpcode"],["impl PartialEq<CmdState> for CmdState"]],
"path":[["impl PartialEq<Path> for Path"]],
"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 9faee80832..ce4e9537e3 100644
--- a/doc/implementors/core/cmp/trait.PartialOrd.js
+++ b/doc/implementors/core/cmp/trait.PartialOrd.js
@@ -3,9 +3,10 @@
"ata":[["impl PartialOrd<AtaError> for AtaError"],["impl PartialOrd<AtaStatus> for AtaStatus"]],
"boot_info":[["impl PartialOrd<ElfSectionFlags> for ElfSectionFlags"]],
"cpu":[["impl PartialOrd<CpuId> for CpuId"]],
+"frame_allocator":[["impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion"],["impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>"]],
"keycodes_ascii":[["impl PartialOrd<KeyboardModifiers> for KeyboardModifiers"]],
"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>"]],
-"memory_structs":[["impl PartialOrd<PhysicalAddress> for PhysicalAddress"],["impl PartialOrd<Frame> for Frame"],["impl PartialOrd<Page> for Page"],["impl PartialOrd<VirtualAddress> for VirtualAddress"]],
+"memory_structs":[["impl PartialOrd<Frame> for Frame"],["impl PartialOrd<VirtualAddress> for VirtualAddress"],["impl PartialOrd<PhysicalAddress> for PhysicalAddress"],["impl PartialOrd<Page> for Page"]],
"pte_flags":[["impl PartialOrd<PteFlags> for PteFlags"],["impl PartialOrd<PteFlagsX86_64> for PteFlagsX86_64"],["impl PartialOrd<PteFlagsAarch64> for PteFlagsAarch64"]],
"runqueue_priority":[["impl PartialOrd<PriorityTaskRef> for PriorityTaskRef"]],
"shapes":[["impl PartialOrd<Coord> for Coord"]],
diff --git a/doc/implementors/core/convert/trait.From.js b/doc/implementors/core/convert/trait.From.js
index 7621fc9981..e9f84923e7 100644
--- a/doc/implementors/core/convert/trait.From.js
+++ b/doc/implementors/core/convert/trait.From.js
@@ -3,7 +3,7 @@
"cpu":[["impl From<CpuId> for ApicId"],["impl From<ApicId> for CpuId"],["impl From<OptionalCpuId> for Option<CpuId>"],["impl From<Option<CpuId>> for OptionalCpuId"]],
"framebuffer":[["impl From<Color> for AlphaPixel"],["impl From<Color> for RGBPixel"]],
"io":[["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<RW> From<RW> for ByteWriterWrapper<RW>where\n RW: BlockReader + BlockWriter,"],["impl From<IoError> for Error"],["impl From<IoError> for &'static str"],["impl<RW> From<RW> for ByteReaderWriterWrapper<RW>where\n RW: BlockReader + BlockWriter,"],["impl From<&'static str> for IoError"],["impl<R> From<R> for ByteReaderWrapper<R>where\n R: BlockReader,"]],
-"memory_structs":[["impl From<CopyablePageRange> for PageRange"],["impl From<PageRange> for CopyablePageRange"],["impl From<FrameRange> for CopyableFrameRange"],["impl From<CopyableFrameRange> for FrameRange"]],
+"memory_structs":[["impl From<CopyableFrameRange> for FrameRange"],["impl From<CopyablePageRange> for PageRange"],["impl From<FrameRange> for CopyableFrameRange"],["impl From<PageRange> for CopyablePageRange"]],
"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.Into.js b/doc/implementors/core/convert/trait.Into.js
index 85f3fc65e2..034e6842e0 100644
--- a/doc/implementors/core/convert/trait.Into.js
+++ b/doc/implementors/core/convert/trait.Into.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"memory_structs":[["impl Into<usize> for VirtualAddress"],["impl Into<usize> for PhysicalAddress"]]
+"memory_structs":[["impl Into<usize> for PhysicalAddress"],["impl Into<usize> for VirtualAddress"]]
};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/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js
index 0b4fc7b9e9..9a8efedfd1 100644
--- a/doc/implementors/core/default/trait.Default.js
+++ b/doc/implementors/core/default/trait.Default.js
@@ -7,7 +7,7 @@
"irq_safety":[["impl<T: ?Sized + Default> Default for RwLockIrqSafe<T>"],["impl Default for HeldInterrupts"],["impl<T: ?Sized + Default> Default for MutexIrqSafe<T>"]],
"keycodes_ascii":[["impl Default for KeyboardModifiers"]],
"libterm":[["impl Default for Cursor"]],
-"memory_structs":[["impl Default for PhysicalAddress"],["impl Default for VirtualAddress"]],
+"memory_structs":[["impl Default for VirtualAddress"],["impl Default for PhysicalAddress"]],
"mlx_ethernet":[["impl Default for DoorbellRecord"],["impl Default for CommandQueueEntry"],["impl Default for CompletionQueueEntry"],["impl Default for WorkQueueEntrySend"],["impl Default for EventQueueEntry"],["impl Default for CompletionQueueDoorbellRecord"],["impl Default for WorkQueueEntryReceive"]],
"pte_flags":[["impl Default for PteFlags"],["impl Default for PteFlagsAarch64"],["impl Default for PteFlagsX86_64"]],
"slabmalloc":[["impl<'a> Default for ZoneAllocator<'a>"],["impl<'a> Default for ObjectPage8k<'a>"],["impl<T> Default for Rawlink<T>"]],
diff --git a/doc/implementors/core/fmt/trait.Binary.js b/doc/implementors/core/fmt/trait.Binary.js
index 824cbba41f..771f89bd7c 100644
--- a/doc/implementors/core/fmt/trait.Binary.js
+++ b/doc/implementors/core/fmt/trait.Binary.js
@@ -4,7 +4,7 @@
"boot_info":[["impl Binary for ElfSectionFlags"]],
"cpu":[["impl Binary for CpuId"]],
"keycodes_ascii":[["impl Binary for KeyboardModifiers"]],
-"memory_structs":[["impl Binary for VirtualAddress"],["impl Binary for PhysicalAddress"]],
+"memory_structs":[["impl Binary for PhysicalAddress"],["impl Binary for VirtualAddress"]],
"pte_flags":[["impl Binary for PteFlagsAarch64"],["impl Binary for PteFlags"],["impl Binary for PteFlagsX86_64"]],
"text_terminal":[["impl Binary for FormatFlags"]]
};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/fmt/trait.Debug.js b/doc/implementors/core/fmt/trait.Debug.js
index c1583f9385..a862a538b3 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 FaultEntry"],["impl Debug for RecoveryAction"],["impl Debug for FaultType"]],
-"frame_allocator":[["impl Debug for PhysicalMemoryRegion"],["impl Debug for AllocatedFrames"],["impl<'f> Debug for AllocatedFrame<'f>"],["impl Debug for MemoryRegionType"]],
+"frame_allocator":[["impl<const S: MemoryState> Debug for Frames<S>"],["impl Debug for PhysicalMemoryRegion"],["impl<'f> Debug for AllocatedFrame<'f>"],["impl Debug for MemoryRegionType"]],
"framebuffer":[["impl Debug for RGBPixel"],["impl Debug for AlphaPixel"]],
"fs_node":[["impl Debug for FileOrDir"]],
"gdt":[["impl Debug for AvailableSegmentSelector"]],
@@ -37,7 +37,7 @@
"madt":[["impl Debug for MadtIoApic"],["impl Debug for MadtLocalApic"],["impl Debug for MadtLocalX2Apic"],["impl<'t> Debug for MadtEntry<'t>"],["impl Debug for MadtNonMaskableInterrupt"],["impl Debug for MadtIntSrcOverride"],["impl Debug for MadtLocalApicAddressOverride"]],
"memory":[["impl Debug for MemoryManagementInfo"],["impl Debug for EarlyIdentityMappedPages"],["impl Debug for PageTable"],["impl Debug for MappedPages"],["impl Debug for InitialMemoryMappings"]],
"memory_aarch64":[["impl Debug for AggregatedSectionMemoryBounds"],["impl Debug for SectionMemoryBounds"]],
-"memory_structs":[["impl Debug for PageRange"],["impl Debug for Page"],["impl Debug for FrameRange"],["impl Debug for PhysicalAddress"],["impl Debug for Frame"],["impl Debug for VirtualAddress"]],
+"memory_structs":[["impl Debug for VirtualAddress"],["impl Debug for Page"],["impl Debug for PageRange"],["impl Debug for PhysicalAddress"],["impl Debug for FrameRange"],["impl Debug for Frame"]],
"memory_x86_64":[["impl Debug for SectionMemoryBounds"],["impl Debug for AggregatedSectionMemoryBounds"]],
"mlx_ethernet":[["impl Debug for Tirn"],["impl Debug for FtId"],["impl Debug for Lkey"],["impl Debug for CommandReturnStatus"],["impl Debug for CommandOpcode"],["impl Debug for CompletionQueueEntry"],["impl Debug for EventQueueEntry"],["impl Debug for Tisn"],["impl Debug for HcaPortType"],["impl Debug for Td"],["impl Debug for CommandCompletionStatus"],["impl Debug for ReceiveQueueState"],["impl Debug for HCACapabilities"],["impl Debug for CommandQueueEntry"],["impl Debug for Rqn"],["impl Debug for Eqn"],["impl Debug for Cqn"],["impl Debug for InitializationSegment"],["impl Debug for CommandDeliveryStatus"],["impl Debug for Sqn"],["impl Debug for FgId"],["impl Debug for Pd"],["impl Debug for SendQueueState"]],
"mod_mgmt":[["impl Debug for IntoCrateObjectFile"],["impl Debug for NamespaceDir"]],
diff --git a/doc/implementors/core/fmt/trait.LowerHex.js b/doc/implementors/core/fmt/trait.LowerHex.js
index dcf506b933..c28e28669b 100644
--- a/doc/implementors/core/fmt/trait.LowerHex.js
+++ b/doc/implementors/core/fmt/trait.LowerHex.js
@@ -4,7 +4,7 @@
"boot_info":[["impl LowerHex for ElfSectionFlags"]],
"cpu":[["impl LowerHex for CpuId"]],
"keycodes_ascii":[["impl LowerHex for KeyboardModifiers"]],
-"memory_structs":[["impl LowerHex for PhysicalAddress"],["impl LowerHex for VirtualAddress"]],
+"memory_structs":[["impl LowerHex for VirtualAddress"],["impl LowerHex for PhysicalAddress"]],
"pte_flags":[["impl LowerHex for PteFlagsAarch64"],["impl LowerHex for PteFlags"],["impl LowerHex for PteFlagsX86_64"]],
"text_terminal":[["impl LowerHex for FormatFlags"]]
};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/fmt/trait.Pointer.js b/doc/implementors/core/fmt/trait.Pointer.js
index 412c5bad89..043cf2e08f 100644
--- a/doc/implementors/core/fmt/trait.Pointer.js
+++ b/doc/implementors/core/fmt/trait.Pointer.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"memory_structs":[["impl Pointer for PhysicalAddress"],["impl Pointer for VirtualAddress"]]
+"memory_structs":[["impl Pointer for VirtualAddress"],["impl Pointer for PhysicalAddress"]]
};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/fmt/trait.UpperHex.js b/doc/implementors/core/fmt/trait.UpperHex.js
index 82c1be1947..5c8ae36d7d 100644
--- a/doc/implementors/core/fmt/trait.UpperHex.js
+++ b/doc/implementors/core/fmt/trait.UpperHex.js
@@ -4,7 +4,7 @@
"boot_info":[["impl UpperHex for ElfSectionFlags"]],
"cpu":[["impl UpperHex for CpuId"]],
"keycodes_ascii":[["impl UpperHex for KeyboardModifiers"]],
-"memory_structs":[["impl UpperHex for PhysicalAddress"],["impl UpperHex for VirtualAddress"]],
+"memory_structs":[["impl UpperHex for VirtualAddress"],["impl UpperHex for PhysicalAddress"]],
"pte_flags":[["impl UpperHex for PteFlagsX86_64"],["impl UpperHex for PteFlagsAarch64"],["impl UpperHex for PteFlags"]],
"text_terminal":[["impl UpperHex for FormatFlags"]]
};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/range/trait.Step.js b/doc/implementors/core/iter/range/trait.Step.js
index 59e577d40c..6aec7130a1 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 Step for Page"],["impl Step for Frame"]]
+"memory_structs":[["impl Step for Frame"],["impl Step for Page"]]
};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 aca77d99d5..198e72b582 100644
--- a/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js
+++ b/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js
@@ -1,5 +1,5 @@
(function() {var implementors = {
-"frame_allocator":[["impl<'f> IntoIterator for &'f AllocatedFrames"]],
-"memory_structs":[["impl IntoIterator for FrameRange"],["impl IntoIterator for PageRange"]],
+"frame_allocator":[["impl<'f> IntoIterator for &'f AllocatedFrames"]],
+"memory_structs":[["impl IntoIterator for PageRange"],["impl IntoIterator for FrameRange"]],
"range_inclusive":[["impl<'a, Idx: Clone + PartialOrd + Step> IntoIterator for &'a RangeInclusive<Idx>"]]
};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/marker/trait.ConstParamTy.js b/doc/implementors/core/marker/trait.ConstParamTy.js
index cb61476cc3..65d6ba2e55 100644
--- a/doc/implementors/core/marker/trait.ConstParamTy.js
+++ b/doc/implementors/core/marker/trait.ConstParamTy.js
@@ -1,3 +1,4 @@
(function() {var implementors = {
+"memory_structs":[["impl ConstParamTy for MemoryState"]],
"mlx_ethernet":[["impl ConstParamTy for CmdState"]]
};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/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js
index 4fcef0d48f..08a2899f0e 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 KeyAction"],["impl Copy for KeyEvent"],["impl Copy for KeyboardModifiers"],["impl Copy for Keycode"]],
"madt":[["impl Copy for MadtLocalApicAddressOverride"],["impl Copy for MadtIntSrcOverride"],["impl Copy for MadtIoApic"],["impl<'t> Copy for MadtEntry<'t>"],["impl Copy for MadtLocalApic"],["impl Copy for MadtLocalX2Apic"],["impl Copy for MadtNonMaskableInterrupt"]],
-"memory_structs":[["impl Copy for CopyablePageRange"],["impl Copy for Page"],["impl Copy for PhysicalAddress"],["impl Copy for CopyableFrameRange"],["impl Copy for Frame"],["impl Copy for VirtualAddress"]],
+"memory_structs":[["impl Copy for PhysicalAddress"],["impl Copy for Frame"],["impl Copy for CopyablePageRange"],["impl Copy for CopyableFrameRange"],["impl Copy for Page"],["impl Copy for VirtualAddress"]],
"mlx_ethernet":[["impl Copy for Cqn"],["impl Copy for Td"],["impl Copy for QueryHcaCapMaxOpMod"],["impl Copy for Tirn"],["impl Copy for QueryHcaCapCurrentOpMod"],["impl Copy for CommandOpcode"],["impl Copy for FgId"],["impl Copy for FtId"],["impl Copy for AccessRegisterOpMod"],["impl Copy for Lkey"],["impl Copy for Pd"],["impl Copy for Sqn"],["impl Copy for Eqn"],["impl Copy for Tisn"],["impl Copy for Rqn"]],
"multicore_bringup":[["impl Copy for GraphicInfo"]],
"page_attribute_table":[["impl Copy for MemoryCachingType"],["impl Copy for PageAttributeTable"]],
diff --git a/doc/implementors/core/marker/trait.Freeze.js b/doc/implementors/core/marker/trait.Freeze.js
index 7d24d6ca0f..df6f1b07dd 100644
--- a/doc/implementors/core/marker/trait.Freeze.js
+++ b/doc/implementors/core/marker/trait.Freeze.js
@@ -36,7 +36,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 Freeze for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> Freeze for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Freeze for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> Freeze for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Freeze for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl Freeze for Page",1,["memory_structs::Page"]],["impl Freeze for Frame",1,["memory_structs::Frame"]],["impl Freeze for PageRange",1,["memory_structs::PageRange"]],["impl Freeze for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Freeze for FrameRange",1,["memory_structs::FrameRange"]],["impl Freeze for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 Freeze for Page",1,["memory_structs::Page"]],["impl Freeze for Frame",1,["memory_structs::Frame"]],["impl Freeze for PageRange",1,["memory_structs::PageRange"]],["impl Freeze for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Freeze for FrameRange",1,["memory_structs::FrameRange"]],["impl Freeze for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 Freeze for Path",1,["path::Path"]],["impl Freeze for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl Freeze for PciCapability",1,["pci::PciCapability"]],["impl Freeze for InterruptPin",1,["pci::InterruptPin"]],["impl Freeze for PciBus",1,["pci::PciBus"]],["impl Freeze for PciLocation",1,["pci::PciLocation"]],["impl Freeze for PciDevice",1,["pci::PciDevice"]],["impl Freeze for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Freeze for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Freeze for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl Freeze for PerCpuData",1,["per_cpu::PerCpuData"]],["impl Freeze for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js
index 1f29313b20..fed3989220 100644
--- a/doc/implementors/core/marker/trait.Send.js
+++ b/doc/implementors/core/marker/trait.Send.js
@@ -36,7 +36,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 Send for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> Send for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Send for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> Send for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Send for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl Send for Page",1,["memory_structs::Page"]],["impl Send for Frame",1,["memory_structs::Frame"]],["impl Send for PageRange",1,["memory_structs::PageRange"]],["impl Send for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Send for FrameRange",1,["memory_structs::FrameRange"]],["impl Send for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 Send for Page",1,["memory_structs::Page"]],["impl Send for Frame",1,["memory_structs::Frame"]],["impl Send for PageRange",1,["memory_structs::PageRange"]],["impl Send for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Send for FrameRange",1,["memory_structs::FrameRange"]],["impl Send for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 Send for Path",1,["path::Path"]],["impl Send for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl Send for PciCapability",1,["pci::PciCapability"]],["impl Send for InterruptPin",1,["pci::InterruptPin"]],["impl Send for PciBus",1,["pci::PciBus"]],["impl Send for PciLocation",1,["pci::PciLocation"]],["impl Send for PciDevice",1,["pci::PciDevice"]],["impl Send for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Send for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Send for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl !Send for PerCpuData",1,["per_cpu::PerCpuData"]],["impl Send for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/implementors/core/marker/trait.StructuralEq.js b/doc/implementors/core/marker/trait.StructuralEq.js
index a7d278fd22..74cd78cee0 100644
--- a/doc/implementors/core/marker/trait.StructuralEq.js
+++ b/doc/implementors/core/marker/trait.StructuralEq.js
@@ -6,10 +6,10 @@
"cpu_local":[["impl StructuralEq for PerCpuField"]],
"crate_metadata":[["impl StructuralEq for RelocationEntry"]],
"crate_swap":[["impl StructuralEq for SwapRequest"]],
-"frame_allocator":[["impl StructuralEq for MemoryRegionType"]],
+"frame_allocator":[["impl StructuralEq for PhysicalMemoryRegion"],["impl StructuralEq for MemoryRegionType"],["impl<const S: MemoryState> StructuralEq for Frames<S>"]],
"interrupts":[["impl StructuralEq for EoiBehaviour"]],
"keycodes_ascii":[["impl StructuralEq for KeyboardModifiers"]],
-"memory_structs":[["impl StructuralEq for Frame"],["impl StructuralEq for PhysicalAddress"],["impl StructuralEq for Page"],["impl StructuralEq for FrameRange"],["impl StructuralEq for VirtualAddress"],["impl StructuralEq for PageRange"]],
+"memory_structs":[["impl StructuralEq for Frame"],["impl StructuralEq for PhysicalAddress"],["impl StructuralEq for PageRange"],["impl StructuralEq for MemoryState"],["impl StructuralEq for FrameRange"],["impl StructuralEq for VirtualAddress"],["impl StructuralEq for Page"]],
"mlx_ethernet":[["impl StructuralEq for CmdState"]],
"path":[["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 4e51493ebf..821befa184 100644
--- a/doc/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js
@@ -13,7 +13,7 @@
"interrupts":[["impl StructuralPartialEq for EoiBehaviour"]],
"ixgbe":[["impl StructuralPartialEq for LinkSpeedMbps"]],
"keycodes_ascii":[["impl StructuralPartialEq for KeyAction"],["impl StructuralPartialEq for KeyboardModifiers"],["impl StructuralPartialEq for Keycode"]],
-"memory_structs":[["impl StructuralPartialEq for Page"],["impl StructuralPartialEq for Frame"],["impl StructuralPartialEq for VirtualAddress"],["impl StructuralPartialEq for PhysicalAddress"],["impl StructuralPartialEq for FrameRange"],["impl StructuralPartialEq for PageRange"]],
+"memory_structs":[["impl StructuralPartialEq for MemoryState"],["impl StructuralPartialEq for PageRange"],["impl StructuralPartialEq for PhysicalAddress"],["impl StructuralPartialEq for Page"],["impl StructuralPartialEq for FrameRange"],["impl StructuralPartialEq for VirtualAddress"],["impl StructuralPartialEq for Frame"]],
"mlx_ethernet":[["impl StructuralPartialEq for CmdState"],["impl StructuralPartialEq for CommandOpcode"]],
"path":[["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 068036dc9f..5532bbb9f4 100644
--- a/doc/implementors/core/marker/trait.Sync.js
+++ b/doc/implementors/core/marker/trait.Sync.js
@@ -36,7 +36,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 Sync for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> Sync for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Sync for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> Sync for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Sync for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl Sync for Page",1,["memory_structs::Page"]],["impl Sync for Frame",1,["memory_structs::Frame"]],["impl Sync for PageRange",1,["memory_structs::PageRange"]],["impl Sync for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Sync for FrameRange",1,["memory_structs::FrameRange"]],["impl Sync for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 Sync for Page",1,["memory_structs::Page"]],["impl Sync for Frame",1,["memory_structs::Frame"]],["impl Sync for PageRange",1,["memory_structs::PageRange"]],["impl Sync for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Sync for FrameRange",1,["memory_structs::FrameRange"]],["impl Sync for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 Sync for Path",1,["path::Path"]],["impl Sync for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl Sync for PciCapability",1,["pci::PciCapability"]],["impl Sync for InterruptPin",1,["pci::InterruptPin"]],["impl Sync for PciBus",1,["pci::PciBus"]],["impl Sync for PciLocation",1,["pci::PciLocation"]],["impl Sync for PciDevice",1,["pci::PciDevice"]],["impl Sync for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Sync for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Sync for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl Sync for PerCpuData",1,["per_cpu::PerCpuData"]],["impl Sync for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js
index 78d27fc093..ab1eba9363 100644
--- a/doc/implementors/core/marker/trait.Unpin.js
+++ b/doc/implementors/core/marker/trait.Unpin.js
@@ -36,7 +36,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 Unpin for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> Unpin for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> Unpin for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> Unpin for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Unpin for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl Unpin for Page",1,["memory_structs::Page"]],["impl Unpin for Frame",1,["memory_structs::Frame"]],["impl Unpin for PageRange",1,["memory_structs::PageRange"]],["impl Unpin for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Unpin for FrameRange",1,["memory_structs::FrameRange"]],["impl Unpin for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 Unpin for Page",1,["memory_structs::Page"]],["impl Unpin for Frame",1,["memory_structs::Frame"]],["impl Unpin for PageRange",1,["memory_structs::PageRange"]],["impl Unpin for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl Unpin for FrameRange",1,["memory_structs::FrameRange"]],["impl Unpin for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 Unpin for Path",1,["path::Path"]],["impl Unpin for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl Unpin for PciCapability",1,["pci::PciCapability"]],["impl Unpin for InterruptPin",1,["pci::InterruptPin"]],["impl Unpin for PciBus",1,["pci::PciBus"]],["impl Unpin for PciLocation",1,["pci::PciLocation"]],["impl Unpin for PciDevice",1,["pci::PciDevice"]],["impl Unpin for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl Unpin for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl Unpin for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl Unpin for PerCpuData",1,["per_cpu::PerCpuData"]],["impl Unpin for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/implementors/core/ops/arith/trait.Add.js b/doc/implementors/core/ops/arith/trait.Add.js
index 376db4b0ac..e02e3141ac 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 Add<usize> for Frame"],["impl Add<usize> for PhysicalAddress"],["impl Add<VirtualAddress> for VirtualAddress"],["impl Add<usize> for VirtualAddress"],["impl Add<PhysicalAddress> for PhysicalAddress"],["impl Add<usize> for Page"]],
+"memory_structs":[["impl Add<usize> for Frame"],["impl Add<PhysicalAddress> for PhysicalAddress"],["impl Add<VirtualAddress> for VirtualAddress"],["impl Add<usize> for Page"],["impl Add<usize> for PhysicalAddress"],["impl Add<usize> for VirtualAddress"]],
"shapes":[["impl Add<Coord> for Coord"],["impl Add<(isize, isize)> for Coord"],["impl Add<Coord> for Rectangle"]],
"text_terminal":[["impl Add<ScreenPoint> for ScreenPoint"],["impl Add<Column> for Column"],["impl Add<Row> for Row"],["impl Add<UnitIndex> for UnitIndex"],["impl Add<LineIndex> for LineIndex"],["impl Add<ScrollbackBufferPoint> for ScrollbackBufferPoint"]],
"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 509c683700..cc6a718cbb 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<usize> for PhysicalAddress"],["impl AddAssign<PhysicalAddress> for PhysicalAddress"],["impl AddAssign<usize> for Frame"],["impl AddAssign<usize> for VirtualAddress"],["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl AddAssign<usize> for Page"]],
+"memory_structs":[["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl AddAssign<usize> for Page"],["impl AddAssign<usize> for PhysicalAddress"],["impl AddAssign<usize> for Frame"],["impl AddAssign<usize> for VirtualAddress"],["impl AddAssign<PhysicalAddress> for PhysicalAddress"]],
"text_terminal":[["impl AddAssign<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl AddAssign<Row> for Row"],["impl AddAssign<UnitIndex> for UnitIndex"],["impl AddAssign<ScreenPoint> for ScreenPoint"],["impl AddAssign<LineIndex> for LineIndex"],["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 d08ea177e6..341b2462f8 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<AtaStatus> for AtaStatus"],["impl Sub<AtaError> for AtaError"]],
"boot_info":[["impl Sub<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl Sub<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl Sub<usize> for VirtualAddress"],["impl Sub<VirtualAddress> for VirtualAddress"],["impl Sub<usize> for PhysicalAddress"],["impl Sub<usize> for Frame"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl Sub<usize> for Page"]],
+"memory_structs":[["impl Sub<usize> for Page"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl Sub<usize> for Frame"],["impl Sub<usize> for VirtualAddress"],["impl Sub<usize> for PhysicalAddress"],["impl Sub<VirtualAddress> for VirtualAddress"]],
"pte_flags":[["impl Sub<PteFlagsAarch64> for PteFlagsAarch64"],["impl Sub<PteFlagsX86_64> for PteFlagsX86_64"],["impl Sub<PteFlags> for PteFlags"]],
"shapes":[["impl Sub<(isize, isize)> for Coord"],["impl Sub<Coord> for Coord"],["impl Sub<Coord> for Rectangle"]],
"text_terminal":[["impl Sub<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl Sub<UnitIndex> for UnitIndex"],["impl Sub<ScreenPoint> for ScreenPoint"],["impl Sub<FormatFlags> for FormatFlags"],["impl Sub<Row> for Row"],["impl Sub<LineIndex> for LineIndex"],["impl Sub<Column> for Column"]],
diff --git a/doc/implementors/core/ops/arith/trait.SubAssign.js b/doc/implementors/core/ops/arith/trait.SubAssign.js
index 07046506bd..6138630666 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<usize> for Frame"],["impl SubAssign<usize> for Page"],["impl SubAssign<PhysicalAddress> for PhysicalAddress"],["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl SubAssign<usize> for PhysicalAddress"],["impl SubAssign<usize> for VirtualAddress"]],
+"memory_structs":[["impl SubAssign<usize> for PhysicalAddress"],["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl SubAssign<usize> for Frame"],["impl SubAssign<usize> for VirtualAddress"],["impl SubAssign<usize> for Page"],["impl SubAssign<PhysicalAddress> for PhysicalAddress"]],
"pte_flags":[["impl SubAssign<PteFlagsX86_64> for PteFlagsX86_64"],["impl SubAssign<PteFlagsAarch64> for PteFlagsAarch64"],["impl SubAssign<PteFlags> for PteFlags"]],
"text_terminal":[["impl SubAssign<Row> for Row"],["impl SubAssign<Column> for Column"],["impl SubAssign<LineIndex> for LineIndex"],["impl SubAssign<UnitIndex> for UnitIndex"],["impl SubAssign<ScrollbackBufferPoint> for ScrollbackBufferPoint"],["impl SubAssign<FormatFlags> for FormatFlags"],["impl SubAssign<ScreenPoint> for ScreenPoint"]],
"time":[["impl SubAssign<Duration> for Instant"]]
diff --git a/doc/implementors/core/ops/bit/trait.BitAnd.js b/doc/implementors/core/ops/bit/trait.BitAnd.js
index 269ec1e3ec..9bd05ee38c 100644
--- a/doc/implementors/core/ops/bit/trait.BitAnd.js
+++ b/doc/implementors/core/ops/bit/trait.BitAnd.js
@@ -2,7 +2,7 @@
"ata":[["impl BitAnd<AtaError> for AtaError"],["impl BitAnd<AtaStatus> for AtaStatus"]],
"boot_info":[["impl BitAnd<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl BitAnd<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl BitAnd<VirtualAddress> for VirtualAddress"],["impl BitAnd<PhysicalAddress> for PhysicalAddress"]],
+"memory_structs":[["impl BitAnd<PhysicalAddress> for PhysicalAddress"],["impl BitAnd<VirtualAddress> for VirtualAddress"]],
"pte_flags":[["impl BitAnd<PteFlags> for PteFlags"],["impl BitAnd<PteFlagsX86_64> for PteFlagsX86_64"],["impl BitAnd<PteFlagsAarch64> for PteFlagsAarch64"]],
"text_terminal":[["impl BitAnd<FormatFlags> for FormatFlags"]]
};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/bit/trait.BitAndAssign.js b/doc/implementors/core/ops/bit/trait.BitAndAssign.js
index d78e06e179..2eec3773f2 100644
--- a/doc/implementors/core/ops/bit/trait.BitAndAssign.js
+++ b/doc/implementors/core/ops/bit/trait.BitAndAssign.js
@@ -2,7 +2,7 @@
"ata":[["impl BitAndAssign<AtaStatus> for AtaStatus"],["impl BitAndAssign<AtaError> for AtaError"]],
"boot_info":[["impl BitAndAssign<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl BitAndAssign<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl BitAndAssign<VirtualAddress> for VirtualAddress"],["impl BitAndAssign<PhysicalAddress> for PhysicalAddress"]],
+"memory_structs":[["impl BitAndAssign<PhysicalAddress> for PhysicalAddress"],["impl BitAndAssign<VirtualAddress> for VirtualAddress"]],
"pte_flags":[["impl BitAndAssign<PteFlagsAarch64> for PteFlagsAarch64"],["impl BitAndAssign<PteFlags> for PteFlags"],["impl BitAndAssign<PteFlagsX86_64> for PteFlagsX86_64"]],
"text_terminal":[["impl BitAndAssign<FormatFlags> for FormatFlags"]]
};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/bit/trait.BitOr.js b/doc/implementors/core/ops/bit/trait.BitOr.js
index ddd41bbfd8..89e9e1f719 100644
--- a/doc/implementors/core/ops/bit/trait.BitOr.js
+++ b/doc/implementors/core/ops/bit/trait.BitOr.js
@@ -2,7 +2,7 @@
"ata":[["impl BitOr<AtaError> for AtaError"],["impl BitOr<AtaStatus> for AtaStatus"]],
"boot_info":[["impl BitOr<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl BitOr<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl BitOr<PhysicalAddress> for PhysicalAddress"],["impl BitOr<VirtualAddress> for VirtualAddress"]],
+"memory_structs":[["impl BitOr<VirtualAddress> for VirtualAddress"],["impl BitOr<PhysicalAddress> for PhysicalAddress"]],
"pte_flags":[["impl BitOr<PteFlags> for PteFlags"],["impl BitOr<PteFlagsX86_64> for PteFlagsX86_64"],["impl BitOr<PteFlagsAarch64> for PteFlagsAarch64"]],
"text_terminal":[["impl BitOr<FormatFlags> for FormatFlags"]]
};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/bit/trait.BitOrAssign.js b/doc/implementors/core/ops/bit/trait.BitOrAssign.js
index 4afbc77c85..9b996d76fc 100644
--- a/doc/implementors/core/ops/bit/trait.BitOrAssign.js
+++ b/doc/implementors/core/ops/bit/trait.BitOrAssign.js
@@ -2,7 +2,7 @@
"ata":[["impl BitOrAssign<AtaStatus> for AtaStatus"],["impl BitOrAssign<AtaError> for AtaError"]],
"boot_info":[["impl BitOrAssign<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl BitOrAssign<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl BitOrAssign<VirtualAddress> for VirtualAddress"],["impl BitOrAssign<PhysicalAddress> for PhysicalAddress"]],
+"memory_structs":[["impl BitOrAssign<PhysicalAddress> for PhysicalAddress"],["impl BitOrAssign<VirtualAddress> for VirtualAddress"]],
"pte_flags":[["impl BitOrAssign<PteFlagsX86_64> for PteFlagsX86_64"],["impl BitOrAssign<PteFlags> for PteFlags"],["impl BitOrAssign<PteFlagsAarch64> for PteFlagsAarch64"]],
"text_terminal":[["impl BitOrAssign<FormatFlags> for FormatFlags"]]
};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/bit/trait.BitXorAssign.js b/doc/implementors/core/ops/bit/trait.BitXorAssign.js
index bb38a4ae34..92dac8e057 100644
--- a/doc/implementors/core/ops/bit/trait.BitXorAssign.js
+++ b/doc/implementors/core/ops/bit/trait.BitXorAssign.js
@@ -2,7 +2,7 @@
"ata":[["impl BitXorAssign<AtaError> for AtaError"],["impl BitXorAssign<AtaStatus> for AtaStatus"]],
"boot_info":[["impl BitXorAssign<ElfSectionFlags> for ElfSectionFlags"]],
"keycodes_ascii":[["impl BitXorAssign<KeyboardModifiers> for KeyboardModifiers"]],
-"memory_structs":[["impl BitXorAssign<PhysicalAddress> for PhysicalAddress"],["impl BitXorAssign<VirtualAddress> for VirtualAddress"]],
+"memory_structs":[["impl BitXorAssign<VirtualAddress> for VirtualAddress"],["impl BitXorAssign<PhysicalAddress> for PhysicalAddress"]],
"pte_flags":[["impl BitXorAssign<PteFlags> for PteFlags"],["impl BitXorAssign<PteFlagsX86_64> for PteFlagsX86_64"],["impl BitXorAssign<PteFlagsAarch64> for PteFlagsAarch64"]],
"text_terminal":[["impl BitXorAssign<FormatFlags> for FormatFlags"]]
};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/deref/trait.Deref.js b/doc/implementors/core/ops/deref/trait.Deref.js
index 20588f07bb..a5319dbf9a 100644
--- a/doc/implementors/core/ops/deref/trait.Deref.js
+++ b/doc/implementors/core/ops/deref/trait.Deref.js
@@ -1,17 +1,17 @@
(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<'f> Deref for AllocatedFrame<'f>"],["impl Deref for AllocatedFrames"],["impl Deref for PhysicalMemoryRegion"]],
+"frame_allocator":[["impl<const S: MemoryState> Deref for Frames<S>"],["impl<'f> Deref for AllocatedFrame<'f>"],["impl Deref for PhysicalMemoryRegion"]],
"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<'a, T: ?Sized> Deref for MutexIrqSafeGuard<'a, T>"],["impl<'rwlock, T: ?Sized> Deref for RwLockIrqSafeReadGuard<'rwlock, T>"],["impl<'rwlock, T: ?Sized> Deref for RwLockIrqSafeWriteGuard<'rwlock, T>"]],
"memory":[["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>"],["impl Deref for MappedPages"],["impl Deref for PageTable"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>"]],
-"memory_structs":[["impl Deref for FrameRange"],["impl Deref for PageRange"]],
+"memory_structs":[["impl Deref for PageRange"],["impl Deref for FrameRange"]],
"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"]],
"no_drop":[["impl<T> Deref for NoDrop<T>"]],
"owned_borrowed_trait":[["impl<'t, T> Deref for Borrowed<'t, T>"],["impl<T> Deref for Owned<T>"]],
-"page_table_entry":[["impl Deref for UnmappedFrames"]],
+"page_table_entry":[["impl Deref for UnmappedFrameRange"]],
"path":[["impl Deref for Path"]],
"pci":[["impl Deref for MsixVectorTable"],["impl Deref for PciDevice"]],
"per_cpu":[["impl Deref for CpuLocalCpuId"]],
diff --git a/doc/implementors/core/ops/deref/trait.DerefMut.js b/doc/implementors/core/ops/deref/trait.DerefMut.js
index d0093ae9e9..0d2390b88c 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 DerefMut for PageTable"],["impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>"]],
-"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 TransmitBuffer"],["impl DerefMut for ReceiveBuffer"]],
"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 a14cbe2b95..e64d68ddaf 100644
--- a/doc/implementors/core/ops/drop/trait.Drop.js
+++ b/doc/implementors/core/ops/drop/trait.Drop.js
@@ -4,7 +4,7 @@
"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<'list> Drop for DeferredAllocAction<'list>"],["impl Drop for AllocatedFrames"]],
+"frame_allocator":[["impl<const S: MemoryState> Drop for Frames<S>"],["impl<'list> Drop for DeferredAllocAction<'list>"]],
"irq_safety":[["impl Drop for HeldInterrupts"]],
"memory":[["impl Drop for MappedPages"]],
"mod_mgmt":[["impl Drop for AppCrateRef"]],
diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 5a6cfe77e5..bdc4752c30 100644
--- a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -36,7 +36,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 RefUnwindSafe for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> RefUnwindSafe for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> RefUnwindSafe for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> !RefUnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl RefUnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl RefUnwindSafe for Page",1,["memory_structs::Page"]],["impl RefUnwindSafe for Frame",1,["memory_structs::Frame"]],["impl RefUnwindSafe for PageRange",1,["memory_structs::PageRange"]],["impl RefUnwindSafe for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl RefUnwindSafe for FrameRange",1,["memory_structs::FrameRange"]],["impl RefUnwindSafe for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 RefUnwindSafe for Page",1,["memory_structs::Page"]],["impl RefUnwindSafe for Frame",1,["memory_structs::Frame"]],["impl RefUnwindSafe for PageRange",1,["memory_structs::PageRange"]],["impl RefUnwindSafe for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl RefUnwindSafe for FrameRange",1,["memory_structs::FrameRange"]],["impl RefUnwindSafe for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 RefUnwindSafe for Path",1,["path::Path"]],["impl RefUnwindSafe for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl RefUnwindSafe for PciCapability",1,["pci::PciCapability"]],["impl RefUnwindSafe for InterruptPin",1,["pci::InterruptPin"]],["impl RefUnwindSafe for PciBus",1,["pci::PciBus"]],["impl RefUnwindSafe for PciLocation",1,["pci::PciLocation"]],["impl RefUnwindSafe for PciDevice",1,["pci::PciDevice"]],["impl RefUnwindSafe for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl RefUnwindSafe for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl RefUnwindSafe for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl !RefUnwindSafe for PerCpuData",1,["per_cpu::PerCpuData"]],["impl RefUnwindSafe for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 3b952ecc0e..b71f8bba78 100644
--- a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -36,7 +36,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 UnwindSafe for AllocatedFrames",1,["frame_allocator::AllocatedFrames"]],["impl<'f> UnwindSafe for AllocatedFramesIter<'f>",1,["frame_allocator::AllocatedFramesIter"]],["impl<'f> UnwindSafe for AllocatedFrame<'f>",1,["frame_allocator::AllocatedFrame"]],["impl<'list> !UnwindSafe for DeferredAllocAction<'list>",1,["frame_allocator::DeferredAllocAction"]]],
+"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"]]],
"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 VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl UnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl UnwindSafe for Page",1,["memory_structs::Page"]],["impl UnwindSafe for Frame",1,["memory_structs::Frame"]],["impl UnwindSafe for PageRange",1,["memory_structs::PageRange"]],["impl UnwindSafe for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl UnwindSafe for FrameRange",1,["memory_structs::FrameRange"]],["impl UnwindSafe for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
+"memory_structs":[["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 UnwindSafe for Page",1,["memory_structs::Page"]],["impl UnwindSafe for Frame",1,["memory_structs::Frame"]],["impl UnwindSafe for PageRange",1,["memory_structs::PageRange"]],["impl UnwindSafe for CopyablePageRange",1,["memory_structs::CopyablePageRange"]],["impl UnwindSafe for FrameRange",1,["memory_structs::FrameRange"]],["impl UnwindSafe for CopyableFrameRange",1,["memory_structs::CopyableFrameRange"]]],
"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"]]],
@@ -77,7 +77,7 @@
"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_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 UnmappedFrames",1,["page_table_entry::UnmappedFrames"]]],
+"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 UnwindSafe for Path",1,["path::Path"]],["impl UnwindSafe for PathComponent",1,["path::PathComponent"]]],
"pci":[["impl UnwindSafe for PciCapability",1,["pci::PciCapability"]],["impl UnwindSafe for InterruptPin",1,["pci::InterruptPin"]],["impl UnwindSafe for PciBus",1,["pci::PciBus"]],["impl UnwindSafe for PciLocation",1,["pci::PciLocation"]],["impl UnwindSafe for PciDevice",1,["pci::PciDevice"]],["impl UnwindSafe for PciConfigSpaceAccessMechanism",1,["pci::PciConfigSpaceAccessMechanism"]],["impl UnwindSafe for MsixVectorTable",1,["pci::MsixVectorTable"]],["impl UnwindSafe for MsixVectorEntry",1,["pci::MsixVectorEntry"]]],
"per_cpu":[["impl !UnwindSafe for PerCpuData",1,["per_cpu::PerCpuData"]],["impl UnwindSafe for CpuLocalCpuId",1,["per_cpu::CpuLocalCpuId"]]],
diff --git a/doc/memory/all.html b/doc/memory/all.html
index e3470fdb74..5653e0414f 100644
--- a/doc/memory/all.html
+++ b/doc/memory/all.html
@@ -1 +1 @@
-List of all items in this crate List of all items
Structs
- AllocatedFrames
- AllocatedPages
- BorrowedMappedPages
- BorrowedSliceMappedPages
- CopyableFrameRange
- CopyablePageRange
- EarlyIdentityMappedPages
- Frame
- FrameRange
- Immutable
- InitialMemoryMappings
- MappedPages
- Mapper
- MemoryManagementInfo
- Mutable
- Page
- PageRange
- PageTable
- PhysicalAddress
- PteFlags
- PteFlagsArch
- PteFlagsX86_64
- VirtualAddress
Enums
Traits
Functions
- allocate_frames
- allocate_frames_at
- allocate_frames_by_bytes
- allocate_frames_by_bytes_at
- allocate_pages
- allocate_pages_at
- allocate_pages_by_bytes
- allocate_pages_by_bytes_at
- allocate_pages_by_bytes_in_range
- allocate_pages_in_range
- create_contiguous_mapping
- create_mapping
- get_kernel_mmi_ref
- init
- init_post_heap
- map_frame_range
- set_broadcast_tlb_shootdown_cb
- translate
Type Definitions
Constants
\ No newline at end of file
+List of all items in this crate List of all items
Structs
- AllocatedPages
- BorrowedMappedPages
- BorrowedSliceMappedPages
- CopyableFrameRange
- CopyablePageRange
- EarlyIdentityMappedPages
- Frame
- FrameRange
- Immutable
- InitialMemoryMappings
- MappedPages
- Mapper
- MemoryManagementInfo
- Mutable
- Page
- PageRange
- PageTable
- PhysicalAddress
- PteFlags
- PteFlagsArch
- PteFlagsX86_64
- VirtualAddress
Enums
Traits
Functions
- allocate_frames
- allocate_frames_at
- allocate_frames_by_bytes
- allocate_frames_by_bytes_at
- allocate_pages
- allocate_pages_at
- allocate_pages_by_bytes
- allocate_pages_by_bytes_at
- allocate_pages_by_bytes_in_range
- allocate_pages_in_range
- create_contiguous_mapping
- create_mapping
- get_kernel_mmi_ref
- init
- init_post_heap
- map_frame_range
- set_broadcast_tlb_shootdown_cb
- translate
Type Definitions
Constants
\ No newline at end of file
diff --git a/doc/memory/constant.DMA_FLAGS.html b/doc/memory/constant.DMA_FLAGS.html
index 412745742f..23febc8879 100644
--- a/doc/memory/constant.DMA_FLAGS.html
+++ b/doc/memory/constant.DMA_FLAGS.html
@@ -1,2 +1,2 @@
-DMA_FLAGS in memory - Rust 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
\ No newline at end of file
diff --git a/doc/memory/constant.MMIO_FLAGS.html b/doc/memory/constant.MMIO_FLAGS.html
index d78ac4b8e5..a7d96424cc 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/enum.MemoryState.html b/doc/memory/enum.MemoryState.html
new file mode 100644
index 0000000000..b0c81a4325
--- /dev/null
+++ b/doc/memory/enum.MemoryState.html
@@ -0,0 +1,23 @@
+MemoryState in memory - Rust Enum memory::MemoryState
pub enum MemoryState {
+ Free,
+ Allocated,
+ Mapped,
+ Unmapped,
+}
Expand description
The possible states that a range of exclusively-owned pages or frames can be in.
+Variants§
§Free
Memory is free and owned by the allocator
+§Allocated
Memory is allocated and can be used for a mapping
+§Mapped
Memory is mapped (PTE has been set)
+§Unmapped
Memory has been unmapped (PTE has been cleared)
+Trait Implementations§
§impl PartialEq<MemoryState> for MemoryState
§fn eq(&self, other: &MemoryState) -> bool
This method tests for self
and other
values to be equal, and is used
+by ==
.§impl ConstParamTy for MemoryState
§impl Eq for MemoryState
§impl StructuralEq for MemoryState
§impl StructuralPartialEq for MemoryState
Auto Trait Implementations§
§impl RefUnwindSafe for MemoryState
§impl Send for MemoryState
§impl Sync for MemoryState
§impl Unpin for MemoryState
§impl UnwindSafe for MemoryState
Blanket Implementations§
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
\ No newline at end of file
diff --git a/doc/memory/fn.allocate_frames.html b/doc/memory/fn.allocate_frames.html
index b002482137..b4ff7c8f0b 100644
--- a/doc/memory/fn.allocate_frames.html
+++ b/doc/memory/fn.allocate_frames.html
@@ -1,3 +1,5 @@
-allocate_frames in memory - Rust Function memory::allocate_frames
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 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.
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 07c42c6aa2..18a0cb74de 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<AllocatedFrames, &'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}>, &'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 fda140ace3..3a97945621 100644
--- a/doc/memory/fn.allocate_frames_by_bytes.html
+++ b/doc/memory/fn.allocate_frames_by_bytes.html
@@ -1,4 +1,6 @@
-allocate_frames_by_bytes in memory - Rust Function memory::allocate_frames_by_bytes
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 memory - Rust Function memory::allocate_frames_by_bytes
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,
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 548326f4fb..eb37d13124 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 Function memory::allocate_frames_by_bytes_at
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<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.
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.create_contiguous_mapping.html b/doc/memory/fn.create_contiguous_mapping.html
index 8b279cbd4e..d674c518f8 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 Function memory::create_contiguous_mapping
source · pub fn create_contiguous_mapping<F: Into<PteFlagsArch>>(
+create_contiguous_mapping in memory - Rust Function memory::create_contiguous_mapping
source · 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_mapping.html b/doc/memory/fn.create_mapping.html
index 57f914d3a9..e04dde973a 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 88859c5f73..1bd517b6ef 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 01b296e58c..d71423a849 100644
--- a/doc/memory/fn.init.html
+++ b/doc/memory/fn.init.html
@@ -1,4 +1,4 @@
-init in memory - Rust pub fn init(
+init in memory - Rust 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 e969d880ed..b13219a2fe 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 ef7e3b4b58..5631da4c1d 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 cf5b369dbd..da3fad4b08 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 Function memory::set_broadcast_tlb_shootdown_cb
source · 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 Function memory::set_broadcast_tlb_shootdown_cb
source · 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/index.html b/doc/memory/index.html
index 7bf6bcb97a..0a31d03e8c 100644
--- a/doc/memory/index.html
+++ b/doc/memory/index.html
@@ -1,17 +1,17 @@
-memory - Rust Expand description
This crate implements the main memory management subsystem for Theseus.
+memory - Rust 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
- Represents a range of allocated physical memory
Frame
s; derefs to FrameRange
. - Represents a range of allocated
VirtualAddress
es, specified in Page
s. - A
FrameRange
that implements Copy
- A
PageRange
that implements Copy
- 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_SIZE
boundary. - A range of
Frame
s that are contiguous in physical memory. - A marker type used to indicate that a
BorrowedMappedPages
+Structs
- Represents a range of allocated
VirtualAddress
es, specified in Page
s. - A
FrameRange
that implements Copy
- A
PageRange
that implements Copy
- 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_SIZE
boundary. - A range of
Frame
s 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
(this is basically the equivalent of Linux’s mm_struct) - A marker type used to indicate that a
BorrowedMappedPages
or BorrowedSliceMappedPages
is borrowed mutably. - A
Page
is a chunk of virtual memory aligned to a PAGE_SIZE
boundary. - A range of
Page
s that are contiguous in virtual memory. - 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 entry (PTE)
-that define how a page is mapped.
- PteFlagsArchx86-64Page table entry (PTE) flags on x86_64.
- PteFlagsX86_64x86-64Page table entry (PTE) flags on x86_64.
- A virtual memory address, which is a
usize
under the hood.
Enums
- Possible options when requested pages from the page allocator.
Constants
- Mapping flags that can be used to map DMA (Direct Memory Access) memory.
- Mapping flags that can be used to map MMIO registers.
- Page size is 4096 bytes, 4KiB pages.
- A mask for the bits of a page table entry that contain the physical frame address.
Traits
- A trait for parameterizing a
BorrowedMappedPages
+that define how a page is mapped. - PteFlagsArchx86-64Page table entry (PTE) flags on x86_64.
- PteFlagsX86_64x86-64Page table entry (PTE) flags on x86_64.
- A virtual memory address, which is a
usize
under the hood.
Enums
- Possible options when requested pages from the page allocator.
- The possible states that a range of exclusively-owned pages or frames can be in.
Constants
- Mapping flags that can be used to map DMA (Direct Memory Access) memory.
- Mapping flags that can be used to map MMIO registers.
- Page size is 4096 bytes, 4KiB pages.
- A mask for the bits of a page table entry that contain the physical frame address.
Traits
- A trait for parameterizing a
BorrowedMappedPages
or BorrowedSliceMappedPages
as mutably or immutably borrowed.
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. - Allocates the given number of pages with no constraints on the starting virtual address.
- Allocates the given number of pages starting at (inclusive of) the page containing the given
VirtualAddress
. - Allocates pages with no constraints on the starting virtual address,
with a size given by the number of bytes.
- Allocates pages starting at the given
VirtualAddress
with a size given in number of bytes. - Allocates pages with a size given in number of bytes with the constraint that
@@ -27,4 +27,4 @@
Acknowledgments
Consumes the given BootInformation, because after the memory system is initialized,
the original BootInformation will be unmapped and inaccessible. - Finishes initializing the memory management system after the heap is ready.
- A convenience function that maps randomly-allocated pages to the given range of frames.
- Set the function callback that will be invoked every time a TLB shootdown is necessary,
i.e., during page table remapping and unmapping operations.
- A convenience function to translate the given virtual address into a
-physical address using the currently-active page table.
Type Definitions
- A shareable reference to a
MemoryManagementInfo
struct wrapper in a lock.
\ No newline at end of file
+physical address using the currently-active page table.Type Definitions
- A type alias for
Frames
in the Allocated
state. - A shareable reference to a
MemoryManagementInfo
struct wrapper in a lock. - A type alias for
Frames
in the Unmapped
state.
\ No newline at end of file
diff --git a/doc/memory/sidebar-items.js b/doc/memory/sidebar-items.js
index c22141ef6e..878dfcd184 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"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_in_range","allocate_pages_in_range","create_contiguous_mapping","create_mapping","get_kernel_mmi_ref","init","init_post_heap","map_frame_range","set_broadcast_tlb_shootdown_cb","translate"],"struct":["AllocatedFrames","AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CopyableFrameRange","CopyablePageRange","EarlyIdentityMappedPages","Frame","FrameRange","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","Mutable","Page","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability"],"type":["MmiRef"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"constant":["DMA_FLAGS","MMIO_FLAGS","PAGE_SIZE","PTE_FRAME_MASK"],"enum":["AllocationRequest","MemoryState"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_in_range","allocate_pages_in_range","create_contiguous_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","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability"],"type":["AllocatedFrames","MmiRef","UnmappedFrames"]};
\ No newline at end of file
diff --git a/doc/memory/struct.AllocatedFrames.html b/doc/memory/struct.AllocatedFrames.html
deleted file mode 100644
index 9bb8a8deed..0000000000
--- a/doc/memory/struct.AllocatedFrames.html
+++ /dev/null
@@ -1,67 +0,0 @@
-AllocatedFrames in memory - Rust Struct memory::AllocatedFrames
pub struct AllocatedFrames { /* private fields */ }
Expand description
Represents a range of allocated physical memory Frame
s; derefs to FrameRange
.
-These frames are not immediately accessible because they’re not yet mapped
-by any virtual memory pages.
-You must do that separately in order to create a MappedPages
type,
-which can then be used to access the contents of these frames.
-This object represents ownership of the range of allocated physical frames;
-if this object falls out of scope, its allocated frames will be auto-deallocated upon drop.
-Implementations§
§impl AllocatedFrames
pub const fn empty() -> AllocatedFrames
Returns an empty AllocatedFrames object that performs no frame allocation.
-Can be used as a placeholder, but will not permit any real usage.
-pub fn merge(&mut self, other: AllocatedFrames) -> Result<(), AllocatedFrames>
Merges the given AllocatedFrames
object other
into this AllocatedFrames
object (self
).
-This is just for convenience and usability purposes, it performs no allocation or remapping.
-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.
-pub fn split(
- self,
- at_frame: Frame
-) -> Result<(AllocatedFrames, AllocatedFrames), AllocatedFrames>
Splits this AllocatedFrames
into two separate AllocatedFrames
objects:
-
-[beginning : at_frame - 1]
-[at_frame : end]
-
-This function follows the behavior of core::slice::split_at()
,
-thus, either one of the returned AllocatedFrames
objects may be empty.
-
-- If
at_frame == self.start
, the first returned AllocatedFrames
object will be empty.
-- If
at_frame == self.end + 1
, the second returned AllocatedFrames
object will be empty.
-
-Returns an Err
containing this AllocatedFrames
if at_frame
is otherwise out of bounds.
-pub fn as_allocated_frame(&self) -> AllocatedFrame<'_>
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 = 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 number of bytes.
-pub fn contains_address(&self, addr: PhysicalAddress) -> bool
Returns true
if this FrameRange
contains the given PhysicalAddress
.
-pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>
Returns the offset of the given PhysicalAddress
within this FrameRange
, i.e., addr - self.start_address()
.
-If the given addr
is not covered by this range of Frame
s, this returns None
.
-Examples
-If the range covers addresses 0x2000
to 0x4000
, then offset_of_address(0x3500)
would return Some(0x1500)
.
-pub fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>
Returns the PhysicalAddress
at the given offset
into this FrameRange
within this FrameRange
, i.e., self.start_address() + offset
.
-If the given offset
is not within this range of Frame
s, this returns None
.
-Examples
-If the range covers addresses 0x2000
through 0x3FFF
, then address_at_offset(0x1500)
would return Some(0x3500)
, and address_at_offset(0x2000)
would return None
.
-pub fn to_extended(&self, to_include: Frame) -> FrameRange
Returns a new separate FrameRange
that is extended to include the given Frame
.
-pub fn overlap(&self, other: &FrameRange) -> Option<FrameRange>
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>>§
sourcepub fn iter(&self) -> RangeInclusiveIterator<Idx>
Returns an iterator with the same start
and end
values as the range.
-sourcepub fn contains<U>(&self, item: &U) -> boolwhere
- Idx: PartialOrd<U>,
- U: PartialOrd<Idx> + ?Sized,
Returns true
if item
is contained in the range.
-Trait Implementations§
§impl Debug for AllocatedFrames
§impl Deref for AllocatedFrames
§type Target = FrameRange
The resulting type after dereferencing.§fn deref(&self) -> &FrameRange
Dereferences the value.§impl<'f> IntoIterator for &'f AllocatedFrames
§fn into_iter(self) -> <&'f AllocatedFrames as IntoIterator>::IntoIter
Creates an iterator from a value. Read moreAuto Trait Implementations§
§impl RefUnwindSafe for AllocatedFrames
§impl Send for AllocatedFrames
§impl Sync for AllocatedFrames
§impl Unpin for AllocatedFrames
§impl UnwindSafe for AllocatedFrames
Blanket Implementations§
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
\ No newline at end of file
diff --git a/doc/memory/struct.BorrowedMappedPages.html b/doc/memory/struct.BorrowedMappedPages.html
index 27d5e0455a..9a4169c43b 100644
--- a/doc/memory/struct.BorrowedMappedPages.html
+++ b/doc/memory/struct.BorrowedMappedPages.html
@@ -1,4 +1,4 @@
-BorrowedMappedPages in memory - Rust Struct memory::BorrowedMappedPages
source · pub struct BorrowedMappedPages<T, M = Immutable, B = MappedPages>where
+BorrowedMappedPages in memory - Rust Struct memory::BorrowedMappedPages
source · 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>
sourcepub 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>
sourcepub 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§impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedMappedPages<T, Mutable, B>
sourcepub 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>
sourcepub 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>
sourcepub fn into_inner(self) -> B
Consumes this object and returns 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§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> AsRef<T> for BorrowedMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedMappedPages
implement AsRef<T>
.
-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§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 moresource§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedMappedPages
can deref into &T
.
-source§impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedMappedPages<T, Mutable, B>
Only Mutable
BorrowedMappedPages
can deref into &mut T
.
-source§impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>
Trait Implementations§
source§impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<T> for BorrowedMappedPages<T, Mutable, B>
Only Mutable
BorrowedMappedPages
implement AsMut<T>
.
+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§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<T> for BorrowedMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedMappedPages
implement Borrow<T>
.
+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 moresource§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedMappedPages
can deref into &T
.
+source§impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedMappedPages<T, Mutable, B>
Only Mutable
BorrowedMappedPages
can deref into &mut T
.
+source§impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>
source§impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>
source§impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedMappedPages<T, M, B>
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 moresource§impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>
source§impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>
source§impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>
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 moresource§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 57716b9d1a..8bcb5a2f8d 100644
--- a/doc/memory/struct.BorrowedSliceMappedPages.html
+++ b/doc/memory/struct.BorrowedSliceMappedPages.html
@@ -1,9 +1,9 @@
-BorrowedSliceMappedPages in memory - Rust Struct memory::BorrowedSliceMappedPages
source · pub struct BorrowedSliceMappedPages<T, M = Immutable, B = MappedPages>where
+BorrowedSliceMappedPages in memory - Rust Struct memory::BorrowedSliceMappedPages
source · 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>
Implementations§
source§impl<T: FromBytes, B: BorrowMut<MappedPages>> BorrowedSliceMappedPages<T, Mutable, B>
source§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, M, B>
sourcepub fn into_inner(self) -> B
Consumes this object and returns the inner MappedPages
.
-source§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> BorrowedSliceMappedPages<T, M, B>
sourcepub fn into_inner(self) -> B
Consumes this object and returns the inner MappedPages
.
+
Methods from Deref<Target = [T]>§
1.0.0 · sourcepub fn len(&self) -> usize
Returns the number of elements in the slice.
Examples
Trait Implementations§
source§impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>
Only Mutable
BorrowedSliceMappedPages
implement AsMut<T>
.
-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§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedSliceMappedPages
implement Borrow<T>
.
-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 moresource§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedSliceMappedPages
can deref into &[T]
.
-source§impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>
Only Mutable
BorrowedSliceMappedPages
can deref into &mut T
.
-source§impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>
Trait Implementations§
source§impl<T: FromBytes, B: BorrowMut<MappedPages>> AsMut<[T]> for BorrowedSliceMappedPages<T, Mutable, B>
Only Mutable
BorrowedSliceMappedPages
implement AsMut<T>
.
+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§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Borrow<[T]> for BorrowedSliceMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedSliceMappedPages
implement Borrow<T>
.
+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 moresource§impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>
Both Mutable
and Immutable
BorrowedSliceMappedPages
can deref into &[T]
.
+source§impl<T: FromBytes, B: BorrowMut<MappedPages>> DerefMut for BorrowedSliceMappedPages<T, Mutable, B>
Only Mutable
BorrowedSliceMappedPages
can deref into &mut T
.
+source§impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>
source§impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>
source§impl<T: FromBytes + Ord, M: Mutability, B: Borrow<MappedPages>> Ord for BorrowedSliceMappedPages<T, M, B>
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 moresource§impl<T: FromBytes + PartialEq, M: Mutability, B: Borrow<MappedPages>> PartialEq<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>
source§impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>
source§impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>
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 moresource§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
index c5daa5a0cd..ffc3febcd4 100644
--- a/doc/memory/struct.CopyableFrameRange.html
+++ b/doc/memory/struct.CopyableFrameRange.html
@@ -1,5 +1,5 @@
CopyableFrameRange in memory - Rust Struct memory::CopyableFrameRange
pub struct CopyableFrameRange { /* private fields */ }
Expand description
A FrameRange
that implements Copy
-Trait Implementations§
§impl Clone for CopyableFrameRange
§fn clone(&self) -> CopyableFrameRange
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more§impl From<CopyableFrameRange> for FrameRange
§fn from(cr: CopyableFrameRange) -> FrameRange
Converts to this type from the input type.§impl From<FrameRange> for CopyableFrameRange
§fn from(r: FrameRange) -> CopyableFrameRange
Converts to this type from the input type.§impl Copy for CopyableFrameRange
Auto Trait Implementations§
§impl RefUnwindSafe for CopyableFrameRange
§impl Send for CopyableFrameRange
§impl Sync for CopyableFrameRange
§impl Unpin for CopyableFrameRange
§impl UnwindSafe for CopyableFrameRange
Blanket Implementations§
Trait Implementations§
§impl Clone for CopyableFrameRange
§fn clone(&self) -> CopyableFrameRange
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more§impl From<CopyableFrameRange> for FrameRange
§fn from(cr: CopyableFrameRange) -> FrameRange
Converts to this type from the input type.§impl From<FrameRange> for CopyableFrameRange
§fn from(r: FrameRange) -> CopyableFrameRange
Converts to this type from the input type.§impl Copy for CopyableFrameRange
Auto Trait Implementations§
§impl RefUnwindSafe for CopyableFrameRange
§impl Send for CopyableFrameRange
§impl Sync for CopyableFrameRange
§impl Unpin for CopyableFrameRange
§impl UnwindSafe for CopyableFrameRange
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/doc/memory/struct.EarlyIdentityMappedPages.html b/doc/memory/struct.EarlyIdentityMappedPages.html
index 00a1d04a09..2cb932dfaa 100644
--- a/doc/memory/struct.EarlyIdentityMappedPages.html
+++ b/doc/memory/struct.EarlyIdentityMappedPages.html
@@ -1,4 +1,4 @@
-EarlyIdentityMappedPages in memory - Rust Struct memory::EarlyIdentityMappedPages
source · 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 Struct memory::EarlyIdentityMappedPages
source · 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:
- the
.init
early text section,
@@ -6,7 +6,7 @@
- the
.rodata
section, which includes all read-only data,
- the
.data
section, which includes .bss
and all read-write data.
-Trait Implementations§
source§impl Debug for EarlyIdentityMappedPages