From 397c1adfac42ed6f57a803f2a310b865236242c9 Mon Sep 17 00:00:00 2001 From: tsoutsman Date: Sat, 9 Sep 2023 06:02:24 +0000 Subject: [PATCH] Add `PageSize` trait for defining 4K, 2M, and 1G huge pages (#1031) * All chunk-related types are now parameterized with a `P: PageSize` type parameter: * `Page` and `Frame`, which ensure that the underlying virtual or physical address is always properly aligned to the specified size. * `PageRange` and `FrameRange`, which ensure that the range of pages or frames are correctly aligned and only can be created in granular chunks of the given `PageSize`. * When iterating over a range of huge pages or frames, each step will be at the granularity of one huge page, which makes it easy to iterate of huge pages and huge frames in lockstep. * There are various implementations of the conversion traits `From` and `TryFrom` for normal and huge pages/frames and ranges. * The `PageSize` parameter can only be one of 3 marker structs: 1. `Page4K`: a normal 4KiB page (P1-level), which is the default. 2. `Page2M`: a P2-level huge page. 3. `Page1G`: a P3-level huge page. * This is only relevant to x86_64 at the moment, though we may add aarch64 huge page sizes in the future too. Co-authored-by: Kevin Boos b5216784a10705e446b4a765c1df94dfc6cfa41b --- doc/compositor/trait.CompositableRegion.html | 8 +- .../fn.context_switch_regular.html | 2 +- .../fn.read_first_register.html | 2 +- .../macro.restore_registers_regular.html | 2 +- .../macro.save_registers_regular.html | 2 +- .../macro.switch_stacks.html | 2 +- .../struct.ContextRegular.html | 6 +- .../struct.AllocatedFrame.html | 11 +- doc/frame_allocator/struct.Frames.html | 14 +- .../struct.PhysicalMemoryRegion.html | 14 +- doc/implementors/core/borrow/trait.Borrow.js | 2 +- doc/implementors/core/clone/trait.Clone.js | 2 +- doc/implementors/core/cmp/trait.Eq.js | 2 +- doc/implementors/core/cmp/trait.Ord.js | 2 +- doc/implementors/core/cmp/trait.PartialEq.js | 2 +- doc/implementors/core/cmp/trait.PartialOrd.js | 2 +- doc/implementors/core/convert/trait.From.js | 4 +- doc/implementors/core/convert/trait.Into.js | 2 +- .../core/convert/trait.TryFrom.js | 1 + .../core/default/trait.Default.js | 2 +- doc/implementors/core/fmt/trait.Binary.js | 2 +- doc/implementors/core/fmt/trait.Debug.js | 4 +- doc/implementors/core/fmt/trait.Display.js | 2 +- doc/implementors/core/fmt/trait.LowerHex.js | 2 +- doc/implementors/core/fmt/trait.Octal.js | 2 +- doc/implementors/core/fmt/trait.Pointer.js | 2 +- doc/implementors/core/fmt/trait.UpperHex.js | 2 +- doc/implementors/core/hash/trait.Hash.js | 2 +- .../core/iter/range/trait.Step.js | 2 +- .../iter/traits/collect/trait.IntoIterator.js | 2 +- doc/implementors/core/marker/trait.Copy.js | 4 +- doc/implementors/core/marker/trait.Freeze.js | 2 +- doc/implementors/core/marker/trait.Send.js | 2 +- .../core/marker/trait.StructuralEq.js | 2 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- doc/implementors/core/marker/trait.Sync.js | 2 +- doc/implementors/core/marker/trait.Unpin.js | 2 +- doc/implementors/core/ops/arith/trait.Add.js | 2 +- .../core/ops/arith/trait.AddAssign.js | 2 +- doc/implementors/core/ops/arith/trait.Sub.js | 2 +- .../core/ops/arith/trait.SubAssign.js | 2 +- doc/implementors/core/ops/bit/trait.BitAnd.js | 2 +- .../core/ops/bit/trait.BitAndAssign.js | 2 +- doc/implementors/core/ops/bit/trait.BitOr.js | 2 +- .../core/ops/deref/trait.Deref.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- .../memory_structs/trait.PageSize.js | 4 + doc/implementors/zerocopy/trait.FromBytes.js | 2 +- doc/memory/all.html | 2 +- doc/memory/enum.AllocationRequest.html | 4 +- doc/memory/enum.MemChunkSize.html | 16 + .../fn.allocate_pages_by_bytes_in_range.html | 2 +- doc/memory/fn.allocate_pages_in_range.html | 2 +- doc/memory/index.html | 8 +- doc/memory/sidebar-items.js | 2 +- doc/memory/struct.AllocatedPages.html | 8 +- doc/memory/struct.CopyableFrameRange.html | 28 +- doc/memory/struct.CopyablePageRange.html | 28 +- doc/memory/struct.Frame.html | 63 ++- doc/memory/struct.FrameRange.html | 57 +- doc/memory/struct.MappedPages.html | 6 +- doc/memory/struct.Page.html | 66 ++- doc/memory/struct.Page1G.html | 20 + doc/memory/struct.Page2M.html | 20 + doc/memory/struct.Page4K.html | 20 + doc/memory/struct.PageRange.html | 57 +- doc/memory/struct.PhysicalAddress.html | 8 +- doc/memory/struct.VirtualAddress.html | 8 +- doc/memory/trait.PageSize.html | 8 + doc/memory_structs/all.html | 2 +- doc/memory_structs/enum.MemChunkSize.html | 16 + doc/memory_structs/enum.MemoryState.html | 6 +- doc/memory_structs/index.html | 4 +- doc/memory_structs/sidebar-items.js | 2 +- .../struct.CopyableFrameRange.html | 21 +- .../struct.CopyablePageRange.html | 21 +- doc/memory_structs/struct.Frame.html | 45 +- doc/memory_structs/struct.FrameRange.html | 51 +- doc/memory_structs/struct.Page.html | 53 +- doc/memory_structs/struct.Page1G.html | 19 + doc/memory_structs/struct.Page2M.html | 19 + doc/memory_structs/struct.Page4K.html | 19 + doc/memory_structs/struct.PageRange.html | 51 +- .../struct.PhysicalAddress.html | 24 +- doc/memory_structs/struct.VirtualAddress.html | 24 +- doc/memory_structs/trait.PageSize.html | 8 + .../struct.UnmappedFrameRange.html | 14 +- doc/search-index.js | 6 +- doc/serial_port/struct.SerialPort.html | 14 +- doc/spawn/fn.cleanup_bootstrap_tasks.html | 2 +- doc/spawn/fn.init.html | 2 +- .../fn.new_application_task_builder.html | 2 +- doc/spawn/fn.new_task_builder.html | 2 +- doc/spawn/index.html | 2 +- doc/spawn/struct.BootstrapTaskRef.html | 6 +- doc/spawn/struct.TaskBuilder.html | 24 +- doc/src/context_switch_regular/x86_64.rs.html | 12 + doc/src/memory_structs/lib.rs.html | 528 +++++++++++++++--- doc/src/spawn/lib.rs.html | 24 +- doc/stack/struct.Stack.html | 6 +- 101 files changed, 1139 insertions(+), 471 deletions(-) create mode 100644 doc/implementors/memory_structs/trait.PageSize.js create mode 100644 doc/memory/enum.MemChunkSize.html create mode 100644 doc/memory/struct.Page1G.html create mode 100644 doc/memory/struct.Page2M.html create mode 100644 doc/memory/struct.Page4K.html create mode 100644 doc/memory/trait.PageSize.html create mode 100644 doc/memory_structs/enum.MemChunkSize.html create mode 100644 doc/memory_structs/struct.Page1G.html create mode 100644 doc/memory_structs/struct.Page2M.html create mode 100644 doc/memory_structs/struct.Page4K.html create mode 100644 doc/memory_structs/trait.PageSize.html diff --git a/doc/compositor/trait.CompositableRegion.html b/doc/compositor/trait.CompositableRegion.html index d39215c90f..c62dc234c8 100644 --- a/doc/compositor/trait.CompositableRegion.html +++ b/doc/compositor/trait.CompositableRegion.html @@ -31,16 +31,16 @@ The dest_coord is the coordinate in the destination buffer (relative to its top-left corner) where the src_fb will be composited (starting at the src_fb’s top-left corner). src_fb_row_range is the index range of rows in the source framebuffer to blend.

-

Implementations on Foreign Types§

source§

impl CompositableRegion for Coord

source§

fn row_range(&self) -> Range<isize>

source§

fn size(&self) -> usize

source§

fn blend_buffers<P: Pixel>( +

Implementations on Foreign Types§

source§

impl CompositableRegion for Rectangle

source§

fn row_range(&self) -> Range<isize>

source§

fn size(&self) -> usize

source§

fn blend_buffers<P: Pixel>( &self, src_fb: &Framebuffer<P>, dest_fb: &mut Framebuffer<P>, dest_coord: Coord, - _src_fb_row_range: Range<usize> -) -> Result<(), &'static str>

source§

impl CompositableRegion for Rectangle

source§

fn row_range(&self) -> Range<isize>

source§

fn size(&self) -> usize

source§

fn blend_buffers<P: Pixel>( + src_fb_row_range: Range<usize> +) -> Result<(), &'static str>

source§

impl CompositableRegion for Coord

source§

fn row_range(&self) -> Range<isize>

source§

fn size(&self) -> usize

source§

fn blend_buffers<P: Pixel>( &self, src_fb: &Framebuffer<P>, dest_fb: &mut Framebuffer<P>, dest_coord: Coord, - src_fb_row_range: Range<usize> + _src_fb_row_range: Range<usize> ) -> Result<(), &'static str>

Implementors§

\ No newline at end of file diff --git a/doc/context_switch_regular/fn.context_switch_regular.html b/doc/context_switch_regular/fn.context_switch_regular.html index e12c745e95..173c435cea 100644 --- a/doc/context_switch_regular/fn.context_switch_regular.html +++ b/doc/context_switch_regular/fn.context_switch_regular.html @@ -1,4 +1,4 @@ -context_switch_regular in context_switch_regular - Rust
pub unsafe extern "C" fn context_switch_regular(
+context_switch_regular in context_switch_regular - Rust
pub unsafe extern "C" fn context_switch_regular(
     _prev_stack_pointer: *mut usize,
     _next_stack_pointer_value: usize
 )
Expand description

Switches context from a regular Task to another regular Task.

diff --git a/doc/context_switch_regular/fn.read_first_register.html b/doc/context_switch_regular/fn.read_first_register.html index 98fd88f740..2f19fe650a 100644 --- a/doc/context_switch_regular/fn.read_first_register.html +++ b/doc/context_switch_regular/fn.read_first_register.html @@ -1,4 +1,4 @@ -read_first_register in context_switch_regular - Rust
pub extern "C" fn read_first_register() -> usize
Expand description

Reads the value of the first register from the actual CPU register hardware.

+read_first_register in context_switch_regular - Rust
pub extern "C" fn read_first_register() -> usize
Expand description

Reads the value of the first register from the actual CPU register hardware.

This can be called at any time, but is intended for use as the second half of “saving and restoring” a register value. The first half was a previous call to ContextRegular::set_first_register(), diff --git a/doc/context_switch_regular/macro.restore_registers_regular.html b/doc/context_switch_regular/macro.restore_registers_regular.html index cc284ebe27..fd6c6f125a 100644 --- a/doc/context_switch_regular/macro.restore_registers_regular.html +++ b/doc/context_switch_regular/macro.restore_registers_regular.html @@ -1,4 +1,4 @@ -restore_registers_regular in context_switch_regular - Rust

macro_rules! restore_registers_regular {
+restore_registers_regular in context_switch_regular - Rust
macro_rules! restore_registers_regular {
     () => { ... };
 }
Expand description

An assembly block for restoring regular x86_64 registers by popping them off of the stack.

diff --git a/doc/context_switch_regular/macro.save_registers_regular.html b/doc/context_switch_regular/macro.save_registers_regular.html index 47d30275e8..c24e10e5a3 100644 --- a/doc/context_switch_regular/macro.save_registers_regular.html +++ b/doc/context_switch_regular/macro.save_registers_regular.html @@ -1,4 +1,4 @@ -save_registers_regular in context_switch_regular - Rust
macro_rules! save_registers_regular {
+save_registers_regular in context_switch_regular - Rust
macro_rules! save_registers_regular {
     () => { ... };
 }
Expand description

An assembly block for saving regular x86_64 registers by pushing them onto the stack.

diff --git a/doc/context_switch_regular/macro.switch_stacks.html b/doc/context_switch_regular/macro.switch_stacks.html index 970d52b215..7571839c0a 100644 --- a/doc/context_switch_regular/macro.switch_stacks.html +++ b/doc/context_switch_regular/macro.switch_stacks.html @@ -1,4 +1,4 @@ -switch_stacks in context_switch_regular - Rust
macro_rules! switch_stacks {
+switch_stacks in context_switch_regular - Rust
macro_rules! switch_stacks {
     () => { ... };
 }
Expand description

An assembly block for switching stacks, which is the integral part of the actual context switching routine.

diff --git a/doc/context_switch_regular/struct.ContextRegular.html b/doc/context_switch_regular/struct.ContextRegular.html index 9e3c296b73..59fcb3f3bb 100644 --- a/doc/context_switch_regular/struct.ContextRegular.html +++ b/doc/context_switch_regular/struct.ContextRegular.html @@ -1,9 +1,9 @@ -ContextRegular in context_switch_regular - Rust
#[repr(C, packed)]
pub struct ContextRegular { /* private fields */ }
Expand description

The registers saved before a context switch and restored after a context switch.

+ContextRegular in context_switch_regular - Rust
#[repr(C, packed)]
pub struct ContextRegular { /* private fields */ }
Expand description

The registers saved before a context switch and restored after a context switch.

Note: the order of the registers here MUST MATCH the order of registers popped in the [restore_registers_regular!] macro.

-

Implementations§

source§

impl ContextRegular

source

pub fn new(rip: usize) -> ContextRegular

Creates a new ContextRegular struct that will cause the +

Implementations§

source§

impl ContextRegular

source

pub fn new(rip: usize) -> ContextRegular

Creates a new ContextRegular struct that will cause the Task containing it to begin its execution at the given rip.

-
source

pub fn set_first_register(&mut self, value: usize)

Sets the value of the first register to the given value.

+
source

pub fn set_first_register(&mut self, value: usize)

Sets the value of the first register to the given value.

This is useful for storing a value (e.g., task ID) in that register and then recovering it later with read_first_register().

On x86_64, this sets the r15 register.

diff --git a/doc/frame_allocator/struct.AllocatedFrame.html b/doc/frame_allocator/struct.AllocatedFrame.html index a7b7fd40da..cd87648fad 100644 --- a/doc/frame_allocator/struct.AllocatedFrame.html +++ b/doc/frame_allocator/struct.AllocatedFrame.html @@ -1,9 +1,10 @@ -AllocatedFrame in frame_allocator - Rust
pub struct AllocatedFrame<'f> { /* private fields */ }
Expand description

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

+AllocatedFrame in frame_allocator - Rust
pub struct AllocatedFrame<'f> { /* 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.

-

pub fn number(&self) -> usize

Returns the number of this Frame.

-

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

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

-

Trait Implementations§

source§

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

source§

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

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

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

§

type Target = Frame

The resulting type after dereferencing.
source§

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

Dereferences the value.

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

source§

impl<T> Any for Twhere +

Methods from Deref<Target = Frame>§

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

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

+

pub fn number(&self) -> usize

Returns the 4K-sized number of this Frame.

+

pub fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress at the start of this Frame.

+

pub fn page_size(&self) -> MemChunkSize

Returns the size of this Frame.

+

Trait Implementations§

source§

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

source§

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

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

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

§

type Target = Frame<Page4K>

The resulting type after dereferencing.
source§

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

Dereferences the value.

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Struct frame_allocator::Frames

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

A range of contiguous frames in physical memory.

+Frames in frame_allocator - Rust

Struct frame_allocator::Frames

source ·
pub struct Frames<const S: MemoryState> { /* 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:

@@ -73,7 +73,7 @@
Panic

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 size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

pub fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given [PhysicalAddress].

pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given [PhysicalAddress] within this FrameRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of [Frame]s, this returns None.

@@ -83,18 +83,18 @@
Examples

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.

+

pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

+

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

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

+

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

Returns an inclusive FrameRange representing the [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>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

source§

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

source§

fn borrow(&self) -> &Frame

Immutably borrows from an owned value. Read more
source§

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

source§

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

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

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

§

type Target = FrameRange

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.
source§

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

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

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

source§

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

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

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

Trait Implementations§

source§

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

source§

fn borrow(&self) -> &Frame

Immutably borrows from an owned value. Read more
source§

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

source§

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

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

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

§

type Target = FrameRange<Page4K>

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.
source§

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

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

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

source§

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

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

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

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

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

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

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

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

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

source§

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

This method tests for self and other values to be equal, and is used diff --git a/doc/frame_allocator/struct.PhysicalMemoryRegion.html b/doc/frame_allocator/struct.PhysicalMemoryRegion.html index 4bdd1be1cc..d8b23a0ad2 100644 --- a/doc/frame_allocator/struct.PhysicalMemoryRegion.html +++ b/doc/frame_allocator/struct.PhysicalMemoryRegion.html @@ -1,4 +1,4 @@ -PhysicalMemoryRegion in frame_allocator - Rust
pub struct PhysicalMemoryRegion {
+PhysicalMemoryRegion in frame_allocator - Rust
pub struct PhysicalMemoryRegion {
     pub frames: FrameRange,
     pub typ: MemoryRegionType,
 }
Expand description

PhysicalMemoryRegion represents a range of contiguous frames in physical memory for bookkeeping purposes. @@ -15,7 +15,7 @@

Ordering and Equ

Implementations§

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 size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

pub fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given [PhysicalAddress].

pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given [PhysicalAddress] within this FrameRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of [Frame]s, this returns None.

@@ -25,18 +25,18 @@
Examples

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.

+

pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

+

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

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

+

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

Returns an inclusive FrameRange representing the [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>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

source§

impl Borrow<Frame> for &PhysicalMemoryRegion

source§

fn borrow(&self) -> &Frame

Immutably borrows from an owned value. Read more
source§

impl Clone for PhysicalMemoryRegion

source§

fn clone(&self) -> PhysicalMemoryRegion

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysicalMemoryRegion

source§

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

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

impl Deref for PhysicalMemoryRegion

§

type Target = FrameRange

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.
source§

impl Ord for PhysicalMemoryRegion

source§

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

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

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

Trait Implementations§

source§

impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion

source§

fn borrow(&self) -> &Frame

Immutably borrows from an owned value. Read more
source§

impl Clone for PhysicalMemoryRegion

source§

fn clone(&self) -> PhysicalMemoryRegion

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysicalMemoryRegion

source§

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

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

impl Deref for PhysicalMemoryRegion

§

type Target = FrameRange<Page4K>

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.
source§

impl Ord for PhysicalMemoryRegion

source§

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

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

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

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

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

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

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

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

impl PartialEq<PhysicalMemoryRegion> for PhysicalMemoryRegion

source§

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

This method tests for self and other values to be equal, and is used diff --git a/doc/implementors/core/borrow/trait.Borrow.js b/doc/implementors/core/borrow/trait.Borrow.js index a429a12d9c..eb69a9cc57 100644 --- a/doc/implementors/core/borrow/trait.Borrow.js +++ b/doc/implementors/core/borrow/trait.Borrow.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"frame_allocator":[["impl<const S: MemoryState> Borrow<Frame> for &Frames<S>"],["impl Borrow<Frame> for &PhysicalMemoryRegion"]], +"frame_allocator":[["impl<const S: MemoryState> Borrow<Frame<Page4K>> for &Frames<S>"],["impl Borrow<Frame<Page4K>> for &PhysicalMemoryRegion"]], "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 a54abd8976..24d7e59dc1 100644 --- a/doc/implementors/core/clone/trait.Clone.js +++ b/doc/implementors/core/clone/trait.Clone.js @@ -28,7 +28,7 @@ "keycodes_ascii":[["impl Clone for KeyEvent"],["impl Clone for KeyAction"],["impl Clone for KeyboardModifiers"],["impl Clone for Keycode"]], "local_storage_initializer":[["impl<T> Clone for LocalStorageInitializer<T>where\n T: LocalStorage + Clone,"]], "madt":[["impl Clone for MadtIntSrcOverride"],["impl Clone for MadtLocalApic"],["impl Clone for MadtNonMaskableInterrupt"],["impl Clone for MadtIoApic"],["impl Clone for MadtLocalApicAddressOverride"],["impl<'t> Clone for MadtIter<'t>"],["impl<'t> Clone for MadtEntry<'t>"],["impl Clone for MadtLocalX2Apic"]], -"memory_structs":[["impl Clone for PageRange"],["impl Clone for Page"],["impl Clone for Frame"],["impl Clone for CopyableFrameRange"],["impl Clone for VirtualAddress"],["impl Clone for CopyablePageRange"],["impl Clone for FrameRange"],["impl Clone for PhysicalAddress"]], +"memory_structs":[["impl<P: Clone + PageSize> Clone for Page<P>"],["impl Clone for PhysicalAddress"],["impl<P: Clone + PageSize> Clone for CopyablePageRange<P>"],["impl<P: Clone + PageSize> Clone for PageRange<P>"],["impl Clone for Page1G"],["impl<P: Clone + PageSize> Clone for FrameRange<P>"],["impl<P: Clone + PageSize> Clone for Frame<P>"],["impl<P: Clone + PageSize> Clone for CopyableFrameRange<P>"],["impl Clone for Page4K"],["impl Clone for VirtualAddress"],["impl Clone for Page2M"]], "mlx_ethernet":[["impl Clone for Td"],["impl Clone for QueryHcaCapMaxOpMod"],["impl Clone for Tisn"],["impl Clone for FtId"],["impl Clone for FgId"],["impl Clone for Pd"],["impl Clone for QueryHcaCapCurrentOpMod"],["impl Clone for AccessRegisterOpMod"],["impl Clone for Rqn"],["impl Clone for Lkey"],["impl Clone for Sqn"],["impl Clone for CommandOpcode"],["impl Clone for Cqn"],["impl Clone for Eqn"],["impl Clone for Tirn"]], "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 a21fd2310e..8edee39161 100644 --- a/doc/implementors/core/cmp/trait.Eq.js +++ b/doc/implementors/core/cmp/trait.Eq.js @@ -10,7 +10,7 @@ "interrupts":[["impl Eq for EoiBehaviour"]], "keycodes_ascii":[["impl Eq for KeyboardModifiers"]], "memory":[["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedSliceMappedPages<T, M, B>"],["impl<T: FromBytes + Eq, M: Mutability, B: Borrow<MappedPages>> Eq for BorrowedMappedPages<T, M, B>"]], -"memory_structs":[["impl Eq for PageRange"],["impl Eq for Page"],["impl Eq for MemoryState"],["impl Eq for PhysicalAddress"],["impl Eq for Frame"],["impl Eq for VirtualAddress"],["impl Eq for FrameRange"]], +"memory_structs":[["impl Eq for PhysicalAddress"],["impl Eq for VirtualAddress"],["impl Eq for Page4K"],["impl Eq for MemoryState"],["impl<P: Eq + PageSize> Eq for FrameRange<P>"],["impl Eq for Page2M"],["impl<P: Eq + PageSize> Eq for PageRange<P>"],["impl<P: Eq + PageSize> Eq for Frame<P>"],["impl<P: Eq + PageSize> Eq for Page<P>"],["impl Eq for Page1G"]], "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 92d30659ab..c0036196f1 100644 --- a/doc/implementors/core/cmp/trait.Ord.js +++ b/doc/implementors/core/cmp/trait.Ord.js @@ -6,7 +6,7 @@ "frame_allocator":[["impl<const S: MemoryState> Ord for Frames<S>"],["impl Ord for PhysicalMemoryRegion"]], "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 Page"],["impl Ord for PhysicalAddress"],["impl Ord for VirtualAddress"],["impl Ord for Frame"]], +"memory_structs":[["impl Ord for Page2M"],["impl Ord for VirtualAddress"],["impl<P: Ord + PageSize> Ord for Frame<P>"],["impl Ord for Page4K"],["impl Ord for PhysicalAddress"],["impl<P: Ord + PageSize> Ord for Page<P>"],["impl Ord for Page1G"]], "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 fc5bb0b075..35086c978d 100644 --- a/doc/implementors/core/cmp/trait.PartialEq.js +++ b/doc/implementors/core/cmp/trait.PartialEq.js @@ -14,7 +14,7 @@ "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<PageRange> for PageRange"],["impl PartialEq<Frame> for Frame"],["impl PartialEq<MemoryState> for MemoryState"],["impl PartialEq<Page> for Page"],["impl PartialEq<FrameRange> for FrameRange"],["impl PartialEq<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<VirtualAddress> for VirtualAddress"]], +"memory_structs":[["impl PartialEq<PhysicalAddress> for PhysicalAddress"],["impl PartialEq<Page4K> for Page4K"],["impl PartialEq<Page2M> for Page2M"],["impl PartialEq<Page1G> for Page1G"],["impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>"],["impl PartialEq<MemoryState> for MemoryState"],["impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>"],["impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>"],["impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>"],["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 f06048f72d..0f41dc8439 100644 --- a/doc/implementors/core/cmp/trait.PartialOrd.js +++ b/doc/implementors/core/cmp/trait.PartialOrd.js @@ -6,7 +6,7 @@ "frame_allocator":[["impl<const S: MemoryState> PartialOrd<Frames<S>> for Frames<S>"],["impl PartialOrd<PhysicalMemoryRegion> for PhysicalMemoryRegion"]], "keycodes_ascii":[["impl PartialOrd<KeyboardModifiers> for KeyboardModifiers"]], "memory":[["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedMappedPages<T, M, B>> for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + PartialOrd, M: Mutability, B: Borrow<MappedPages>> PartialOrd<BorrowedSliceMappedPages<T, M, B>> for BorrowedSliceMappedPages<T, M, B>"]], -"memory_structs":[["impl PartialOrd<VirtualAddress> for VirtualAddress"],["impl PartialOrd<Frame> for Frame"],["impl PartialOrd<PhysicalAddress> for PhysicalAddress"],["impl PartialOrd<Page> for Page"]], +"memory_structs":[["impl PartialOrd<Page1G> for Page1G"],["impl PartialOrd<VirtualAddress> for VirtualAddress"],["impl PartialOrd<Page2M> for Page2M"],["impl PartialOrd<PhysicalAddress> for PhysicalAddress"],["impl PartialOrd<Page4K> for Page4K"],["impl<P: PartialOrd + PageSize> PartialOrd<Frame<P>> for Frame<P>"],["impl<P: PartialOrd + PageSize> PartialOrd<Page<P>> for Page<P>"]], "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 7c2c5d4740..4170d33981 100644 --- a/doc/implementors/core/convert/trait.From.js +++ b/doc/implementors/core/convert/trait.From.js @@ -1,9 +1,9 @@ (function() {var implementors = { "async_channel":[["impl From<Error> for Error"]], "cpu":[["impl From<Option<CpuId>> for OptionalCpuId"],["impl From<OptionalCpuId> for Option<CpuId>"],["impl From<CpuId> for ApicId"],["impl From<ApicId> for CpuId"]], -"framebuffer":[["impl From<Color> for AlphaPixel"],["impl From<Color> for RGBPixel"]], +"framebuffer":[["impl From<Color> for RGBPixel"],["impl From<Color> for AlphaPixel"]], "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<PageRange> for CopyablePageRange"],["impl From<CopyablePageRange> for PageRange"],["impl From<CopyableFrameRange> for FrameRange"],["impl From<FrameRange> for CopyableFrameRange"]], +"memory_structs":[["impl From<Frame<Page2M>> for Frame<Page4K>"],["impl From<Frame<Page1G>> for Frame<Page4K>"],["impl From<PageRange<Page2M>> for PageRange<Page4K>"],["impl From<FrameRange<Page1G>> for FrameRange<Page4K>"],["impl From<PageRange<Page1G>> for PageRange<Page4K>"],["impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>"],["impl From<FrameRange<Page2M>> for FrameRange<Page4K>"],["impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>"],["impl From<Page<Page1G>> for Page<Page4K>"],["impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>"],["impl From<Page<Page2M>> for Page<Page4K>"],["impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>"]], "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 034e6842e0..85f3fc65e2 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 PhysicalAddress"],["impl Into<usize> for VirtualAddress"]] +"memory_structs":[["impl Into<usize> for VirtualAddress"],["impl Into<usize> 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/convert/trait.TryFrom.js b/doc/implementors/core/convert/trait.TryFrom.js index ed2180c8da..e814d3cf0f 100644 --- a/doc/implementors/core/convert/trait.TryFrom.js +++ b/doc/implementors/core/convert/trait.TryFrom.js @@ -2,6 +2,7 @@ "apic":[["impl TryFrom<u32> for ApicId"]], "cpu":[["impl TryFrom<u32> for CpuId"]], "keycodes_ascii":[["impl TryFrom<u8> for Keycode"]], +"memory_structs":[["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>"],["impl TryFrom<Page<Page4K>> for Page<Page2M>"],["impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>"],["impl TryFrom<Page<Page4K>> for Page<Page1G>"],["impl TryFrom<Frame<Page4K>> for Frame<Page1G>"],["impl TryFrom<Frame<Page4K>> for Frame<Page2M>"],["impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>"],["impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>"]], "mlx_ethernet":[["impl TryFrom<u8> for CommandReturnStatus"],["impl TryFrom<u8> for ReceiveQueueState"],["impl TryFrom<u32> for CommandDeliveryStatus"],["impl TryFrom<u8> for SendQueueState"],["impl TryFrom<u8> for HcaPortType"],["impl TryFrom<u32> for CommandOpcode"]], "ps2":[["impl TryFrom<u8> for ScancodeSet"],["impl TryFrom<u8> for DeviceToHostResponse"],["impl TryFrom<u8> for PortTestResult"],["impl TryFrom<u8> for MouseId"]], "serial_port_basic":[["impl TryFrom<&str> for SerialPortAddress"],["impl TryFrom<u16> for SerialPortAddress"]] diff --git a/doc/implementors/core/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js index 02524feab3..e5abd38b72 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 VirtualAddress"],["impl Default for PhysicalAddress"]], +"memory_structs":[["impl Default for PhysicalAddress"],["impl Default for VirtualAddress"]], "mlx_ethernet":[["impl Default for CompletionQueueEntry"],["impl Default for EventQueueEntry"],["impl Default for WorkQueueEntrySend"],["impl Default for WorkQueueEntryReceive"],["impl Default for CompletionQueueDoorbellRecord"],["impl Default for DoorbellRecord"],["impl Default for CommandQueueEntry"]], "pte_flags":[["impl Default for PteFlags"],["impl Default for PteFlagsAarch64"],["impl Default for PteFlagsX86_64"]], "slabmalloc":[["impl<'a> Default for ObjectPage8k<'a>"],["impl<'a> Default for ZoneAllocator<'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 f80033a0ed..918a40e573 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 PhysicalAddress"],["impl Binary for VirtualAddress"]], +"memory_structs":[["impl Binary for VirtualAddress"],["impl Binary for PhysicalAddress"]], "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 2940b9486d..77a4bb3b3a 100644 --- a/doc/implementors/core/fmt/trait.Debug.js +++ b/doc/implementors/core/fmt/trait.Debug.js @@ -22,7 +22,7 @@ "fadt":[["impl Debug for Fadt"]], "fault_log":[["impl Debug for RecoveryAction"],["impl Debug for FaultType"],["impl Debug for FaultEntry"]], "frame_allocator":[["impl<const S: MemoryState> Debug for Frames<S>"],["impl<'f> Debug for AllocatedFrame<'f>"],["impl Debug for PhysicalMemoryRegion"],["impl Debug for MemoryRegionType"]], -"framebuffer":[["impl Debug for AlphaPixel"],["impl Debug for RGBPixel"]], +"framebuffer":[["impl Debug for RGBPixel"],["impl Debug for AlphaPixel"]], "fs_node":[["impl Debug for FileOrDir"]], "gdt":[["impl Debug for AvailableSegmentSelector"]], "hpet":[["impl Debug for HpetAcpiTable"]], @@ -38,7 +38,7 @@ "madt":[["impl Debug for MadtLocalApicAddressOverride"],["impl Debug for MadtNonMaskableInterrupt"],["impl Debug for MadtLocalX2Apic"],["impl Debug for MadtLocalApic"],["impl Debug for MadtIntSrcOverride"],["impl<'t> Debug for MadtEntry<'t>"],["impl Debug for MadtIoApic"]], "memory":[["impl Debug for MemoryManagementInfo"],["impl Debug for PageTable"],["impl Debug for EarlyIdentityMappedPages"],["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 VirtualAddress"],["impl Debug for FrameRange"],["impl Debug for PhysicalAddress"],["impl Debug for Page"],["impl Debug for Frame"]], +"memory_structs":[["impl<P: PageSize + 'static> Debug for Frame<P>"],["impl Debug for MemChunkSize"],["impl<P: PageSize + 'static> Debug for FrameRange<P>"],["impl Debug for Page1G"],["impl Debug for Page2M"],["impl Debug for VirtualAddress"],["impl<P: PageSize + 'static> Debug for PageRange<P>"],["impl Debug for PhysicalAddress"],["impl Debug for Page4K"],["impl<P: PageSize + 'static> Debug for Page<P>"]], "memory_x86_64":[["impl Debug for AggregatedSectionMemoryBounds"],["impl Debug for SectionMemoryBounds"]], "mlx_ethernet":[["impl Debug for CompletionQueueEntry"],["impl Debug for Tirn"],["impl Debug for Cqn"],["impl Debug for FgId"],["impl Debug for InitializationSegment"],["impl Debug for CommandQueueEntry"],["impl Debug for Rqn"],["impl Debug for CommandReturnStatus"],["impl Debug for FtId"],["impl Debug for CommandDeliveryStatus"],["impl Debug for Eqn"],["impl Debug for Tisn"],["impl Debug for HcaPortType"],["impl Debug for ReceiveQueueState"],["impl Debug for HCACapabilities"],["impl Debug for SendQueueState"],["impl Debug for CommandOpcode"],["impl Debug for Lkey"],["impl Debug for Pd"],["impl Debug for EventQueueEntry"],["impl Debug for Td"],["impl Debug for CommandCompletionStatus"],["impl Debug for Sqn"]], "mod_mgmt":[["impl Debug for IntoCrateObjectFile"],["impl Debug for NamespaceDir"]], diff --git a/doc/implementors/core/fmt/trait.Display.js b/doc/implementors/core/fmt/trait.Display.js index 8fc1acb236..ff7ff97668 100644 --- a/doc/implementors/core/fmt/trait.Display.js +++ b/doc/implementors/core/fmt/trait.Display.js @@ -5,7 +5,7 @@ "crate_metadata":[["impl Display for LoadedSection"]], "environment":[["impl Display for Error"]], "gdt":[["impl Display for Gdt"]], -"memory_structs":[["impl Display for VirtualAddress"],["impl Display for PhysicalAddress"]], +"memory_structs":[["impl Display for PhysicalAddress"],["impl Display for VirtualAddress"]], "path":[["impl Display for Path"]], "pci":[["impl Display for PciLocation"]], "percent_encoding":[["impl<'a, E: EncodeSet> Display for PercentEncode<'a, E>"]], diff --git a/doc/implementors/core/fmt/trait.LowerHex.js b/doc/implementors/core/fmt/trait.LowerHex.js index c28e28669b..dcf506b933 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 VirtualAddress"],["impl LowerHex for PhysicalAddress"]], +"memory_structs":[["impl LowerHex for PhysicalAddress"],["impl LowerHex for VirtualAddress"]], "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.Octal.js b/doc/implementors/core/fmt/trait.Octal.js index c6e1a26c74..4f66810d70 100644 --- a/doc/implementors/core/fmt/trait.Octal.js +++ b/doc/implementors/core/fmt/trait.Octal.js @@ -4,7 +4,7 @@ "boot_info":[["impl Octal for ElfSectionFlags"]], "cpu":[["impl Octal for CpuId"]], "keycodes_ascii":[["impl Octal for KeyboardModifiers"]], -"memory_structs":[["impl Octal for VirtualAddress"],["impl Octal for PhysicalAddress"]], +"memory_structs":[["impl Octal for PhysicalAddress"],["impl Octal for VirtualAddress"]], "pte_flags":[["impl Octal for PteFlagsAarch64"],["impl Octal for PteFlagsX86_64"],["impl Octal for PteFlags"]], "text_terminal":[["impl Octal 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 043cf2e08f..412c5bad89 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 VirtualAddress"],["impl Pointer for PhysicalAddress"]] +"memory_structs":[["impl Pointer for PhysicalAddress"],["impl Pointer 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/fmt/trait.UpperHex.js b/doc/implementors/core/fmt/trait.UpperHex.js index 5c8ae36d7d..82c1be1947 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 VirtualAddress"],["impl UpperHex for PhysicalAddress"]], +"memory_structs":[["impl UpperHex for PhysicalAddress"],["impl UpperHex for VirtualAddress"]], "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/hash/trait.Hash.js b/doc/implementors/core/hash/trait.Hash.js index 5035695e00..102659cf63 100644 --- a/doc/implementors/core/hash/trait.Hash.js +++ b/doc/implementors/core/hash/trait.Hash.js @@ -4,7 +4,7 @@ "boot_info":[["impl Hash for ElfSectionFlags"]], "cpu":[["impl Hash for CpuId"]], "crate_swap":[["impl Hash for SwapRequest"]], -"framebuffer":[["impl<P: Pixel> Hash for Framebuffer<P>"],["impl Hash for AlphaPixel"],["impl Hash for RGBPixel"]], +"framebuffer":[["impl Hash for AlphaPixel"],["impl<P: Pixel> Hash for Framebuffer<P>"],["impl Hash for RGBPixel"]], "keycodes_ascii":[["impl Hash for KeyboardModifiers"]], "memory":[["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedMappedPages<T, M, B>"],["impl<T: FromBytes + Hash, M: Mutability, B: Borrow<MappedPages>> Hash for BorrowedSliceMappedPages<T, M, B>"]], "memory_structs":[["impl Hash for VirtualAddress"],["impl Hash for PhysicalAddress"]], diff --git a/doc/implementors/core/iter/range/trait.Step.js b/doc/implementors/core/iter/range/trait.Step.js index 59e577d40c..a05c89a9be 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<P: PageSize + 'static> Step for Frame<P>"],["impl<P: PageSize + 'static> Step for Page<P>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js b/doc/implementors/core/iter/traits/collect/trait.IntoIterator.js index 66f58b5271..0290788b24 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"]], +"memory_structs":[["impl<P: PageSize + 'static> IntoIterator for FrameRange<P>"],["impl<P: PageSize + 'static> IntoIterator for PageRange<P>"]], "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.Copy.js b/doc/implementors/core/marker/trait.Copy.js index 50825f771a..acd83e17e8 100644 --- a/doc/implementors/core/marker/trait.Copy.js +++ b/doc/implementors/core/marker/trait.Copy.js @@ -11,7 +11,7 @@ "dmar":[["impl Copy for DmarRhsa"],["impl Copy for DmarSatc"],["impl Copy for DmarEntryRecord"],["impl Copy for DmarRmrr"],["impl Copy for DmarAndd"],["impl Copy for DeviceScopePath"],["impl Copy for DmarAtsr"]], "fadt":[["impl Copy for Fadt"]], "frame_allocator":[["impl Copy for MemoryRegionType"]], -"framebuffer":[["impl Copy for AlphaPixel"],["impl Copy for RGBPixel"]], +"framebuffer":[["impl Copy for RGBPixel"],["impl Copy for AlphaPixel"]], "gdt":[["impl Copy for AvailableSegmentSelector"]], "hpet":[["impl Copy for HpetAcpiTable"]], "idle":[["impl Copy for IdleState"]], @@ -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 MadtLocalX2Apic"],["impl Copy for MadtNonMaskableInterrupt"],["impl Copy for MadtIntSrcOverride"],["impl Copy for MadtLocalApicAddressOverride"],["impl Copy for MadtIoApic"],["impl<'t> Copy for MadtEntry<'t>"],["impl Copy for MadtLocalApic"]], -"memory_structs":[["impl Copy for Frame"],["impl Copy for CopyableFrameRange"],["impl Copy for Page"],["impl Copy for VirtualAddress"],["impl Copy for PhysicalAddress"],["impl Copy for CopyablePageRange"]], +"memory_structs":[["impl Copy for Page1G"],["impl<P: Copy + PageSize> Copy for Page<P>"],["impl<P: Copy + PageSize> Copy for Frame<P>"],["impl Copy for Page4K"],["impl Copy for PhysicalAddress"],["impl Copy for VirtualAddress"],["impl Copy for Page2M"],["impl<P: Copy + PageSize> Copy for CopyablePageRange<P>"],["impl<P: Copy + PageSize> Copy for CopyableFrameRange<P>"]], "mlx_ethernet":[["impl Copy for Pd"],["impl Copy for Tirn"],["impl Copy for Rqn"],["impl Copy for Tisn"],["impl Copy for Lkey"],["impl Copy for Cqn"],["impl Copy for FgId"],["impl Copy for QueryHcaCapMaxOpMod"],["impl Copy for Eqn"],["impl Copy for Sqn"],["impl Copy for QueryHcaCapCurrentOpMod"],["impl Copy for CommandOpcode"],["impl Copy for Td"],["impl Copy for AccessRegisterOpMod"],["impl Copy for FtId"]], "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 21fb40b3f6..a2ab76ee8b 100644 --- a/doc/implementors/core/marker/trait.Freeze.js +++ b/doc/implementors/core/marker/trait.Freeze.js @@ -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 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_structs":[["impl Freeze for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Freeze for Page4K",1,["memory_structs::Page4K"]],["impl Freeze for Page2M",1,["memory_structs::Page2M"]],["impl Freeze for Page1G",1,["memory_structs::Page1G"]],["impl Freeze for MemoryState",1,["memory_structs::MemoryState"]],["impl Freeze for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Freeze for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Freeze for Page<P>",1,["memory_structs::Page"]],["impl<P> Freeze for Frame<P>",1,["memory_structs::Frame"]],["impl<P> Freeze for PageRange<P>",1,["memory_structs::PageRange"]],["impl<P> Freeze for CopyablePageRange<P>",1,["memory_structs::CopyablePageRange"]],["impl<P> Freeze for FrameRange<P>",1,["memory_structs::FrameRange"]],["impl<P> Freeze for CopyableFrameRange<P>",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/core/marker/trait.Send.js b/doc/implementors/core/marker/trait.Send.js index 91192ed2ec..974fc49813 100644 --- a/doc/implementors/core/marker/trait.Send.js +++ b/doc/implementors/core/marker/trait.Send.js @@ -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 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_structs":[["impl Send for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Send for Page4K",1,["memory_structs::Page4K"]],["impl Send for Page2M",1,["memory_structs::Page2M"]],["impl Send for Page1G",1,["memory_structs::Page1G"]],["impl Send for MemoryState",1,["memory_structs::MemoryState"]],["impl Send for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Send for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Send for Page<P>where\n P: Send,",1,["memory_structs::Page"]],["impl<P> Send for Frame<P>where\n P: Send,",1,["memory_structs::Frame"]],["impl<P> Send for PageRange<P>where\n P: Send,",1,["memory_structs::PageRange"]],["impl<P> Send for CopyablePageRange<P>where\n P: Send,",1,["memory_structs::CopyablePageRange"]],["impl<P> Send for FrameRange<P>where\n P: Send,",1,["memory_structs::FrameRange"]],["impl<P> Send for CopyableFrameRange<P>where\n P: Send,",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/core/marker/trait.StructuralEq.js b/doc/implementors/core/marker/trait.StructuralEq.js index 83f79a82ef..54d16460eb 100644 --- a/doc/implementors/core/marker/trait.StructuralEq.js +++ b/doc/implementors/core/marker/trait.StructuralEq.js @@ -8,7 +8,7 @@ "frame_allocator":[["impl<const S: MemoryState> StructuralEq for Frames<S>"],["impl StructuralEq for MemoryRegionType"],["impl StructuralEq for PhysicalMemoryRegion"]], "interrupts":[["impl StructuralEq for EoiBehaviour"]], "keycodes_ascii":[["impl StructuralEq for KeyboardModifiers"]], -"memory_structs":[["impl StructuralEq for PageRange"],["impl StructuralEq for MemoryState"],["impl StructuralEq for VirtualAddress"],["impl StructuralEq for Frame"],["impl StructuralEq for PhysicalAddress"],["impl StructuralEq for FrameRange"],["impl StructuralEq for Page"]], +"memory_structs":[["impl StructuralEq for Page2M"],["impl<P: PageSize> StructuralEq for PageRange<P>"],["impl StructuralEq for Page4K"],["impl StructuralEq for MemoryState"],["impl StructuralEq for VirtualAddress"],["impl StructuralEq for Page1G"],["impl<P: PageSize> StructuralEq for Page<P>"],["impl<P: PageSize> StructuralEq for FrameRange<P>"],["impl<P: PageSize> StructuralEq for Frame<P>"],["impl StructuralEq for PhysicalAddress"]], "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 43bb1303e0..76ac052bff 100644 --- a/doc/implementors/core/marker/trait.StructuralPartialEq.js +++ b/doc/implementors/core/marker/trait.StructuralPartialEq.js @@ -12,7 +12,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 PhysicalAddress"],["impl StructuralPartialEq for Frame"],["impl StructuralPartialEq for MemoryState"],["impl StructuralPartialEq for PageRange"],["impl StructuralPartialEq for FrameRange"],["impl StructuralPartialEq for VirtualAddress"]], +"memory_structs":[["impl StructuralPartialEq for MemoryState"],["impl<P: PageSize> StructuralPartialEq for Page<P>"],["impl<P: PageSize> StructuralPartialEq for FrameRange<P>"],["impl StructuralPartialEq for VirtualAddress"],["impl StructuralPartialEq for Page1G"],["impl<P: PageSize> StructuralPartialEq for PageRange<P>"],["impl<P: PageSize> StructuralPartialEq for Frame<P>"],["impl StructuralPartialEq for Page2M"],["impl StructuralPartialEq for Page4K"],["impl StructuralPartialEq for PhysicalAddress"]], "mlx_ethernet":[["impl StructuralPartialEq for CommandOpcode"],["impl StructuralPartialEq for CmdState"]], "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 4264bc946c..8d47e0c40d 100644 --- a/doc/implementors/core/marker/trait.Sync.js +++ b/doc/implementors/core/marker/trait.Sync.js @@ -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 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_structs":[["impl Sync for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Sync for Page4K",1,["memory_structs::Page4K"]],["impl Sync for Page2M",1,["memory_structs::Page2M"]],["impl Sync for Page1G",1,["memory_structs::Page1G"]],["impl Sync for MemoryState",1,["memory_structs::MemoryState"]],["impl Sync for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Sync for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Sync for Page<P>where\n P: Sync,",1,["memory_structs::Page"]],["impl<P> Sync for Frame<P>where\n P: Sync,",1,["memory_structs::Frame"]],["impl<P> Sync for PageRange<P>where\n P: Sync,",1,["memory_structs::PageRange"]],["impl<P> Sync for CopyablePageRange<P>where\n P: Sync,",1,["memory_structs::CopyablePageRange"]],["impl<P> Sync for FrameRange<P>where\n P: Sync,",1,["memory_structs::FrameRange"]],["impl<P> Sync for CopyableFrameRange<P>where\n P: Sync,",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/core/marker/trait.Unpin.js b/doc/implementors/core/marker/trait.Unpin.js index 0d75e793d7..5e3319a3c0 100644 --- a/doc/implementors/core/marker/trait.Unpin.js +++ b/doc/implementors/core/marker/trait.Unpin.js @@ -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 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_structs":[["impl Unpin for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl Unpin for Page4K",1,["memory_structs::Page4K"]],["impl Unpin for Page2M",1,["memory_structs::Page2M"]],["impl Unpin for Page1G",1,["memory_structs::Page1G"]],["impl Unpin for MemoryState",1,["memory_structs::MemoryState"]],["impl Unpin for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl Unpin for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> Unpin for Page<P>where\n P: Unpin,",1,["memory_structs::Page"]],["impl<P> Unpin for Frame<P>where\n P: Unpin,",1,["memory_structs::Frame"]],["impl<P> Unpin for PageRange<P>where\n P: Unpin,",1,["memory_structs::PageRange"]],["impl<P> Unpin for CopyablePageRange<P>where\n P: Unpin,",1,["memory_structs::CopyablePageRange"]],["impl<P> Unpin for FrameRange<P>where\n P: Unpin,",1,["memory_structs::FrameRange"]],["impl<P> Unpin for CopyableFrameRange<P>where\n P: Unpin,",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/core/ops/arith/trait.Add.js b/doc/implementors/core/ops/arith/trait.Add.js index 98846c6064..c971214a51 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<VirtualAddress> for VirtualAddress"],["impl Add<PhysicalAddress> for PhysicalAddress"],["impl Add<usize> for Page"],["impl Add<usize> for VirtualAddress"],["impl Add<usize> for Frame"],["impl Add<usize> for PhysicalAddress"]], +"memory_structs":[["impl<P: PageSize + 'static> Add<usize> for Page<P>"],["impl Add<usize> for PhysicalAddress"],["impl Add<VirtualAddress> for VirtualAddress"],["impl<P: PageSize + 'static> Add<usize> for Frame<P>"],["impl Add<PhysicalAddress> 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 94b5611290..8e2d7011e7 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<PhysicalAddress> for PhysicalAddress"],["impl AddAssign<usize> for VirtualAddress"],["impl AddAssign<usize> for PhysicalAddress"],["impl AddAssign<usize> for Frame"],["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl AddAssign<usize> for Page"]], +"memory_structs":[["impl AddAssign<PhysicalAddress> for PhysicalAddress"],["impl AddAssign<VirtualAddress> for VirtualAddress"],["impl AddAssign<usize> for VirtualAddress"],["impl AddAssign<usize> for PhysicalAddress"],["impl<P: PageSize + 'static> AddAssign<usize> for Page<P>"],["impl<P: PageSize + 'static> AddAssign<usize> for Frame<P>"]], "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 eddd73fea3..242b4c7f04 100644 --- a/doc/implementors/core/ops/arith/trait.Sub.js +++ b/doc/implementors/core/ops/arith/trait.Sub.js @@ -2,7 +2,7 @@ "ata":[["impl Sub<AtaError> for AtaError"],["impl Sub<AtaStatus> for AtaStatus"]], "boot_info":[["impl Sub<ElfSectionFlags> for ElfSectionFlags"]], "keycodes_ascii":[["impl Sub<KeyboardModifiers> for KeyboardModifiers"]], -"memory_structs":[["impl Sub<usize> for PhysicalAddress"],["impl Sub<VirtualAddress> for VirtualAddress"],["impl Sub<usize> for VirtualAddress"],["impl Sub<usize> for Page"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl Sub<usize> for Frame"]], +"memory_structs":[["impl Sub<usize> for VirtualAddress"],["impl Sub<PhysicalAddress> for PhysicalAddress"],["impl<P: PageSize + 'static> Sub<usize> for Page<P>"],["impl Sub<usize> for PhysicalAddress"],["impl Sub<VirtualAddress> for VirtualAddress"],["impl<P: PageSize + 'static> Sub<usize> for Frame<P>"]], "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 4bcb5bd993..564ab4d2f4 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<PhysicalAddress> for PhysicalAddress"],["impl SubAssign<usize> for PhysicalAddress"],["impl SubAssign<usize> for VirtualAddress"],["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl SubAssign<usize> for Page"],["impl SubAssign<usize> for Frame"]], +"memory_structs":[["impl SubAssign<VirtualAddress> for VirtualAddress"],["impl SubAssign<usize> for VirtualAddress"],["impl SubAssign<PhysicalAddress> for PhysicalAddress"],["impl SubAssign<usize> for PhysicalAddress"],["impl<P: PageSize + 'static> SubAssign<usize> for Page<P>"],["impl<P: PageSize + 'static> SubAssign<usize> for Frame<P>"]], "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 f763653e0a..3cb34d615c 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<AtaStatus> for AtaStatus"],["impl BitAnd<AtaError> for AtaError"]], "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 3574ca0555..da0c59fabf 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<AtaError> for AtaError"],["impl BitAndAssign<AtaStatus> for AtaStatus"]], "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/deref/trait.Deref.js b/doc/implementors/core/ops/deref/trait.Deref.js index 8b23d4d376..3b2c84ec08 100644 --- a/doc/implementors/core/ops/deref/trait.Deref.js +++ b/doc/implementors/core/ops/deref/trait.Deref.js @@ -5,7 +5,7 @@ "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 Deref for MappedPages"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedSliceMappedPages<T, M, B>"],["impl Deref for PageTable"],["impl<T: FromBytes, M: Mutability, B: Borrow<MappedPages>> Deref for BorrowedMappedPages<T, M, B>"]], -"memory_structs":[["impl Deref for PageRange"],["impl Deref for FrameRange"]], +"memory_structs":[["impl<P: PageSize + 'static> Deref for FrameRange<P>"],["impl<P: PageSize + 'static> Deref for PageRange<P>"]], "mod_mgmt":[["impl Deref for NamespaceDir"],["impl Deref for AppCrateRef"]], "net":[["impl<'a, T> Deref for LockedSocket<'a, T>where\n T: AnySocket<'static>,"]], "nic_buffers":[["impl Deref for TransmitBuffer"],["impl Deref for ReceiveBuffer"]], diff --git a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index f6dba55abe..02ea8eab65 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -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 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_structs":[["impl RefUnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl RefUnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl RefUnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl RefUnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl RefUnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl RefUnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl RefUnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> RefUnwindSafe for Page<P>where\n P: RefUnwindSafe,",1,["memory_structs::Page"]],["impl<P> RefUnwindSafe for Frame<P>where\n P: RefUnwindSafe,",1,["memory_structs::Frame"]],["impl<P> RefUnwindSafe for PageRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> RefUnwindSafe for CopyablePageRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::CopyablePageRange"]],["impl<P> RefUnwindSafe for FrameRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::FrameRange"]],["impl<P> RefUnwindSafe for CopyableFrameRange<P>where\n P: RefUnwindSafe,",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 138c5e94f4..59d04048c0 100644 --- a/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/doc/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -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 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_structs":[["impl UnwindSafe for MemChunkSize",1,["memory_structs::MemChunkSize"]],["impl UnwindSafe for Page4K",1,["memory_structs::Page4K"]],["impl UnwindSafe for Page2M",1,["memory_structs::Page2M"]],["impl UnwindSafe for Page1G",1,["memory_structs::Page1G"]],["impl UnwindSafe for MemoryState",1,["memory_structs::MemoryState"]],["impl UnwindSafe for VirtualAddress",1,["memory_structs::VirtualAddress"]],["impl UnwindSafe for PhysicalAddress",1,["memory_structs::PhysicalAddress"]],["impl<P> UnwindSafe for Page<P>where\n P: UnwindSafe,",1,["memory_structs::Page"]],["impl<P> UnwindSafe for Frame<P>where\n P: UnwindSafe,",1,["memory_structs::Frame"]],["impl<P> UnwindSafe for PageRange<P>where\n P: UnwindSafe,",1,["memory_structs::PageRange"]],["impl<P> UnwindSafe for CopyablePageRange<P>where\n P: UnwindSafe,",1,["memory_structs::CopyablePageRange"]],["impl<P> UnwindSafe for FrameRange<P>where\n P: UnwindSafe,",1,["memory_structs::FrameRange"]],["impl<P> UnwindSafe for CopyableFrameRange<P>where\n P: UnwindSafe,",1,["memory_structs::CopyableFrameRange"]]], "memory_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"]]], diff --git a/doc/implementors/memory_structs/trait.PageSize.js b/doc/implementors/memory_structs/trait.PageSize.js new file mode 100644 index 0000000000..e4bbdf621a --- /dev/null +++ b/doc/implementors/memory_structs/trait.PageSize.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"memory":[], +"memory_structs":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/doc/implementors/zerocopy/trait.FromBytes.js b/doc/implementors/zerocopy/trait.FromBytes.js index 42f55292f8..a1611b915f 100644 --- a/doc/implementors/zerocopy/trait.FromBytes.js +++ b/doc/implementors/zerocopy/trait.FromBytes.js @@ -9,7 +9,7 @@ "hpet":[["impl FromBytes for HpetAcpiTable"],["impl FromBytes for Hpet"],["impl FromBytes for HpetTimer"]], "intel_ethernet":[["impl FromBytes for AdvancedTxDescriptor"],["impl FromBytes for LegacyRxDescriptor"],["impl FromBytes for AdvancedRxDescriptor"],["impl FromBytes for LegacyTxDescriptor"]], "madt":[["impl FromBytes for MadtLocalApicAddressOverride"],["impl FromBytes for MadtIntSrcOverride"],["impl FromBytes for MadtLocalApic"],["impl FromBytes for MadtIoApic"],["impl FromBytes for MadtNonMaskableInterrupt"],["impl FromBytes for MadtLocalX2Apic"]], -"memory_structs":[["impl FromBytes for VirtualAddress"],["impl FromBytes for PhysicalAddress"]], +"memory_structs":[["impl FromBytes for PhysicalAddress"],["impl FromBytes for VirtualAddress"]], "mlx_ethernet":[["impl FromBytes for WorkQueueEntrySend"],["impl FromBytes for WorkQueueEntryReceive"],["impl FromBytes for CommandQueueEntry"],["impl FromBytes for CompletionQueueDoorbellRecord"],["impl FromBytes for DoorbellRecord"],["impl FromBytes for EventQueueEntry"],["impl FromBytes for CompletionQueueEntry"],["impl FromBytes for InitializationSegment"]], "multicore_bringup":[["impl FromBytes for GraphicInfo"]], "page_table_entry":[["impl FromBytes for PageTableEntry"]], diff --git a/doc/memory/all.html b/doc/memory/all.html index 92e9399bbe..e09ba54d8a 100644 --- a/doc/memory/all.html +++ b/doc/memory/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/doc/memory/enum.AllocationRequest.html b/doc/memory/enum.AllocationRequest.html index 1605f8c245..d38a45a741 100644 --- a/doc/memory/enum.AllocationRequest.html +++ b/doc/memory/enum.AllocationRequest.html @@ -3,7 +3,7 @@ AlignedTo { alignment_4k_pages: usize, }, - WithinRange(&'r PageRange), + WithinRange(&'r PageRange<Page4K>), Any, }
Expand description

Possible options when requesting pages from the page allocator.

Variants§

§

AtVirtualAddress(VirtualAddress)

The allocated pages must start exactly at the given VirtualAddress.

@@ -11,7 +11,7 @@ but the starting page must be aligned to a multiple of alignment_4k_pages. An alignment of 1 page is equivalent to specifying no alignment requirement.

Note: alignment is specified in number of 4KiB pages, not number of bytes.

-
§

WithinRange(&'r PageRange)

The allocated pages can be located anywhere within the given range.

+
§

WithinRange(&'r PageRange<Page4K>)

The allocated pages can be located anywhere within the given range.

§

Any

The allocated pages can be located at any virtual address and have no special alignment requirements beyond a single page.

Auto Trait Implementations§

§

impl<'r> RefUnwindSafe for AllocationRequest<'r>

§

impl<'r> Send for AllocationRequest<'r>

§

impl<'r> Sync for AllocationRequest<'r>

§

impl<'r> Unpin for AllocationRequest<'r>

§

impl<'r> UnwindSafe for AllocationRequest<'r>

Blanket Implementations§

source§

impl<T> Any for Twhere diff --git a/doc/memory/enum.MemChunkSize.html b/doc/memory/enum.MemChunkSize.html new file mode 100644 index 0000000000..64df39a867 --- /dev/null +++ b/doc/memory/enum.MemChunkSize.html @@ -0,0 +1,16 @@ +MemChunkSize in memory - Rust

Enum memory::MemChunkSize

pub enum MemChunkSize {
+    Normal4K,
+    Huge2M,
+    Huge1G,
+}
Expand description

Enum used to indicate the size of a page or frame.

+

Variants§

§

Normal4K

§

Huge2M

§

Huge1G

Trait Implementations§

§

impl Debug for MemChunkSize

§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_by_bytes_in_range.html b/doc/memory/fn.allocate_pages_by_bytes_in_range.html index f12efd3a08..5fcb67e91f 100644 --- a/doc/memory/fn.allocate_pages_by_bytes_in_range.html +++ b/doc/memory/fn.allocate_pages_by_bytes_in_range.html @@ -1,6 +1,6 @@ allocate_pages_by_bytes_in_range in memory - Rust
pub fn allocate_pages_by_bytes_in_range(
     num_bytes: usize,
-    range: &PageRange
+    range: &PageRange<Page4K>
 ) -> Result<AllocatedPages, &'static str>
Expand description

Allocates pages with a size given in number of bytes with the constraint that they must be within the given inclusive range of pages.

\ No newline at end of file diff --git a/doc/memory/fn.allocate_pages_in_range.html b/doc/memory/fn.allocate_pages_in_range.html index 74753a9d69..51548de2e7 100644 --- a/doc/memory/fn.allocate_pages_in_range.html +++ b/doc/memory/fn.allocate_pages_in_range.html @@ -1,6 +1,6 @@ allocate_pages_in_range in memory - Rust
pub fn allocate_pages_in_range(
     num_pages: usize,
-    range: &PageRange
+    range: &PageRange<Page4K>
 ) -> Result<AllocatedPages, &'static str>
Expand description

Allocates the given number of pages with the constraint that they must be within the given inclusive range of pages.

\ No newline at end of file diff --git a/doc/memory/index.html b/doc/memory/index.html index 3f2c9c1b4c..b94cc95931 100644 --- a/doc/memory/index.html +++ b/doc/memory/index.html @@ -5,14 +5,14 @@

Acknowledgments

Some of the internal page table management code was based on Philipp Oppermann’s blog_os, but has since changed significantly.

-

Structs

Structs

Enums

  • Possible options when requesting 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

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, +or BorrowedSliceMappedPages is borrowed mutably.
  • A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.
  • Marker struct used to indicate a page size of 1GiB.
  • Marker struct used to indicate a page size of 2MiB.
  • Marker struct used to indicate the default page size of 4KiB.
  • A range of Pages that are contiguous in virtual memory.
  • A 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.
  • Page table entry (PTE) flags on x86_64.
  • Page table entry (PTE) flags on x86_64.
  • A virtual memory address, which is a usize under the hood.

Enums

  • Possible options when requesting pages from the page allocator.
  • Enum used to indicate the size of a page or frame.
  • The possible states that a range of exclusively-owned pages or frames can be in.

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

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.
  • 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, diff --git a/doc/memory/sidebar-items.js b/doc/memory/sidebar-items.js index 3236679ceb..4198aad850 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","MemoryState"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","create_contiguous_mapping","create_identity_mapping","create_mapping","get_kernel_mmi_ref","init","init_post_heap","map_frame_range","set_broadcast_tlb_shootdown_cb","translate"],"struct":["AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CopyableFrameRange","CopyablePageRange","EarlyIdentityMappedPages","Frame","FrameRange","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","Mutable","Page","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability"],"type":["AllocatedFrames","MmiRef","UnmappedFrames"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DMA_FLAGS","MMIO_FLAGS","PAGE_SIZE","PTE_FRAME_MASK"],"enum":["AllocationRequest","MemChunkSize","MemoryState"],"fn":["allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","create_contiguous_mapping","create_identity_mapping","create_mapping","get_kernel_mmi_ref","init","init_post_heap","map_frame_range","set_broadcast_tlb_shootdown_cb","translate"],"struct":["AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CopyableFrameRange","CopyablePageRange","EarlyIdentityMappedPages","Frame","FrameRange","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","Mutable","Page","Page1G","Page2M","Page4K","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","VirtualAddress"],"trait":["Mutability","PageSize"],"type":["AllocatedFrames","MmiRef","UnmappedFrames"]}; \ No newline at end of file diff --git a/doc/memory/struct.AllocatedPages.html b/doc/memory/struct.AllocatedPages.html index 1ab81747dd..1d60110693 100644 --- a/doc/memory/struct.AllocatedPages.html +++ b/doc/memory/struct.AllocatedPages.html @@ -8,9 +8,9 @@

pub fn start_address(&self) -> VirtualAddress

Returns the starting VirtualAddress in this range of pages.

pub fn size_in_bytes(&self) -> usize

Returns the size in bytes of this range of pages.

pub fn size_in_pages(&self) -> usize

Returns the size in number of pages of this range of pages.

-

pub fn start(&self) -> &Page

Returns the starting Page in this range of pages.

-

pub fn end(&self) -> &Page

Returns the ending Page (inclusive) in this range of pages.

-

pub fn range(&self) -> &PageRange

Returns a reference to the inner PageRange, which is cloneable/iterable.

+

pub fn start(&self) -> &Page<Page4K>

Returns the starting Page in this range of pages.

+

pub fn end(&self) -> &Page<Page4K>

Returns the ending Page (inclusive) in this range of pages.

+

pub fn range(&self) -> &PageRange<Page4K>

Returns a reference to the inner PageRange, which is cloneable/iterable.

pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

If the given addr is not covered by this range of pages, this returns None.

@@ -32,7 +32,7 @@
Examples
otherwise Err(ap) is returned.

pub fn split( self, - at_page: Page + at_page: Page<Page4K> ) -> Result<(AllocatedPages, AllocatedPages), AllocatedPages>

Splits this AllocatedPages into two separate AllocatedPages objects:

source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.CopyablePageRange.html b/doc/memory/struct.CopyablePageRange.html index fb889e1577..63492a8476 100644 --- a/doc/memory/struct.CopyablePageRange.html +++ b/doc/memory/struct.CopyablePageRange.html @@ -1,13 +1,23 @@ -CopyablePageRange in memory - Rust
pub struct CopyablePageRange { /* private fields */ }
Expand description

A PageRange that implements Copy

-

Trait Implementations§

§

impl Clone for CopyablePageRange

§

fn clone(&self) -> CopyablePageRange

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

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

Performs copy-assignment from source. Read more
§

impl From<CopyablePageRange> for PageRange

§

fn from(cr: CopyablePageRange) -> PageRange

Converts to this type from the input type.
§

impl From<PageRange> for CopyablePageRange

§

fn from(r: PageRange) -> CopyablePageRange

Converts to this type from the input type.
§

impl Copy for CopyablePageRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +CopyablePageRange in memory - Rust
pub struct CopyablePageRange<P = Page4K>where
+    P: PageSize,{ /* private fields */ }
Expand description

A PageRange that implements Copy.

+

Trait Implementations§

§

impl<P> Clone for CopyablePageRange<P>where + P: Clone + PageSize,

§

fn clone(&self) -> CopyablePageRange<P>

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

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

Performs copy-assignment from source. Read more
§

impl<P> From<CopyablePageRange<P>> for PageRange<P>where + P: PageSize + Copy + 'static,

§

fn from(cr: CopyablePageRange<P>) -> PageRange<P>

Converts to this type from the input type.
§

impl<P> From<PageRange<P>> for CopyablePageRange<P>where + P: PageSize + Copy + 'static,

§

fn from(r: PageRange<P>) -> CopyablePageRange<P>

Converts to this type from the input type.
§

impl<P> Copy for CopyablePageRange<P>where + P: Copy + PageSize,

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for CopyablePageRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for CopyablePageRange<P>where + P: Send,

§

impl<P> Sync for CopyablePageRange<P>where + P: Sync,

§

impl<P> Unpin for CopyablePageRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for CopyablePageRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere +

source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.Frame.html b/doc/memory/struct.Frame.html index 7d41da05a8..2d81384c82 100644 --- a/doc/memory/struct.Frame.html +++ b/doc/memory/struct.Frame.html @@ -1,31 +1,54 @@ -Frame in memory - Rust

Struct memory::Frame

pub struct Frame { /* private fields */ }
Expand description

A Frame is a chunk of physical memory aligned to a PAGE_SIZE boundary.

-

Implementations§

§

impl Frame

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress at the start of this Frame.

-

pub const fn number(&self) -> usize

Returns the number of this Frame.

-

pub const fn containing_address(addr: PhysicalAddress) -> Frame

Returns the Frame containing the given PhysicalAddress.

-

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

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

-

Trait Implementations§

§

impl Add<usize> for Frame

§

type Output = Frame

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> Frame

Performs the + operation. Read more
§

impl AddAssign<usize> for Frame

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Clone for Frame

§

fn clone(&self) -> Frame

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Frame

§

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

Formats the value using the given formatter. Read more
§

impl Ord for Frame

§

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

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

fn max(self, other: Self) -> Selfwhere +Frame in memory - Rust

Struct memory::Frame

pub struct Frame<P = Page4K>where
+    P: PageSize,{ /* private fields */ }
Expand description

A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.

+

Implementations§

§

impl Frame<Page4K>

pub const fn containing_address(addr: PhysicalAddress) -> Frame<Page4K>

Returns the 4KiB Frame containing the given PhysicalAddress.

+

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

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

+
§

impl Frame<Page2M>

pub const fn containing_address_2mb(addr: PhysicalAddress) -> Frame<Page2M>

Returns the 2MiB huge Frame containing the given PhysicalAddress.

+
§

impl Frame<Page1G>

pub const fn containing_address_1gb(addr: PhysicalAddress) -> Frame<Page1G>

Returns the 1GiB huge Frame containing the given PhysicalAddress.

+
§

impl<P> Frame<P>where + P: PageSize + 'static,

pub const fn number(&self) -> usize

Returns the 4K-sized number of this Frame.

+

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress at the start of this Frame.

+

pub const fn page_size(&self) -> MemChunkSize

Returns the size of this Frame.

+

Trait Implementations§

§

impl<P> Add<usize> for Frame<P>where + P: PageSize + 'static,

§

type Output = Frame<P>

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> Frame<P>

Performs the + operation. Read more
§

impl<P> AddAssign<usize> for Frame<P>where + P: PageSize + 'static,

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl<P> Clone for Frame<P>where + P: Clone + PageSize,

§

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

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

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

Performs copy-assignment from source. Read more
§

impl<P> Debug for Frame<P>where + P: PageSize + 'static,

§

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

Formats the value using the given formatter. Read more
§

impl From<Frame<Page1G>> for Frame<Page4K>

§

fn from(p: Frame<Page1G>) -> Frame<Page4K>

Converts to this type from the input type.
§

impl From<Frame<Page2M>> for Frame<Page4K>

§

fn from(p: Frame<Page2M>) -> Frame<Page4K>

Converts to this type from the input type.
§

impl<P> Ord for Frame<P>where + P: Ord + PageSize,

§

fn cmp(&self, other: &Frame<P>) -> Ordering

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

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

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

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

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

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

Restrict a value to a certain interval. Read more
§

impl PartialEq<Frame> for Frame

§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
§

impl<P> PartialEq<Frame<P>> for Frame<P>where + P: PartialEq<P> + PageSize,

§

fn eq(&self, other: &Frame<P>) -> bool

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

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

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

impl PartialOrd<Frame> for Frame

§

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

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

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

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

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

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

impl<P> PartialOrd<Frame<P>> for Frame<P>where + P: PartialOrd<P> + PageSize,

§

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

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

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

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

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

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

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

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

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

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

impl Step for Frame

Implementing Step allows Frame to be used in an Iterator.

-
§

fn steps_between(start: &Frame, end: &Frame) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
§

fn forward_checked(start: Frame, count: usize) -> Option<Frame>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor -of self count times. Read more
§

fn backward_checked(start: Frame, count: usize) -> Option<Frame>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor +operator. Read more
§

impl<P> Step for Frame<P>where + P: PageSize + 'static,

§

fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
§

fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor +of self count times. Read more
§

fn backward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

fn forward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

unsafe fn forward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

fn backward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

unsafe fn backward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor -of self count times. Read more
§

impl Sub<usize> for Frame

§

type Output = Frame

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> Frame

Performs the - operation. Read more
§

impl SubAssign<usize> for Frame

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl Copy for Frame

§

impl Eq for Frame

§

impl StructuralEq for Frame

§

impl StructuralPartialEq for Frame

Auto Trait Implementations§

§

impl RefUnwindSafe for Frame

§

impl Send for Frame

§

impl Sync for Frame

§

impl Unpin for Frame

§

impl UnwindSafe for Frame

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +of self count times. Read more

§

impl<P> Sub<usize> for Frame<P>where + P: PageSize + 'static,

§

type Output = Frame<P>

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> Frame<P>

Performs the - operation. Read more
§

impl<P> SubAssign<usize> for Frame<P>where + P: PageSize + 'static,

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl TryFrom<Frame<Page4K>> for Frame<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: Frame<Page4K>) -> Result<Frame<Page1G>, &'static str>

Performs the conversion.
§

impl TryFrom<Frame<Page4K>> for Frame<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: Frame<Page4K>) -> Result<Frame<Page2M>, &'static str>

Performs the conversion.
§

impl<P> Copy for Frame<P>where + P: Copy + PageSize,

§

impl<P> Eq for Frame<P>where + P: Eq + PageSize,

§

impl<P> StructuralEq for Frame<P>where + P: PageSize,

§

impl<P> StructuralPartialEq for Frame<P>where + P: PageSize,

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for Frame<P>where + P: RefUnwindSafe,

§

impl<P> Send for Frame<P>where + P: Send,

§

impl<P> Sync for Frame<P>where + P: Sync,

§

impl<P> Unpin for Frame<P>where + P: Unpin,

§

impl<P> UnwindSafe for Frame<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.FrameRange.html b/doc/memory/struct.FrameRange.html index 457c0bcff9..75e0090cf6 100644 --- a/doc/memory/struct.FrameRange.html +++ b/doc/memory/struct.FrameRange.html @@ -1,14 +1,17 @@ -FrameRange in memory - Rust

Struct memory::FrameRange

pub struct FrameRange(_);
Expand description

A range of Frames that are contiguous in physical memory.

-

Implementations§

§

impl FrameRange

pub const fn new(start: Frame, end: Frame) -> FrameRange

Creates a new range of Frames that spans from start to end, both inclusive bounds.

-

pub const fn empty() -> FrameRange

Creates a FrameRange that will always yield None when iterated.

+FrameRange in memory - Rust

Struct memory::FrameRange

pub struct FrameRange<P = Page4K>(_)
+where
+         P: PageSize;
Expand description

A range of Frames that are contiguous in physical memory.

+

Implementations§

§

impl FrameRange<Page4K>

pub const fn empty() -> FrameRange<Page4K>

Creates a FrameRange that will always yield None when iterated.

pub const fn from_phys_addr( starting_addr: PhysicalAddress, size_in_bytes: usize -) -> FrameRange

A convenience method for creating a new FrameRange that spans all Frames from the given PhysicalAddress to an end bound based on the given size.

+) -> FrameRange<Page4K>

A convenience method for creating a new FrameRange that spans all Frames from the given PhysicalAddress to an end bound based on the given size.

+
§

impl<P> FrameRange<P>where + P: PageSize + 'static,

pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

Creates a new range of Frames that spans from start to end, both inclusive bounds.

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress of the starting Frame in this FrameRange.

pub const fn size_in_frames(&self) -> usize

Returns the number of Frames covered by this iterator.

Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.

-

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in number of bytes.

+

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

pub const fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given PhysicalAddress.

pub const fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given PhysicalAddress within this FrameRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of Frames, this returns None.

@@ -18,28 +21,44 @@
Examples

If the given offset is not within this range of Frames, this returns None.

Examples

If the range covers addresses 0x2000 through 0x3FFF, then address_at_offset(0x1500) would return Some(0x3500), and address_at_offset(0x2000) would return None.

-

pub fn to_extended(&self, to_include: Frame) -> 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 Frames that overlap across this FrameRange and the given other FrameRange.

+

pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

+

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

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

+
§

impl<P> FrameRange<P>where + P: PageSize + Copy + 'static,

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

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

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

§

impl Clone for FrameRange

§

fn clone(&self) -> FrameRange

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

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

Performs copy-assignment from source. Read more
§

impl Debug for FrameRange

§

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

Formats the value using the given formatter. Read more
§

impl Deref for FrameRange

§

type Target = RangeInclusive<Frame>

The resulting type after dereferencing.
§

fn deref(&self) -> &RangeInclusive<Frame>

Dereferences the value.
§

impl DerefMut for FrameRange

§

fn deref_mut(&mut self) -> &mut RangeInclusive<Frame>

Mutably dereferences the value.
§

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 IntoIterator for FrameRange

§

type Item = Frame

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Frame>

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <FrameRange as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl PartialEq<FrameRange> for FrameRange

§

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

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

Trait Implementations§

§

impl<P> Clone for FrameRange<P>where + P: Clone + PageSize,

§

fn clone(&self) -> FrameRange<P>

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

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

Performs copy-assignment from source. Read more
§

impl<P> Debug for FrameRange<P>where + P: PageSize + 'static,

§

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

Formats the value using the given formatter. Read more
§

impl<P> Deref for FrameRange<P>where + P: PageSize + 'static,

§

type Target = RangeInclusive<Frame<P>>

The resulting type after dereferencing.
§

fn deref(&self) -> &RangeInclusive<Frame<P>>

Dereferences the value.
§

impl DerefMut for FrameRange<Page4K>

§

fn deref_mut(&mut self) -> &mut RangeInclusive<Frame<Page4K>>

Mutably dereferences the value.
§

impl<P> From<CopyableFrameRange<P>> for FrameRange<P>where + P: PageSize + Copy + 'static,

§

fn from(cr: CopyableFrameRange<P>) -> FrameRange<P>

Converts to this type from the input type.
§

impl<P> From<FrameRange<P>> for CopyableFrameRange<P>where + P: PageSize + Copy + 'static,

§

fn from(r: FrameRange<P>) -> CopyableFrameRange<P>

Converts to this type from the input type.
§

impl From<FrameRange<Page1G>> for FrameRange<Page4K>

§

fn from(r: FrameRange<Page1G>) -> FrameRange<Page4K>

Converts to this type from the input type.
§

impl From<FrameRange<Page2M>> for FrameRange<Page4K>

§

fn from(r: FrameRange<Page2M>) -> FrameRange<Page4K>

Converts to this type from the input type.
§

impl<P> IntoIterator for FrameRange<P>where + P: PageSize + 'static,

§

type Item = Frame<P>

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Frame<P>>

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <FrameRange<P> as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl<P> PartialEq<FrameRange<P>> for FrameRange<P>where + P: PartialEq<P> + PageSize,

§

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

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

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

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

impl Eq for FrameRange

§

impl StructuralEq for FrameRange

§

impl StructuralPartialEq for FrameRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

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

§

impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page1G>, &'static str>

Performs the conversion.
§

impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: FrameRange<Page4K>) -> Result<FrameRange<Page2M>, &'static str>

Performs the conversion.
§

impl<P> Eq for FrameRange<P>where + P: Eq + PageSize,

§

impl<P> StructuralEq for FrameRange<P>where + P: PageSize,

§

impl<P> StructuralPartialEq for FrameRange<P>where + P: PageSize,

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for FrameRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for FrameRange<P>where + P: Send,

§

impl<P> Sync for FrameRange<P>where + P: Sync,

§

impl<P> Unpin for FrameRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for FrameRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.MappedPages.html b/doc/memory/struct.MappedPages.html index 69123bdc0e..865c8bb9f2 100644 --- a/doc/memory/struct.MappedPages.html +++ b/doc/memory/struct.MappedPages.html @@ -157,9 +157,9 @@
Arguments

Methods from Deref<Target = AllocatedPages>§

pub fn start_address(&self) -> VirtualAddress

Returns the starting VirtualAddress in this range of pages.

pub fn size_in_bytes(&self) -> usize

Returns the size in bytes of this range of pages.

pub fn size_in_pages(&self) -> usize

Returns the size in number of pages of this range of pages.

-

pub fn start(&self) -> &Page

Returns the starting Page in this range of pages.

-

pub fn end(&self) -> &Page

Returns the ending Page (inclusive) in this range of pages.

-

pub fn range(&self) -> &PageRange

Returns a reference to the inner PageRange, which is cloneable/iterable.

+

pub fn start(&self) -> &Page<Page4K>

Returns the starting Page in this range of pages.

+

pub fn end(&self) -> &Page<Page4K>

Returns the ending Page (inclusive) in this range of pages.

+

pub fn range(&self) -> &PageRange<Page4K>

Returns a reference to the inner PageRange, which is cloneable/iterable.

pub fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

If the given addr is not covered by this range of pages, this returns None.

diff --git a/doc/memory/struct.Page.html b/doc/memory/struct.Page.html index 53bafcc527..e24635f5ec 100644 --- a/doc/memory/struct.Page.html +++ b/doc/memory/struct.Page.html @@ -1,37 +1,61 @@ -Page in memory - Rust

Struct memory::Page

pub struct Page { /* private fields */ }
Expand description

A Page is a chunk of virtual memory aligned to a PAGE_SIZE boundary.

-

Implementations§

§

impl Page

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress at the start of this Page.

-

pub const fn number(&self) -> usize

Returns the number of this Page.

-

pub const fn containing_address(addr: VirtualAddress) -> Page

Returns the Page containing the given VirtualAddress.

-

pub const fn align_up(&self, alignment_4k_pages: usize) -> Page

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

-
§

impl Page

pub const fn p4_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

+Page in memory - Rust

Struct memory::Page

pub struct Page<P = Page4K>where
+    P: PageSize,{ /* private fields */ }
Expand description

A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.

+

Implementations§

§

impl Page<Page4K>

pub const fn containing_address(addr: VirtualAddress) -> Page<Page4K>

Returns the 4KiB Page containing the given VirtualAddress.

+

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

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

+
§

impl Page<Page2M>

pub const fn containing_address_2mb(addr: VirtualAddress) -> Page<Page2M>

Returns the 2MiB huge Page containing the given VirtualAddress.

+
§

impl Page<Page1G>

pub const fn containing_address_1gb(addr: VirtualAddress) -> Page<Page1G>

Returns the 1GiB huge Page containing the given VirtualAddress.

+
§

impl<P> Page<P>where + P: PageSize + 'static,

pub const fn number(&self) -> usize

Returns the 4K-sized number of this Page.

+

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress at the start of this Page.

+

pub const fn page_size(&self) -> MemChunkSize

Returns the size of this Page.

+
§

impl<P> Page<P>where + P: PageSize + 'static,

pub const fn p4_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

pub const fn p3_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

pub const fn p2_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

pub const fn p1_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

Using this returned usize value as an index into the P1 entries list will give you the final PTE, from which you can extract the mapped Frame using PageTableEntry::pointed_frame().

-

Trait Implementations§

§

impl Add<usize> for Page

§

type Output = Page

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> Page

Performs the + operation. Read more
§

impl AddAssign<usize> for Page

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Clone for Page

§

fn clone(&self) -> Page

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Page

§

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

Formats the value using the given formatter. Read more
§

impl Ord for Page

§

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

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

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

Trait Implementations§

§

impl<P> Add<usize> for Page<P>where + P: PageSize + 'static,

§

type Output = Page<P>

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> Page<P>

Performs the + operation. Read more
§

impl<P> AddAssign<usize> for Page<P>where + P: PageSize + 'static,

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl<P> Clone for Page<P>where + P: Clone + PageSize,

§

fn clone(&self) -> Page<P>

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

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

Performs copy-assignment from source. Read more
§

impl<P> Debug for Page<P>where + P: PageSize + 'static,

§

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

Formats the value using the given formatter. Read more
§

impl From<Page<Page1G>> for Page<Page4K>

§

fn from(p: Page<Page1G>) -> Page<Page4K>

Converts to this type from the input type.
§

impl From<Page<Page2M>> for Page<Page4K>

§

fn from(p: Page<Page2M>) -> Page<Page4K>

Converts to this type from the input type.
§

impl<P> Ord for Page<P>where + P: Ord + PageSize,

§

fn cmp(&self, other: &Page<P>) -> Ordering

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

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

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

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

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

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

Restrict a value to a certain interval. Read more
§

impl PartialEq<Page> for Page

§

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

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

impl<P> PartialEq<Page<P>> for Page<P>where + P: PartialEq<P> + PageSize,

§

fn eq(&self, other: &Page<P>) -> bool

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

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

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

impl PartialOrd<Page> for Page

§

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

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

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

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

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

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

impl<P> PartialOrd<Page<P>> for Page<P>where + P: PartialOrd<P> + PageSize,

§

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

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

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

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

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

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

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

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

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

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

impl Step for Page

Implementing Step allows Page to be used in an Iterator.

-
§

fn steps_between(start: &Page, end: &Page) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
§

fn forward_checked(start: Page, count: usize) -> Option<Page>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor -of self count times. Read more
§

fn backward_checked(start: Page, count: usize) -> Option<Page>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor +operator. Read more
§

impl<P> Step for Page<P>where + P: PageSize + 'static,

§

fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
§

fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor +of self count times. Read more
§

fn backward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

fn forward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

unsafe fn forward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

fn backward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

unsafe fn backward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor -of self count times. Read more
§

impl Sub<usize> for Page

§

type Output = Page

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> Page

Performs the - operation. Read more
§

impl SubAssign<usize> for Page

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl Copy for Page

§

impl Eq for Page

§

impl StructuralEq for Page

§

impl StructuralPartialEq for Page

Auto Trait Implementations§

§

impl RefUnwindSafe for Page

§

impl Send for Page

§

impl Sync for Page

§

impl Unpin for Page

§

impl UnwindSafe for Page

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +of self count times. Read more

§

impl<P> Sub<usize> for Page<P>where + P: PageSize + 'static,

§

type Output = Page<P>

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> Page<P>

Performs the - operation. Read more
§

impl<P> SubAssign<usize> for Page<P>where + P: PageSize + 'static,

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl TryFrom<Page<Page4K>> for Page<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: Page<Page4K>) -> Result<Page<Page1G>, &'static str>

Performs the conversion.
§

impl TryFrom<Page<Page4K>> for Page<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: Page<Page4K>) -> Result<Page<Page2M>, &'static str>

Performs the conversion.
§

impl<P> Copy for Page<P>where + P: Copy + PageSize,

§

impl<P> Eq for Page<P>where + P: Eq + PageSize,

§

impl<P> StructuralEq for Page<P>where + P: PageSize,

§

impl<P> StructuralPartialEq for Page<P>where + P: PageSize,

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for Page<P>where + P: RefUnwindSafe,

§

impl<P> Send for Page<P>where + P: Send,

§

impl<P> Sync for Page<P>where + P: Sync,

§

impl<P> Unpin for Page<P>where + P: Unpin,

§

impl<P> UnwindSafe for Page<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.Page1G.html b/doc/memory/struct.Page1G.html new file mode 100644 index 0000000000..3716e43237 --- /dev/null +++ b/doc/memory/struct.Page1G.html @@ -0,0 +1,20 @@ +Page1G in memory - Rust

Struct memory::Page1G

pub struct Page1G;
Expand description

Marker struct used to indicate a page size of 1GiB.

+

Trait Implementations§

§

impl Clone for Page1G

§

fn clone(&self) -> Page1G

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Page1G

§

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

Formats the value using the given formatter. Read more
§

impl Ord for Page1G

§

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

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

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

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

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

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

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

Restrict a value to a certain interval. Read more
§

impl PageSize for Page1G

§

const SIZE: MemChunkSize = MemChunkSize::Huge1G

§

const NUM_4K_PAGES: usize = 262_144usize

§

const SIZE_IN_BYTES: usize = 1_073_741_824usize

§

impl PartialEq<Page1G> for Page1G

§

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

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

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

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

impl PartialOrd<Page1G> for Page1G

§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page1G

§

impl Eq for Page1G

§

impl StructuralEq for Page1G

§

impl StructuralPartialEq for Page1G

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.Page2M.html b/doc/memory/struct.Page2M.html new file mode 100644 index 0000000000..5d53f08ff0 --- /dev/null +++ b/doc/memory/struct.Page2M.html @@ -0,0 +1,20 @@ +Page2M in memory - Rust

Struct memory::Page2M

pub struct Page2M;
Expand description

Marker struct used to indicate a page size of 2MiB.

+

Trait Implementations§

§

impl Clone for Page2M

§

fn clone(&self) -> Page2M

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Page2M

§

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

Formats the value using the given formatter. Read more
§

impl Ord for Page2M

§

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

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

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

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

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

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

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

Restrict a value to a certain interval. Read more
§

impl PageSize for Page2M

§

const SIZE: MemChunkSize = MemChunkSize::Huge2M

§

const NUM_4K_PAGES: usize = 512usize

§

const SIZE_IN_BYTES: usize = 2_097_152usize

§

impl PartialEq<Page2M> for Page2M

§

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

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

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

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

impl PartialOrd<Page2M> for Page2M

§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page2M

§

impl Eq for Page2M

§

impl StructuralEq for Page2M

§

impl StructuralPartialEq for Page2M

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.Page4K.html b/doc/memory/struct.Page4K.html new file mode 100644 index 0000000000..5947903f3b --- /dev/null +++ b/doc/memory/struct.Page4K.html @@ -0,0 +1,20 @@ +Page4K in memory - Rust

Struct memory::Page4K

pub struct Page4K;
Expand description

Marker struct used to indicate the default page size of 4KiB.

+

Trait Implementations§

§

impl Clone for Page4K

§

fn clone(&self) -> Page4K

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

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

Performs copy-assignment from source. Read more
§

impl Debug for Page4K

§

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

Formats the value using the given formatter. Read more
§

impl Ord for Page4K

§

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

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

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

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

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

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

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

Restrict a value to a certain interval. Read more
§

impl PageSize for Page4K

§

const SIZE: MemChunkSize = MemChunkSize::Normal4K

§

const NUM_4K_PAGES: usize = 1usize

§

const SIZE_IN_BYTES: usize = 4_096usize

§

impl PartialEq<Page4K> for Page4K

§

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

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

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

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

impl PartialOrd<Page4K> for Page4K

§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page4K

§

impl Eq for Page4K

§

impl StructuralEq for Page4K

§

impl StructuralPartialEq for Page4K

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.PageRange.html b/doc/memory/struct.PageRange.html index 62e2541a0e..341c57fba4 100644 --- a/doc/memory/struct.PageRange.html +++ b/doc/memory/struct.PageRange.html @@ -1,14 +1,17 @@ -PageRange in memory - Rust

Struct memory::PageRange

pub struct PageRange(_);
Expand description

A range of Pages that are contiguous in virtual memory.

-

Implementations§

§

impl PageRange

pub const fn new(start: Page, end: Page) -> PageRange

Creates a new range of Pages that spans from start to end, both inclusive bounds.

-

pub const fn empty() -> PageRange

Creates a PageRange that will always yield None when iterated.

+PageRange in memory - Rust

Struct memory::PageRange

pub struct PageRange<P = Page4K>(_)
+where
+         P: PageSize;
Expand description

A range of Pages that are contiguous in virtual memory.

+

Implementations§

§

impl PageRange<Page4K>

pub const fn empty() -> PageRange<Page4K>

Creates a PageRange that will always yield None when iterated.

pub const fn from_virt_addr( starting_addr: VirtualAddress, size_in_bytes: usize -) -> PageRange

A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

+) -> PageRange<Page4K>

A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

+
§

impl<P> PageRange<P>where + P: PageSize + 'static,

pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

Creates a new range of Pages that spans from start to end, both inclusive bounds.

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress of the starting Page in this PageRange.

pub const fn size_in_pages(&self) -> usize

Returns the number of Pages covered by this iterator.

Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.

-

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in number of bytes.

+

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

pub const fn contains_address(&self, addr: VirtualAddress) -> bool

Returns true if this PageRange contains the given VirtualAddress.

pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of Pages, this returns None.

@@ -18,28 +21,44 @@
Examples

If the given offset is not within this range of Pages, this returns None.

Examples

If the range covers addresses 0x2000 through 0x3FFF, then address_at_offset(0x1500) would return Some(0x3500), and address_at_offset(0x2000) would return None.

-

pub fn to_extended(&self, to_include: Page) -> PageRange

Returns a new separate PageRange that is extended to include the given Page.

-

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

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

+

pub fn to_extended(&self, to_include: Page<P>) -> PageRange<P>

Returns a new separate PageRange that is extended to include the given Page.

+

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

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

+
§

impl<P> PageRange<P>where + P: PageSize + Copy + 'static,

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

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

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

-

pub fn contains_range(&self, other: &PageRange) -> bool

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

-

Methods from Deref<Target = RangeInclusive<Page>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

§

impl Clone for PageRange

§

fn clone(&self) -> PageRange

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

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

Performs copy-assignment from source. Read more
§

impl Debug for PageRange

§

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

Formats the value using the given formatter. Read more
§

impl Deref for PageRange

§

type Target = RangeInclusive<Page>

The resulting type after dereferencing.
§

fn deref(&self) -> &RangeInclusive<Page>

Dereferences the value.
§

impl DerefMut for PageRange

§

fn deref_mut(&mut self) -> &mut RangeInclusive<Page>

Mutably dereferences the value.
§

impl From<CopyablePageRange> for PageRange

§

fn from(cr: CopyablePageRange) -> PageRange

Converts to this type from the input type.
§

impl From<PageRange> for CopyablePageRange

§

fn from(r: PageRange) -> CopyablePageRange

Converts to this type from the input type.
§

impl IntoIterator for PageRange

§

type Item = Page

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Page>

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <PageRange as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl PartialEq<PageRange> for PageRange

§

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

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

Trait Implementations§

§

impl<P> Clone for PageRange<P>where + P: Clone + PageSize,

§

fn clone(&self) -> PageRange<P>

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

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

Performs copy-assignment from source. Read more
§

impl<P> Debug for PageRange<P>where + P: PageSize + 'static,

§

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

Formats the value using the given formatter. Read more
§

impl<P> Deref for PageRange<P>where + P: PageSize + 'static,

§

type Target = RangeInclusive<Page<P>>

The resulting type after dereferencing.
§

fn deref(&self) -> &RangeInclusive<Page<P>>

Dereferences the value.
§

impl DerefMut for PageRange<Page4K>

§

fn deref_mut(&mut self) -> &mut RangeInclusive<Page<Page4K>>

Mutably dereferences the value.
§

impl<P> From<CopyablePageRange<P>> for PageRange<P>where + P: PageSize + Copy + 'static,

§

fn from(cr: CopyablePageRange<P>) -> PageRange<P>

Converts to this type from the input type.
§

impl<P> From<PageRange<P>> for CopyablePageRange<P>where + P: PageSize + Copy + 'static,

§

fn from(r: PageRange<P>) -> CopyablePageRange<P>

Converts to this type from the input type.
§

impl From<PageRange<Page1G>> for PageRange<Page4K>

§

fn from(r: PageRange<Page1G>) -> PageRange<Page4K>

Converts to this type from the input type.
§

impl From<PageRange<Page2M>> for PageRange<Page4K>

§

fn from(r: PageRange<Page2M>) -> PageRange<Page4K>

Converts to this type from the input type.
§

impl<P> IntoIterator for PageRange<P>where + P: PageSize + 'static,

§

type Item = Page<P>

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Page<P>>

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <PageRange<P> as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl<P> PartialEq<PageRange<P>> for PageRange<P>where + P: PartialEq<P> + PageSize,

§

fn eq(&self, other: &PageRange<P>) -> bool

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

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

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

impl Eq for PageRange

§

impl StructuralEq for PageRange

§

impl StructuralPartialEq for PageRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

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

§

impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: PageRange<Page4K>) -> Result<PageRange<Page1G>, &'static str>

Performs the conversion.
§

impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
§

fn try_from(p: PageRange<Page4K>) -> Result<PageRange<Page2M>, &'static str>

Performs the conversion.
§

impl<P> Eq for PageRange<P>where + P: Eq + PageSize,

§

impl<P> StructuralEq for PageRange<P>where + P: PageSize,

§

impl<P> StructuralPartialEq for PageRange<P>where + P: PageSize,

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for PageRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for PageRange<P>where + P: Send,

§

impl<P> Sync for PageRange<P>where + P: Sync,

§

impl<P> Unpin for PageRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for PageRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T> ToOwned for Twhere - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory/struct.PhysicalAddress.html b/doc/memory/struct.PhysicalAddress.html index 91f4a7f26b..ee38662a7b 100644 --- a/doc/memory/struct.PhysicalAddress.html +++ b/doc/memory/struct.PhysicalAddress.html @@ -7,10 +7,10 @@

pub const fn new_canonical(addr: usize) -> PhysicalAddress

Creates a new PhysicalAddress that is guaranteed to be canonical.

pub const fn zero() -> PhysicalAddress

Creates a new PhysicalAddress with a value 0.

pub const fn value(&self) -> usize

Returns the underlying usize value for this PhysicalAddress.

-

pub const fn frame_offset(&self) -> usize

Returns the offset from the frame boundary specified by this `PhysicalAddress.

-

For example, if the PAGE_SIZE is 4096 (4KiB), then this will return +

pub const fn frame_offset(&self) -> usize

Returns the offset from the 4K frame boundary specified by this `PhysicalAddress.

+

For example, for the address 0xFFFF_1578, this will return 0x578, the least significant 12 bits (12:0] of this PhysicalAddress.

-

Trait Implementations§

§

impl Add<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the + operation. Read more
§

impl Add<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> PhysicalAddress

Performs the + operation. Read more
§

impl AddAssign<PhysicalAddress> for PhysicalAddress

§

fn add_assign(&mut self, rhs: PhysicalAddress)

Performs the += operation. Read more
§

impl AddAssign<usize> for PhysicalAddress

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Binary for PhysicalAddress

§

fn fmt( +

Trait Implementations§

§

impl Add<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the + operation. Read more
§

impl Add<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> PhysicalAddress

Performs the + operation. Read more
§

impl AddAssign<PhysicalAddress> for PhysicalAddress

§

fn add_assign(&mut self, rhs: PhysicalAddress)

Performs the += operation. Read more
§

impl AddAssign<usize> for PhysicalAddress

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Binary for PhysicalAddress

§

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

Formats the value using the given formatter.
§

impl BitAnd<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the & operator.
§

fn bitand(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the & operation. Read more
§

impl BitAndAssign<PhysicalAddress> for PhysicalAddress

§

fn bitand_assign(&mut self, rhs: PhysicalAddress)

Performs the &= operation. Read more
§

impl BitOr<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the | operator.
§

fn bitor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the | operation. Read more
§

impl BitOrAssign<PhysicalAddress> for PhysicalAddress

§

fn bitor_assign(&mut self, rhs: PhysicalAddress)

Performs the |= operation. Read more
§

impl BitXor<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the ^ operator.
§

fn bitxor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the ^ operation. Read more
§

impl BitXorAssign<PhysicalAddress> for PhysicalAddress

§

fn bitxor_assign(&mut self, rhs: PhysicalAddress)

Performs the ^= operation. Read more
§

impl Clone for PhysicalAddress

§

fn clone(&self) -> PhysicalAddress

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

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

Performs copy-assignment from source. Read more
§

impl Debug for PhysicalAddress

§

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

Formats the value using the given formatter. Read more
§

impl Default for PhysicalAddress

§

fn default() -> PhysicalAddress

Returns the “default value” for a type. Read more
§

impl Display for PhysicalAddress

§

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

Formats the value using the given formatter. Read more
§

impl Hash for PhysicalAddress

§

fn hash<__H>(&self, state: &mut __H)where @@ -29,7 +29,7 @@ by ==.

1.0.0 · source§

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

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

impl PartialOrd<PhysicalAddress> for PhysicalAddress

§

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

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

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

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

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

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

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

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

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

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

impl Pointer for PhysicalAddress

§

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

Formats the value using the given formatter.
§

impl Sub<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the - operation. Read more
§

impl Sub<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> PhysicalAddress

Performs the - operation. Read more
§

impl SubAssign<PhysicalAddress> for PhysicalAddress

§

fn sub_assign(&mut self, rhs: PhysicalAddress)

Performs the -= operation. Read more
§

impl SubAssign<usize> for PhysicalAddress

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl UpperHex for PhysicalAddress

§

fn fmt( +operator. Read more

§

impl Pointer for PhysicalAddress

§

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

Formats the value using the given formatter.
§

impl Sub<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the - operation. Read more
§

impl Sub<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> PhysicalAddress

Performs the - operation. Read more
§

impl SubAssign<PhysicalAddress> for PhysicalAddress

§

fn sub_assign(&mut self, rhs: PhysicalAddress)

Performs the -= operation. Read more
§

impl SubAssign<usize> for PhysicalAddress

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl UpperHex for PhysicalAddress

§

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

Formats the value using the given formatter.
§

impl Copy for PhysicalAddress

§

impl Eq for PhysicalAddress

§

impl FromBytes for PhysicalAddress

§

impl StructuralEq for PhysicalAddress

§

impl StructuralPartialEq for PhysicalAddress

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere diff --git a/doc/memory/struct.VirtualAddress.html b/doc/memory/struct.VirtualAddress.html index 0e36dc03a0..6bbd764206 100644 --- a/doc/memory/struct.VirtualAddress.html +++ b/doc/memory/struct.VirtualAddress.html @@ -7,10 +7,10 @@

pub const fn new_canonical(addr: usize) -> VirtualAddress

Creates a new VirtualAddress that is guaranteed to be canonical.

pub const fn zero() -> VirtualAddress

Creates a new VirtualAddress with a value 0.

pub const fn value(&self) -> usize

Returns the underlying usize value for this VirtualAddress.

-

pub const fn page_offset(&self) -> usize

Returns the offset from the page boundary specified by this `VirtualAddress.

-

For example, if the PAGE_SIZE is 4096 (4KiB), then this will return +

pub const fn page_offset(&self) -> usize

Returns the offset from the 4K page boundary specified by this `VirtualAddress.

+

For example, for the address 0xFFFF_1578, this will return 0x578, the least significant 12 bits (12:0] of this VirtualAddress.

-

Trait Implementations§

§

impl Add<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: VirtualAddress) -> VirtualAddress

Performs the + operation. Read more
§

impl Add<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> VirtualAddress

Performs the + operation. Read more
§

impl AddAssign<VirtualAddress> for VirtualAddress

§

fn add_assign(&mut self, rhs: VirtualAddress)

Performs the += operation. Read more
§

impl AddAssign<usize> for VirtualAddress

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Binary for VirtualAddress

§

fn fmt( +

Trait Implementations§

§

impl Add<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: VirtualAddress) -> VirtualAddress

Performs the + operation. Read more
§

impl Add<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
§

fn add(self, rhs: usize) -> VirtualAddress

Performs the + operation. Read more
§

impl AddAssign<VirtualAddress> for VirtualAddress

§

fn add_assign(&mut self, rhs: VirtualAddress)

Performs the += operation. Read more
§

impl AddAssign<usize> for VirtualAddress

§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
§

impl Binary for VirtualAddress

§

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

Formats the value using the given formatter.
§

impl BitAnd<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the & operator.
§

fn bitand(self, rhs: VirtualAddress) -> VirtualAddress

Performs the & operation. Read more
§

impl BitAndAssign<VirtualAddress> for VirtualAddress

§

fn bitand_assign(&mut self, rhs: VirtualAddress)

Performs the &= operation. Read more
§

impl BitOr<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the | operator.
§

fn bitor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the | operation. Read more
§

impl BitOrAssign<VirtualAddress> for VirtualAddress

§

fn bitor_assign(&mut self, rhs: VirtualAddress)

Performs the |= operation. Read more
§

impl BitXor<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the ^ operator.
§

fn bitxor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the ^ operation. Read more
§

impl BitXorAssign<VirtualAddress> for VirtualAddress

§

fn bitxor_assign(&mut self, rhs: VirtualAddress)

Performs the ^= operation. Read more
§

impl Clone for VirtualAddress

§

fn clone(&self) -> VirtualAddress

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

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

Performs copy-assignment from source. Read more
§

impl Debug for VirtualAddress

§

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

Formats the value using the given formatter. Read more
§

impl Default for VirtualAddress

§

fn default() -> VirtualAddress

Returns the “default value” for a type. Read more
§

impl Display for VirtualAddress

§

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

Formats the value using the given formatter. Read more
§

impl Hash for VirtualAddress

§

fn hash<__H>(&self, state: &mut __H)where @@ -29,7 +29,7 @@ by ==.

1.0.0 · source§

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

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

impl PartialOrd<VirtualAddress> for VirtualAddress

§

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

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

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

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

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

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

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

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

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

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

impl Pointer for VirtualAddress

§

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

Formats the value using the given formatter.
§

impl Sub<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: VirtualAddress) -> VirtualAddress

Performs the - operation. Read more
§

impl Sub<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> VirtualAddress

Performs the - operation. Read more
§

impl SubAssign<VirtualAddress> for VirtualAddress

§

fn sub_assign(&mut self, rhs: VirtualAddress)

Performs the -= operation. Read more
§

impl SubAssign<usize> for VirtualAddress

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl UpperHex for VirtualAddress

§

fn fmt( +operator. Read more

§

impl Pointer for VirtualAddress

§

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

Formats the value using the given formatter.
§

impl Sub<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: VirtualAddress) -> VirtualAddress

Performs the - operation. Read more
§

impl Sub<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
§

fn sub(self, rhs: usize) -> VirtualAddress

Performs the - operation. Read more
§

impl SubAssign<VirtualAddress> for VirtualAddress

§

fn sub_assign(&mut self, rhs: VirtualAddress)

Performs the -= operation. Read more
§

impl SubAssign<usize> for VirtualAddress

§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
§

impl UpperHex for VirtualAddress

§

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

Formats the value using the given formatter.
§

impl Copy for VirtualAddress

§

impl Eq for VirtualAddress

§

impl FromBytes for VirtualAddress

§

impl StructuralEq for VirtualAddress

§

impl StructuralPartialEq for VirtualAddress

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere diff --git a/doc/memory/trait.PageSize.html b/doc/memory/trait.PageSize.html new file mode 100644 index 0000000000..52c92c384f --- /dev/null +++ b/doc/memory/trait.PageSize.html @@ -0,0 +1,8 @@ +PageSize in memory - Rust

Trait memory::PageSize

pub trait PageSize: Ord + PartialOrd<Self> + Clone + Copy + Sealed {
+    const SIZE: MemChunkSize;
+    const NUM_4K_PAGES: usize;
+    const SIZE_IN_BYTES: usize;
+}
Expand description

Trait that represents the size of a page or frame, i.e., for normal or huge pages.

+

This is used to parameterize Page- and Frame-related types with a page size, +in order to define normal and huge pages in a generic manner.

+

Required Associated Constants§

Implementors§

§

impl PageSize for Page1G

§

const SIZE: MemChunkSize = MemChunkSize::Huge1G

§

const NUM_4K_PAGES: usize = 262_144usize

§

const SIZE_IN_BYTES: usize = 1_073_741_824usize

§

impl PageSize for Page2M

§

const SIZE: MemChunkSize = MemChunkSize::Huge2M

§

const NUM_4K_PAGES: usize = 512usize

§

const SIZE_IN_BYTES: usize = 2_097_152usize

§

impl PageSize for Page4K

§

const SIZE: MemChunkSize = MemChunkSize::Normal4K

§

const NUM_4K_PAGES: usize = 1usize

§

const SIZE_IN_BYTES: usize = 4_096usize

\ No newline at end of file diff --git a/doc/memory_structs/all.html b/doc/memory_structs/all.html index c143eebe36..6b41b3a940 100644 --- a/doc/memory_structs/all.html +++ b/doc/memory_structs/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/doc/memory_structs/enum.MemChunkSize.html b/doc/memory_structs/enum.MemChunkSize.html new file mode 100644 index 0000000000..60fc703527 --- /dev/null +++ b/doc/memory_structs/enum.MemChunkSize.html @@ -0,0 +1,16 @@ +MemChunkSize in memory_structs - Rust
pub enum MemChunkSize {
+    Normal4K,
+    Huge2M,
+    Huge1G,
+}
Expand description

Enum used to indicate the size of a page or frame.

+

Variants§

§

Normal4K

§

Huge2M

§

Huge1G

Trait Implementations§

source§

impl Debug for MemChunkSize

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/enum.MemoryState.html b/doc/memory_structs/enum.MemoryState.html index d3bdfbe6dd..86d30d265a 100644 --- a/doc/memory_structs/enum.MemoryState.html +++ b/doc/memory_structs/enum.MemoryState.html @@ -1,4 +1,4 @@ -MemoryState in memory_structs - Rust
pub enum MemoryState {
+MemoryState in memory_structs - Rust
pub enum MemoryState {
     Free,
     Allocated,
     Mapped,
@@ -8,9 +8,9 @@
 
§

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§

source§

impl PartialEq<MemoryState> for MemoryState

source§

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

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

Trait Implementations§

source§

impl PartialEq<MemoryState> for MemoryState

source§

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

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

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

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

impl ConstParamTy for MemoryState

source§

impl Eq for MemoryState

source§

impl StructuralEq for MemoryState

source§

impl StructuralPartialEq for MemoryState

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

impl ConstParamTy for MemoryState

source§

impl Eq for MemoryState

source§

impl StructuralEq for MemoryState

source§

impl StructuralPartialEq for MemoryState

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/memory_structs/index.html b/doc/memory_structs/index.html index 2081b12fb9..53b5638230 100644 --- a/doc/memory_structs/index.html +++ b/doc/memory_structs/index.html @@ -1,8 +1,8 @@ -memory_structs - Rust

Crate memory_structs

source ·
Expand description

This crate contains basic types used for memory management.

+memory_structs - Rust

Crate memory_structs

source ·
Expand description

This crate contains basic types used for memory management.

The types of interest are divided into three categories:

  1. addresses: VirtualAddress and PhysicalAddress.
  2. “chunk” types: Page and Frame.
  3. ranges of chunks: PageRange and FrameRange.
-

Structs

  • A FrameRange that implements Copy
  • A PageRange that implements Copy
  • A Frame is a chunk of physical memory aligned to a [PAGE_SIZE] boundary.
  • A range of Frames that are contiguous in physical memory.
  • A Page is a chunk of virtual memory aligned to a [PAGE_SIZE] boundary.
  • A range of Pages that are contiguous in virtual memory.
  • A physical memory address, which is a usize under the hood.
  • A virtual memory address, which is a usize under the hood.

Enums

  • The possible states that a range of exclusively-owned pages or frames can be in.
\ No newline at end of file +

Structs

  • A FrameRange that implements Copy.
  • A PageRange that implements Copy.
  • A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.
  • A range of Frames that are contiguous in physical memory.
  • A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.
  • Marker struct used to indicate a page size of 1GiB.
  • Marker struct used to indicate a page size of 2MiB.
  • Marker struct used to indicate the default page size of 4KiB.
  • A range of Pages that are contiguous in virtual memory.
  • A physical memory address, which is a usize under the hood.
  • A virtual memory address, which is a usize under the hood.

Enums

  • Enum used to indicate the size of a page or frame.
  • The possible states that a range of exclusively-owned pages or frames can be in.

Traits

  • Trait that represents the size of a page or frame, i.e., for normal or huge pages.
\ No newline at end of file diff --git a/doc/memory_structs/sidebar-items.js b/doc/memory_structs/sidebar-items.js index ff5eb144c9..5e2fc8dc00 100644 --- a/doc/memory_structs/sidebar-items.js +++ b/doc/memory_structs/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["MemoryState"],"struct":["CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Page","PageRange","PhysicalAddress","VirtualAddress"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["MemChunkSize","MemoryState"],"struct":["CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Page","Page1G","Page2M","Page4K","PageRange","PhysicalAddress","VirtualAddress"],"trait":["PageSize"]}; \ No newline at end of file diff --git a/doc/memory_structs/struct.CopyableFrameRange.html b/doc/memory_structs/struct.CopyableFrameRange.html index 0cfa3185b7..608126e82f 100644 --- a/doc/memory_structs/struct.CopyableFrameRange.html +++ b/doc/memory_structs/struct.CopyableFrameRange.html @@ -1,12 +1,17 @@ -CopyableFrameRange in memory_structs - Rust
pub struct CopyableFrameRange { /* private fields */ }
Expand description

A FrameRange that implements Copy

-

Trait Implementations§

source§

impl Clone for CopyableFrameRange

source§

fn clone(&self) -> CopyableFrameRange

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

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

Performs copy-assignment from source. Read more
source§

impl From<CopyableFrameRange> for FrameRange

source§

fn from(cr: CopyableFrameRange) -> Self

Converts to this type from the input type.
source§

impl From<FrameRange> for CopyableFrameRange

source§

fn from(r: FrameRange) -> Self

Converts to this type from the input type.
source§

impl Copy for CopyableFrameRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +CopyableFrameRange in memory_structs - Rust
pub struct CopyableFrameRange<P: PageSize = Page4K> { /* private fields */ }
Expand description

A FrameRange that implements Copy.

+

Trait Implementations§

source§

impl<P: Clone + PageSize> Clone for CopyableFrameRange<P>

source§

fn clone(&self) -> CopyableFrameRange<P>

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>

source§

fn from(cr: CopyableFrameRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>

source§

fn from(r: FrameRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: Copy + PageSize> Copy for CopyableFrameRange<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for CopyableFrameRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for CopyableFrameRange<P>where + P: Send,

§

impl<P> Sync for CopyableFrameRange<P>where + P: Sync,

§

impl<P> Unpin for CopyableFrameRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for CopyableFrameRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere +

source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.CopyablePageRange.html b/doc/memory_structs/struct.CopyablePageRange.html index bec663e6e5..cbb23135e8 100644 --- a/doc/memory_structs/struct.CopyablePageRange.html +++ b/doc/memory_structs/struct.CopyablePageRange.html @@ -1,12 +1,17 @@ -CopyablePageRange in memory_structs - Rust
pub struct CopyablePageRange { /* private fields */ }
Expand description

A PageRange that implements Copy

-

Trait Implementations§

source§

impl Clone for CopyablePageRange

source§

fn clone(&self) -> CopyablePageRange

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

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

Performs copy-assignment from source. Read more
source§

impl From<CopyablePageRange> for PageRange

source§

fn from(cr: CopyablePageRange) -> Self

Converts to this type from the input type.
source§

impl From<PageRange> for CopyablePageRange

source§

fn from(r: PageRange) -> Self

Converts to this type from the input type.
source§

impl Copy for CopyablePageRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +CopyablePageRange in memory_structs - Rust
pub struct CopyablePageRange<P: PageSize = Page4K> { /* private fields */ }
Expand description

A PageRange that implements Copy.

+

Trait Implementations§

source§

impl<P: Clone + PageSize> Clone for CopyablePageRange<P>

source§

fn clone(&self) -> CopyablePageRange<P>

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>

source§

fn from(cr: CopyablePageRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>

source§

fn from(r: PageRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: Copy + PageSize> Copy for CopyablePageRange<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for CopyablePageRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for CopyablePageRange<P>where + P: Send,

§

impl<P> Sync for CopyablePageRange<P>where + P: Sync,

§

impl<P> Unpin for CopyablePageRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for CopyablePageRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere +

source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.Frame.html b/doc/memory_structs/struct.Frame.html index e4d0b6412a..f27075feb9 100644 --- a/doc/memory_structs/struct.Frame.html +++ b/doc/memory_structs/struct.Frame.html @@ -1,30 +1,37 @@ -Frame in memory_structs - Rust

Struct memory_structs::Frame

source ·
pub struct Frame { /* private fields */ }
Expand description

A Frame is a chunk of physical memory aligned to a [PAGE_SIZE] boundary.

-

Implementations§

source§

impl Frame

source

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress at the start of this Frame.

-
source

pub const fn number(&self) -> usize

Returns the number of this Frame.

-
source

pub const fn containing_address(addr: PhysicalAddress) -> Frame

Returns the Frame containing the given PhysicalAddress.

-
source

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

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

-

Trait Implementations§

source§

impl Add<usize> for Frame

§

type Output = Frame

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> Frame

Performs the + operation. Read more
source§

impl AddAssign<usize> for Frame

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Clone for Frame

source§

fn clone(&self) -> Frame

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Frame

source§

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

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

impl Ord for Frame

source§

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

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

fn max(self, other: Self) -> Selfwhere +Frame in memory_structs - Rust

Struct memory_structs::Frame

source ·
pub struct Frame<P: PageSize = Page4K> { /* private fields */ }
Expand description

A Frame is a chunk of physical memory aligned to a page boundary (default 4KiB) given by the P parameter.

+

Implementations§

source§

impl Frame<Page4K>

source

pub const fn containing_address(addr: PhysicalAddress) -> Frame

Returns the 4KiB Frame containing the given PhysicalAddress.

+
source

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

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

+
source§

impl Frame<Page2M>

source

pub const fn containing_address_2mb(addr: PhysicalAddress) -> Frame<Page2M>

Returns the 2MiB huge Frame containing the given PhysicalAddress.

+
source§

impl Frame<Page1G>

source

pub const fn containing_address_1gb(addr: PhysicalAddress) -> Frame<Page1G>

Returns the 1GiB huge Frame containing the given PhysicalAddress.

+
source§

impl<P: PageSize + 'static> Frame<P>

source

pub const fn number(&self) -> usize

Returns the 4K-sized number of this Frame.

+
source

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress at the start of this Frame.

+
source

pub const fn page_size(&self) -> MemChunkSize

Returns the size of this Frame.

+

Trait Implementations§

source§

impl<P: PageSize + 'static> Add<usize> for Frame<P>

§

type Output = Frame<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> Frame<P>

Performs the + operation. Read more
source§

impl<P: PageSize + 'static> AddAssign<usize> for Frame<P>

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl<P: Clone + PageSize> Clone for Frame<P>

source§

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

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + 'static> Debug for Frame<P>

source§

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

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

impl From<Frame<Page1G>> for Frame<Page4K>

source§

fn from(p: Frame<Page1G>) -> Self

Converts to this type from the input type.
source§

impl From<Frame<Page2M>> for Frame<Page4K>

source§

fn from(p: Frame<Page2M>) -> Self

Converts to this type from the input type.
source§

impl<P: Ord + PageSize> Ord for Frame<P>

source§

fn cmp(&self, other: &Frame<P>) -> Ordering

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

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

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

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

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

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

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

impl PartialEq<Frame> for Frame

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd<Self>,

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

impl<P: PartialEq + PageSize> PartialEq<Frame<P>> for Frame<P>

source§

fn eq(&self, other: &Frame<P>) -> bool

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

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

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

impl PartialOrd<Frame> for Frame

source§

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

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

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

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

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

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

impl<P: PartialOrd + PageSize> PartialOrd<Frame<P>> for Frame<P>

source§

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

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

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

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

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

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

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

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

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

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

impl Step for Frame

Implementing Step allows Frame to be used in an Iterator.

-
source§

fn steps_between(start: &Frame, end: &Frame) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
source§

fn forward_checked(start: Frame, count: usize) -> Option<Frame>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor -of self count times. Read more
source§

fn backward_checked(start: Frame, count: usize) -> Option<Frame>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor +operator. Read more
source§

impl<P: PageSize + 'static> Step for Frame<P>

source§

fn steps_between(start: &Frame<P>, end: &Frame<P>) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
source§

fn forward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor +of self count times. Read more
source§

fn backward_checked(start: Frame<P>, count: usize) -> Option<Frame<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

fn forward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

unsafe fn forward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

fn backward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

unsafe fn backward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor -of self count times. Read more
source§

impl Sub<usize> for Frame

§

type Output = Frame

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> Frame

Performs the - operation. Read more
source§

impl SubAssign<usize> for Frame

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl Copy for Frame

source§

impl Eq for Frame

source§

impl StructuralEq for Frame

source§

impl StructuralPartialEq for Frame

Auto Trait Implementations§

§

impl RefUnwindSafe for Frame

§

impl Send for Frame

§

impl Sync for Frame

§

impl Unpin for Frame

§

impl UnwindSafe for Frame

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +of self count times. Read more

source§

impl<P: PageSize + 'static> Sub<usize> for Frame<P>

§

type Output = Frame<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> Frame<P>

Performs the - operation. Read more
source§

impl<P: PageSize + 'static> SubAssign<usize> for Frame<P>

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl TryFrom<Frame<Page4K>> for Frame<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: Frame) -> Result<Self, &'static str>

Performs the conversion.
source§

impl TryFrom<Frame<Page4K>> for Frame<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: Frame) -> Result<Self, &'static str>

Performs the conversion.
source§

impl<P: Copy + PageSize> Copy for Frame<P>

source§

impl<P: Eq + PageSize> Eq for Frame<P>

source§

impl<P: PageSize> StructuralEq for Frame<P>

source§

impl<P: PageSize> StructuralPartialEq for Frame<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for Frame<P>where + P: RefUnwindSafe,

§

impl<P> Send for Frame<P>where + P: Send,

§

impl<P> Sync for Frame<P>where + P: Sync,

§

impl<P> Unpin for Frame<P>where + P: Unpin,

§

impl<P> UnwindSafe for Frame<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.FrameRange.html b/doc/memory_structs/struct.FrameRange.html index 53ec30d837..81f81db82e 100644 --- a/doc/memory_structs/struct.FrameRange.html +++ b/doc/memory_structs/struct.FrameRange.html @@ -1,44 +1,49 @@ -FrameRange in memory_structs - Rust
pub struct FrameRange(_);
Expand description

A range of Frames that are contiguous in physical memory.

-

Implementations§

source§

impl FrameRange

source

pub const fn new(start: Frame, end: Frame) -> FrameRange

Creates a new range of Frames that spans from start to end, both inclusive bounds.

-
source

pub const fn empty() -> FrameRange

Creates a FrameRange that will always yield None when iterated.

-
source

pub const fn from_phys_addr( +FrameRange in memory_structs - Rust
pub struct FrameRange<P: PageSize = Page4K>(_);
Expand description

A range of Frames that are contiguous in physical memory.

+

Implementations§

source§

impl FrameRange<Page4K>

source

pub const fn empty() -> Self

Creates a FrameRange that will always yield None when iterated.

+
source

pub const fn from_phys_addr( starting_addr: PhysicalAddress, size_in_bytes: usize ) -> FrameRange

A convenience method for creating a new FrameRange that spans all Frames from the given PhysicalAddress to an end bound based on the given size.

-
source

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress of the starting Frame in this FrameRange.

-
source

pub const fn size_in_frames(&self) -> usize

Returns the number of Frames covered by this iterator.

+
source§

impl<P: PageSize + 'static> FrameRange<P>

source

pub const fn new(start: Frame<P>, end: Frame<P>) -> FrameRange<P>

Creates a new range of Frames that spans from start to end, both inclusive bounds.

+
source

pub const fn start_address(&self) -> PhysicalAddress

Returns the PhysicalAddress of the starting Frame in this FrameRange.

+
source

pub const fn size_in_frames(&self) -> usize

Returns the number of Frames covered by this iterator.

Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.

-
source

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in number of bytes.

-
source

pub const fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given PhysicalAddress.

-
source

pub const fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given PhysicalAddress within this FrameRange, i.e., addr - self.start_address().

+
source

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

+
source

pub const fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given PhysicalAddress.

+
source

pub const fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given PhysicalAddress within this FrameRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of Frames, this returns None.

Examples

If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).

-
source

pub const fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>

Returns the PhysicalAddress at the given offset into this FrameRangewithin this FrameRange, i.e., self.start_address() + offset.

+
source

pub const fn address_at_offset(&self, offset: usize) -> Option<PhysicalAddress>

Returns the PhysicalAddress at the given offset into this FrameRangewithin this FrameRange, i.e., self.start_address() + offset.

If the given offset is not within this range of Frames, this returns None.

Examples

If the range covers addresses 0x2000 through 0x3FFF, then address_at_offset(0x1500) would return Some(0x3500), and address_at_offset(0x2000) would return None.

-
source

pub fn to_extended(&self, to_include: Frame) -> FrameRange

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

-
source

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

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

+
source

pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

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

+
source

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

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

+
source§

impl<P: PageSize + Copy + 'static> FrameRange<P>

source

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

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

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

-
source

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

source§

impl Clone for FrameRange

source§

fn clone(&self) -> FrameRange

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for FrameRange

source§

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

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

impl Deref for FrameRange

§

type Target = RangeInclusive<Frame>

The resulting type after dereferencing.
source§

fn deref(&self) -> &RangeInclusive<Frame>

Dereferences the value.
source§

impl DerefMut for FrameRange

source§

fn deref_mut(&mut self) -> &mut RangeInclusive<Frame>

Mutably dereferences the value.
source§

impl From<CopyableFrameRange> for FrameRange

source§

fn from(cr: CopyableFrameRange) -> Self

Converts to this type from the input type.
source§

impl From<FrameRange> for CopyableFrameRange

source§

fn from(r: FrameRange) -> Self

Converts to this type from the input type.
source§

impl IntoIterator for FrameRange

§

type Item = Frame

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Frame>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq<FrameRange> for FrameRange

source§

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

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

Trait Implementations§

source§

impl<P: Clone + PageSize> Clone for FrameRange<P>

source§

fn clone(&self) -> FrameRange<P>

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + 'static> Debug for FrameRange<P>

source§

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

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

impl<P: PageSize + 'static> Deref for FrameRange<P>

§

type Target = RangeInclusive<Frame<P>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &RangeInclusive<Frame<P>>

Dereferences the value.
source§

impl DerefMut for FrameRange

source§

fn deref_mut(&mut self) -> &mut RangeInclusive<Frame>

Mutably dereferences the value.
source§

impl<P: PageSize + Copy + 'static> From<CopyableFrameRange<P>> for FrameRange<P>

source§

fn from(cr: CopyableFrameRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + Copy + 'static> From<FrameRange<P>> for CopyableFrameRange<P>

source§

fn from(r: FrameRange<P>) -> Self

Converts to this type from the input type.
source§

impl From<FrameRange<Page1G>> for FrameRange<Page4K>

source§

fn from(r: FrameRange<Page1G>) -> Self

Converts to this type from the input type.
source§

impl From<FrameRange<Page2M>> for FrameRange<Page4K>

source§

fn from(r: FrameRange<Page2M>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + 'static> IntoIterator for FrameRange<P>

§

type Item = Frame<P>

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Frame<P>>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<P: PartialEq + PageSize> PartialEq<FrameRange<P>> for FrameRange<P>

source§

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

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

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

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

impl Eq for FrameRange

source§

impl StructuralEq for FrameRange

source§

impl StructuralPartialEq for FrameRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

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

source§

impl TryFrom<FrameRange<Page4K>> for FrameRange<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: FrameRange) -> Result<Self, &'static str>

Performs the conversion.
source§

impl TryFrom<FrameRange<Page4K>> for FrameRange<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: FrameRange) -> Result<Self, &'static str>

Performs the conversion.
source§

impl<P: Eq + PageSize> Eq for FrameRange<P>

source§

impl<P: PageSize> StructuralEq for FrameRange<P>

source§

impl<P: PageSize> StructuralPartialEq for FrameRange<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for FrameRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for FrameRange<P>where + P: Send,

§

impl<P> Sync for FrameRange<P>where + P: Sync,

§

impl<P> Unpin for FrameRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for FrameRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.Page.html b/doc/memory_structs/struct.Page.html index 663f1c62ef..7efccf7a41 100644 --- a/doc/memory_structs/struct.Page.html +++ b/doc/memory_structs/struct.Page.html @@ -1,36 +1,43 @@ -Page in memory_structs - Rust

Struct memory_structs::Page

source ·
pub struct Page { /* private fields */ }
Expand description

A Page is a chunk of virtual memory aligned to a [PAGE_SIZE] boundary.

-

Implementations§

source§

impl Page

source

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress at the start of this Page.

-
source

pub const fn number(&self) -> usize

Returns the number of this Page.

-
source

pub const fn containing_address(addr: VirtualAddress) -> Page

Returns the Page containing the given VirtualAddress.

-
source

pub const fn align_up(&self, alignment_4k_pages: usize) -> Page

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

-
source§

impl Page

source

pub const fn p4_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

-
source

pub const fn p3_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

-
source

pub const fn p2_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

-
source

pub const fn p1_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

+Page in memory_structs - Rust

Struct memory_structs::Page

source ·
pub struct Page<P: PageSize = Page4K> { /* private fields */ }
Expand description

A Page is a chunk of virtual memory aligned to a page boundary (default 4KiB) given by the P parameter.

+

Implementations§

source§

impl Page<Page4K>

source

pub const fn containing_address(addr: VirtualAddress) -> Page

Returns the 4KiB Page containing the given VirtualAddress.

+
source

pub const fn align_up(&self, alignment_4k_pages: usize) -> Page

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

+
source§

impl Page<Page2M>

source

pub const fn containing_address_2mb(addr: VirtualAddress) -> Page<Page2M>

Returns the 2MiB huge Page containing the given VirtualAddress.

+
source§

impl Page<Page1G>

source

pub const fn containing_address_1gb(addr: VirtualAddress) -> Page<Page1G>

Returns the 1GiB huge Page containing the given VirtualAddress.

+
source§

impl<P: PageSize + 'static> Page<P>

source

pub const fn number(&self) -> usize

Returns the 4K-sized number of this Page.

+
source

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress at the start of this Page.

+
source

pub const fn page_size(&self) -> MemChunkSize

Returns the size of this Page.

+
source§

impl<P: PageSize + 'static> Page<P>

source

pub const fn p4_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P4 page table entries list.

+
source

pub const fn p3_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P3 page table entries list.

+
source

pub const fn p2_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P2 page table entries list.

+
source

pub const fn p1_index(&self) -> usize

Returns the 9-bit part of this Page’s VirtualAddress that is the index into the P1 page table entries list.

Using this returned usize value as an index into the P1 entries list will give you the final PTE, from which you can extract the mapped Frame using PageTableEntry::pointed_frame().

-

Trait Implementations§

source§

impl Add<usize> for Page

§

type Output = Page

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> Page

Performs the + operation. Read more
source§

impl AddAssign<usize> for Page

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Clone for Page

source§

fn clone(&self) -> Page

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Page

source§

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

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

impl Ord for Page

source§

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

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

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

Trait Implementations§

source§

impl<P: PageSize + 'static> Add<usize> for Page<P>

§

type Output = Page<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> Page<P>

Performs the + operation. Read more
source§

impl<P: PageSize + 'static> AddAssign<usize> for Page<P>

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl<P: Clone + PageSize> Clone for Page<P>

source§

fn clone(&self) -> Page<P>

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + 'static> Debug for Page<P>

source§

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

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

impl From<Page<Page1G>> for Page<Page4K>

source§

fn from(p: Page<Page1G>) -> Self

Converts to this type from the input type.
source§

impl From<Page<Page2M>> for Page<Page4K>

source§

fn from(p: Page<Page2M>) -> Self

Converts to this type from the input type.
source§

impl<P: Ord + PageSize> Ord for Page<P>

source§

fn cmp(&self, other: &Page<P>) -> Ordering

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

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

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

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

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

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

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

impl PartialEq<Page> for Page

source§

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

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

impl<P: PartialEq + PageSize> PartialEq<Page<P>> for Page<P>

source§

fn eq(&self, other: &Page<P>) -> bool

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

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

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

impl PartialOrd<Page> for Page

source§

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

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

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

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

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

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

impl<P: PartialOrd + PageSize> PartialOrd<Page<P>> for Page<P>

source§

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

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

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

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

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

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

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

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

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

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

impl Step for Page

Implementing Step allows Page to be used in an Iterator.

-
source§

fn steps_between(start: &Page, end: &Page) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
source§

fn forward_checked(start: Page, count: usize) -> Option<Page>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor -of self count times. Read more
source§

fn backward_checked(start: Page, count: usize) -> Option<Page>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor +operator. Read more
source§

impl<P: PageSize + 'static> Step for Page<P>

source§

fn steps_between(start: &Page<P>, end: &Page<P>) -> Option<usize>

🔬This is a nightly-only experimental API. (step_trait)
Returns the number of successor steps required to get from start to end. Read more
source§

fn forward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor +of self count times. Read more
source§

fn backward_checked(start: Page<P>, count: usize) -> Option<Page<P>>

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

fn forward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

unsafe fn forward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the successor of self count times. Read more
source§

fn backward(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor of self count times. Read more
source§

unsafe fn backward_unchecked(start: Self, count: usize) -> Self

🔬This is a nightly-only experimental API. (step_trait)
Returns the value that would be obtained by taking the predecessor -of self count times. Read more
source§

impl Sub<usize> for Page

§

type Output = Page

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> Page

Performs the - operation. Read more
source§

impl SubAssign<usize> for Page

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl Copy for Page

source§

impl Eq for Page

source§

impl StructuralEq for Page

source§

impl StructuralPartialEq for Page

Auto Trait Implementations§

§

impl RefUnwindSafe for Page

§

impl Send for Page

§

impl Sync for Page

§

impl Unpin for Page

§

impl UnwindSafe for Page

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere +of self count times. Read more

source§

impl<P: PageSize + 'static> Sub<usize> for Page<P>

§

type Output = Page<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> Page<P>

Performs the - operation. Read more
source§

impl<P: PageSize + 'static> SubAssign<usize> for Page<P>

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl TryFrom<Page<Page4K>> for Page<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: Page) -> Result<Self, &'static str>

Performs the conversion.
source§

impl TryFrom<Page<Page4K>> for Page<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: Page) -> Result<Self, &'static str>

Performs the conversion.
source§

impl<P: Copy + PageSize> Copy for Page<P>

source§

impl<P: Eq + PageSize> Eq for Page<P>

source§

impl<P: PageSize> StructuralEq for Page<P>

source§

impl<P: PageSize> StructuralPartialEq for Page<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for Page<P>where + P: RefUnwindSafe,

§

impl<P> Send for Page<P>where + P: Send,

§

impl<P> Sync for Page<P>where + P: Sync,

§

impl<P> Unpin for Page<P>where + P: Unpin,

§

impl<P> UnwindSafe for Page<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.Page1G.html b/doc/memory_structs/struct.Page1G.html new file mode 100644 index 0000000000..19b19d1793 --- /dev/null +++ b/doc/memory_structs/struct.Page1G.html @@ -0,0 +1,19 @@ +Page1G in memory_structs - Rust

Struct memory_structs::Page1G

source ·
pub struct Page1G;
Expand description

Marker struct used to indicate a page size of 1GiB.

+

Trait Implementations§

source§

impl Clone for Page1G

source§

fn clone(&self) -> Page1G

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Page1G

source§

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

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

impl Ord for Page1G

source§

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

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

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

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

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

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

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

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

impl PageSize for Page1G

source§

const SIZE: MemChunkSize = MemChunkSize::Huge1G

source§

const NUM_4K_PAGES: usize = 262_144usize

source§

const SIZE_IN_BYTES: usize = 1_073_741_824usize

source§

impl PartialEq<Page1G> for Page1G

source§

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

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

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

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

impl PartialOrd<Page1G> for Page1G

source§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page1G

source§

impl Eq for Page1G

source§

impl StructuralEq for Page1G

source§

impl StructuralPartialEq for Page1G

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.Page2M.html b/doc/memory_structs/struct.Page2M.html new file mode 100644 index 0000000000..050a0e6352 --- /dev/null +++ b/doc/memory_structs/struct.Page2M.html @@ -0,0 +1,19 @@ +Page2M in memory_structs - Rust

Struct memory_structs::Page2M

source ·
pub struct Page2M;
Expand description

Marker struct used to indicate a page size of 2MiB.

+

Trait Implementations§

source§

impl Clone for Page2M

source§

fn clone(&self) -> Page2M

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Page2M

source§

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

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

impl Ord for Page2M

source§

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

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

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

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

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

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

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

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

impl PageSize for Page2M

source§

const SIZE: MemChunkSize = MemChunkSize::Huge2M

source§

const NUM_4K_PAGES: usize = 512usize

source§

const SIZE_IN_BYTES: usize = 2_097_152usize

source§

impl PartialEq<Page2M> for Page2M

source§

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

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

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

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

impl PartialOrd<Page2M> for Page2M

source§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page2M

source§

impl Eq for Page2M

source§

impl StructuralEq for Page2M

source§

impl StructuralPartialEq for Page2M

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.Page4K.html b/doc/memory_structs/struct.Page4K.html new file mode 100644 index 0000000000..615ef6f12c --- /dev/null +++ b/doc/memory_structs/struct.Page4K.html @@ -0,0 +1,19 @@ +Page4K in memory_structs - Rust

Struct memory_structs::Page4K

source ·
pub struct Page4K;
Expand description

Marker struct used to indicate the default page size of 4KiB.

+

Trait Implementations§

source§

impl Clone for Page4K

source§

fn clone(&self) -> Page4K

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Page4K

source§

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

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

impl Ord for Page4K

source§

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

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

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

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

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

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

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

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

impl PageSize for Page4K

source§

const SIZE: MemChunkSize = MemChunkSize::Normal4K

source§

const NUM_4K_PAGES: usize = 1usize

source§

const SIZE_IN_BYTES: usize = 4_096usize

source§

impl PartialEq<Page4K> for Page4K

source§

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

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

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

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

impl PartialOrd<Page4K> for Page4K

source§

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

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

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

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

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

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

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

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

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

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

impl Copy for Page4K

source§

impl Eq for Page4K

source§

impl StructuralEq for Page4K

source§

impl StructuralPartialEq for Page4K

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.PageRange.html b/doc/memory_structs/struct.PageRange.html index 3cd45b6045..01b76503dc 100644 --- a/doc/memory_structs/struct.PageRange.html +++ b/doc/memory_structs/struct.PageRange.html @@ -1,44 +1,49 @@ -PageRange in memory_structs - Rust
pub struct PageRange(_);
Expand description

A range of Pages that are contiguous in virtual memory.

-

Implementations§

source§

impl PageRange

source

pub const fn new(start: Page, end: Page) -> PageRange

Creates a new range of Pages that spans from start to end, both inclusive bounds.

-
source

pub const fn empty() -> PageRange

Creates a PageRange that will always yield None when iterated.

-
source

pub const fn from_virt_addr( +PageRange in memory_structs - Rust
pub struct PageRange<P: PageSize = Page4K>(_);
Expand description

A range of Pages that are contiguous in virtual memory.

+

Implementations§

source§

impl PageRange<Page4K>

source

pub const fn empty() -> Self

Creates a PageRange that will always yield None when iterated.

+
source

pub const fn from_virt_addr( starting_addr: VirtualAddress, size_in_bytes: usize ) -> PageRange

A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

-
source

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress of the starting Page in this PageRange.

-
source

pub const fn size_in_pages(&self) -> usize

Returns the number of Pages covered by this iterator.

+
source§

impl<P: PageSize + 'static> PageRange<P>

source

pub const fn new(start: Page<P>, end: Page<P>) -> PageRange<P>

Creates a new range of Pages that spans from start to end, both inclusive bounds.

+
source

pub const fn start_address(&self) -> VirtualAddress

Returns the VirtualAddress of the starting Page in this PageRange.

+
source

pub const fn size_in_pages(&self) -> usize

Returns the number of Pages covered by this iterator.

Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.

-
source

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in number of bytes.

-
source

pub const fn contains_address(&self, addr: VirtualAddress) -> bool

Returns true if this PageRange contains the given VirtualAddress.

-
source

pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

+
source

pub const fn size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

+
source

pub const fn contains_address(&self, addr: VirtualAddress) -> bool

Returns true if this PageRange contains the given VirtualAddress.

+
source

pub const fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of Pages, this returns None.

Examples

If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).

-
source

pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., self.start_address() + offset.

+
source

pub const fn address_at_offset(&self, offset: usize) -> Option<VirtualAddress>

Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., self.start_address() + offset.

If the given offset is not within this range of Pages, this returns None.

Examples

If the range covers addresses 0x2000 through 0x3FFF, then address_at_offset(0x1500) would return Some(0x3500), and address_at_offset(0x2000) would return None.

-
source

pub fn to_extended(&self, to_include: Page) -> PageRange

Returns a new separate PageRange that is extended to include the given Page.

-
source

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

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

+
source

pub fn to_extended(&self, to_include: Page<P>) -> PageRange<P>

Returns a new separate PageRange that is extended to include the given Page.

+
source

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

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

+
source§

impl<P: PageSize + Copy + 'static> PageRange<P>

source

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

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

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

-
source

pub fn contains_range(&self, other: &PageRange) -> bool

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

-

Methods from Deref<Target = RangeInclusive<Page>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

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

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

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

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

source

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

Returns true if item is contained in the range.

-

Trait Implementations§

source§

impl Clone for PageRange

source§

fn clone(&self) -> PageRange

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PageRange

source§

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

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

impl Deref for PageRange

§

type Target = RangeInclusive<Page>

The resulting type after dereferencing.
source§

fn deref(&self) -> &RangeInclusive<Page>

Dereferences the value.
source§

impl DerefMut for PageRange

source§

fn deref_mut(&mut self) -> &mut RangeInclusive<Page>

Mutably dereferences the value.
source§

impl From<CopyablePageRange> for PageRange

source§

fn from(cr: CopyablePageRange) -> Self

Converts to this type from the input type.
source§

impl From<PageRange> for CopyablePageRange

source§

fn from(r: PageRange) -> Self

Converts to this type from the input type.
source§

impl IntoIterator for PageRange

§

type Item = Page

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Page>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq<PageRange> for PageRange

source§

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

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

Trait Implementations§

source§

impl<P: Clone + PageSize> Clone for PageRange<P>

source§

fn clone(&self) -> PageRange<P>

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

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

Performs copy-assignment from source. Read more
source§

impl<P: PageSize + 'static> Debug for PageRange<P>

source§

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

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

impl<P: PageSize + 'static> Deref for PageRange<P>

§

type Target = RangeInclusive<Page<P>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &RangeInclusive<Page<P>>

Dereferences the value.
source§

impl DerefMut for PageRange

source§

fn deref_mut(&mut self) -> &mut RangeInclusive<Page>

Mutably dereferences the value.
source§

impl<P: PageSize + Copy + 'static> From<CopyablePageRange<P>> for PageRange<P>

source§

fn from(cr: CopyablePageRange<P>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + Copy + 'static> From<PageRange<P>> for CopyablePageRange<P>

source§

fn from(r: PageRange<P>) -> Self

Converts to this type from the input type.
source§

impl From<PageRange<Page1G>> for PageRange<Page4K>

source§

fn from(r: PageRange<Page1G>) -> Self

Converts to this type from the input type.
source§

impl From<PageRange<Page2M>> for PageRange<Page4K>

source§

fn from(r: PageRange<Page2M>) -> Self

Converts to this type from the input type.
source§

impl<P: PageSize + 'static> IntoIterator for PageRange<P>

§

type Item = Page<P>

The type of the elements being iterated over.
§

type IntoIter = RangeInclusiveIterator<Page<P>>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<P: PartialEq + PageSize> PartialEq<PageRange<P>> for PageRange<P>

source§

fn eq(&self, other: &PageRange<P>) -> bool

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

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

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

impl Eq for PageRange

source§

impl StructuralEq for PageRange

source§

impl StructuralPartialEq for PageRange

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

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

source§

impl TryFrom<PageRange<Page4K>> for PageRange<Page1G>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: PageRange) -> Result<Self, &'static str>

Performs the conversion.
source§

impl TryFrom<PageRange<Page4K>> for PageRange<Page2M>

§

type Error = &'static str

The type returned in the event of a conversion error.
source§

fn try_from(p: PageRange) -> Result<Self, &'static str>

Performs the conversion.
source§

impl<P: Eq + PageSize> Eq for PageRange<P>

source§

impl<P: PageSize> StructuralEq for PageRange<P>

source§

impl<P: PageSize> StructuralPartialEq for PageRange<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for PageRange<P>where + P: RefUnwindSafe,

§

impl<P> Send for PageRange<P>where + P: Send,

§

impl<P> Sync for PageRange<P>where + P: Sync,

§

impl<P> Unpin for PageRange<P>where + P: Unpin,

§

impl<P> UnwindSafe for PageRange<P>where + P: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/doc/memory_structs/struct.PhysicalAddress.html b/doc/memory_structs/struct.PhysicalAddress.html index 29d7ab218e..c257d363ed 100644 --- a/doc/memory_structs/struct.PhysicalAddress.html +++ b/doc/memory_structs/struct.PhysicalAddress.html @@ -1,25 +1,25 @@ -PhysicalAddress in memory_structs - Rust
#[repr(transparent)]
pub struct PhysicalAddress(_);
Expand description

A physical memory address, which is a usize under the hood.

-

Implementations§

source§

impl PhysicalAddress

source

pub fn new(addr: usize) -> Option<PhysicalAddress>

Creates a new PhysicalAddress, returning an error if the address is not canonical.

+PhysicalAddress in memory_structs - Rust
#[repr(transparent)]
pub struct PhysicalAddress(_);
Expand description

A physical memory address, which is a usize under the hood.

+

Implementations§

source§

impl PhysicalAddress

source

pub fn new(addr: usize) -> Option<PhysicalAddress>

Creates a new PhysicalAddress, returning an error if the address is not canonical.

This is useful for checking whether an address is valid before using it. For example, on x86_64, virtual addresses are canonical if their upper bits (64:48] are sign-extended from bit 47, and physical addresses are canonical if their upper bits (64:52] are 0.

-
source

pub const fn new_canonical(addr: usize) -> PhysicalAddress

Creates a new PhysicalAddress that is guaranteed to be canonical.

-
source

pub const fn zero() -> PhysicalAddress

Creates a new PhysicalAddress with a value 0.

-
source

pub const fn value(&self) -> usize

Returns the underlying usize value for this PhysicalAddress.

-
source

pub const fn frame_offset(&self) -> usize

Returns the offset from the frame boundary specified by this `PhysicalAddress.

-

For example, if the [PAGE_SIZE] is 4096 (4KiB), then this will return +

source

pub const fn new_canonical(addr: usize) -> PhysicalAddress

Creates a new PhysicalAddress that is guaranteed to be canonical.

+
source

pub const fn zero() -> PhysicalAddress

Creates a new PhysicalAddress with a value 0.

+
source

pub const fn value(&self) -> usize

Returns the underlying usize value for this PhysicalAddress.

+
source

pub const fn frame_offset(&self) -> usize

Returns the offset from the 4K frame boundary specified by this `PhysicalAddress.

+

For example, for the address 0xFFFF_1578, this will return 0x578, the least significant 12 bits (12:0] of this PhysicalAddress.

-

Trait Implementations§

source§

impl Add<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the + operation. Read more
source§

impl Add<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> PhysicalAddress

Performs the + operation. Read more
source§

impl AddAssign<PhysicalAddress> for PhysicalAddress

source§

fn add_assign(&mut self, rhs: PhysicalAddress)

Performs the += operation. Read more
source§

impl AddAssign<usize> for PhysicalAddress

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Binary for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the & operation. Read more
source§

impl BitAndAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitand_assign(&mut self, rhs: PhysicalAddress)

Performs the &= operation. Read more
source§

impl BitOr<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the | operation. Read more
source§

impl BitOrAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitor_assign(&mut self, rhs: PhysicalAddress)

Performs the |= operation. Read more
source§

impl BitXor<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the ^ operation. Read more
source§

impl BitXorAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitxor_assign(&mut self, rhs: PhysicalAddress)

Performs the ^= operation. Read more
source§

impl Clone for PhysicalAddress

source§

fn clone(&self) -> PhysicalAddress

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysicalAddress

source§

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

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

impl Default for PhysicalAddress

source§

fn default() -> PhysicalAddress

Returns the “default value” for a type. Read more
source§

impl Display for PhysicalAddress

source§

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

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

impl Hash for PhysicalAddress

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Add<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the + operation. Read more
source§

impl Add<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> PhysicalAddress

Performs the + operation. Read more
source§

impl AddAssign<PhysicalAddress> for PhysicalAddress

source§

fn add_assign(&mut self, rhs: PhysicalAddress)

Performs the += operation. Read more
source§

impl AddAssign<usize> for PhysicalAddress

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Binary for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the & operation. Read more
source§

impl BitAndAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitand_assign(&mut self, rhs: PhysicalAddress)

Performs the &= operation. Read more
source§

impl BitOr<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the | operation. Read more
source§

impl BitOrAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitor_assign(&mut self, rhs: PhysicalAddress)

Performs the |= operation. Read more
source§

impl BitXor<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the ^ operation. Read more
source§

impl BitXorAssign<PhysicalAddress> for PhysicalAddress

source§

fn bitxor_assign(&mut self, rhs: PhysicalAddress)

Performs the ^= operation. Read more
source§

impl Clone for PhysicalAddress

source§

fn clone(&self) -> PhysicalAddress

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysicalAddress

source§

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

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

impl Default for PhysicalAddress

source§

fn default() -> PhysicalAddress

Returns the “default value” for a type. Read more
source§

impl Display for PhysicalAddress

source§

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

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

impl Hash for PhysicalAddress

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Into<usize> for PhysicalAddress

source§

fn into(self) -> usize

Converts this type into the (usually inferred) input type.
source§

impl LowerHex for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Octal for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Ord for PhysicalAddress

source§

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

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

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl Into<usize> for PhysicalAddress

source§

fn into(self) -> usize

Converts this type into the (usually inferred) input type.
source§

impl LowerHex for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Octal for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Ord for PhysicalAddress

source§

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

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

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

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

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

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

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

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

impl PartialEq<PhysicalAddress> for PhysicalAddress

source§

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

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

impl PartialEq<PhysicalAddress> for PhysicalAddress

source§

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

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

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

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

impl PartialOrd<PhysicalAddress> for PhysicalAddress

source§

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

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

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

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

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

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

impl PartialOrd<PhysicalAddress> for PhysicalAddress

source§

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

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

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

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

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

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

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

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

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

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

impl Pointer for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Sub<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the - operation. Read more
source§

impl Sub<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> PhysicalAddress

Performs the - operation. Read more
source§

impl SubAssign<PhysicalAddress> for PhysicalAddress

source§

fn sub_assign(&mut self, rhs: PhysicalAddress)

Performs the -= operation. Read more
source§

impl SubAssign<usize> for PhysicalAddress

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl UpperHex for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Copy for PhysicalAddress

source§

impl Eq for PhysicalAddress

source§

impl FromBytes for PhysicalAddress

source§

impl StructuralEq for PhysicalAddress

source§

impl StructuralPartialEq for PhysicalAddress

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

impl Pointer for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Sub<PhysicalAddress> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: PhysicalAddress) -> PhysicalAddress

Performs the - operation. Read more
source§

impl Sub<usize> for PhysicalAddress

§

type Output = PhysicalAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> PhysicalAddress

Performs the - operation. Read more
source§

impl SubAssign<PhysicalAddress> for PhysicalAddress

source§

fn sub_assign(&mut self, rhs: PhysicalAddress)

Performs the -= operation. Read more
source§

impl SubAssign<usize> for PhysicalAddress

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl UpperHex for PhysicalAddress

source§

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

Formats the value using the given formatter.
source§

impl Copy for PhysicalAddress

source§

impl Eq for PhysicalAddress

source§

impl FromBytes for PhysicalAddress

source§

impl StructuralEq for PhysicalAddress

source§

impl StructuralPartialEq for PhysicalAddress

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/memory_structs/struct.VirtualAddress.html b/doc/memory_structs/struct.VirtualAddress.html index df881c39ab..ec6803201c 100644 --- a/doc/memory_structs/struct.VirtualAddress.html +++ b/doc/memory_structs/struct.VirtualAddress.html @@ -1,25 +1,25 @@ -VirtualAddress in memory_structs - Rust
#[repr(transparent)]
pub struct VirtualAddress(_);
Expand description

A virtual memory address, which is a usize under the hood.

-

Implementations§

source§

impl VirtualAddress

source

pub fn new(addr: usize) -> Option<VirtualAddress>

Creates a new VirtualAddress, returning an error if the address is not canonical.

+VirtualAddress in memory_structs - Rust
#[repr(transparent)]
pub struct VirtualAddress(_);
Expand description

A virtual memory address, which is a usize under the hood.

+

Implementations§

source§

impl VirtualAddress

source

pub fn new(addr: usize) -> Option<VirtualAddress>

Creates a new VirtualAddress, returning an error if the address is not canonical.

This is useful for checking whether an address is valid before using it. For example, on x86_64, virtual addresses are canonical if their upper bits (64:48] are sign-extended from bit 47, and physical addresses are canonical if their upper bits (64:52] are 0.

-
source

pub const fn new_canonical(addr: usize) -> VirtualAddress

Creates a new VirtualAddress that is guaranteed to be canonical.

-
source

pub const fn zero() -> VirtualAddress

Creates a new VirtualAddress with a value 0.

-
source

pub const fn value(&self) -> usize

Returns the underlying usize value for this VirtualAddress.

-
source

pub const fn page_offset(&self) -> usize

Returns the offset from the page boundary specified by this `VirtualAddress.

-

For example, if the [PAGE_SIZE] is 4096 (4KiB), then this will return +

source

pub const fn new_canonical(addr: usize) -> VirtualAddress

Creates a new VirtualAddress that is guaranteed to be canonical.

+
source

pub const fn zero() -> VirtualAddress

Creates a new VirtualAddress with a value 0.

+
source

pub const fn value(&self) -> usize

Returns the underlying usize value for this VirtualAddress.

+
source

pub const fn page_offset(&self) -> usize

Returns the offset from the 4K page boundary specified by this `VirtualAddress.

+

For example, for the address 0xFFFF_1578, this will return 0x578, the least significant 12 bits (12:0] of this VirtualAddress.

-

Trait Implementations§

source§

impl Add<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: VirtualAddress) -> VirtualAddress

Performs the + operation. Read more
source§

impl Add<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> VirtualAddress

Performs the + operation. Read more
source§

impl AddAssign<VirtualAddress> for VirtualAddress

source§

fn add_assign(&mut self, rhs: VirtualAddress)

Performs the += operation. Read more
source§

impl AddAssign<usize> for VirtualAddress

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Binary for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: VirtualAddress) -> VirtualAddress

Performs the & operation. Read more
source§

impl BitAndAssign<VirtualAddress> for VirtualAddress

source§

fn bitand_assign(&mut self, rhs: VirtualAddress)

Performs the &= operation. Read more
source§

impl BitOr<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the | operation. Read more
source§

impl BitOrAssign<VirtualAddress> for VirtualAddress

source§

fn bitor_assign(&mut self, rhs: VirtualAddress)

Performs the |= operation. Read more
source§

impl BitXor<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the ^ operation. Read more
source§

impl BitXorAssign<VirtualAddress> for VirtualAddress

source§

fn bitxor_assign(&mut self, rhs: VirtualAddress)

Performs the ^= operation. Read more
source§

impl Clone for VirtualAddress

source§

fn clone(&self) -> VirtualAddress

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualAddress

source§

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

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

impl Default for VirtualAddress

source§

fn default() -> VirtualAddress

Returns the “default value” for a type. Read more
source§

impl Display for VirtualAddress

source§

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

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

impl Hash for VirtualAddress

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Add<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: VirtualAddress) -> VirtualAddress

Performs the + operation. Read more
source§

impl Add<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the + operator.
source§

fn add(self, rhs: usize) -> VirtualAddress

Performs the + operation. Read more
source§

impl AddAssign<VirtualAddress> for VirtualAddress

source§

fn add_assign(&mut self, rhs: VirtualAddress)

Performs the += operation. Read more
source§

impl AddAssign<usize> for VirtualAddress

source§

fn add_assign(&mut self, rhs: usize)

Performs the += operation. Read more
source§

impl Binary for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: VirtualAddress) -> VirtualAddress

Performs the & operation. Read more
source§

impl BitAndAssign<VirtualAddress> for VirtualAddress

source§

fn bitand_assign(&mut self, rhs: VirtualAddress)

Performs the &= operation. Read more
source§

impl BitOr<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the | operation. Read more
source§

impl BitOrAssign<VirtualAddress> for VirtualAddress

source§

fn bitor_assign(&mut self, rhs: VirtualAddress)

Performs the |= operation. Read more
source§

impl BitXor<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: VirtualAddress) -> VirtualAddress

Performs the ^ operation. Read more
source§

impl BitXorAssign<VirtualAddress> for VirtualAddress

source§

fn bitxor_assign(&mut self, rhs: VirtualAddress)

Performs the ^= operation. Read more
source§

impl Clone for VirtualAddress

source§

fn clone(&self) -> VirtualAddress

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtualAddress

source§

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

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

impl Default for VirtualAddress

source§

fn default() -> VirtualAddress

Returns the “default value” for a type. Read more
source§

impl Display for VirtualAddress

source§

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

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

impl Hash for VirtualAddress

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Into<usize> for VirtualAddress

source§

fn into(self) -> usize

Converts this type into the (usually inferred) input type.
source§

impl LowerHex for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl Octal for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl Ord for VirtualAddress

source§

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

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

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl Into<usize> for VirtualAddress

source§

fn into(self) -> usize

Converts this type into the (usually inferred) input type.
source§

impl LowerHex for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl Octal for VirtualAddress

source§

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

Formats the value using the given formatter.
source§

impl Ord for VirtualAddress

source§

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

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

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

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

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

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

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

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

impl PartialEq<VirtualAddress> for VirtualAddress

source§

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

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

impl PartialEq<VirtualAddress> for VirtualAddress

source§

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

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

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

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

impl PartialOrd<VirtualAddress> for VirtualAddress

source§

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

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

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

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

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

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

impl PartialOrd<VirtualAddress> for VirtualAddress

source§

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

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

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

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

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

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

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

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

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

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

impl Pointer for VirtualAddress

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Sub<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: VirtualAddress) -> VirtualAddress

Performs the - operation. Read more
source§

impl Sub<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> VirtualAddress

Performs the - operation. Read more
source§

impl SubAssign<VirtualAddress> for VirtualAddress

source§

fn sub_assign(&mut self, rhs: VirtualAddress)

Performs the -= operation. Read more
source§

impl SubAssign<usize> for VirtualAddress

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl UpperHex for VirtualAddress

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for VirtualAddress

source§

impl Eq for VirtualAddress

source§

impl FromBytes for VirtualAddress

source§

impl StructuralEq for VirtualAddress

source§

impl StructuralPartialEq for VirtualAddress

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +operator. Read more

source§

impl Pointer for VirtualAddress

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Sub<VirtualAddress> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: VirtualAddress) -> VirtualAddress

Performs the - operation. Read more
source§

impl Sub<usize> for VirtualAddress

§

type Output = VirtualAddress

The resulting type after applying the - operator.
source§

fn sub(self, rhs: usize) -> VirtualAddress

Performs the - operation. Read more
source§

impl SubAssign<VirtualAddress> for VirtualAddress

source§

fn sub_assign(&mut self, rhs: VirtualAddress)

Performs the -= operation. Read more
source§

impl SubAssign<usize> for VirtualAddress

source§

fn sub_assign(&mut self, rhs: usize)

Performs the -= operation. Read more
source§

impl UpperHex for VirtualAddress

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for VirtualAddress

source§

impl Eq for VirtualAddress

source§

impl FromBytes for VirtualAddress

source§

impl StructuralEq for VirtualAddress

source§

impl StructuralPartialEq for VirtualAddress

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/memory_structs/trait.PageSize.html b/doc/memory_structs/trait.PageSize.html new file mode 100644 index 0000000000..1ebebe4783 --- /dev/null +++ b/doc/memory_structs/trait.PageSize.html @@ -0,0 +1,8 @@ +PageSize in memory_structs - Rust
pub trait PageSize: Ord + PartialOrd + Clone + Copy + Sealed {
+    const SIZE: MemChunkSize;
+    const NUM_4K_PAGES: usize;
+    const SIZE_IN_BYTES: usize;
+}
Expand description

Trait that represents the size of a page or frame, i.e., for normal or huge pages.

+

This is used to parameterize Page- and Frame-related types with a page size, +in order to define normal and huge pages in a generic manner.

+

Required Associated Constants§

Implementors§

source§

impl PageSize for Page1G

source§

const SIZE: MemChunkSize = MemChunkSize::Huge1G

source§

const NUM_4K_PAGES: usize = 262_144usize

source§

const SIZE_IN_BYTES: usize = 1_073_741_824usize

source§

impl PageSize for Page2M

source§

const SIZE: MemChunkSize = MemChunkSize::Huge2M

source§

const NUM_4K_PAGES: usize = 512usize

source§

const SIZE_IN_BYTES: usize = 2_097_152usize

source§

impl PageSize for Page4K

source§

const SIZE: MemChunkSize = MemChunkSize::Normal4K

source§

const NUM_4K_PAGES: usize = 1usize

source§

const SIZE_IN_BYTES: usize = 4_096usize

\ No newline at end of file diff --git a/doc/page_table_entry/struct.UnmappedFrameRange.html b/doc/page_table_entry/struct.UnmappedFrameRange.html index 1020c4ab60..4b2b110cee 100644 --- a/doc/page_table_entry/struct.UnmappedFrameRange.html +++ b/doc/page_table_entry/struct.UnmappedFrameRange.html @@ -1,4 +1,4 @@ -UnmappedFrameRange in page_table_entry - Rust
pub struct UnmappedFrameRange(_);
Expand description

A range of frames that have been unmapped from a PageTableEntry +UnmappedFrameRange in page_table_entry - Rust

pub struct UnmappedFrameRange(_);
Expand description

A range of frames that have been unmapped from a PageTableEntry that previously mapped that frame exclusively (i.e., “owned it”).

UnmappedFrameRange can be used to create an UnmappedFrames and then safely deallocated within the frame_allocator.

@@ -6,7 +6,7 @@

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 size_in_bytes(&self) -> usize

Returns the size of this range in bytes.

pub fn contains_address(&self, addr: PhysicalAddress) -> bool

Returns true if this FrameRange contains the given [PhysicalAddress].

pub fn offset_of_address(&self, addr: PhysicalAddress) -> Option<usize>

Returns the offset of the given [PhysicalAddress] within this FrameRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of [Frame]s, this returns None.

@@ -16,18 +16,18 @@
Examples

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.

+

pub fn to_extended(&self, to_include: Frame<P>) -> FrameRange<P>

Returns a new separate FrameRange that is extended to include the given [Frame].

+

pub fn contains_range(&self, other: &FrameRange<P>) -> bool

Returns true if the other FrameRange is fully contained within this FrameRange.

+

pub fn overlap(&self, other: &FrameRange<P>) -> Option<FrameRange<P>>

Returns an inclusive FrameRange representing the [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>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

+

Methods from Deref<Target = RangeInclusive<Frame<P>>>§

source

pub fn start(&self) -> &Idx

Returns the lower bound of the range (inclusive).

source

pub fn end(&self) -> &Idx

Returns the upper bound of the range (inclusive).

source

pub fn is_empty(&self) -> bool

Returns true if the range contains no items.

source

pub fn iter(&self) -> RangeInclusiveIterator<Idx>

Returns an iterator with the same start and end values as the range.

source

pub fn contains<U>(&self, item: &U) -> boolwhere Idx: PartialOrd<U>, U: PartialOrd<Idx> + ?Sized,

Returns true if item is contained in the range.

-

Trait Implementations§

source§

impl Deref for UnmappedFrameRange

§

type Target = FrameRange

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +

Trait Implementations§

source§

impl Deref for UnmappedFrameRange

§

type Target = FrameRange<Page4K>

The resulting type after dereferencing.
source§

fn deref(&self) -> &FrameRange

Dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/search-index.js b/doc/search-index.js index 9e480dbbcc..f3d886e604 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -85,10 +85,10 @@ var searchIndex = JSON.parse('{\ "logger":{"doc":"A basic logger implementation for system-wide logging in …","t":"RRRFFFFFF","n":["DEFAULT_LOG_LEVEL","EARLY_LOG_BUFFER_SIZE","LOG_MAX_WRITERS","early_init","init","set_log_level","take_early_log_writers","write_fmt","write_str"],"q":[[0,"logger"]],"d":["By default, Theseus will print all log levels, including …","The size of the buffer used to save early log messages.","The maximum number of output streams that a logger can …","Initializes Theseus’s early system logger for use before …","Initialize the fully-featured Theseus system logger.","Set the log level, which determines whether a given log …","Removes all of the writers (output streams) from the early …","Convenience function for writing formatted arguments to …","Convenience function for writing a simple string to the …"],"i":[0,0,0,0,0,0,0,0,0],"f":[0,0,0,[[[2,[1]],3]],[[[2,[1]],3]],[1],[[],[[5,[[2,[4]]]]]],[6,7],[8,7]],"c":[],"p":[[4,"Level"],[4,"Option"],[8,"IntoIterator"],[3,"SerialPort"],[15,"array"],[3,"Arguments"],[6,"Result"],[15,"str"]]},\ "madt":{"doc":"Support for the MADT ACPI table, which includes interrupt …","t":"NNNNNRDEDDDDDDDNNMMLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLFLMMMMLLLLLLLLLLLLLLLLLMMFMLLLLLLLLLLMLMLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["IntSrcOverride","IoApic","LocalApic","LocalApicAddressOverride","LocalX2Apic","MADT_SIGNATURE","Madt","MadtEntry","MadtIntSrcOverride","MadtIoApic","MadtIter","MadtLocalApic","MadtLocalApicAddressOverride","MadtLocalX2Apic","MadtNonMaskableInterrupt","NonMaskableInterrupt","UnknownOrCorrupt","address","apic_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bsp_init","bus_source","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","find_nmi_entry_for_processor","flags","flags","flags","flags","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get","gsi","gsi_base","handle","id","into","into","into","into","into","into","into","into","into","into_iter","irq_source","iter","lint","local_apic_phys_addr","next","phys_addr","processor","processor","processor","sdt","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","x2apic_id"],"q":[[0,"madt"]],"d":["A Interrupt Source Override MADT entry.","A IOAPIC MADT entry.","A Local APIC MADT entry.","A Local APIC Address Override MADT entry.","A Local X2APIC MADT entry.","","A wrapper around the MADT ACPI table (Multiple APIC …","The set of possible MADT Entries.","MADT Interrupt Source Override","MADT I/O APIC","An Iterator over the dynamic entries of the MADT. Its …","MADT Local APIC","MADT Local APIC Address Override. If this struct exists, …","MADT Local X2APIC","MADT Non-maskable Interrupt. Use these to configure the …","A Non-Maskable Interrupt MADT entry.","The MADT table had an entry of an unknown type or …","I/O APIC address","Local APIC ID","","","","","","","","","","","","","","","","","","","Performs initialization functions of the IOAPIC and …","Bus Source","","","","","","","","","","","","","","","","","Finds the Non-Maskable Interrupt (NMI) entry in the MADT …","Returns the flags value in this MADT table.","Flags. 1 means that the processor is enabled","Flags","Flags","Flags. 1 means that the processor is enabled","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Finds the MADT in the given AcpiTables and returns a …","Global system interrupt","Global system interrupt base","The handler for parsing the MADT table and adding it to …","I/O APIC ID","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","IRQ Source","Returns an Iterator over the MADT’s entries, which are …","LINT (either 0 or 1)","Returns the Local APIC physical address value in this MADT …","","Local APIC physical address","Processor ID","which processor this is for, 0xFF means all processors","Processor ID","Returns a reference to the Sdt header in this MADT table.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Local X2APIC ID"],"i":[6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,6,6,8,7,1,5,6,7,8,9,10,11,12,1,5,6,7,8,9,10,11,12,1,9,5,6,7,8,9,10,11,12,5,6,7,8,9,10,11,12,0,1,7,9,10,12,6,7,8,9,10,11,12,1,5,6,7,8,9,10,11,12,1,9,8,0,8,1,5,6,7,8,9,10,11,12,5,9,1,10,1,5,11,7,10,12,1,5,6,7,8,9,10,11,12,1,5,6,7,8,9,10,11,12,1,5,6,7,8,9,10,11,12,1,5,6,7,8,9,10,11,12,12],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,2],[[4,[3]]]],0,[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[13,5]],[1,13],0,0,0,0,[[6,14],15],[[7,14],15],[[8,14],15],[[9,14],15],[[10,14],15],[[11,14],15],[[12,14],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[16,[[17,[1]]]],0,0,[[16,18,19,20],[[4,[3]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[1,5],0,[1,13],[5,17],0,0,0,0,[1,21],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],0],"c":[],"p":[[3,"Madt"],[3,"PageTable"],[15,"str"],[4,"Result"],[3,"MadtIter"],[4,"MadtEntry"],[3,"MadtLocalApic"],[3,"MadtIoApic"],[3,"MadtIntSrcOverride"],[3,"MadtNonMaskableInterrupt"],[3,"MadtLocalApicAddressOverride"],[3,"MadtLocalX2Apic"],[15,"u32"],[3,"Formatter"],[6,"Result"],[3,"AcpiTables"],[4,"Option"],[6,"AcpiSignature"],[15,"usize"],[3,"PhysicalAddress"],[3,"Sdt"],[3,"TypeId"]]},\ "memfs":{"doc":"This crate contains an implementation of an in-memory …","t":"DLLLLLLLLLLLLLLLLL","n":["MemFile","as_mapping","borrow","borrow_mut","create","flush","from","from_mapped_pages","get_name","get_parent_dir","into","len","read_at","set_parent_dir","try_from","try_into","type_id","write_at"],"q":[[0,"memfs"]],"d":["The struct that represents a file in memory that is backed …","","","","Allocates writable memory space for the given contents and …","","Returns the argument unchanged.","Creates a new MemFile in the given parent directory with …","","","Calls U::from(self).","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,[[4,[2,3]]]],[[]],[[]],[[5,6],[[4,[7,3]]]],[1,[[4,[8]]]],[[]],[[2,5,9,6],[[4,[7,3]]]],[1,5],[1,[[10,[6]]]],[[]],[1,9],[[1,[12,[11]],9],[[4,[9,8]]]],[[1,13]],[[],4],[[],4],[[],14],[[1,[12,[11]],9],[[4,[9,8]]]]],"c":[],"p":[[3,"MemFile"],[3,"MappedPages"],[15,"str"],[4,"Result"],[3,"String"],[6,"DirRef"],[6,"FileRef"],[4,"IoError"],[15,"usize"],[4,"Option"],[15,"u8"],[15,"slice"],[6,"WeakDirRef"],[3,"TypeId"]]},\ -"memory":{"doc":"This crate implements the main memory management subsystem …","t":"SSNNGDENNDDSDDSSSSRSSDDDNSDDRNDDDEGIDSSRSSSRDDDDDDDNGSSDSSSNSSSSLLLLLLLLLLLLLLMLLLLLLLLFFFFFFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLMFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLMLLFLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["ACCESSED","ACCESSED","AlignedTo","Allocated","AllocatedFrames","AllocatedPages","AllocationRequest","Any","AtVirtualAddress","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","CopyableFrameRange","CopyablePageRange","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","DMA_FLAGS","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Immutable","InitialMemoryMappings","MMIO_FLAGS","Mapped","MappedPages","Mapper","MemoryManagementInfo","MemoryState","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","PageRange","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","Unmapped","UnmappedFrames","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","WithinRange","_GLOBAL","_GLOBAL","_USER_ACCESSIBLE","_USER_ACCESSIBLE","accessed","accessed","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","additional","address_at_offset","address_at_offset","address_at_offset","adjust_for_higher_level_pte","align_up","align_up","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","as_mut","as_mut","as_ref","as_ref","as_slice","as_slice_mut","as_type","as_type_mut","backward_checked","backward_checked","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","boot_info","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","complement","complement","containing_address","containing_address","contains","contains","contains_address","contains_address","contains_range","contains_range","create_contiguous_mapping","create_identity_mapping","create_mapping","data","deep_copy","default","default","default","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","device_memory","device_memory","difference","difference","dirty","dirty","drop","drop","dump_pte","empty","empty","empty","empty","empty","empty","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","exclusive","exclusive","executable","executable","extend","extend","extra_mapped_pages","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_mut","from_mut","from_phys_addr","from_virt_addr","get_kernel_mmi_ref","get_pat_index","hash","hash","hash","hash","hash","hash","identity","init","init_post_heap","inner_ref","inner_ref","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","map_allocated_pages","map_allocated_pages_to","map_frame_range","merge","merge","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","offset_of_address","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_table","page_table","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pat_index","physical_address","range","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","size_in_pages","split","split","stack","stack_guard","start","start_address","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","switch","symmetric_difference","symmetric_difference","text","to_extended","to_extended","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","toggle","toggle","translate","translate","translate_page","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","unmap_into_parts","valid","valid","value","value","with","writable","writable","zero","zero","alignment_4k_pages"],"q":[[0,"memory"],[618,"memory::AllocationRequest"]],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","The allocated pages may be located at any virtual address, …","Memory is allocated and can be used for a mapping","A type alias for Frames in the Allocated state.","Represents a range of allocated VirtualAddresses, …","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","A FrameRange that implements Copy","A PageRange that implements Copy","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","Mapping flags that can be used to map DMA (Direct Memory …","Note: code that invokes memory management functions in …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","The set of identity mappings that should be dropped before …","A Frame is a chunk of physical memory aligned to a …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","If set, this page table entry represents a “huge” …","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","Mapping flags that can be used to map MMIO registers.","Memory is mapped (PTE has been set)","Represents a contiguous range of virtual memory pages that …","","This holds all the information for a Task’s memory …","The possible states that a range of exclusively-owned …","A shareable reference to a MemoryManagementInfo struct …","A trait for parameterizing a BorrowedMappedPages or …","A marker type used to indicate that a BorrowedMappedPages …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","Page size is 4096 bytes, 4KiB pages.","","","(For P1-level (lowest level) page tables ONLY): If the …","A mask for the bits of a page table entry that contain the …","A Page is a chunk of virtual memory aligned to a PAGE_SIZE …","A range of Pages 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 …","Page table entry (PTE) flags on x86_64.","Page table entry (PTE) flags on x86_64.","Memory has been unmapped (PTE has been cleared)","A type alias for Frames in the Unmapped state.","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","A virtual memory address, which is a usize under the hood.","If set, this page is writable.If not set, this page is …","If set, this page is writable.If not set, this page is …","If set, writes to this page go directly to memory.It not …","The allocated pages can be located anywhere within the …","If set, this page is mapped identically across all address …","If set, this page is mapped identically across all address …","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (ring 3) can access this page.If not …","Returns a copy of this PteFlags with the ACCESSED bit set …","Returns a copy of this PteFlagsX86_64 with the ACCESSED …","","","","","","","","","","","","","The list of additional mappings that must be kept forever.","Returns the VirtualAddress at the given offset into this …","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","Returns the set containing all flags.","Returns the set containing all flags.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_slice(), but returns a mutable …","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_type(), but returns a mutable …","","","Returns the intersection between the two sets of flags.","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","","","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","","","Returns the union of the two sets of flags.","Adds the set of flags.","","","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the left flags, but with all the right flags …","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","Toggles the set of flags.","The boot information mappings.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the Page containing the given VirtualAddress.","Returns the Frame containing the given PhysicalAddress.","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","A convenience function that creates a new memory mapping …","Creates an identity mapping at a random available virtual …","A convenience function that creates a new memory mapping. …","The kernel’s .data section mappings/","Creates a deep copy of this MappedPages memory region, by …","","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the DEVICE_MEMORY bit …","Returns a copy of this PteFlagsX86_64 with the …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns a copy of this PteFlags with the DIRTY bit set or …","Returns a copy of this PteFlagsX86_64 with the DIRTY bit …","","","Dumps all page table entries at all four page table levels …","Returns an empty set of flags.","Returns an empty AllocatedPages object that performs no …","Returns an empty set of flags.","Creates a PageRange that will always yield None when …","Creates a FrameRange that will always yield None when …","Returns an empty MappedPages object that performs no …","Returns the ending Page (inclusive) in this range of pages.","","","","","","","","","","","","Returns a copy of this PteFlags with the EXCLUSIVE bit set …","Returns a copy of this PteFlagsX86_64 with the EXCLUSIVE …","Returns a copy of this PteFlags with the NOT_EXECUTABLE …","Returns a copy of this PteFlagsX86_64 with the …","","","The list of additional memory mappings that have the same …","Returns the flags that describe this MappedPages page …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the frame boundary specified by …","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Immutably borrows the given MappedPages as a slice &[T] of …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","Mutably borrows the given MappedPages as an instance of …","Mutably borrows the given MappedPages as a slice &mut [T] …","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","Returns a reference to the kernel’s MemoryManagementInfo…","","","","","","","","The list of identity mappings that should be dropped …","Initializes the virtual memory management system. Consumes …","Finishes initializing the memory management system after …","Returns a reference to the inner MappedPages value (more …","Returns a reference to the inner borrowed MappedPages.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","A convenience function for BorrowedMappedPages::from().","A convenience function for BorrowedMappedPages::from_mut().","A convenience function for BorrowedSliceMappedPages::from()…","A convenience function for …","Consumes this object and returns the inner MappedPages …","Consumes this object and returns the inner MappedPages.","","","","","Returns true if all flags are currently set.","Returns true if all flags are currently set.","","","","","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","","","","","","","","","","Maps the given AllocatedPages to randomly chosen …","Maps the given virtual AllocatedPages to the given …","A convenience function that maps randomly-allocated pages …","Merges the given AllocatedPages object ap into this …","Merges the given MappedPages object mp into this …","Returns a new PteFlags with the default value, in which:","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Returns a new PteFlagsX86_64 with the default value, in …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Initializes a new top-level P4 PageTable whose root is …","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the number of this Page.","Returns the number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the page boundary specified by …","the PageTable that should be switched to when this Task is …","The currently active page table.","","","","","","","","","Returns a copy of this PteFlagsX86_64 with the PAT index …","Returns the physical address of this page table’s …","Returns a reference to the inner PageRange, which is …","Change the mapping flags of this MappedPages’s page …","Removes the specified flags in-place.","Removes the specified flags in-place.","The kernel’s .rodata section mappings.","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Set the function callback that will be invoked every time …","Returns the size in bytes of this range of pages.","Returns the size of this range in number of bytes.","Returns the size of this range in number of bytes.","Returns the number of Frames covered by this iterator.","Returns the size in number of pages of this range of pages.","Returns the number of Pages covered by this iterator.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","Returns the starting Page in this range of pages.","Returns the starting VirtualAddress in this range of pages.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","Returns the set difference of the two sets of flags.","","","","","Returns the set difference of the two sets of flags.","","","Disables all flags enabled in the set.","","","","","Disables all flags enabled in the set.","","","Switches from the currently-active page table (this …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","The kernel’s .text section mappings, which includes .init…","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","A convenience function to translate the given virtual …","Translates a VirtualAddress to a PhysicalAddress by …","Translates a virtual memory Page to a physical memory Frame…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Consumes and unmaps this MappedPages object without …","Returns a copy of this PteFlags with the VALID bit set or …","Returns a copy of this PteFlagsX86_64 with the VALID bit …","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Temporarily maps the given other PageTable to the …","Returns a copy of this PteFlags with the WRITABLE bit set …","Returns a copy of this PteFlagsX86_64 with the WRITABLE …","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0.",""],"i":[1,3,16,35,0,0,0,16,16,0,0,3,0,0,1,3,1,3,0,1,3,0,0,0,35,3,0,0,0,35,0,0,0,0,0,0,0,1,3,0,3,3,3,0,0,0,0,0,0,0,0,35,0,1,3,0,1,3,3,16,1,3,1,3,1,3,4,4,6,6,7,8,4,4,6,6,7,8,42,9,11,12,3,7,8,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,21,22,19,19,19,19,7,8,1,4,6,3,1,4,6,3,1,4,6,3,1,4,6,3,1,3,1,4,6,3,1,4,6,3,42,35,1,4,32,9,21,21,6,16,3,22,22,7,8,18,44,11,27,12,28,34,19,41,42,43,35,1,4,32,9,21,21,6,16,3,22,22,7,8,18,44,11,27,12,28,34,19,41,42,43,1,4,6,3,7,8,11,27,12,28,1,4,6,3,7,8,11,27,12,28,1,4,21,6,3,22,7,8,1,3,7,8,1,3,11,12,11,12,0,0,0,42,19,1,4,6,3,21,22,11,12,34,19,21,22,11,12,34,1,3,1,3,1,3,9,19,32,1,9,3,11,12,19,9,35,1,4,21,6,3,22,7,8,11,12,1,3,1,3,1,3,41,19,1,1,1,1,1,4,4,4,4,4,4,4,9,6,6,6,6,6,6,6,3,3,3,3,3,7,8,11,12,34,19,41,42,43,7,8,6,35,1,1,4,32,9,21,21,6,16,3,3,22,22,7,8,18,44,11,11,27,27,12,12,28,28,34,19,41,42,43,1,3,1,3,1,3,1,3,21,22,12,11,0,3,1,4,21,6,3,22,42,0,0,21,22,1,3,1,3,1,3,35,1,4,4,32,9,21,6,6,16,3,22,7,8,18,44,11,27,12,28,34,19,41,42,43,19,19,19,19,21,22,11,12,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,32,32,0,9,19,1,4,6,3,11,12,4,6,34,1,3,7,8,9,11,12,11,12,7,7,7,7,4,41,42,1,4,21,6,3,22,7,8,3,34,9,19,1,3,42,1,3,0,9,11,12,12,9,11,9,19,42,42,9,9,7,8,11,12,7,8,1,4,4,6,6,3,7,8,1,4,4,6,6,3,7,8,34,1,3,42,11,12,1,4,6,3,7,8,11,27,12,28,4,6,1,3,0,32,32,35,1,4,32,9,21,6,16,3,22,7,8,18,44,11,27,12,28,34,19,41,42,43,35,1,4,32,9,21,6,16,3,22,7,8,18,44,11,27,12,28,34,19,41,42,43,35,1,4,32,9,21,6,16,3,22,7,8,18,44,11,27,12,28,34,19,41,42,43,1,3,19,1,3,4,6,34,1,3,4,6,55],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[3,2],3],[[4,5],4],[[4,4],4],[[6,5],6],[[6,6],6],[[7,5],7],[[8,5],8],[[4,4]],[[4,5]],[[6,5]],[[6,6]],[[7,5]],[[8,5]],0,[[9,5],[[10,[4]]]],[[11,5],[[10,[4]]]],[[12,5],[[10,[6]]]],[3,3],[[7,5],7],[[8,5],8],[[],1],[[],3],[5,[[10,[13]]]],[[6,5],[[15,[13,14]]]],[5,[[10,[13]]]],[[6,5],[[15,[13,14]]]],[[[10,[6]],5],[[15,[14]]]],[[[10,[6]],5],[[15,[14]]]],[5,[[10,[9]]]],[[4,5],[[15,[9,14]]]],[5,[[10,[9]]]],[[4,5],[[15,[9,14]]]],[[16,5],[[15,[14]]]],[[5,11],[[15,[9,14]]]],[[16,5],[[15,[14]]]],[[5,11],[[15,[9,14]]]],[[[21,[17,18,[20,[19]]]]],17],[[[22,[17,18,[20,[19]]]]],[[23,[17]]]],[[[21,[17,24,[25,[19]]]]],17],[[[22,[17,24,[25,[19]]]]],[[23,[17]]]],[[19,5,5],[[15,[[23,[17]],14]]]],[[19,5,5],[[15,[[23,[17]],14]]]],[[19,5],[[15,[17,14]]]],[[19,5],[[15,[17,14]]]],[[7,5],[[10,[7]]]],[[8,5],[[10,[8]]]],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1]],[[4,4]],[[6,6]],[[3,3]],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1]],[[4,4]],[[6,6]],[[3,3]],[1,26],[3,26],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1]],[[4,4]],[[6,6]],[[3,3]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[[21,[17,24,[25,[19]]]]],17],[[]],[[]],[[]],[[]],[[[22,[17,24,[25,[19]]]]],[[23,[17]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[21,[17,18,[20,[19]]]]],17],[[]],[[]],[[]],[[]],[[]],[[[22,[17,18,[20,[19]]]]],[[23,[17]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[4,4],[6,6],[3,3],[7,7],[8,8],[11,11],[27,27],[12,12],[28,28],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,1],29],[[4,4],29],[[[21,[[0,[17,30]],24,[25,[19]]]],[21,[[0,[17,30]],24,[25,[19]]]]],29],[[6,6],29],[[3,3],29],[[[22,[[0,[17,30]],24,[25,[19]]]],[22,[[0,[17,30]],24,[25,[19]]]]],29],[[7,7],29],[[8,8],29],[1,1],[3,3],[4,7],[6,8],[[1,1],2],[[3,3],2],[[11,4],2],[[12,6],2],[[11,11],2],[[12,12],2],[[5,[31,[3]]],[[15,[14]]]],[[5,[31,[3]]],[[15,[19,14]]]],[[5,[31,[3]]],[[15,[19,14]]]],0,[[19,32,[10,[[31,[3]]]]],[[15,[19,14]]]],[[],1],[[],4],[[],6],[[],3],[[[21,[17,24,[25,[19]]]]],17],[[[22,[17,24,[25,[19]]]]],[[23,[17]]]],[11,[[33,[7]]]],[12,[[33,[8]]]],[34,32],[19,9],[[[21,[17,18,[20,[19]]]]],17],[[[22,[17,18,[20,[19]]]]],[[23,[17]]]],[11,[[33,[7]]]],[12,[[33,[8]]]],[34,32],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[9],[19],[[32,4]],[[],1],[[],9],[[],3],[[],11],[[],12],[[],19],[9,7],[[35,35],2],[[1,1],2],[[4,4],2],[[[21,[[0,[17,36]],24,[25,[19]]]],[21,[[0,[17,36]],24,[25,[19]]]]],2],[[6,6],2],[[3,3],2],[[[22,[[0,[17,36]],24,[25,[19]]]],[22,[[0,[17,36]],24,[25,[19]]]]],2],[[7,7],2],[[8,8],2],[[11,11],2],[[12,12],2],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[[1,37]],[[3,37]],0,[19,3],[[1,38],[[15,[39]]]],[[1,38],[[15,[39]]]],[[1,38],[[15,[39]]]],[[1,38],[[15,[39]]]],[[1,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[4,38],[[15,[39]]]],[[9,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[6,38],[[15,[39]]]],[[3,38],[[15,[39]]]],[[3,38],[[15,[39]]]],[[3,38],[[15,[39]]]],[[3,38],[[15,[39]]]],[[3,38],[[15,[39]]]],[[7,38],[[15,[39]]]],[[8,38],[[15,[39]]]],[[11,38],[[15,[39]]]],[[12,38],[[15,[39]]]],[[34,38],40],[[19,38],40],[[41,38],40],[[42,38],40],[[43,38],40],[[7,5],[[10,[7]]]],[[8,5],[[10,[8]]]],[6,5],[[]],[3,1],[[]],[[]],[[]],[[]],[[]],[[[25,[19]],5],[[15,[[21,[17,44,[25,[19]]]]]]]],[[]],[[]],[1,3],[[]],[[[25,[19]],5,5],[[15,[[22,[17,44,[25,[19]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[27,11],[11,27],[[]],[[]],[28,12],[[]],[12,28],[[]],[[]],[[]],[[]],[[]],[26,[[10,[1]]]],[26,[[10,[3]]]],[26,1],[26,3],[26,1],[26,3],[37,1],[37,3],[[[20,[19]],5],[[15,[[21,[17,18,[20,[19]]]]]]]],[[[20,[19]],5,5],[[15,[[22,[17,18,[20,[19]]]]]]]],[[6,5],12],[[4,5],11],[[],[[10,[45]]]],[3,46],[[1,47]],[[4,47]],[[[21,[[0,[17,48]],24,[25,[19]]]],47]],[[6,47]],[[3,47]],[[[22,[[0,[17,48]],24,[25,[19]]]],47]],0,[[49,4],[[15,[42,14]]]],[[34,19,19],45],[[[21,[17,24,[25,[19]]]]],[[25,[19]]]],[[[22,[17,24,[25,[19]]]]],[[25,[19]]]],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[[]],[[]],[4,5],[[]],[[]],[[]],[[]],[6,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,5],[[15,[[21,[17,44]]]]]],[[19,5],[[15,[[21,[17,18]]]]]],[[19,5,5],[[15,[[22,[17,44]]]]]],[[19,5,5],[[15,[[22,[17,18]]]]]],[[[21,[17,24,[25,[19]]]]],[[25,[19]]]],[[[22,[17,24,[25,[19]]]]],[[25,[19]]]],[11],[12],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[3,2],[1,2],[3,2],[1,2],[3,2],[[32,9,[31,[3]]],[[15,[19,14]]]],[[32,9,50,[31,[3]]],[[15,[19,14]]]],[[6,5,[31,[3]]],[[15,[19,14]]]],[[9,9],[[15,[9]]]],[[19,19],15],[[],1],[5,[[10,[4]]]],[5,[[10,[6]]]],[[],3],[[7,7],11],[[8,8],12],[5,4],[5,6],[[34,50,[10,[9]]],[[15,[34,14]]]],[1,1],[3,3],[7,5],[8,5],[[9,4],[[10,[5]]]],[[11,4],[[10,[5]]]],[[12,6],[[10,[5]]]],[[11,11],[[10,[11]]]],[[12,12],[[10,[12]]]],[7,5],[7,5],[7,5],[7,5],[4,5],0,0,[[1,1],[[10,[29]]]],[[4,4],[[10,[29]]]],[[[21,[[0,[17,51]],24,[25,[19]]]],[21,[[0,[17,51]],24,[25,[19]]]]],[[10,[29]]]],[[6,6],[[10,[29]]]],[[3,3],[[10,[29]]]],[[[22,[[0,[17,51]],24,[25,[19]]]],[22,[[0,[17,51]],24,[25,[19]]]]],[[10,[29]]]],[[7,7],[[10,[29]]]],[[8,8],[[10,[29]]]],[[3,46],3],[34,6],[9,11],[[19,32,[31,[3]]],[[15,[14]]]],[[1,1]],[[3,3]],0,[[1,1,2]],[[3,3,2]],[[]],[9,5],[11,5],[12,5],[12,5],[9,5],[11,5],[[9,7],[[15,[9]]]],[[19,7],[[15,[19]]]],0,0,[9,7],[9,4],[7,4],[8,6],[11,4],[12,6],[[7,7],[[10,[5]]]],[[8,8],[[10,[5]]]],[[1,1],1],[[4,5],4],[[4,4],4],[[6,6],6],[[6,5],6],[[3,3],3],[[7,5],7],[[8,5],8],[[1,1]],[[4,5]],[[4,4]],[[6,5]],[[6,6]],[[3,3]],[[7,5]],[[8,5]],[[34,34]],[[1,1],1],[[3,3],3],0,[[11,7],11],[[12,8],12],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],52],[[],52],[[1,1]],[[3,3]],[4,[[10,[6]]]],[[32,4],[[10,[6]]]],[[32,7],[[10,[8]]]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[1,1],1],[[3,3],3],[[19,32],[[15,[19]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[34,34,54],[[15,[14]]]],[[1,2],1],[[3,2],3],[[],4],[[],6],0],"c":[],"p":[[3,"PteFlags"],[15,"bool"],[3,"PteFlagsArch"],[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"Page"],[3,"Frame"],[3,"AllocatedPages"],[4,"Option"],[3,"PageRange"],[3,"FrameRange"],[3,"Frames"],[15,"str"],[4,"Result"],[4,"AllocationRequest"],[8,"FromBytes"],[3,"Mutable"],[3,"MappedPages"],[8,"BorrowMut"],[3,"BorrowedMappedPages"],[3,"BorrowedSliceMappedPages"],[15,"slice"],[8,"Mutability"],[8,"Borrow"],[15,"u64"],[3,"CopyablePageRange"],[3,"CopyableFrameRange"],[4,"Ordering"],[8,"Ord"],[8,"Into"],[3,"Mapper"],[3,"RangeInclusive"],[3,"PageTable"],[4,"MemoryState"],[8,"PartialEq"],[8,"IntoIterator"],[3,"Formatter"],[3,"Error"],[6,"Result"],[3,"MemoryManagementInfo"],[3,"InitialMemoryMappings"],[3,"EarlyIdentityMappedPages"],[3,"Immutable"],[6,"MmiRef"],[15,"u8"],[8,"Hasher"],[8,"Hash"],[8,"BootInformation"],[6,"AllocatedFrames"],[8,"PartialOrd"],[3,"String"],[3,"TypeId"],[8,"FnOnce"],[13,"AlignedTo"]],"a":{"cache":[246,247,417,418],"cacheable":[246,247,417,418],"mmi":[32],"next_multiple_of":[83,84],"no_exec":[275,276,425,426],"non-cacheable":[246,247,417,418],"page attribute table":[362,470],"pat":[362,470],"present":[428,429,609,610],"read_only":[430,431,614,615],"slot":[362,470]}},\ +"memory":{"doc":"This crate implements the main memory management subsystem …","t":"SSNNGDENNDDSDDSSSSRSSDDDNSNNDDRNDDEDEGIDSSSNRSSSRDDDDDIDDDDDSSNGSSDSSSNSSSSLLLLLLLLLLLLLLMLLLLLLLLFFFFFFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLMFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLMLLFLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["ACCESSED","ACCESSED","AlignedTo","Allocated","AllocatedFrames","AllocatedPages","AllocationRequest","Any","AtVirtualAddress","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","CopyableFrameRange","CopyablePageRange","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","DMA_FLAGS","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Huge1G","Huge2M","Immutable","InitialMemoryMappings","MMIO_FLAGS","Mapped","MappedPages","Mapper","MemChunkSize","MemoryManagementInfo","MemoryState","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","NUM_4K_PAGES","Normal4K","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PageTable","PhysicalAddress","PteFlags","PteFlagsArch","PteFlagsX86_64","SIZE","SIZE_IN_BYTES","Unmapped","UnmappedFrames","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","WithinRange","_GLOBAL","_GLOBAL","_USER_ACCESSIBLE","_USER_ACCESSIBLE","accessed","accessed","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","additional","address_at_offset","address_at_offset","address_at_offset","adjust_for_higher_level_pte","align_up","align_up","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_frames_by_bytes_deferred","allocate_frames_deferred","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","allocate_pages_by_bytes_deferred","allocate_pages_by_bytes_in_range","allocate_pages_deferred","allocate_pages_in_range","as_mut","as_mut","as_ref","as_ref","as_slice","as_slice_mut","as_type","as_type_mut","backward_checked","backward_checked","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","boot_info","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","complement","complement","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains","contains","contains_address","contains_address","contains_range","contains_range","create_contiguous_mapping","create_identity_mapping","create_mapping","data","deep_copy","default","default","default","default","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","device_memory","device_memory","difference","difference","dirty","dirty","drop","drop","dump_pte","empty","empty","empty","empty","empty","empty","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","exclusive","exclusive","executable","executable","extend","extend","extra_mapped_pages","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_mut","from_mut","from_phys_addr","from_virt_addr","get_kernel_mmi_ref","get_pat_index","hash","hash","hash","hash","hash","hash","identity","init","init_post_heap","inner_ref","inner_ref","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","map_allocated_pages","map_allocated_pages_to","map_frame_range","merge","merge","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","offset_of_address","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","page_table","page_table","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pat_index","physical_address","range","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","size_in_pages","split","split","stack","stack_guard","start","start_address","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","switch","symmetric_difference","symmetric_difference","text","to_extended","to_extended","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","toggle","toggle","translate","translate","translate_page","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","unmap_into_parts","valid","valid","value","value","with","writable","writable","zero","zero","alignment_4k_pages"],"q":[[0,"memory"],[701,"memory::AllocationRequest"]],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","The allocated pages may be located at any virtual address, …","Memory is allocated and can be used for a mapping","A type alias for Frames in the Allocated state.","Represents a range of allocated VirtualAddresses, …","Possible options when requesting pages from the page …","The allocated pages can be located at any virtual address …","The allocated pages must start exactly at the given …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","A FrameRange that implements Copy.","A PageRange that implements Copy.","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","Mapping flags that can be used to map DMA (Direct Memory …","Note: code that invokes memory management functions in …","See PteFlags::EXCLUSIVE. We use bit 55 because it is …","The set of identity mappings that should be dropped before …","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","If set, this page table entry represents a “huge” …","","","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","Mapping flags that can be used to map MMIO registers.","Memory is mapped (PTE has been set)","Represents a contiguous range of virtual memory pages that …","","Enum used to indicate the size of a page or frame.","This holds all the information for a Task’s memory …","The possible states that a range of exclusively-owned …","A shareable reference to a MemoryManagementInfo struct …","A trait for parameterizing a BorrowedMappedPages or …","A marker type used to indicate that a BorrowedMappedPages …","If set, this page is not executable.If not set, this page …","If set, this page is not executable.If not set, this page …","","","Page size is 4096 bytes, 4KiB pages.","","","(For P1-level (lowest level) page tables ONLY): If the …","A mask for the bits of a page table entry that contain the …","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A top-level root (P4) page table.","A physical memory address, which is a usize under the hood.","Common, architecture-independent flags for a page table …","Page table entry (PTE) flags on x86_64.","Page table entry (PTE) flags on x86_64.","","","Memory has been unmapped (PTE has been cleared)","A type alias for Frames in the Unmapped state.","If set, this page is currently “present” in memory. If …","If set, this page is currently “present” in memory. If …","A virtual memory address, which is a usize under the hood.","If set, this page is writable.If not set, this page is …","If set, this page is writable.If not set, this page is …","If set, writes to this page go directly to memory.It not …","The allocated pages can be located anywhere within the …","If set, this page is mapped identically across all address …","If set, this page is mapped identically across all address …","If set, userspace (unprivileged mode) can access this page.…","If set, userspace (ring 3) can access this page.If not …","Returns a copy of this PteFlags with the ACCESSED bit set …","Returns a copy of this PteFlagsX86_64 with the ACCESSED …","","","","","","","","","","","","","The list of additional mappings that must be kept forever.","Returns the VirtualAddress at the given offset into this …","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","Returns the set containing all flags.","Returns the set containing all flags.","Allocates the given number of frames with no constraints …","Allocates the given number of frames starting at …","Allocates frames with no constraints on the starting …","Allocates frames starting at the given PhysicalAddress …","Similar to allocated_frames_deferred(), but accepts a size …","The core frame allocation routine that allocates the given …","Allocates the given number of pages with no constraints on …","Allocates the given number of pages starting at (inclusive …","Allocates pages with no constraints on the starting …","Allocates pages starting at the given VirtualAddress with …","Similar to allocated_pages_deferred(), but accepts a size …","Allocates pages with a size given in number of bytes with …","The core page allocation routine that allocates the given …","Allocates the given number of pages with the constraint …","","","","","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_slice(), but returns a mutable …","Reinterprets this MappedPages’s underlying memory region …","Same as MappedPages::as_type(), but returns a mutable …","","","Returns the intersection between the two sets of flags.","","Returns the intersection between the two sets of flags.","","Disables all flags disabled in the set.","","Disables all flags disabled in the set.","","Returns the union of the two sets of flags.","","Returns the union of the two sets of flags.","","Adds the set of flags.","","Adds the set of flags.","","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the left flags, but with all the right flags …","","Returns the left flags, but with all the right flags …","","Toggles the set of flags.","","Toggles the set of flags.","","The boot information mappings.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","A convenience function that creates a new memory mapping …","Creates an identity mapping at a random available virtual …","A convenience function that creates a new memory mapping. …","The kernel’s .data section mappings/","Creates a deep copy of this MappedPages memory region, by …","","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the DEVICE_MEMORY bit …","Returns a copy of this PteFlagsX86_64 with the …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns a copy of this PteFlags with the DIRTY bit set or …","Returns a copy of this PteFlagsX86_64 with the DIRTY bit …","","","Dumps all page table entries at all four page table levels …","Returns an empty set of flags.","Returns an empty AllocatedPages object that performs no …","Returns an empty set of flags.","Creates a PageRange that will always yield None when …","Returns an empty MappedPages object that performs no …","Creates a FrameRange that will always yield None when …","Returns the ending Page (inclusive) in this range of pages.","","","","","","","","","","","","","","","Returns a copy of this PteFlags with the EXCLUSIVE bit set …","Returns a copy of this PteFlagsX86_64 with the EXCLUSIVE …","Returns a copy of this PteFlags with the NOT_EXECUTABLE …","Returns a copy of this PteFlagsX86_64 with the …","","","The list of additional memory mappings that have the same …","Returns the flags that describe this MappedPages page …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Immutably borrows the given MappedPages as a slice &[T] of …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","Mutably borrows the given MappedPages as an instance of …","Mutably borrows the given MappedPages as a slice &mut [T] …","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","Returns a reference to the kernel’s MemoryManagementInfo…","","","","","","","","The list of identity mappings that should be dropped …","Initializes the virtual memory management system. Consumes …","Finishes initializing the memory management system after …","Returns a reference to the inner MappedPages value (more …","Returns a reference to the inner borrowed MappedPages.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","A convenience function for BorrowedMappedPages::from().","A convenience function for BorrowedMappedPages::from_mut().","A convenience function for BorrowedSliceMappedPages::from()…","A convenience function for …","Consumes this object and returns the inner MappedPages …","Consumes this object and returns the inner MappedPages.","","","","","Returns true if all flags are currently set.","Returns true if all flags are currently set.","","","","","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","","","","","","","","","","Maps the given AllocatedPages to randomly chosen …","Maps the given virtual AllocatedPages to the given …","A convenience function that maps randomly-allocated pages …","Merges the given AllocatedPages object ap into this …","Merges the given MappedPages object mp into this …","Returns a new PteFlags with the default value, in which:","Creates a new VirtualAddress, returning an error if the …","Returns a new PteFlagsX86_64 with the default value, in …","Creates a new PhysicalAddress, returning an error if the …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Initializes a new top-level P4 PageTable whose root is …","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","the PageTable that should be switched to when this Task is …","The currently active page table.","","","","","","","","","","","","Returns a copy of this PteFlagsX86_64 with the PAT index …","Returns the physical address of this page table’s …","Returns a reference to the inner PageRange, which is …","Change the mapping flags of this MappedPages’s page …","Removes the specified flags in-place.","Removes the specified flags in-place.","The kernel’s .rodata section mappings.","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Set the function callback that will be invoked every time …","Returns the size in bytes of this range of pages.","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the size in number of pages of this range of pages.","Returns the number of Pages covered by this iterator.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","Returns the starting Page in this range of pages.","Returns the starting VirtualAddress in this range of pages.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","Returns the set difference of the two sets of flags.","","","Returns the set difference of the two sets of flags.","","","","","Disables all flags enabled in the set.","","","Disables all flags enabled in the set.","","","","","Switches from the currently-active page table (this …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","The kernel’s .text section mappings, which includes .init…","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","A convenience function to translate the given virtual …","Translates a VirtualAddress to a PhysicalAddress by …","Translates a virtual memory Page to a physical memory Frame…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Consumes and unmaps this MappedPages object without …","Returns a copy of this PteFlags with the VALID bit set or …","Returns a copy of this PteFlagsX86_64 with the VALID bit …","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Temporarily maps the given other PageTable to the …","Returns a copy of this PteFlags with the WRITABLE bit set …","Returns a copy of this PteFlagsX86_64 with the WRITABLE …","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0.",""],"i":[1,3,18,40,0,0,0,18,18,0,0,3,0,0,1,3,1,3,0,1,3,0,0,0,40,3,45,45,0,0,0,40,0,0,0,0,0,0,0,0,1,3,7,45,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,7,7,40,0,1,3,0,1,3,3,18,1,3,1,3,1,3,4,4,6,6,8,9,4,4,6,6,8,9,48,10,12,13,3,8,9,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,24,23,24,21,21,21,21,8,9,1,4,3,6,1,4,3,6,1,4,3,6,1,4,3,6,1,3,1,4,3,6,1,4,3,6,48,1,45,14,37,29,30,40,10,23,23,4,18,3,24,24,6,20,50,8,38,9,12,32,21,47,13,48,49,33,1,45,14,37,29,30,40,10,23,23,4,18,3,24,24,6,20,50,8,38,9,12,32,21,47,13,48,49,33,1,14,29,30,4,3,6,8,9,12,32,13,33,1,14,29,30,4,3,6,8,9,12,32,13,33,1,14,29,30,23,4,3,24,6,8,9,1,3,8,9,8,9,8,9,1,3,12,13,12,13,0,0,0,48,21,1,4,3,6,23,24,38,12,21,13,23,24,38,12,13,1,3,1,3,1,3,10,21,37,1,10,3,12,21,13,10,1,14,29,30,40,23,4,3,24,6,8,9,12,13,1,3,1,3,1,3,47,21,1,1,1,1,1,45,14,29,30,10,4,4,4,4,4,4,4,3,3,3,3,3,6,6,6,6,6,6,6,8,38,9,12,21,47,13,48,49,8,9,6,1,1,45,14,37,29,30,40,10,23,23,4,18,3,3,24,24,6,20,50,8,8,8,38,9,9,9,12,12,12,12,32,32,21,47,13,13,13,13,48,49,33,33,1,3,1,3,1,3,1,3,23,24,13,12,0,3,1,23,4,3,24,6,48,0,0,23,24,1,3,1,3,1,3,1,45,14,37,29,30,40,10,23,4,4,18,3,24,6,6,20,50,8,38,9,12,32,21,47,13,48,49,33,21,21,21,21,23,24,12,13,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,37,37,0,10,21,1,4,3,6,12,13,4,6,38,1,3,8,9,10,12,13,12,13,8,8,8,8,4,8,9,47,48,1,14,29,30,23,4,3,24,6,8,9,3,38,10,21,1,3,48,1,3,0,10,12,13,13,10,12,10,21,48,48,10,10,8,9,12,13,8,9,1,4,4,3,6,6,8,9,1,4,4,3,6,6,8,9,38,1,3,48,12,13,1,14,29,30,4,3,6,8,9,12,32,13,33,4,6,1,3,0,37,37,1,45,14,37,29,30,40,10,23,4,18,3,24,6,20,50,8,8,8,38,9,9,9,12,12,12,32,21,47,13,13,13,48,49,33,1,45,14,37,29,30,40,10,23,4,18,3,24,6,20,50,8,38,9,12,32,21,47,13,48,49,33,1,45,14,37,29,30,40,10,23,4,18,3,24,6,20,50,8,38,9,12,32,21,47,13,48,49,33,1,3,21,1,3,4,6,38,1,3,4,6,62],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[3,2],3],[[4,4],4],[[4,5],4],[[6,5],6],[[6,6],6],[[[8,[7]],5],[[8,[7]]]],[[[9,[7]],5],[[9,[7]]]],[[4,5]],[[4,4]],[[6,5]],[[6,6]],[[[8,[7]],5]],[[[9,[7]],5]],0,[[10,5],[[11,[4]]]],[[[12,[7]],5],[[11,[4]]]],[[[13,[7]],5],[[11,[6]]]],[3,3],[[[8,[14]],5],[[8,[14]]]],[[[9,[14]],5],[[9,[14]]]],[[],1],[[],3],[5,[[11,[15]]]],[[6,5],[[17,[15,16]]]],[5,[[11,[15]]]],[[6,5],[[17,[15,16]]]],[[[11,[6]],5],[[17,[16]]]],[[[11,[6]],5],[[17,[16]]]],[5,[[11,[10]]]],[[4,5],[[17,[10,16]]]],[5,[[11,[10]]]],[[4,5],[[17,[10,16]]]],[[18,5],[[17,[16]]]],[[5,[12,[14]]],[[17,[10,16]]]],[[18,5],[[17,[16]]]],[[5,[12,[14]]],[[17,[10,16]]]],[[[23,[19,20,[22,[21]]]]],19],[[[24,[19,20,[22,[21]]]]],[[25,[19]]]],[[[23,[19,26,[27,[21]]]]],19],[[[24,[19,26,[27,[21]]]]],[[25,[19]]]],[[21,5,5],[[17,[[25,[19]],16]]]],[[21,5,5],[[17,[[25,[19]],16]]]],[[21,5],[[17,[19,16]]]],[[21,5],[[17,[19,16]]]],[[[8,[7]],5],[[11,[[8,[7]]]]]],[[[9,[7]],5],[[11,[[9,[7]]]]]],[[1,1],1],[[4,4],4],[[3,3],3],[[6,6],6],[[1,1]],[[4,4]],[[3,3]],[[6,6]],[[1,1],1],[[4,4],4],[[3,3],3],[[6,6],6],[[1,1]],[[4,4]],[[3,3]],[[6,6]],[1,28],[3,28],[[1,1],1],[[4,4],4],[[3,3],3],[[6,6],6],[[1,1]],[[4,4]],[[3,3]],[[6,6]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[23,[19,26,[27,[21]]]]],19],[[]],[[]],[[]],[[]],[[]],[[[24,[19,26,[27,[21]]]]],[[25,[19]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[23,[19,20,[22,[21]]]]],19],[[]],[[]],[[]],[[[24,[19,20,[22,[21]]]]],[[25,[19]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[14,14],[29,29],[30,30],[4,4],[3,3],[6,6],[[[8,[[0,[31,7]]]]],[[8,[[0,[31,7]]]]]],[[[9,[[0,[31,7]]]]],[[9,[[0,[31,7]]]]]],[[[12,[[0,[31,7]]]]],[[12,[[0,[31,7]]]]]],[[[32,[[0,[31,7]]]]],[[32,[[0,[31,7]]]]]],[[[13,[[0,[31,7]]]]],[[13,[[0,[31,7]]]]]],[[[33,[[0,[31,7]]]]],[[33,[[0,[31,7]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,1],34],[[14,14],34],[[29,29],34],[[30,30],34],[[[23,[[0,[19,35]],26,[27,[21]]]],[23,[[0,[19,35]],26,[27,[21]]]]],34],[[4,4],34],[[3,3],34],[[[24,[[0,[19,35]],26,[27,[21]]]],[24,[[0,[19,35]],26,[27,[21]]]]],34],[[6,6],34],[[[8,[[0,[35,7]]]],[8,[[0,[35,7]]]]],34],[[[9,[[0,[35,7]]]],[9,[[0,[35,7]]]]],34],[1,1],[3,3],[4,[[8,[14]]]],[6,[[9,[14]]]],[4,[[8,[30]]]],[6,[[9,[30]]]],[4,[[8,[29]]]],[6,[[9,[29]]]],[[1,1],2],[[3,3],2],[[[12,[7]],4],2],[[[13,[7]],6],2],[[[12,[7]],[12,[7]]],2],[[[13,[7]],[13,[7]]],2],[[5,[36,[3]]],[[17,[16]]]],[[5,[36,[3]]],[[17,[21,16]]]],[[5,[36,[3]]],[[17,[21,16]]]],0,[[21,37,[11,[[36,[3]]]]],[[17,[21,16]]]],[[],1],[[],4],[[],3],[[],6],[[[23,[19,26,[27,[21]]]]],19],[[[24,[19,26,[27,[21]]]]],[[25,[19]]]],[38,37],[[[12,[7]]],[[39,[[8,[7]]]]]],[21,10],[[[13,[7]]],[[39,[[9,[7]]]]]],[[[23,[19,20,[22,[21]]]]],19],[[[24,[19,20,[22,[21]]]]],[[25,[19]]]],[38,37],[[[12,[14]]],[[39,[[8,[14]]]]]],[[[13,[14]]],[[39,[[9,[14]]]]]],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[10],[21],[[37,4]],[[],1],[[],10],[[],3],[[],[[12,[14]]]],[[],21],[[],[[13,[14]]]],[10,[[8,[14]]]],[[1,1],2],[[14,14],2],[[29,29],2],[[30,30],2],[[40,40],2],[[[23,[[0,[19,41]],26,[27,[21]]]],[23,[[0,[19,41]],26,[27,[21]]]]],2],[[4,4],2],[[3,3],2],[[[24,[[0,[19,41]],26,[27,[21]]]],[24,[[0,[19,41]],26,[27,[21]]]]],2],[[6,6],2],[[[8,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]],[8,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]]],2],[[[9,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]],[9,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]]],2],[[[12,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]],[12,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]]],2],[[[13,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]],[13,[[0,[[41,[[0,[[41,[[0,[[41,[[0,[41,7]]]],7]]]],7]]]],7]]]]],2],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[[1,42]],[[3,42]],0,[21,3],[[1,43],[[17,[44]]]],[[1,43],[[17,[44]]]],[[1,43],[[17,[44]]]],[[1,43],[[17,[44]]]],[[1,43],[[17,[44]]]],[[45,43],[[17,[44]]]],[[14,43],[[17,[44]]]],[[29,43],[[17,[44]]]],[[30,43],[[17,[44]]]],[[10,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[4,43],[[17,[44]]]],[[3,43],[[17,[44]]]],[[3,43],[[17,[44]]]],[[3,43],[[17,[44]]]],[[3,43],[[17,[44]]]],[[3,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[6,43],[[17,[44]]]],[[[8,[7]],43],[[17,[44]]]],[[38,43],46],[[[9,[7]],43],[[17,[44]]]],[[[12,[7]],43],[[17,[44]]]],[[21,43],46],[[47,43],46],[[[13,[7]],43],[[17,[44]]]],[[48,43],46],[[49,43],46],[[[8,[7]],5],[[11,[[8,[7]]]]]],[[[9,[7]],5],[[11,[[9,[7]]]]]],[6,5],[3,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[27,[21]],5],[[17,[[23,[19,50,[27,[21]]]]]]]],[[]],[[]],[1,3],[[]],[[[27,[21]],5,5],[[17,[[24,[19,50,[27,[21]]]]]]]],[[]],[[]],[[]],[[]],[[[8,[30]]],[[8,[14]]]],[[[8,[29]]],[[8,[14]]]],[[]],[[]],[[[9,[30]]],[[9,[14]]]],[[]],[[[9,[29]]],[[9,[14]]]],[[[32,[[0,[7,51]]]]],[[12,[[0,[7,51]]]]]],[[[12,[30]]],[[12,[14]]]],[[[12,[29]]],[[12,[14]]]],[[]],[[]],[[[12,[[0,[7,51]]]]],[[32,[[0,[7,51]]]]]],[[]],[[]],[[[33,[[0,[7,51]]]]],[[13,[[0,[7,51]]]]]],[[]],[[[13,[30]]],[[13,[14]]]],[[[13,[29]]],[[13,[14]]]],[[]],[[]],[[[13,[[0,[7,51]]]]],[[33,[[0,[7,51]]]]]],[[]],[28,[[11,[1]]]],[28,[[11,[3]]]],[28,1],[28,3],[28,1],[28,3],[42,1],[42,3],[[[22,[21]],5],[[17,[[23,[19,20,[22,[21]]]]]]]],[[[22,[21]],5,5],[[17,[[24,[19,20,[22,[21]]]]]]]],[[6,5],[[13,[14]]]],[[4,5],[[12,[14]]]],[[],[[11,[52]]]],[3,53],[[1,54]],[[[23,[[0,[19,55]],26,[27,[21]]]],54]],[[4,54]],[[3,54]],[[[24,[[0,[19,55]],26,[27,[21]]]],54]],[[6,54]],0,[[56,4],[[17,[48,16]]]],[[38,21,21],52],[[[23,[19,26,[27,[21]]]]],[[27,[21]]]],[[[24,[19,26,[27,[21]]]]],[[27,[21]]]],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[4,5],[[]],[[]],[[]],[[]],[6,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[21,5],[[17,[[23,[19,50]]]]]],[[21,5],[[17,[[23,[19,20]]]]]],[[21,5,5],[[17,[[24,[19,50]]]]]],[[21,5,5],[[17,[[24,[19,20]]]]]],[[[23,[19,26,[27,[21]]]]],[[27,[21]]]],[[[24,[19,26,[27,[21]]]]],[[27,[21]]]],[[[12,[7]]]],[[[13,[7]]]],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[1,2],[3,2],[3,2],[1,2],[3,2],[1,2],[3,2],[[37,10,[36,[3]]],[[17,[21,16]]]],[[37,10,57,[36,[3]]],[[17,[21,16]]]],[[6,5,[36,[3]]],[[17,[21,16]]]],[[10,10],[[17,[10]]]],[[21,21],17],[[],1],[5,[[11,[4]]]],[[],3],[5,[[11,[6]]]],[[[8,[7]],[8,[7]]],[[12,[7]]]],[[[9,[7]],[9,[7]]],[[13,[7]]]],[5,4],[5,6],[[38,57,[11,[10]]],[[17,[38,16]]]],[1,1],[3,3],[[[8,[7]]],5],[[[9,[7]]],5],[[10,4],[[11,[5]]]],[[[12,[7]],4],[[11,[5]]]],[[[13,[7]],6],[[11,[5]]]],[[[12,[[0,[7,51]]]],[12,[[0,[7,51]]]]],[[11,[[12,[[0,[7,51]]]]]]]],[[[13,[[0,[7,51]]]],[13,[[0,[7,51]]]]],[[11,[[13,[[0,[7,51]]]]]]]],[[[8,[7]]],5],[[[8,[7]]],5],[[[8,[7]]],5],[[[8,[7]]],5],[4,5],[[[8,[7]]],45],[[[9,[7]]],45],0,0,[[1,1],[[11,[34]]]],[[14,14],[[11,[34]]]],[[29,29],[[11,[34]]]],[[30,30],[[11,[34]]]],[[[23,[[0,[19,58]],26,[27,[21]]]],[23,[[0,[19,58]],26,[27,[21]]]]],[[11,[34]]]],[[4,4],[[11,[34]]]],[[3,3],[[11,[34]]]],[[[24,[[0,[19,58]],26,[27,[21]]]],[24,[[0,[19,58]],26,[27,[21]]]]],[[11,[34]]]],[[6,6],[[11,[34]]]],[[[8,[[0,[[58,[[0,[[58,[[0,[[58,[[0,[58,7]]]],7]]]],7]]]],7]]]],[8,[[0,[[58,[[0,[[58,[[0,[[58,[[0,[58,7]]]],7]]]],7]]]],7]]]]],[[11,[34]]]],[[[9,[[0,[[58,[[0,[[58,[[0,[[58,[[0,[58,7]]]],7]]]],7]]]],7]]]],[9,[[0,[[58,[[0,[[58,[[0,[[58,[[0,[58,7]]]],7]]]],7]]]],7]]]]],[[11,[34]]]],[[3,53],3],[38,6],[10,[[12,[14]]]],[[21,37,[36,[3]]],[[17,[16]]]],[[1,1]],[[3,3]],0,[[1,1,2]],[[3,3,2]],[[]],[10,5],[[[12,[7]]],5],[[[13,[7]]],5],[[[13,[7]]],5],[10,5],[[[12,[7]]],5],[[10,[8,[14]]],[[17,[10]]]],[[21,8],[[17,[21]]]],0,0,[10,[[8,[14]]]],[10,4],[[[8,[7]]],4],[[[9,[7]]],6],[[[12,[7]]],4],[[[13,[7]]],6],[[[8,[7]],[8,[7]]],[[11,[5]]]],[[[9,[7]],[9,[7]]],[[11,[5]]]],[[1,1],1],[[4,4],4],[[4,5],4],[[3,3],3],[[6,5],6],[[6,6],6],[[[8,[7]],5],[[8,[7]]]],[[[9,[7]],5],[[9,[7]]]],[[1,1]],[[4,5]],[[4,4]],[[3,3]],[[6,5]],[[6,6]],[[[8,[7]],5]],[[[9,[7]],5]],[[38,38]],[[1,1],1],[[3,3],3],0,[[[12,[7]],[8,[7]]],[[12,[7]]]],[[[13,[7]],[9,[7]]],[[13,[7]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],59],[[],59],[[1,1]],[[3,3]],[4,[[11,[6]]]],[[37,4],[[11,[6]]]],[[37,8],[[11,[9]]]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[[8,[14]]],[[17,[[8,[29]],16]]]],[[[8,[14]]],[[17,[[8,[30]],16]]]],[[],17],[[],17],[[[9,[14]]],[[17,[[9,[30]],16]]]],[[[9,[14]]],[[17,[[9,[29]],16]]]],[[[12,[14]]],[[17,[[12,[30]],16]]]],[[],17],[[[12,[14]]],[[17,[[12,[29]],16]]]],[[],17],[[],17],[[],17],[[],17],[[[13,[14]]],[[17,[[13,[29]],16]]]],[[[13,[14]]],[[17,[[13,[30]],16]]]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[],60],[[1,1],1],[[3,3],3],[[21,37],[[17,[21]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[38,38,61],[[17,[16]]]],[[1,2],1],[[3,2],3],[[],4],[[],6],0],"c":[],"p":[[3,"PteFlags"],[15,"bool"],[3,"PteFlagsArch"],[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[8,"PageSize"],[3,"Page"],[3,"Frame"],[3,"AllocatedPages"],[4,"Option"],[3,"PageRange"],[3,"FrameRange"],[3,"Page4K"],[3,"Frames"],[15,"str"],[4,"Result"],[4,"AllocationRequest"],[8,"FromBytes"],[3,"Mutable"],[3,"MappedPages"],[8,"BorrowMut"],[3,"BorrowedMappedPages"],[3,"BorrowedSliceMappedPages"],[15,"slice"],[8,"Mutability"],[8,"Borrow"],[15,"u64"],[3,"Page2M"],[3,"Page1G"],[8,"Clone"],[3,"CopyablePageRange"],[3,"CopyableFrameRange"],[4,"Ordering"],[8,"Ord"],[8,"Into"],[3,"Mapper"],[3,"PageTable"],[3,"RangeInclusive"],[4,"MemoryState"],[8,"PartialEq"],[8,"IntoIterator"],[3,"Formatter"],[3,"Error"],[4,"MemChunkSize"],[6,"Result"],[3,"MemoryManagementInfo"],[3,"InitialMemoryMappings"],[3,"EarlyIdentityMappedPages"],[3,"Immutable"],[8,"Copy"],[6,"MmiRef"],[15,"u8"],[8,"Hasher"],[8,"Hash"],[8,"BootInformation"],[6,"AllocatedFrames"],[8,"PartialOrd"],[3,"String"],[3,"TypeId"],[8,"FnOnce"],[13,"AlignedTo"]],"a":{"cache":[278,279,472,473],"cacheable":[278,279,472,473],"mmi":[35],"next_multiple_of":[94,95],"no_exec":[310,311,480,481],"non-cacheable":[278,279,472,473],"page attribute table":[413,530],"pat":[413,530],"present":[483,484,692,693],"read_only":[485,486,697,698],"slot":[413,530]}},\ "memory_aarch64":{"doc":"This crate implements the virtual memory subsystem …","t":"DDDOLLLLLLFMFFMFMLLLLLFMLLLFMFMMCFFLLLLLLLLL","n":["AggregatedSectionMemoryBounds","MmuConfig","SectionMemoryBounds","asm_set_mmu_config_x2_x3","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","configure_translation_registers","data","disable_mmu","enable_mmu","end","find_section_memory_bounds","flags","fmt","fmt","from","from","from","get_p4","init","into","into","into","read_mmu_config","rodata","set_as_active_page_table_root","start","text","tlb_flush_all","tlb_flush_by_theseus_asid","tlb_flush_virt_addr","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"memory_aarch64"]],"d":["The address bounds and flags of the initial kernel …","See read_mmu_config","The address bounds and mapping flags of a section’s …","Configures the MMU based on the pointer to a MmuConfig, in …","","","","","","","Configures paging for Theseus.","","Disable the MMU using aarch64 registers","Enable the MMU using aarch64 registers","The ending virtual address and physical address.","Finds the addresses in memory of the main kernel sections, …","The page table entry flags that should be used for mapping …","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the current top-level page table address.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Reads the current MMU configuration of the current CPU …","","Sets the given page_table as active by updating the TTBR0 …","The starting virtual address and physical address.","","","Flushes all TLB entries with Theseus’ ASID (=0).","Flushes the specific virtual address in TLB.","","","","","","","","",""],"i":[0,0,0,0,10,5,8,10,5,8,0,8,0,0,5,0,5,5,8,10,5,8,0,8,10,5,8,0,8,0,5,8,0,0,0,10,5,8,10,5,8,10,5,8],"f":[0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],0,[[1,2],[[4,[3]]]],0,[[5,6],7],[[8,6],7],[[]],[[]],[[]],[[],9],0,[[]],[[]],[[]],[[],10],0,[9],0,0,0,[[]],[11],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],12],[[],12],[[],12]],"c":[],"p":[[8,"BootInformation"],[8,"Fn"],[15,"str"],[4,"Result"],[3,"SectionMemoryBounds"],[3,"Formatter"],[6,"Result"],[3,"AggregatedSectionMemoryBounds"],[3,"PhysicalAddress"],[3,"MmuConfig"],[3,"VirtualAddress"],[3,"TypeId"]]},\ "memory_initialization":{"doc":"","t":"F","n":["init_memory_management"],"q":[[0,"memory_initialization"]],"d":["Initializes the virtual memory management system and …"],"i":[0],"f":[[[1,2],[[4,[3]]]]],"c":[],"p":[[8,"BootInformation"],[3,"VirtualAddress"],[15,"str"],[4,"Result"]]},\ -"memory_structs":{"doc":"This crate contains basic types used for memory management.","t":"NDDDDNNEDDDNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Allocated","CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Free","Mapped","MemoryState","Page","PageRange","PhysicalAddress","Unmapped","VirtualAddress","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","address_at_offset","address_at_offset","align_up","align_up","backward_checked","backward_checked","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","cmp","cmp","cmp","cmp","containing_address","containing_address","contains_address","contains_address","contains_range","contains_range","default","default","deref","deref","deref_mut","deref_mut","empty","empty","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from_phys_addr","from_virt_addr","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","new","new","new","new","new_canonical","new_canonical","number","number","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","to_extended","to_extended","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","zero","zero"],"q":[[0,"memory_structs"]],"d":["Memory is allocated and can be used for a mapping","A FrameRange that implements Copy","A PageRange that implements Copy","A Frame is a chunk of physical memory aligned to a …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","Memory is mapped (PTE has been set)","The possible states that a range of exclusively-owned …","A Page is a chunk of virtual memory aligned to a PAGE_SIZE …","A range of Pages that are contiguous in virtual memory.","A physical memory address, which is a usize under the hood.","Memory has been unmapped (PTE has been cleared)","A virtual memory address, which is a usize under the hood.","","","","","","","","","","","","","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the Page containing the given VirtualAddress.","Returns the Frame containing the given PhysicalAddress.","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","","","","","","","Creates a PageRange that will always yield None when …","Creates a FrameRange that will always yield None when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the frame boundary specified by …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","","","Calls U::from(self).","","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Returns the number of this Page.","Returns the number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the page boundary specified by …","","","","","Returns the size of this range in number of bytes.","Returns the size of this range in number of bytes.","Returns the number of Frames covered by this iterator.","Returns the number of Pages covered by this iterator.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","","","","","","","","","","","","","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0."],"i":[14,0,0,0,0,14,14,0,0,0,0,14,0,1,1,3,3,4,5,1,1,3,3,4,5,6,8,4,5,4,5,1,3,1,3,1,3,1,3,1,3,1,3,14,1,3,4,5,6,9,8,10,14,1,3,4,5,6,9,8,10,1,3,4,5,6,9,8,10,1,3,4,5,4,5,6,8,6,8,1,3,6,8,6,8,6,8,14,1,3,4,5,6,8,1,1,1,1,1,1,1,3,3,3,3,3,3,3,4,5,6,8,4,5,3,14,1,3,4,5,6,6,9,9,8,8,10,10,8,6,1,3,14,1,1,3,3,4,5,6,9,8,10,6,8,1,3,6,8,1,3,4,5,6,8,6,8,4,4,4,4,1,1,3,4,5,6,8,8,6,4,5,6,8,4,5,1,1,3,3,4,5,1,1,3,3,4,5,6,8,14,1,3,4,5,6,9,8,10,14,1,3,4,5,6,9,8,10,14,1,3,4,5,6,9,8,10,1,3,1,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[1,1],1],[[3,2],3],[[3,3],3],[[4,2],4],[[5,2],5],[[1,1]],[[1,2]],[[3,2]],[[3,3]],[[4,2]],[[5,2]],[[6,2],[[7,[1]]]],[[8,2],[[7,[3]]]],[[4,2],4],[[5,2],5],[[4,2],[[7,[4]]]],[[5,2],[[7,[5]]]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[3,3],[4,4],[5,5],[6,6],[9,9],[8,8],[10,10],[[1,1],11],[[3,3],11],[[4,4],11],[[5,5],11],[1,4],[3,5],[[6,1],12],[[8,3],12],[[6,6],12],[[8,8],12],[[],1],[[],3],[6,[[13,[4]]]],[8,[[13,[5]]]],[6,[[13,[4]]]],[8,[[13,[5]]]],[[],6],[[],8],[[14,14],12],[[1,1],12],[[3,3],12],[[4,4],12],[[5,5],12],[[6,6],12],[[8,8],12],[[1,15],16],[[1,15],16],[[1,15],16],[[1,15],16],[[1,15],16],[[1,15],16],[[1,15],16],[[3,15],16],[[3,15],16],[[3,15],16],[[3,15],16],[[3,15],16],[[3,15],16],[[3,15],16],[[4,15],16],[[5,15],16],[[6,15],16],[[8,15],16],[[4,2],[[7,[4]]]],[[5,2],[[7,[5]]]],[3,2],[[]],[[]],[[]],[[]],[[]],[9,6],[[]],[6,9],[[]],[[]],[10,8],[8,10],[[]],[[3,2],8],[[1,2],6],[[1,17]],[[3,17]],[[]],[1,2],[[]],[3,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[6],[8],[2,[[7,[1]]]],[2,[[7,[3]]]],[[4,4],6],[[5,5],8],[2,1],[2,3],[4,2],[5,2],[[6,1],[[7,[2]]]],[[8,3],[[7,[2]]]],[[6,6],[[7,[6]]]],[[8,8],[[7,[8]]]],[4,2],[4,2],[4,2],[4,2],[1,2],[[1,1],[[7,[11]]]],[[3,3],[[7,[11]]]],[[4,4],[[7,[11]]]],[[5,5],[[7,[11]]]],[6,2],[8,2],[8,2],[6,2],[4,1],[5,3],[6,1],[8,3],[[4,4],[[7,[2]]]],[[5,5],[[7,[2]]]],[[1,2],1],[[1,1],1],[[3,2],3],[[3,3],3],[[4,2],4],[[5,2],5],[[1,2]],[[1,1]],[[3,2]],[[3,3]],[[4,2]],[[5,2]],[[6,4],6],[[8,5],8],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[1,2],[3,2],[[],1],[[],3]],"c":[],"p":[[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"Page"],[3,"Frame"],[3,"PageRange"],[4,"Option"],[3,"FrameRange"],[3,"CopyablePageRange"],[3,"CopyableFrameRange"],[4,"Ordering"],[15,"bool"],[3,"RangeInclusive"],[4,"MemoryState"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[4,"Result"],[3,"TypeId"]],"a":{"next_multiple_of":[27,28]}},\ +"memory_structs":{"doc":"This crate contains basic types used for memory management.","t":"NDDDDNNNNEESNDDDDDIDSSNDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Allocated","CopyableFrameRange","CopyablePageRange","Frame","FrameRange","Free","Huge1G","Huge2M","Mapped","MemChunkSize","MemoryState","NUM_4K_PAGES","Normal4K","Page","Page1G","Page2M","Page4K","PageRange","PageSize","PhysicalAddress","SIZE","SIZE_IN_BYTES","Unmapped","VirtualAddress","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","address_at_offset","address_at_offset","align_up","align_up","backward_checked","backward_checked","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","cmp","cmp","cmp","cmp","cmp","cmp","cmp","containing_address","containing_address","containing_address_1gb","containing_address_1gb","containing_address_2mb","containing_address_2mb","contains_address","contains_address","contains_range","contains_range","default","default","deref","deref","deref_mut","deref_mut","empty","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward_checked","forward_checked","frame_offset","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_phys_addr","from_virt_addr","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","new","new","new","new","new_canonical","new_canonical","number","number","offset_of_address","offset_of_address","overlap","overlap","p1_index","p2_index","p3_index","p4_index","page_offset","page_size","page_size","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","start_address","start_address","start_address","start_address","steps_between","steps_between","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","to_extended","to_extended","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","zero","zero"],"q":[[0,"memory_structs"]],"d":["Memory is allocated and can be used for a mapping","A FrameRange that implements Copy.","A PageRange that implements Copy.","A Frame is a chunk of physical memory aligned to a page …","A range of Frames that are contiguous in physical memory.","Memory is free and owned by the allocator","","","Memory is mapped (PTE has been set)","Enum used to indicate the size of a page or frame.","The possible states that a range of exclusively-owned …","","","A Page is a chunk of virtual memory aligned to a page …","Marker struct used to indicate a page size of 1GiB.","Marker struct used to indicate a page size of 2MiB.","Marker struct used to indicate the default page size of …","A range of Pages that are contiguous in virtual memory.","Trait that represents the size of a page or frame, i.e., …","A physical memory address, which is a usize under the hood.","","","Memory has been unmapped (PTE has been cleared)","A virtual memory address, which is a usize under the hood.","","","","","","","","","","","","","Returns the VirtualAddress at the given offset into this …","Returns the PhysicalAddress at the given offset into this …","Returns a new Page that is aligned up from this Page to …","Returns a new Frame that is aligned up from this Frame to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the 4KiB Page containing the given VirtualAddress.","Returns the 4KiB Frame containing the given PhysicalAddress…","Returns the 1GiB huge Page containing the given …","Returns the 1GiB huge Frame containing the given …","Returns the 2MiB huge Page containing the given …","Returns the 2MiB huge Frame containing the given …","Returns true if this PageRange contains the given …","Returns true if this FrameRange contains the given …","Returns true if the other PageRange is fully contained …","Returns true if the other FrameRange is fully contained …","","","","","","","Creates a PageRange that will always yield None when …","Creates a FrameRange that will always yield None when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the offset from the 4K frame boundary specified by …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","A convenience method for creating a new FrameRange that …","A convenience method for creating a new PageRange that …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Creates a new VirtualAddress, returning an error if the …","Creates a new PhysicalAddress, returning an error if the …","Creates a new range of Pages that spans from start to end, …","Creates a new range of Frames that spans from start to end…","Creates a new VirtualAddress that is guaranteed to be …","Creates a new PhysicalAddress that is guaranteed to be …","Returns the 4K-sized number of this Page.","Returns the 4K-sized number of this Frame.","Returns the offset of the given VirtualAddress within this …","Returns the offset of the given PhysicalAddress within …","Returns an inclusive PageRange representing the Pages that …","Returns an inclusive FrameRange representing the Frames …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the 9-bit part of this Page’s VirtualAddress …","Returns the offset from the 4K page boundary specified by …","Returns the size of this Page.","Returns the size of this Frame.","","","","","","","","Returns the size of this range in bytes.","Returns the size of this range in bytes.","Returns the number of Frames covered by this iterator.","Returns the number of Pages covered by this iterator.","Returns the VirtualAddress at the start of this Page.","Returns the PhysicalAddress at the start of this Frame.","Returns the VirtualAddress of the starting Page in this …","Returns the PhysicalAddress of the starting Frame in this …","","","","","","","","","","","","","","","Returns a new separate PageRange that is extended to …","Returns a new separate FrameRange that is extended to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the underlying usize value for this VirtualAddress.","Returns the underlying usize value for this PhysicalAddress…","Creates a new VirtualAddress with a value 0.","Creates a new PhysicalAddress with a value 0."],"i":[20,0,0,0,0,20,22,22,20,0,0,4,22,0,0,0,0,0,0,0,4,4,20,0,1,1,3,3,5,6,1,1,3,3,5,6,7,9,5,6,5,6,1,3,1,3,1,3,1,3,1,3,1,3,22,10,11,12,20,1,3,5,6,7,14,9,15,22,10,11,12,20,1,3,5,6,7,14,9,15,10,11,12,1,3,5,6,7,14,9,15,10,11,12,1,3,5,6,5,6,5,6,5,6,7,9,7,9,1,3,7,9,7,9,7,9,10,11,12,20,1,3,5,6,7,9,22,10,11,12,1,1,1,1,1,1,1,3,3,3,3,3,3,3,5,6,7,9,5,6,3,22,10,11,12,20,1,3,5,5,5,6,6,6,7,7,7,7,14,14,9,9,9,9,15,15,9,7,1,3,22,10,11,12,20,1,1,3,3,5,6,7,14,9,15,7,9,1,3,7,9,1,3,5,6,7,9,7,9,5,5,5,5,1,5,6,10,11,12,1,3,5,6,7,9,9,7,5,6,7,9,5,6,1,1,3,3,5,6,1,1,3,3,5,6,7,9,22,10,11,12,20,1,3,5,5,5,6,6,6,7,7,7,14,9,9,9,15,22,10,11,12,20,1,3,5,6,7,14,9,15,22,10,11,12,20,1,3,5,6,7,14,9,15,1,3,1,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,1],1],[[1,2],1],[[3,2],3],[[3,3],3],[[[5,[4]],2],[[5,[4]]]],[[[6,[4]],2],[[6,[4]]]],[[1,2]],[[1,1]],[[3,3]],[[3,2]],[[[5,[4]],2]],[[[6,[4]],2]],[[[7,[4]],2],[[8,[1]]]],[[[9,[4]],2],[[8,[3]]]],[[[5,[10]],2],5],[[[6,[10]],2],6],[[[5,[4]],2],[[8,[[5,[4]]]]]],[[[6,[4]],2],[[8,[[6,[4]]]]]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1]],[[3,3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[10,10],[11,11],[12,12],[1,1],[3,3],[[[5,[[0,[13,4]]]]],[[5,[[0,[13,4]]]]]],[[[6,[[0,[13,4]]]]],[[6,[[0,[13,4]]]]]],[[[7,[[0,[13,4]]]]],[[7,[[0,[13,4]]]]]],[[[14,[[0,[13,4]]]]],[[14,[[0,[13,4]]]]]],[[[9,[[0,[13,4]]]]],[[9,[[0,[13,4]]]]]],[[[15,[[0,[13,4]]]]],[[15,[[0,[13,4]]]]]],[[10,10],16],[[11,11],16],[[12,12],16],[[1,1],16],[[3,3],16],[[[5,[[0,[17,4]]]],[5,[[0,[17,4]]]]],16],[[[6,[[0,[17,4]]]],[6,[[0,[17,4]]]]],16],[1,5],[3,6],[1,[[5,[12]]]],[3,[[6,[12]]]],[1,[[5,[11]]]],[3,[[6,[11]]]],[[[7,[4]],1],18],[[[9,[4]],3],18],[[[7,[4]],[7,[4]]],18],[[[9,[4]],[9,[4]]],18],[[],1],[[],3],[[[7,[4]]],[[19,[[5,[4]]]]]],[[[9,[4]]],[[19,[[6,[4]]]]]],[7,[[19,[5]]]],[9,[[19,[6]]]],[[],[[7,[10]]]],[[],[[9,[10]]]],[[10,10],18],[[11,11],18],[[12,12],18],[[20,20],18],[[1,1],18],[[3,3],18],[[[5,[[0,[21,4]]]],[5,[[0,[21,4]]]]],18],[[[6,[[0,[21,4]]]],[6,[[0,[21,4]]]]],18],[[[7,[[0,[21,4]]]],[7,[[0,[21,4]]]]],18],[[[9,[[0,[21,4]]]],[9,[[0,[21,4]]]]],18],[[22,23],24],[[10,23],24],[[11,23],24],[[12,23],24],[[1,23],24],[[1,23],24],[[1,23],24],[[1,23],24],[[1,23],24],[[1,23],24],[[1,23],24],[[3,23],24],[[3,23],24],[[3,23],24],[[3,23],24],[[3,23],24],[[3,23],24],[[3,23],24],[[[5,[4]],23],24],[[[6,[4]],23],24],[[[7,[4]],23],24],[[[9,[4]],23],24],[[[5,[4]],2],[[8,[[5,[4]]]]]],[[[6,[4]],2],[[8,[[6,[4]]]]]],[3,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[5,[11]]],[[5,[10]]]],[[[5,[12]]],[[5,[10]]]],[[]],[[]],[[[6,[12]]],[[6,[10]]]],[[[6,[11]]],[[6,[10]]]],[[[7,[11]]],[[7,[10]]]],[[[14,[[0,[4,25]]]]],[[7,[[0,[4,25]]]]]],[[]],[[[7,[12]]],[[7,[10]]]],[[]],[[[7,[[0,[4,25]]]]],[[14,[[0,[4,25]]]]]],[[]],[[[9,[11]]],[[9,[10]]]],[[[9,[12]]],[[9,[10]]]],[[[15,[[0,[4,25]]]]],[[9,[[0,[4,25]]]]]],[[]],[[[9,[[0,[4,25]]]]],[[15,[[0,[4,25]]]]]],[[3,2],9],[[1,2],7],[[1,26]],[[3,26]],[[]],[[]],[[]],[[]],[[]],[1,2],[[]],[[]],[3,2],[[]],[[]],[[]],[[]],[[]],[[]],[[[7,[4]]]],[[[9,[4]]]],[2,[[8,[1]]]],[2,[[8,[3]]]],[[[5,[4]],[5,[4]]],[[7,[4]]]],[[[6,[4]],[6,[4]]],[[9,[4]]]],[2,1],[2,3],[[[5,[4]]],2],[[[6,[4]]],2],[[[7,[4]],1],[[8,[2]]]],[[[9,[4]],3],[[8,[2]]]],[[[7,[[0,[4,25]]]],[7,[[0,[4,25]]]]],[[8,[[7,[[0,[4,25]]]]]]]],[[[9,[[0,[4,25]]]],[9,[[0,[4,25]]]]],[[8,[[9,[[0,[4,25]]]]]]]],[[[5,[4]]],2],[[[5,[4]]],2],[[[5,[4]]],2],[[[5,[4]]],2],[1,2],[[[5,[4]]],22],[[[6,[4]]],22],[[10,10],[[8,[16]]]],[[11,11],[[8,[16]]]],[[12,12],[[8,[16]]]],[[1,1],[[8,[16]]]],[[3,3],[[8,[16]]]],[[[5,[[0,[27,4]]]],[5,[[0,[27,4]]]]],[[8,[16]]]],[[[6,[[0,[27,4]]]],[6,[[0,[27,4]]]]],[[8,[16]]]],[[[7,[4]]],2],[[[9,[4]]],2],[[[9,[4]]],2],[[[7,[4]]],2],[[[5,[4]]],1],[[[6,[4]]],3],[[[7,[4]]],1],[[[9,[4]]],3],[[[5,[4]],[5,[4]]],[[8,[2]]]],[[[6,[4]],[6,[4]]],[[8,[2]]]],[[1,2],1],[[1,1],1],[[3,3],3],[[3,2],3],[[[5,[4]],2],[[5,[4]]]],[[[6,[4]],2],[[6,[4]]]],[[1,2]],[[1,1]],[[3,3]],[[3,2]],[[[5,[4]],2]],[[[6,[4]],2]],[[[7,[4]],[5,[4]]],[[7,[4]]]],[[[9,[4]],[6,[4]]],[[9,[4]]]],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[5,[[28,[[5,[11]],29]]]],[[],28],[5,[[28,[[5,[12]],29]]]],[6,[[28,[[6,[11]],29]]]],[[],28],[6,[[28,[[6,[12]],29]]]],[[],28],[7,[[28,[[7,[12]],29]]]],[7,[[28,[[7,[11]],29]]]],[[],28],[9,[[28,[[9,[12]],29]]]],[9,[[28,[[9,[11]],29]]]],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[1,2],[3,2],[[],1],[[],3]],"c":[],"p":[[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[8,"PageSize"],[3,"Page"],[3,"Frame"],[3,"PageRange"],[4,"Option"],[3,"FrameRange"],[3,"Page4K"],[3,"Page2M"],[3,"Page1G"],[8,"Clone"],[3,"CopyablePageRange"],[3,"CopyableFrameRange"],[4,"Ordering"],[8,"Ord"],[15,"bool"],[3,"RangeInclusive"],[4,"MemoryState"],[8,"PartialEq"],[4,"MemChunkSize"],[3,"Formatter"],[6,"Result"],[8,"Copy"],[8,"Hasher"],[8,"PartialOrd"],[4,"Result"],[15,"str"],[3,"TypeId"]],"a":{"next_multiple_of":[38,39]}},\ "memory_x86_64":{"doc":"This crate implements the virtual memory subsystem …","t":"QDIIQQQQIQQDKLLLLMKMFKMLLKLLFFMLLLLLKKKKKKKKMKKKKKMMFFLLLLLL","n":["AdditionalReservedMemoryRegions","AggregatedSectionMemoryBounds","BootInformation","ElfSection","ElfSection","ElfSections","MemoryRegion","MemoryRegions","Module","Module","Modules","SectionMemoryBounds","additional_reserved_memory_regions","borrow","borrow","borrow_mut","borrow_mut","data","elf_sections","end","find_section_memory_bounds","flags","flags","fmt","fmt","framebuffer_info","from","from","get_p4","get_vga_mem_addr","init","into","into","is_empty","is_empty","is_empty","kernel_end","len","len","len","memory_regions","modules","name","name","rodata","rsdp","stack_size","start","start","start","start","text","tlb_flush_all","tlb_flush_virt_addr","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"memory_x86_64"]],"d":["","The address bounds and flags of the initial kernel …","","","","","","","","","","The address bounds and mapping flags of a section’s …","Returns additional reserved memory regions that aren’t …","","","","","","Returns the kernel’s ELF sections.","The ending virtual address and physical address.","Finds the addresses in memory of the main kernel sections, …","Returns the section’s flags.","The page table entry flags that should be used for mapping …","","","Returns information about the graphical framebuffer, if …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the current top-level page table address.","Gets the physical memory occupied by vga.","","Calls U::from(self).","Calls U::from(self).","Returns whether the section is empty.","Returns whether the module is empty.","Returns whether the boot information is empty.","Returns the end of the kernel’s image in memory.","Returns the section’s length in memory, as opposed to …","Returns the module’s length.","Returns the boot information’s length.","Returns memory regions describing the physical memory.","Returns the modules found in the kernel image.","Returns the section’s name.","Returns the module’s name.","","Returns the RSDP if it was provided by the bootloader.","Returns the stack size in bytes.","Returns the section’s starting virtual address.","Returns the module’s starting physical address.","Returns the boot information’s starting virtual address.","The starting virtual address and physical address.","","Flushes the whole TLB. ","Flushes the specific virtual address in TLB. ","","","","","",""],"i":[3,0,0,0,3,3,3,3,0,3,3,0,3,6,9,6,9,9,3,6,0,17,6,6,9,3,6,9,0,0,9,6,9,17,18,3,3,17,18,3,3,3,17,18,9,3,3,17,18,3,6,9,0,0,6,9,6,9,6,9],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[]],[[]],[[]],[[]],0,[[],[[2,[1]]]],0,[[3,4],[[2,[1]]]],[[],5],0,[[6,7],8],[[9,7],8],[[],[[11,[10]]]],[[]],[[]],[[],12],[[],[[2,[1]]]],0,[[]],[[]],[[],13],[[],13],[[],13],[[],[[2,[14,1]]]],[[],15],[[],15],[[],15],[[],[[2,[1]]]],[[]],[[],1],[[],[[2,[1,1]]]],0,[[],[[11,[12]]]],[[],[[2,[15,1]]]],[[],14],[[],12],[[],[[11,[14]]]],0,0,[[]],[14],[[],2],[[],2],[[],2],[[],2],[[],16],[[],16]],"c":[],"p":[[15,"str"],[4,"Result"],[8,"BootInformation"],[8,"Fn"],[3,"ElfSectionFlags"],[3,"SectionMemoryBounds"],[3,"Formatter"],[6,"Result"],[3,"AggregatedSectionMemoryBounds"],[3,"FramebufferInfo"],[4,"Option"],[3,"PhysicalAddress"],[15,"bool"],[3,"VirtualAddress"],[15,"usize"],[3,"TypeId"],[8,"ElfSection"],[8,"Module"]]},\ "mlx5":{"doc":"A mlx5 driver for a ConnectX-5 100GbE Network Interface …","t":"RRDRLLLFLLLLLLLL","n":["CONNECTX5_DEV","CONNECTX5_EX_DEV","ConnectX5Nic","MLX_VEND","borrow","borrow_mut","from","get_mlx5_nic","init","into","mac_address","send","send_fastpath","try_from","try_into","type_id"],"q":[[0,"mlx5"]],"d":["Device ID for the ConnectX-5 NIC","Device ID for the ConnectX-5-EX NIC","Struct representing a ConnectX-5 network interface card.","Vendor ID for Mellanox","","","Returns the argument unchanged.","Returns a reference to the NIC wrapped in a IrqSafeMutex, …","Initializes the new ConnectX-5 network interface card that …","Calls U::from(self).","Returns the MAC address of the physical function ","Adds a packet to be sent to the transmit queue and returns …","Adds a packet to be sent to the transmit queue.","","",""],"i":[0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1],"f":[0,0,0,0,[[]],[[]],[[]],[[],[[3,[[2,[1]]]]]],[[4,5,5,6],[[8,[[2,[1]],7]]]],[[]],[1,[[10,[9]]]],[[1,11],[[8,[7]]]],[[1,12,[13,[9]]]],[[],8],[[],8],[[],14]],"c":[],"p":[[3,"ConnectX5Nic"],[6,"IrqSafeMutex"],[4,"Option"],[3,"PciDevice"],[15,"usize"],[15,"u16"],[15,"str"],[4,"Result"],[15,"u8"],[15,"array"],[3,"TransmitBuffer"],[3,"PhysicalAddress"],[15,"slice"],[3,"TypeId"]]},\ "mlx_ethernet":{"doc":"This crate defines the layout of memory objects that make …","t":"DDDDDDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAAALLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLFAALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLANENNNNNNNNNNNNNNNNNNNNNEDDDENEDDEEENNNNNNNNNNNNNNNNNDENNNNNNNNNNNNNNNNENNNNNNNNNNNNNNEENNNENNNNENNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLNDENNNLLLLLLLLLLLLLLLLLLLNNDENLLLLLLLLLLLLLLLLLLLNNNDELLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Cqn","Eqn","FgId","FtId","Lkey","Pd","Rqn","Sqn","Td","Tirn","Tisn","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","command_queue","completion_queue","event_queue","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","initialization_segment","into","into","into","into","into","into","into","into","into","into","into","log_page_size","receive_queue","send_queue","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","work_queue","AccessRegister","AccessRegisterOpMod","AllocPd","AllocTransportDomain","AllocUar","AllocationFail","AllocationSuccess","BadBlockNumber","BadCommandType","BadIndex","BadInputLen","BadInputPointer","BadOp","BadOutputLen","BadOutputPointer","BadParam","BadPkt","BadResState","BadResource","BadResourceState","BadSize","BadSysState","BootPages","CmdState","Command","CommandBuilder","CommandCompletionStatus","CommandDeliveryStatus","CommandNotCompleted","CommandOpcode","CommandQueue","CommandQueueEntry","CommandQueueError","CommandReturnStatus","CommandTransportType","Completed","CreateCq","CreateEq","CreateFlowGroup","CreateFlowTable","CreateRq","CreateSq","CreateTir","CreateTis","EnableHca","EswVport","Ethernet","EthernetOffloadCapabilities","EthernetOffloadCapabilities","ExceedLim","GeneralDeviceCapabilities","GeneralDeviceCapabilities","HCACapabilities","HcaPortType","HcaReturnPages","IB","IncorrectCommandOpcode","InitHca","InitPages","Initialized","InputLenErr","InternalErr","InternalError","InvalidCommandDeliveryStatus","InvalidCommandOpcode","InvalidCommandReturnStatus","InvalidMailboxOffset","InvalidPortType","InvalidSQState","ManagePages","ManagePagesOpMod","MissingInput","MissingInputPages","ModifyNicVportContext","ModifyRq","ModifySq","NoCommandEntryAvailable","NoResources","NotImplemented","OK","OutputLenErr","PCIe","PageAllocationFailed","Posted","QueryHcaCap","QueryHcaCapCurrentOpMod","QueryHcaCapMaxOpMod","QueryIssi","QueryNicVportContext","QueryPages","QueryPagesOpMod","QueryRq","QuerySpecialContexts","QuerySq","QueryVportState","QueryVportStateOpMod","Read","RegularPages","ReservedNotZero","ResourceBusy","SetDriverVersion","SetFlowTableEntry","SetFlowTableRoot","SetIssi","SignatureErr","Success","TokenErr","UnimplementedOpcode","Uplink","VnicVport","Write","allocated_pages","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","collapsed_cq","complete","cqn","create","create_and_execute_command","db_page","default","eq","eq","eqn","flow_group_id","flow_table_id","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_command_status","get_cq_number","get_delivery_status","get_device_capabilities","get_eq_number","get_flow_group_id","get_flow_table_id","get_max_mtu","get_port_type","get_protection_domain","get_query_issi_command_output","get_query_pages_command_output","get_receive_queue_number","get_reserved_lkey","get_return_status","get_send_queue_number","get_sq_state","get_tir_context_number","get_tis_context_number","get_transport_domain","get_uar","get_vport_mac_address","get_vport_state","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","mtu","new","opmod","owned_by_hw","pd","post","queue_size","rqn","sqn","td","tirn","tisn","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","uar","wait_for_command_completion","CompletionQueue","CompletionQueueDoorbellRecord","CompletionQueueEntry","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","check_packet_transmission","default","default","dump","dump","fmt","from","from","from","init","init","into","into","into","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","EventQueue","EventQueueEntry","borrow","borrow","borrow_mut","borrow_mut","default","dump","dump","fmt","from","from","init","init","into","into","try_from","try_from","try_into","try_into","type_id","type_id","Abort","InitializationSegment","InitializingState","NotAllowed","WaitingPermetion","WaitingResources","borrow","borrow","borrow_mut","borrow_mut","cmdq_entry_stride","device_is_initializing","fmt","from","from","into","into","num_cmdq_entries","set_physical_address_of_cmdq","try_from","try_from","try_into","try_into","type_id","type_id","Error","Ready","ReceiveQueue","ReceiveQueueState","Reset","borrow","borrow","borrow_mut","borrow_mut","create","fmt","from","from","into","into","refill","try_from","try_from","try_from","try_from_primitive","try_into","try_into","type_id","type_id","Error","Ready","Reset","SendQueue","SendQueueState","borrow","borrow","borrow_mut","borrow_mut","create","dump","fmt","from","from","into","into","nop","send","try_from","try_from","try_from","try_from_primitive","try_into","try_into","type_id","type_id","DoorbellRecord","WorkQueueEntryReceive","WorkQueueEntrySend","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","default","default","default","dump","dump","from","from","from","init","init","into","into","into","nop","send","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_buffer_info"],"q":[[0,"mlx_ethernet"],[140,"mlx_ethernet::command_queue"],[461,"mlx_ethernet::completion_queue"],[493,"mlx_ethernet::event_queue"],[515,"mlx_ethernet::initialization_segment"],[540,"mlx_ethernet::receive_queue"],[564,"mlx_ethernet::send_queue"],[590,"mlx_ethernet::work_queue"]],"d":["completion queue number","event queue number","flow group id","flow table id","","protection domain","receive queue number","send queue number","transport domain","transport interface receive number","transport interface send number","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Defines the Command Queue that is used to pass commands …","Completion Queues (CQ) are circular buffers used by the …","Event Queues (EQ) are circular buffers used by the HCA to …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","This module defines the layout of the initialization …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Find the page size of the given num_bytes in units of 4KiB …","The Receive Queue (RQ) object holds the descriptor ring …","The Send Queue (SQ) object holds the descriptor ring used …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The Work Queue (WQ) contains a contiguous memory buffer …","","Possible values of the opcode modifer when the opcode is …","","","","","","","","","","","","","","","","","","","","","","The possible states a command can be in as it is updated …","A struct representing a Command Queue Entry in the Command …","Struct that makes it easier to pass the variety of …","","Return codes written by HW in the delivery status field of …","Trying to access the command entry before HW is done …","Command opcode written by SW in opcode field of the input …","A buffer of fixed-size entries that is used to pass …","Layout of a command passed to the NIC. The fields include …","Possible reasons for failure when executing a command","Command status written by HW in status field of the output …","Type of transport that carries the command.","The command has been processed by HW and output is ready …","","","","","","","","","","","","","","","","","The HCA capabilities are stored in this struct after being …","Possible values of the port type field returned when …","","Infiniband","Opcode value in the command entry is not what was expected","","","Command entries have been filled, but it is still owned by …","","","","Delivery status in the command entry is not a valid value","Opcode in the command entry is not a valid value","Return status in the command entry is not a valid value","Offset in a page is too large to map a …","The returned port type is not a valid value","The returned state of the SQ is invalid","","Possible values of the opcode modifer when the opcode is …","Any other input is not passed to a command that requires …","Allocated pages are not passed to a command that requires …","","","","All command entries are currently being used","","Some function has not been implemented for the given opcode","","","","A call to create a MappedPages failed","The command has been issued to the HW by ringing the …","","Possible values of the opcode modifer when the opcode is …","Possible values of the opcode modifer when the opcode is …","","","","Possible values of the opcode modifer when the opcode is …","","","","","Possible values of the opcode modifer when the opcode is …","","","","","","","","","","","","Initializing a comand entry for the given opcode has not …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Polls a completion bit until the command has been …","","Create a command queue object.","Find an command queue entry that is not in use","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the status of command delivery. This only informs …","Get the device capabilities, which is the output of the …","","","","Get the maximum value the MTU can be set to, which is the …","Get the number of pages requested by the NIC, which is the …","Get the protection domain number, which is the output of …","Get the current ISSI version and the supported ISSI …","Get the number of pages requested by the NIC, which is the …","","Get the value of the reserved Lkey for Base Memory …","Returns the status of command execution. A None returned …","","","","","Get the transport domain number, which is the output of …","Get the User Access Region (UAR) number, which is the …","Get the port mac address, which is the output of the …","Get the Vport state in the format (max_tx_speed, …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Returns true if the command is currently under the …","","Posts an initialized command by ringing the doorbell in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Waits for ownership bit to be cleared, and then returns …","A data structure that contains the CQ buffer and is used …","A structure containing information of recently-posted CQ …","The layout of an entry in the CQ buffer.","","","","","","","Checks if a packet is transmitted by comparing the …","","","Prints out all entries in the CQ","Prints out the fields of a CQE in the format used by other …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Creates a completion queue by mapping the buffer as a …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","A data structure that contains the EQ buffer and is used …","The layout of an entry in the EQ buffer.","","","","","","Prints out all entries in the EQ","Prints out the fields of an EQE in the format used by …","","Returns the argument unchanged.","Returns the argument unchanged.","Creates an event queue by mapping the buffer as a slice of …","","Calls U::from(self).","Calls U::from(self).","","","","","","","","The initialization segment is located at offset 0 of PCI …","The possible values of the initialization state of the …","","","","","","","","Returns the required stride of command queue entries …","Returns true if the device is still initializing, and …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Returns the maximum number of entries that can be in the …","Sets the physical address of the command queue within the …","","","","","","","","","A data structure that contains the RQ ring of descriptors …","The possible states the RQ can be in.","","","","","","Creates a RQ by mapping the buffer as a slice of …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Refills the receive queue by updating WQEs with new packet …","","","","","","","","","","","","A data structure that contains the SQ ring of descriptors …","The possible states the SQ can be in.","","","","","Creates a SQ by mapping the buffer as a slice of …","Prints out all entries in the SQ","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Perform all the steps to complete a NOP: initialize the …","Perform all the steps to send a packet: initialize the …","","","","","","","","","The layout of a doorbell record in memory. A doorbell …","WQEs are built from multiple segments. In the case of …","WQEs are built from multiple segments. In the case of Send …","","","","","","","","","","Prints out the fields of a WQE in the format used by other …","Prints out the fields of a WQE in the format used by other …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","set a WQE to an initial state","set a WQE to an initial state","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Fill the control segment of the WQE to execute a NOP.","Fill the control, ethernet and data segments of the WQE to …","","","","","","","","","","Fill the data segment of the WQE to receive packets."],"i":[0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11,0,20,0,20,20,20,59,59,35,35,36,36,35,36,36,35,36,36,36,36,36,36,36,60,0,0,0,0,0,32,0,0,0,0,0,0,34,20,20,20,20,20,20,20,20,20,61,37,21,22,36,21,22,0,0,59,37,32,20,60,34,35,35,36,32,32,32,32,32,32,20,0,32,32,20,20,20,32,36,32,36,35,62,32,34,20,0,0,20,20,20,0,20,20,20,20,0,23,60,35,36,20,20,20,20,35,35,35,32,61,61,23,17,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,20,21,22,23,20,21,22,23,17,24,17,25,25,17,26,20,34,17,17,17,35,20,36,37,38,26,39,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,25,25,26,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,17,17,17,26,17,24,17,17,17,17,17,17,20,21,22,23,62,32,59,60,61,24,17,25,35,35,20,20,36,36,21,22,23,37,37,34,38,26,39,35,20,36,37,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,62,32,59,60,61,24,17,25,35,20,36,21,22,23,37,34,38,26,39,17,25,0,0,0,43,44,45,43,44,45,43,44,45,43,44,44,43,44,45,43,44,43,44,45,43,44,45,43,44,45,43,44,45,0,0,48,47,48,47,47,48,47,47,48,47,48,47,48,47,48,47,48,47,48,47,63,0,0,63,63,63,63,31,63,31,31,31,31,63,31,63,31,31,31,63,31,63,31,63,31,52,52,0,0,52,51,52,51,52,51,52,51,52,51,52,51,51,52,52,52,51,52,51,52,54,54,54,0,0,53,54,53,54,53,53,54,53,54,53,54,53,53,53,54,54,54,53,54,53,54,0,0,0,56,57,58,56,57,58,56,57,58,57,58,56,57,58,57,58,56,57,58,57,57,56,57,58,56,57,58,56,57,58,58],"f":[0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[1,12],13],[[2,12],13],[[3,12],13],[[4,12],13],[[5,12],13],[[6,12],13],[[7,12],13],[[8,12],13],[[9,12],13],[[10,12],13],[[11,12],13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[14,14],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[17,[19,[18]]],17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[20,20],[21,21],[22,22],[23,23],[[]],[[]],[[]],[[]],[17,17],[[24,25],24],[[17,3],17],[[[28,[26,27]],29],[[15,[25,30]]]],[[25,17,31],[[15,[24,32]]]],[[17,18],17],[[],26],[[20,20],33],[[34,34],33],[[17,7],17],[[17,11],17],[[17,10],17],[[35,12],13],[[20,12],13],[[36,12],13],[[37,12],13],[[38,12],13],[[26,12],13],[[39,12],13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[25,24],[[15,[38,32]]]],[[25,24],[[15,[32]]]],[26,[[15,[35,32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[26,[[15,[36,32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[25,24],[[15,[32]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[17,40],17],[20,17],[[17,40],17],[26,33],[[17,4],17],[[24,31],24],[[17,14],17],[[17,1],17],[[17,2],17],[[17,5],17],[[17,8],17],[[17,9],17],[[]],[[]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[14,[[15,[35,[41,[35]]]]]],[[],15],[14,[[15,[20,[41,[20]]]]]],[42,[[15,[36,[41,[36]]]]]],[[],15],[[],15],[[],15],[[],15],[42,[[15,[37,[41,[37]]]]]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],[[15,[35,[41,[35]]]]]],[[],[[15,[20,[41,[20]]]]]],[[],[[15,[36,[41,[36]]]]]],[[],[[15,[37,[41,[37]]]]]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[17,14],17],[[25,24]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[43,29,40]],[[],44],[[],45],[43],[[44,29]],[[44,12],13],[[]],[[]],[[]],[[46,29,46,3],[[15,[43,30]]]],[44],[[]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],[[],16],0,0,[[]],[[]],[[]],[[]],[[],47],[48],[[47,29]],[[47,12],13],[[]],[[]],[[46,29,7],[[15,[48,30]]]],[47],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[31,42],[31,33],[[31,12],13],[[]],[[]],[[]],[[]],[31,42],[[31,18],[[15,[30]]]],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],0,0,0,0,0,[[]],[[]],[[]],[[]],[[46,29,14,[50,[49]],1,6,43],[[15,[51,30]]]],[[52,12],13],[[]],[[]],[[]],[[]],[51,[[15,[30]]]],[[],15],[[],15],[42,[[15,[52,[41,[52]]]]]],[[],[[15,[52,[41,[52]]]]]],[[],15],[[],15],[[],16],[[],16],0,0,0,0,0,[[]],[[]],[[]],[[]],[[46,29,46,46,2,9,6],[[15,[53,30]]]],[53],[[54,12],13],[[]],[[]],[[]],[[]],[53,40],[[53,18,[55,[42]]],40],[[],15],[[],15],[42,[[15,[54,[41,[54]]]]]],[[],[[15,[54,[41,[54]]]]]],[[],15],[[],15],[[],16],[[],16],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],56],[[],57],[[],58],[[57,29]],[[58,29]],[[]],[[]],[[]],[57],[58],[[]],[[]],[[]],[[57,14,14]],[[57,14,14,14,18,[55,[42]]]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],[[],16],[[58,14,18,14]]],"c":[],"p":[[3,"Rqn"],[3,"Sqn"],[3,"Cqn"],[3,"Pd"],[3,"Td"],[3,"Lkey"],[3,"Eqn"],[3,"Tirn"],[3,"Tisn"],[3,"FtId"],[3,"FgId"],[3,"Formatter"],[6,"Result"],[15,"u32"],[4,"Result"],[3,"TypeId"],[3,"CommandBuilder"],[3,"PhysicalAddress"],[3,"Vec"],[4,"CommandOpcode"],[4,"QueryHcaCapMaxOpMod"],[4,"QueryHcaCapCurrentOpMod"],[4,"AccessRegisterOpMod"],[3,"Command"],[3,"CommandQueue"],[3,"CommandQueueEntry"],[3,"Mutable"],[3,"BorrowedSliceMappedPages"],[15,"usize"],[15,"str"],[3,"InitializationSegment"],[4,"CommandQueueError"],[15,"bool"],[4,"CmdState"],[4,"CommandDeliveryStatus"],[4,"CommandReturnStatus"],[4,"HcaPortType"],[3,"CommandCompletionStatus"],[3,"HCACapabilities"],[15,"u16"],[3,"TryFromPrimitiveError"],[15,"u8"],[3,"CompletionQueue"],[3,"CompletionQueueEntry"],[3,"CompletionQueueDoorbellRecord"],[3,"MappedPages"],[3,"EventQueueEntry"],[3,"EventQueue"],[3,"ReceiveBuffer"],[3,"Queue"],[3,"ReceiveQueue"],[4,"ReceiveQueueState"],[3,"SendQueue"],[4,"SendQueueState"],[15,"slice"],[3,"DoorbellRecord"],[3,"WorkQueueEntrySend"],[3,"WorkQueueEntryReceive"],[4,"ManagePagesOpMod"],[4,"QueryPagesOpMod"],[4,"QueryVportStateOpMod"],[4,"CommandTransportType"],[4,"InitializingState"]]},\ @@ -138,7 +138,7 @@ var searchIndex = JSON.parse('{\ "scheduler_priority":{"doc":"This scheduler implements a priority algorithm.","t":"DLLLLFFLFFLLL","n":["PriorityInheritanceGuard","borrow","borrow_mut","drop","from","get_priority","inherit_priority","into","select_next_task","set_priority","try_from","try_into","type_id"],"q":[[0,"scheduler_priority"]],"d":["Lowers the task’s priority to its previous value when …","","","","Returns the argument unchanged.","","Modifies the given task’s priority to be the maximum of …","Calls U::from(self).","This defines the priority scheduler policy. Returns None …","","","",""],"i":[0,1,1,1,1,0,0,1,0,0,1,1,1],"f":[0,[[]],[[]],[1],[[]],[2,[[4,[3]]]],[2,1],[[]],[3,[[4,[2]]]],[[2,3]],[[],5],[[],5],[[],6]],"c":[],"p":[[3,"PriorityInheritanceGuard"],[3,"TaskRef"],[15,"u8"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ "scheduler_round_robin":{"doc":"This crate picks the next task in round robin fashion. …","t":"DLLLFLFLLL","n":["PriorityInheritanceGuard","borrow","borrow_mut","from","inherit_priority","into","select_next_task","try_from","try_into","type_id"],"q":[[0,"scheduler_round_robin"]],"d":["","","","Returns the argument unchanged.","","Calls U::from(self).","This defines the round robin scheduler policy. Returns …","","",""],"i":[0,2,2,2,0,2,0,2,2,2],"f":[0,[[]],[[]],[[]],[1,2],[[]],[3,[[4,[1]]]],[[],5],[[],5],[[],6]],"c":[],"p":[[3,"TaskRef"],[3,"PriorityInheritanceGuard"],[15,"u8"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ "sdt":{"doc":"ACPI table definitions and basic SDT structures.","t":"DRDMMMMLLLLMLLMMLLLLLLMMMMMMMLLLLLL","n":["GenericAddressStructure","SDT_SIZE_IN_BYTES","Sdt","access_size","address_space","bit_offset","bit_width","borrow","borrow","borrow_mut","borrow_mut","checksum","clone","clone","creator_id","creator_revision","fmt","fmt","from","from","into","into","length","oem_id","oem_revision","oem_table_id","phys_addr","revision","signature","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"sdt"]],"d":["A struct used to describe the position and layout of …","The size in bytes of the ACPI SDT Header (Sdt struct).","An ACPI System Descriptor Table. This is the header (the …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,0,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,1,1,1,1,2,1,1,1,2,1,2,1,2],"f":[0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],0,[1,1],[2,2],0,0,[[1,3],4],[[2,3],4],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[],5],[[],5],[[],5],[[],5],[[],6],[[],6]],"c":[],"p":[[3,"Sdt"],[3,"GenericAddressStructure"],[3,"Formatter"],[6,"Result"],[4,"Result"],[3,"TypeId"]]},\ -"serial_port":{"doc":"A full serial driver with more advanced I/O support, e.g., …","t":"NNNNDNDNDEDENNLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLFLLFLLLLLLMLLLLLLLLFLFLLLLLLLLLLLLLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataChunk","DataReceived","DataSenderAlreadyExists","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortBasic","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","base_port_address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","data","data_available","deref","deref_mut","drop","empty","enable_interrupt","eq","flush","fmt","fmt","fmt","from","from","from","from","from","from","from_str","get_serial_port","in_byte","in_bytes","init_serial_port","into","into","into","into","into","into","len","new","new","out_byte","out_bytes","out_str","read","ready_to_transmit","register_interrupt_handler","set_connection_listener","set_data_sender","take_serial_port_basic","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","write","write_str","write_str"],"q":[[0,"serial_port"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","A chunk of data read from a serial port that will be …","","An empty error type indicating that a data sender could …","","A serial port abstraction with support for interrupt-based …","The base port I/O addresses for COM serial ports.","A serial port and its various data and control registers.","The types of events that can trigger an interrupt on a …","","","","","","","","","","","","","","","","","","","Returns true if the serial port has data available to read.","","","","Returns a new DataChunk filled with zeroes that can be …","Enable or disable interrupts on this serial port for …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Obtains a reference to the SerialPort specified by the …","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Initializes the SerialPort specified by the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates and returns a new serial port structure, and …","Initialize this serial port by giving it ownership and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","","Returns true if the serial port is ready to transmit a …","Register the interrupt handler for this serial port and …","A temporary hack to allow the serial port interrupt handler","Tells this SerialPort to push received data bytes onto the …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[2,2,2,2,0,6,0,6,0,0,0,0,6,6,1,1,4,2,5,11,6,1,4,2,5,11,6,2,2,5,1,4,4,1,5,1,2,4,2,11,6,1,4,2,5,11,6,2,0,1,1,0,1,4,2,5,11,6,5,1,4,1,1,1,4,1,4,0,4,0,2,1,4,2,2,2,5,11,6,1,4,2,5,11,6,1,4,2,5,11,6,4,1,4],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[[]],0,[1,3],[4],[4],[1],[[],5],[[1,6,3]],[[2,2],3],[4,7],[[2,8],[[10,[9]]]],[[11,8],12],[[6,8],[[10,[9]]]],[[]],[[]],[[]],[[]],[[]],[[]],[13,[[10,[2]]]],[2,[[16,[[15,[[14,[4]]]]]]]],[1,17],[[1,[18,[17]]],19],[[2,1],[[16,[[15,[[14,[4]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],0,[20,1],[1,4],[[1,17]],[[1,[18,[17]]]],[[1,13]],[[4,[18,[17]]],[[7,[19]]]],[1,3],[[[15,[[14,[4]]]],21,22],[[10,[13]]]],[[[23,[2]]],[[23,[2]]]],[[4,[23,[5]]],[[10,[11]]]],[2,[[16,[1]]]],[[]],[[],10],[[],10],[[],10],[13,[[10,[2]]]],[20,[[10,[2]]]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[4,[18,[17]]],[[7,[19]]]],[[1,13],[[10,[9]]]],[[4,13],12]],"c":[],"p":[[3,"SerialPortBasic"],[4,"SerialPortAddress"],[15,"bool"],[3,"SerialPort"],[3,"DataChunk"],[4,"SerialPortInterruptEvent"],[6,"Result"],[3,"Formatter"],[3,"Error"],[4,"Result"],[3,"DataSenderAlreadyExists"],[6,"Result"],[15,"str"],[6,"IrqSafeMutex"],[3,"Arc"],[4,"Option"],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[6,"InterruptNumber"],[6,"HandlerFunc"],[3,"Sender"],[3,"TypeId"]]},\ +"serial_port":{"doc":"A full serial driver with more advanced I/O support, e.g., …","t":"NNNNDNDNDEDENNLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLFLLFLLLLLLMLLLLLLLLFLFLLLLLLLLLLLLLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataChunk","DataReceived","DataSenderAlreadyExists","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortBasic","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","base_port_address","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","data","data_available","deref","deref_mut","drop","empty","enable_interrupt","eq","flush","fmt","fmt","fmt","from","from","from","from","from","from","from_str","get_serial_port","in_byte","in_bytes","init_serial_port","into","into","into","into","into","into","len","new","new","out_byte","out_bytes","out_str","read","ready_to_transmit","register_interrupt_handler","set_connection_listener","set_data_sender","take_serial_port_basic","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","write","write_str","write_str"],"q":[[0,"serial_port"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","A chunk of data read from a serial port that will be …","","An empty error type indicating that a data sender could …","","A serial port abstraction with support for interrupt-based …","The base port I/O addresses for COM serial ports.","A serial port and its various data and control registers.","The types of events that can trigger an interrupt on a …","","","","","","","","","","","","","","","","","","","Returns true if the serial port has data available to read.","","","","Returns a new DataChunk filled with zeroes that can be …","Enable or disable interrupts on this serial port for …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Obtains a reference to the SerialPort specified by the …","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Initializes the SerialPort specified by the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Creates and returns a new serial port structure, and …","Initialize this serial port by giving it ownership and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","","Returns true if the serial port is ready to transmit a …","Register the interrupt handler for this serial port and …","A temporary hack to allow the serial port interrupt handler","Tells this SerialPort to push received data bytes onto the …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[2,2,2,2,0,6,0,6,0,0,0,0,6,6,1,1,4,2,5,11,6,1,4,2,5,11,6,2,2,5,1,4,4,1,5,1,2,4,2,11,6,1,4,2,5,11,6,2,0,1,1,0,1,4,2,5,11,6,5,1,4,1,1,1,4,1,4,0,4,0,2,1,4,2,2,2,5,11,6,1,4,2,5,11,6,1,4,2,5,11,6,4,1,4],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[[]],0,[1,3],[4],[4],[1],[[],5],[[1,6,3]],[[2,2],3],[4,7],[[2,8],[[10,[9]]]],[[11,8],12],[[6,8],[[10,[9]]]],[[]],[[]],[[]],[[]],[[]],[[]],[13,[[10,[2]]]],[2,[[16,[[15,[[14,[4]]]]]]]],[1,17],[[1,[18,[17]]],19],[[2,1],[[16,[[15,[[14,[4]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],0,[20,1],[1,4],[[1,17]],[[1,[18,[17]]]],[[1,13]],[[4,[18,[17]]],[[7,[19]]]],[1,3],[[[15,[[14,[4]]]],21,22],[[10,[13]]]],[[[23,[2]]],[[23,[2]]]],[[4,[23,[5]]],[[10,[11]]]],[2,[[16,[1]]]],[[]],[[],10],[[],10],[13,[[10,[2]]]],[20,[[10,[2]]]],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[4,[18,[17]]],[[7,[19]]]],[[1,13],[[10,[9]]]],[[4,13],12]],"c":[],"p":[[3,"SerialPortBasic"],[4,"SerialPortAddress"],[15,"bool"],[3,"SerialPort"],[3,"DataChunk"],[4,"SerialPortInterruptEvent"],[6,"Result"],[3,"Formatter"],[3,"Error"],[4,"Result"],[3,"DataSenderAlreadyExists"],[6,"Result"],[15,"str"],[6,"IrqSafeMutex"],[3,"Arc"],[4,"Option"],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[6,"InterruptNumber"],[6,"HandlerFunc"],[3,"Sender"],[3,"TypeId"]]},\ "serial_port_basic":{"doc":"Support for basic serial port access, including …","t":"NNNNNNDEENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLL","n":["COM1","COM2","COM3","COM4","DataReceived","ErrorOrBreak","SerialPort","SerialPortAddress","SerialPortInterruptEvent","StatusChange","TransmitterEmpty","base_port_address","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","data_available","drop","enable_interrupt","eq","fmt","fmt","from","from","from","from_str","in_byte","in_bytes","into","into","into","new","out_byte","out_bytes","out_str","ready_to_transmit","take_serial_port","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","write_str"],"q":[[0,"serial_port_basic"]],"d":["The base port I/O address for the COM1 serial port.","The base port I/O address for the COM2 serial port.","The base port I/O address for the COM3 serial port.","The base port I/O address for the COM4 serial port.","","","A serial port and its various data and control registers.","The base port I/O addresses for COM serial ports.","The types of events that can trigger an interrupt on a …","","","","","","","","","","","Returns true if the serial port has data available to read.","","Enable or disable interrupts on this serial port for …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Read one byte from the serial port, blocking until data is …","Reads multiple bytes from the serial port into the given …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Creates and returns a new serial port structure, and …","Write the given byte to the serial port, blocking until …","Write the given bytes to the serial port, blocking until …","Write the given string to the serial port, blocking until …","Returns true if the serial port is ready to transmit a …","Takes ownership of the SerialPort specified by the given …","","","","","","","","","","","",""],"i":[2,2,2,2,4,4,0,0,0,4,4,1,1,2,4,1,2,4,2,1,1,1,2,2,4,1,2,4,2,1,1,1,2,4,1,1,1,1,1,0,1,2,2,2,4,1,2,4,1,2,4,1],"f":[0,0,0,0,0,0,0,0,0,0,0,[1,2],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[1,3],[1],[[1,4,3]],[[2,2],3],[[2,5],6],[[4,5],6],[[]],[[]],[[]],[7,[[8,[2]]]],[1,9],[[1,[10,[9]]],11],[[]],[[]],[[]],[12,1],[[1,9]],[[1,[10,[9]]]],[[1,7]],[1,3],[2,[[13,[1]]]],[[],8],[7,[[8,[2]]]],[12,[[8,[2]]]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],14],[[],14],[[],14],[[1,7],6]],"c":[],"p":[[3,"SerialPort"],[4,"SerialPortAddress"],[15,"bool"],[4,"SerialPortInterruptEvent"],[3,"Formatter"],[6,"Result"],[15,"str"],[4,"Result"],[15,"u8"],[15,"slice"],[15,"usize"],[15,"u16"],[4,"Option"],[3,"TypeId"]]},\ "shapes":{"doc":"This crate defines the basic shapes used for display.","t":"DDLLLLLLLMLLLLLLLLLLLLLLLLLLLMLLLLLLLMM","n":["Coord","Rectangle","add","add","add","borrow","borrow","borrow_mut","borrow_mut","bottom_right","clone","clone","cmp","eq","eq","fmt","fmt","from","from","hash","hash","height","into","into","new","partial_cmp","sub","sub","sub","top_left","try_from","try_from","try_into","try_into","type_id","type_id","width","x","y"],"q":[[0,"shapes"]],"d":["A 2-D integer coordinate.","A rectangle given by its top-left coordinate and …","","","","","","","","The bottom-right point","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the height of this Rectangle.","Calls U::from(self).","Calls U::from(self).","Creates a new coordinate.","","","","","The top-left point","","","","","","","Returns the width of this Rectangle.","The x coordinate","The y coordinate"],"i":[0,0,1,1,2,1,2,1,2,2,1,2,1,1,2,1,2,1,2,1,2,2,1,2,1,1,1,1,2,2,1,2,1,2,1,2,2,1,1],"f":[0,0,[[1,1],1],[1,1],[[2,1],2],[[]],[[]],[[]],[[]],0,[1,1],[2,2],[[1,1],3],[[1,1],4],[[2,2],4],[[1,5],6],[[2,5],6],[[]],[[]],[[1,7]],[[2,7]],[2,8],[[]],[[]],[[9,9],1],[[1,1],[[10,[3]]]],[1,1],[[1,1],1],[[2,1],2],0,[[],11],[[],11],[[],11],[[],11],[[],12],[[],12],[2,8],0,0],"c":[],"p":[[3,"Coord"],[3,"Rectangle"],[4,"Ordering"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[15,"usize"],[15,"isize"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ "signal_handler":{"doc":"Signal handlers for CPU exceptions/errors, like …","t":"DNNENNNNEDZLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMLLLLLFMMFLLLLLLLLLLLLLLLMM","n":["AlreadyRegistered","ArithmeticError","BusError","ErrorCode","IllegalInstruction","InvalidAddress","Other","PageFaultError","Signal","SignalContext","SignalHandler","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","eq","eq","eq","error_code","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","instruction_pointer","into","into","into","into","partial_cmp","register_signal_handler","signal","stack_pointer","take_signal_handler","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","accessed_address","pf_error"],"q":[[0,"signal_handler"],[65,"signal_handler::ErrorCode"]],"d":["An error type indicating a handler had already been …","Bad arithmetic operation, e.g., divide by zero. Analogous …","Bad memory alignment, non-existent physical address. …","Possible error codes that may be provided by the CPU …","Invalid opcode, malformed instruction, etc. Analogous to …","Bad virtual address, unexpected page fault. Analogous to …","","","The possible signals that may occur due to CPU exceptions.","Information that is passed to a registered SignalHandler …","A signal handler is a callback function that will be …","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Register a SignalHandler callback function for the current …","","","Take the SignalHandler registered for the given signal for …","","","","","","","","","","","","","","","","",""],"i":[0,1,1,0,1,1,3,3,0,0,0,6,1,2,3,6,1,2,3,1,2,3,1,2,3,1,1,2,3,2,6,1,2,3,6,1,2,3,3,1,2,6,1,2,3,1,0,2,2,0,1,2,3,6,1,2,3,6,1,2,3,6,1,2,3,16,16],"f":[0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[[]],[[]],[[]],[[1,1],4],[[1,1],5],[[2,2],5],[[3,3],5],0,[[6,7],8],[[1,7],8],[[2,7],8],[[3,7],8],[[]],[[]],[[]],[9,3],[[]],[[1,10]],0,[[]],[[]],[[]],[[]],[[1,1],[[11,[4]]]],[[1,[13,[12]]],[[14,[6]]]],0,0,[1,[[11,[[13,[12]]]]]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],15],[[],15],[[],15],[[],15],0,0],"c":[],"p":[[4,"Signal"],[3,"SignalContext"],[4,"ErrorCode"],[4,"Ordering"],[15,"bool"],[3,"AlreadyRegistered"],[3,"Formatter"],[6,"Result"],[15,"u64"],[8,"Hasher"],[4,"Option"],[25,"SignalHandler"],[3,"Box"],[4,"Result"],[3,"TypeId"],[13,"PageFaultError"]]},\ diff --git a/doc/serial_port/struct.SerialPort.html b/doc/serial_port/struct.SerialPort.html index 25f20d0f88..abffc6b15e 100644 --- a/doc/serial_port/struct.SerialPort.html +++ b/doc/serial_port/struct.SerialPort.html @@ -43,20 +43,20 @@
Special characters if there are no bytes available to be read, indicating that the read would block.

source§

fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
§

fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>

Read all bytes until EOF in this source, placing them into buf. Read more
§

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

Read all bytes until EOF in this source, appending them to buf. Read more
§

unsafe fn initializer(&self) -> Initializer

Determines if this Reader can work with buffers of uninitialized -memory. Read more
§

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

Read the exact number of bytes required to fill buf. Read more
§

fn by_ref(&mut self) -> &mut Selfwhere +memory. Read more

§

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

Read the exact number of bytes required to fill buf. Read more
§

fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
§

fn bytes(self) -> Bytes<Self>where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
§

fn chain<R>(self, next: R) -> Chain<Self, R>where R: Read, Self: Sized,

Creates an adaptor which will chain this stream with another. Read more
§

fn take(self, limit: u64) -> Take<Self>where - Self: Sized,

Creates an adaptor which will read at most limit bytes from it. Read more
source§

impl Write for SerialPort

Forward the implementation of core::fmt::Write to the inner SerialPortBasic.

-
source§

fn write_str(&mut self, s: &str) -> Result

Writes a string slice into this writer, returning whether the write -succeeded. Read more
1.1.0 · source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Glue for usage of the write! macro with implementors of this trait. Read more
source§

impl Write for SerialPort

A blocking implementation of [core2::io::Write] that will write bytes from the given buf + Self: Sized,

Creates an adaptor which will read at most limit bytes from it. Read more
source§

impl Write for SerialPort

A blocking implementation of [core2::io::Write] that will write bytes from the given buf to the SerialPort, waiting until it is ready to transfer all bytes.

The flush() function is a no-op, since the SerialPort does not have buffering.

source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Write a buffer into this writer, returning how many bytes were written. Read more
source§

fn flush(&mut self) -> Result<()>

Flush this output stream, ensuring that all intermediately buffered -contents reach their destination. Read more
§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error -encountered. Read more
§

fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

Creates a “by reference” adaptor for this instance of Write. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +contents reach their destination. Read more

§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error +encountered. Read more
§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Creates a “by reference” adaptor for this instance of Write. Read more
source§

impl Write for SerialPort

Forward the implementation of core::fmt::Write to the inner SerialPortBasic.

+
source§

fn write_str(&mut self, s: &str) -> Result

Writes a string slice into this writer, returning whether the write +succeeded. Read more
1.1.0 · source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Glue for usage of the write! macro with implementors of this trait. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/doc/spawn/fn.cleanup_bootstrap_tasks.html b/doc/spawn/fn.cleanup_bootstrap_tasks.html index da64e74f65..ca6b17de8e 100644 --- a/doc/spawn/fn.cleanup_bootstrap_tasks.html +++ b/doc/spawn/fn.cleanup_bootstrap_tasks.html @@ -1,4 +1,4 @@ -cleanup_bootstrap_tasks in spawn - Rust
pub fn cleanup_bootstrap_tasks(num_tasks: u32) -> Result<(), &'static str>
Expand description

Spawns a dedicated task to cleanup all bootstrap tasks +cleanup_bootstrap_tasks in spawn - Rust

pub fn cleanup_bootstrap_tasks(num_tasks: u32) -> Result<(), &'static str>
Expand description

Spawns a dedicated task to cleanup all bootstrap tasks by reaping them, i.e., taking their exit value.

This allows them to be fully dropped and cleaned up safely, as it would be invalid to reap and cleanup bootstrap tasks diff --git a/doc/spawn/fn.init.html b/doc/spawn/fn.init.html index cee88398e5..373621c4cd 100644 --- a/doc/spawn/fn.init.html +++ b/doc/spawn/fn.init.html @@ -1,4 +1,4 @@ -init in spawn - Rust

Function spawn::init

source ·
pub fn init(
+init in spawn - Rust

Function spawn::init

source ·
pub fn init(
     kernel_mmi_ref: MmiRef,
     cpu_id: CpuId,
     stack: NoDrop<Stack>
diff --git a/doc/spawn/fn.new_application_task_builder.html b/doc/spawn/fn.new_application_task_builder.html
index 7613c5cf1c..bbb3170cdb 100644
--- a/doc/spawn/fn.new_application_task_builder.html
+++ b/doc/spawn/fn.new_application_task_builder.html
@@ -1,4 +1,4 @@
-new_application_task_builder in spawn - Rust
pub fn new_application_task_builder(
+new_application_task_builder in spawn - Rust
pub fn new_application_task_builder(
     crate_object_file: Path,
     new_namespace: Option<Arc<CrateNamespace>>
 ) -> Result<TaskBuilder<fn(_: Vec<String>) -> isize, Vec<String>, isize>, &'static str>
Expand description

Creates a builder for a new application Task.

diff --git a/doc/spawn/fn.new_task_builder.html b/doc/spawn/fn.new_task_builder.html index e4f15a4cfc..c462ee97c7 100644 --- a/doc/spawn/fn.new_task_builder.html +++ b/doc/spawn/fn.new_task_builder.html @@ -1,4 +1,4 @@ -new_task_builder in spawn - Rust

Function spawn::new_task_builder

source ·
pub fn new_task_builder<F, A, R>(func: F, argument: A) -> TaskBuilder<F, A, R>where
+new_task_builder in spawn - Rust

Function spawn::new_task_builder

source ·
pub fn new_task_builder<F, A, R>(func: F, argument: A) -> TaskBuilder<F, A, R>where
     A: Send + 'static,
     R: Send + 'static,
     F: FnOnce(A) -> R,
Expand description

Creates a builder for a new Task that starts at the given entry point function func diff --git a/doc/spawn/index.html b/doc/spawn/index.html index aec92afb83..30917ba1a4 100644 --- a/doc/spawn/index.html +++ b/doc/spawn/index.html @@ -1,4 +1,4 @@ -spawn - Rust

Crate spawn

source ·
Expand description

This crate offers routines for spawning new tasks +spawn - Rust

Crate spawn

source ·
Expand description

This crate offers routines for spawning new tasks and convenient builder patterns for customizing new tasks.

The two functions of interest to create a TaskBuilder are:

//! This crate contains structures and routines for context switching 
 //! when SSE/SIMD extensions are not active. 
 
@@ -166,6 +172,7 @@
 #[derive(FromBytes)]
 #[repr(C, packed)]
 pub struct ContextRegular {
+    rflags: usize,
     r15: usize, 
     r14: usize,
     r13: usize,
@@ -187,6 +194,9 @@
     /// Task containing it to begin its execution at the given `rip`.
     pub fn new(rip: usize) -> ContextRegular {
         ContextRegular {
+            // The ninth bit is the interrupt enable flag. When a task is first
+            // run, interrupts should already be enabled.
+            rflags: 1 << 9,
             r15: 0,
             r14: 0,
             r13: 0,
@@ -244,6 +254,7 @@
             push r13
             push r14
             push r15
+            pushfq
         "#
     );
 }
@@ -278,6 +289,7 @@
     () => (
         // Restore the next task's general purpose registers.
         r#" 
+            popfq
             pop r15
             pop r14
             pop r13
diff --git a/doc/src/memory_structs/lib.rs.html b/doc/src/memory_structs/lib.rs.html
index e48a6b02ff..83a2a54624 100644
--- a/doc/src/memory_structs/lib.rs.html
+++ b/doc/src/memory_structs/lib.rs.html
@@ -551,6 +551,183 @@
 551
 552
 553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
 
//! This crate contains basic types used for memory management.
 //!
 //! The types of interest are divided into three categories:
@@ -564,19 +741,74 @@
 #![allow(incomplete_features)]
 #![feature(adt_const_params)]
 
-use core::{
+#[cfg(test)]
+mod test;
+
+use core::{
     cmp::{min, max},
     fmt,
     iter::Step,
-    marker::ConstParamTy,
+    marker::{ConstParamTy, PhantomData},
     ops::{Add, AddAssign, Deref, DerefMut, Sub, SubAssign},
 };
-use kernel_config::memory::{MAX_PAGE_NUMBER, PAGE_SIZE};
+use kernel_config::memory::{MAX_PAGE_NUMBER, PAGE_SIZE, ENTRIES_PER_PAGE_TABLE};
 use zerocopy::FromBytes;
 use paste::paste;
 use derive_more::*;
 use range_inclusive::{RangeInclusive, RangeInclusiveIterator};
 
+/// Enum used to indicate the size of a page or frame.
+#[derive(Debug)]
+pub enum MemChunkSize {
+    Normal4K,
+    Huge2M,
+    Huge1G,
+}
+
+/// Trait that represents the size of a page or frame, i.e., for normal or huge pages.
+///
+/// This is used to parameterize `Page`- and `Frame`-related types with a page size,
+/// in order to define normal and huge pages in a generic manner.
+pub trait PageSize: Ord + PartialOrd + Clone + Copy + private::Sealed {
+    const SIZE: MemChunkSize;
+    const NUM_4K_PAGES: usize;
+    const SIZE_IN_BYTES: usize;
+}
+
+mod private {
+    pub trait Sealed { }
+}
+
+/// Marker struct used to indicate the default page size of 4KiB.
+#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
+pub struct Page4K;
+impl private::Sealed for Page4K { }
+impl PageSize for Page4K {
+    const SIZE: MemChunkSize = MemChunkSize::Normal4K;
+    const NUM_4K_PAGES: usize = 1;
+    const SIZE_IN_BYTES: usize = PAGE_SIZE;
+}
+
+/// Marker struct used to indicate a page size of 2MiB.
+#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
+pub struct Page2M;
+impl private::Sealed for Page2M { }
+impl PageSize for Page2M {
+    const SIZE: MemChunkSize = MemChunkSize::Huge2M;
+    const NUM_4K_PAGES: usize = Page4K::NUM_4K_PAGES * ENTRIES_PER_PAGE_TABLE;
+    const SIZE_IN_BYTES: usize = Self::NUM_4K_PAGES * Page4K::SIZE_IN_BYTES;
+}
+
+/// Marker struct used to indicate a page size of 1GiB.
+#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
+pub struct Page1G;
+impl private::Sealed for Page1G { }
+impl PageSize for Page1G {
+    const SIZE: MemChunkSize = MemChunkSize::Huge1G;
+    const NUM_4K_PAGES: usize = Page2M::NUM_4K_PAGES * ENTRIES_PER_PAGE_TABLE;
+    const SIZE_IN_BYTES: usize = Self::NUM_4K_PAGES * Page4K::SIZE_IN_BYTES;
+}
+
 /// The possible states that a range of exclusively-owned pages or frames can be in.
 #[derive(PartialEq, Eq, ConstParamTy)]
 pub enum MemoryState {
@@ -633,12 +865,12 @@
                     self.0
                 }
 
-                #[doc = "Returns the offset from the " $chunk " boundary specified by this `"
-                    $TypeName ".\n\n \
-                    For example, if the [`PAGE_SIZE`] is 4096 (4KiB), then this will return
+                #[doc = "Returns the offset from the 4K " $chunk " boundary specified by this `"
+                $TypeName ".\n\n \
+                    For example, for the address `0xFFFF_1578`, this will return `0x578`,
                     the least significant 12 bits `(12:0]` of this `" $TypeName "`."]
                 pub const fn [<$chunk _offset>](&self) -> usize {
-                    self.0 & (PAGE_SIZE - 1)
+                    self.0 & (Page4K::SIZE_IN_BYTES - 1)
                 }
             }
             impl fmt::Debug for $TypeName {
@@ -816,29 +1048,21 @@
 macro_rules! implement_page_frame {
     ($TypeName:ident, $desc:literal, $prefix:literal, $address:ident) => {
         paste! { // using the paste crate's macro for easy concatenation
-
-            #[doc = "A `" $TypeName "` is a chunk of **" $desc "** memory aligned to a [`PAGE_SIZE`] boundary."]
+            #[doc = "A `" $TypeName "` is a chunk of **" $desc "** memory aligned to \
+                a page boundary (default 4KiB) given by the `P` parameter."]
             #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
-            pub struct $TypeName {
-                number: usize,
+            pub struct $TypeName<P: PageSize = Page4K> {
+                /// A Page or Frame number is *always* given in terms of 4KiB pages/frames,
+                /// even for huge pages/frames.
+                number: usize,
+                size: PhantomData::<P>,
             }
-
-            impl $TypeName {
-                #[doc = "Returns the `" $address "` at the start of this `" $TypeName "`."]
-                pub const fn start_address(&self) -> $address {
-                    $address::new_canonical(self.number * PAGE_SIZE)
-                }
-
-                #[doc = "Returns the number of this `" $TypeName "`."]
-                #[inline(always)]
-                pub const fn number(&self) -> usize {
-                    self.number
-                }
-                
-                #[doc = "Returns the `" $TypeName "` containing the given `" $address "`."]
+            impl $TypeName<Page4K> {
+                #[doc = "Returns the 4KiB `" $TypeName "` containing the given `" $address "`."]
                 pub const fn containing_address(addr: $address) -> $TypeName {
                     $TypeName {
-                        number: addr.value() / PAGE_SIZE,
+                        number: addr.value() / Page4K::SIZE_IN_BYTES,
+                        size: PhantomData,
                     }
                 }
 
@@ -847,59 +1071,149 @@
                 #[doc(alias = "next_multiple_of")]
                 pub const fn align_up(&self, alignment_4k_pages: usize) -> $TypeName {
                     $TypeName {
-                        number: self.number.next_multiple_of(alignment_4k_pages)
+                        number: self.number.next_multiple_of(alignment_4k_pages),
+                        size: PhantomData
                     }
                 }
             }
-            impl fmt::Debug for $TypeName {
+            impl $TypeName<Page2M> {
+                #[doc = "Returns the 2MiB huge `" $TypeName "` containing the given `" $address "`."]
+                pub const fn containing_address_2mb(addr: $address) -> $TypeName<Page2M> {
+                    $TypeName {
+                        number: (addr.value() / Page2M::SIZE_IN_BYTES) * Page2M::NUM_4K_PAGES,
+                        size: PhantomData,
+                    }
+                }
+            }
+            impl $TypeName<Page1G> {
+                #[doc = "Returns the 1GiB huge `" $TypeName "` containing the given `" $address "`."]
+                pub const fn containing_address_1gb(addr: $address) -> $TypeName<Page1G> {
+                    $TypeName {
+                        number: (addr.value() / Page1G::SIZE_IN_BYTES) * Page1G::NUM_4K_PAGES,
+                        size: PhantomData,
+                    }
+                }
+            }
+            impl<P: PageSize + 'static> $TypeName<P> {
+                #[doc = "Returns the 4K-sized number of this `" $TypeName "`."]
+                #[inline(always)]
+                pub const fn number(&self) -> usize {
+                    self.number
+                }
+
+                #[doc = "Returns the `" $address "` at the start of this `" $TypeName "`."]
+                pub const fn start_address(&self) -> $address {
+                    $address::new_canonical(self.number * Page4K::SIZE_IN_BYTES)
+                }
+
+                #[doc = "Returns the size of this `" $TypeName "`."]
+                pub const fn page_size(&self) -> MemChunkSize {
+                    P::SIZE
+                }
+            }
+            impl<P: PageSize + 'static> fmt::Debug for $TypeName<P> {
                 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                     write!(f, concat!(stringify!($TypeName), "(", $prefix, "{:#X})"), self.start_address())
                 }
             }
-            impl Add<usize> for $TypeName {
-                type Output = $TypeName;
-                fn add(self, rhs: usize) -> $TypeName {
+            impl<P: PageSize + 'static> Add<usize> for $TypeName<P> {
+                type Output = $TypeName<P>;
+                fn add(self, rhs: usize) -> $TypeName<P> {
                     // cannot exceed max page number (which is also max frame number)
                     $TypeName {
-                        number: core::cmp::min(MAX_PAGE_NUMBER, self.number.saturating_add(rhs)),
+                        number: core::cmp::min(
+                            MAX_PAGE_NUMBER,
+                            self.number.saturating_add(rhs.saturating_mul(P::NUM_4K_PAGES))
+                        ),
+                        size: self.size,
                     }
                 }
             }
-            impl AddAssign<usize> for $TypeName {
+            impl<P: PageSize + 'static> AddAssign<usize> for $TypeName<P> {
                 fn add_assign(&mut self, rhs: usize) {
                     *self = $TypeName {
-                        number: core::cmp::min(MAX_PAGE_NUMBER, self.number.saturating_add(rhs)),
-                    };
+                        number: core::cmp::min(
+                            MAX_PAGE_NUMBER,
+                            self.number.saturating_add(rhs.saturating_mul(P::NUM_4K_PAGES))
+                        ),
+                        size: self.size,
+                    }
                 }
             }
-            impl Sub<usize> for $TypeName {
-                type Output = $TypeName;
-                fn sub(self, rhs: usize) -> $TypeName {
+            impl<P: PageSize + 'static> Sub<usize> for $TypeName<P> {
+                type Output = $TypeName<P>;
+                fn sub(self, rhs: usize) -> $TypeName<P> {
                     $TypeName {
-                        number: self.number.saturating_sub(rhs),
+                        number: self.number.saturating_sub(rhs.saturating_mul(P::NUM_4K_PAGES)),
+                        size: self.size
                     }
                 }
             }
-            impl SubAssign<usize> for $TypeName {
+            impl<P: PageSize + 'static> SubAssign<usize> for $TypeName<P> {
                 fn sub_assign(&mut self, rhs: usize) {
                     *self = $TypeName {
-                        number: self.number.saturating_sub(rhs),
-                    };
+                        number: self.number.saturating_sub(rhs.saturating_mul(P::NUM_4K_PAGES)),
+                        size: self.size
+                    }
                 }
             }
-            #[doc = "Implementing `Step` allows `" $TypeName "` to be used in an [`Iterator`]."]
-            impl Step for $TypeName {
+            impl<P: PageSize + 'static> Step for $TypeName<P> {
                 #[inline]
-                fn steps_between(start: &$TypeName, end: &$TypeName) -> Option<usize> {
+                fn steps_between(start: &$TypeName<P>, end: &$TypeName<P>) -> Option<usize> {
                     Step::steps_between(&start.number, &end.number)
+                        .map(|n| n / P::NUM_4K_PAGES)
                 }
                 #[inline]
-                fn forward_checked(start: $TypeName, count: usize) -> Option<$TypeName> {
-                    Step::forward_checked(start.number, count).map(|n| $TypeName { number: n })
+                fn forward_checked(start: $TypeName<P>, count: usize) -> Option<$TypeName<P>> {
+                    Step::forward_checked(start.number, count * P::NUM_4K_PAGES)
+                        .map(|number| $TypeName { number, size: PhantomData })
                 }
                 #[inline]
-                fn backward_checked(start: $TypeName, count: usize) -> Option<$TypeName> {
-                    Step::backward_checked(start.number, count).map(|n| $TypeName { number: n })
+                fn backward_checked(start: $TypeName<P>, count: usize) -> Option<$TypeName<P>> {
+                    Step::backward_checked(start.number, count * P::NUM_4K_PAGES)
+                        .map(|number| $TypeName { number, size: PhantomData })
+                }
+            }
+            impl TryFrom<$TypeName<Page4K>> for $TypeName<Page2M> {
+                type Error = &'static str;
+                fn try_from(p: $TypeName) -> Result<Self, &'static str>  {
+                    if p.number % Page2M::NUM_4K_PAGES == 0 {
+                        Ok(Self {
+                            number: p.number,
+                            size: PhantomData,
+                        })
+                    } else {
+                        Err("Could not convert 4KiB to 2MiB page.")
+                    }
+                }
+            }
+            impl TryFrom<$TypeName<Page4K>> for $TypeName<Page1G> {
+                type Error = &'static str;
+                fn try_from(p: $TypeName) -> Result<Self, &'static str> {
+                     if p.number % Page1G::NUM_4K_PAGES == 0 {
+                        Ok(Self {
+                            number: p.number,
+                            size: PhantomData,
+                        })
+                    } else {
+                        Err("Could not convert 4KiB to 1GiB page.")
+                    }
+                }
+            }
+            impl From<$TypeName<Page1G>> for $TypeName<Page4K> {
+                fn from(p: $TypeName<Page1G>) -> Self { 
+                    Self {                             
+                        number: p.number,
+                        size: PhantomData
+                    }
+                }
+            }
+            impl From<$TypeName<Page2M>> for $TypeName<Page4K> {
+                fn from(p: $TypeName<Page2M>) -> Self { 
+                    Self {                             
+                        number: p.number,
+                        size: PhantomData
+                    }
                 }
             }
         }
@@ -910,7 +1224,7 @@
 implement_page_frame!(Frame, "physical", "p", PhysicalAddress);
 
 // Implement other functions for the `Page` type that aren't relevant for `Frame.
-impl Page {
+impl<P: PageSize + 'static> Page<P> {
     /// Returns the 9-bit part of this `Page`'s [`VirtualAddress`] that is the index into the P4 page table entries list.
     pub const fn p4_index(&self) -> usize {
         (self.number >> 27) & 0x1FF
@@ -945,17 +1259,12 @@
                         
             #[doc = "A range of [`" $chunk "`]s that are contiguous in " $desc " memory."]
             #[derive(Clone, PartialEq, Eq)]
-            pub struct $TypeName(RangeInclusive<$chunk>);
-
-            impl $TypeName {
-                #[doc = "Creates a new range of [`" $chunk "`]s that spans from `start` to `end`, both inclusive bounds."]
-                pub const fn new(start: $chunk, end: $chunk) -> $TypeName {
-                    $TypeName(RangeInclusive::new(start, end))
-                }
+            pub struct $TypeName<P: PageSize = Page4K>(RangeInclusive<$chunk::<P>>);
 
+            impl $TypeName<Page4K> {
                 #[doc = "Creates a `" $TypeName "` that will always yield `None` when iterated."]
-                pub const fn empty() -> $TypeName {
-                    $TypeName::new($chunk { number: 1 }, $chunk { number: 0 })
+                pub const fn empty() -> Self {
+                    Self::new($chunk { number: 1, size: PhantomData }, $chunk { number: 0, size: PhantomData })
                 }
 
                 #[doc = "A convenience method for creating a new `" $TypeName "` that spans \
@@ -972,6 +1281,12 @@
                         $TypeName::new(start, end)
                     }
                 }
+            }
+            impl<P: PageSize + 'static> $TypeName<P> {
+                #[doc = "Creates a new range of [`" $chunk "`]s that spans from `start` to `end`, both inclusive bounds."]
+                pub const fn new(start: $chunk<P>, end: $chunk<P>) -> $TypeName<P> {
+                    $TypeName(RangeInclusive::new(start, end))
+                }
 
                 #[doc = "Returns the [`" $address "`] of the starting [`" $chunk "`] in this `" $TypeName "`."]
                 pub const fn start_address(&self) -> $address {
@@ -983,17 +1298,19 @@
                     This is instant, because it doesn't need to iterate over each entry, unlike normal iterators."]
                 pub const fn [<size_in_ $chunk:lower s>](&self) -> usize {
                     // add 1 because it's an inclusive range
-                    (self.0.end().number + 1).saturating_sub(self.0.start().number)
+                    (self.0.end().number + (1 * P::NUM_4K_PAGES))
+                        .saturating_sub(self.0.start().number)
+                        / P::NUM_4K_PAGES
                 }
 
-                /// Returns the size of this range in number of bytes.
+                #[doc = "Returns the size of this range in bytes."]
                 pub const fn size_in_bytes(&self) -> usize {
-                    self.[<size_in_ $chunk:lower s>]() * PAGE_SIZE
+                    self.[<size_in_ $chunk:lower s>]() * P::SIZE_IN_BYTES
                 }
 
                 #[doc = "Returns `true` if this `" $TypeName "` contains the given [`" $address "`]."]
                 pub const fn contains_address(&self, addr: $address) -> bool {
-                    let c = $chunk::containing_address(addr);
+                    let c = $chunk::<Page4K>::containing_address(addr);
                     self.0.start().number <= c.number
                         && c.number <= self.0.end().number
                 }
@@ -1027,7 +1344,7 @@
                 }
 
                 #[doc = "Returns a new separate `" $TypeName "` that is extended to include the given [`" $chunk "`]."]
-                pub fn to_extended(&self, to_include: $chunk) -> $TypeName {
+                pub fn to_extended(&self, to_include: $chunk<P>) -> $TypeName<P> {
                     // if the current range was empty, return a new range containing only the given page/frame
                     if self.is_empty() {
                         return $TypeName::new(to_include.clone(), to_include);
@@ -1037,10 +1354,18 @@
                     $TypeName::new(start.clone(), end.clone())
                 }
 
+                #[doc = "Returns `true` if the `other` `" $TypeName "` is fully contained within this `" $TypeName "`."]
+                pub fn contains_range(&self, other: &$TypeName<P>) -> bool {
+                    !other.is_empty()
+                    && (other.start() >= self.start())
+                    && (other.end() <= self.end())
+                }
+            }
+            impl<P: PageSize + Copy + 'static> $TypeName<P> {
                 #[doc = "Returns an inclusive `" $TypeName "` representing the [`" $chunk "`]s that overlap \
                     across this `" $TypeName "` and the given other `" $TypeName "`.\n\n \
                     If there is no overlap between the two ranges, `None` is returned."]
-                pub fn overlap(&self, other: &$TypeName) -> Option<$TypeName> {
+                pub fn overlap(&self, other: &$TypeName<P>) -> Option<$TypeName<P>> {
                     let starts = max(*self.start(), *other.start());
                     let ends   = min(*self.end(),   *other.end());
                     if starts <= ends {
@@ -1049,22 +1374,15 @@
                         None
                     }
                 }
-
-                #[doc = "Returns `true` if the `other` `" $TypeName "` is fully contained within this `" $TypeName "`."]
-                pub fn contains_range(&self, other: &$TypeName) -> bool {
-                    !other.is_empty()
-                    && (other.start() >= self.start())
-                    && (other.end() <= self.end())
-                }
             }
-            impl fmt::Debug for $TypeName {
+            impl<P: PageSize + 'static> fmt::Debug for $TypeName<P> {
                 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
                     write!(f, "{:?}", self.0)
                 }
             }
-            impl Deref for $TypeName {
-                type Target = RangeInclusive<$chunk>;
-                fn deref(&self) -> &RangeInclusive<$chunk> {
+            impl<P: PageSize + 'static> Deref for $TypeName<P> {
+                type Target = RangeInclusive<$chunk<P>>;
+                fn deref(&self) -> &RangeInclusive<$chunk<P>> {
                     &self.0
                 }
             }
@@ -1073,31 +1391,67 @@
                     &mut self.0
                 }
             }
-            impl IntoIterator for $TypeName {
-                type Item = $chunk;
-                type IntoIter = RangeInclusiveIterator<$chunk>;
+            impl<P: PageSize + 'static> IntoIterator for $TypeName<P> {
+                type Item = $chunk<P>;
+                type IntoIter = RangeInclusiveIterator<$chunk<P>>;
                 fn into_iter(self) -> Self::IntoIter {
                     self.0.iter()
                 }
             }
 
             
-            #[doc = "A `" $TypeName "` that implements `Copy`"]
+            #[doc = "A `" $TypeName "` that implements `Copy`."]
             #[derive(Clone, Copy)]
-            pub struct [<Copyable $TypeName>] {
-                start: $chunk,
-                end: $chunk,
+            pub struct [<Copyable $TypeName>]<P: PageSize = Page4K> {
+                start: $chunk<P>,
+                end: $chunk<P>,
             }
-            impl From<$TypeName> for [<Copyable $TypeName>] {
-                fn from(r: $TypeName) -> Self {
+            impl<P: PageSize + Copy + 'static> From<$TypeName<P>> for [<Copyable $TypeName>]<P> {
+                fn from(r: $TypeName<P>) -> Self {
                     Self { start: *r.start(), end: *r.end() }
                 }
             }
-            impl From<[<Copyable $TypeName>]> for $TypeName {
-                fn from(cr: [<Copyable $TypeName>]) -> Self {
+            impl<P: PageSize + Copy + 'static> From<[<Copyable $TypeName>]<P>> for $TypeName<P> {
+                fn from(cr: [<Copyable $TypeName>]<P>) -> Self {
                     Self::new(cr.start, cr.end)
                 }
             }
+            impl From<$TypeName<Page2M>> for $TypeName<Page4K> {
+                fn from(r: $TypeName<Page2M>) -> Self {
+                    Self::new($chunk::from(*r.start()), $chunk::from(*r.end()))
+                }
+            }
+            impl From<$TypeName<Page1G>> for $TypeName<Page4K> {
+                fn from(r: $TypeName<Page1G>) -> Self {
+                    Self::new($chunk::from(*r.start()), $chunk::from(*r.end()))
+                }
+            }
+            impl TryFrom<$TypeName<Page4K>> for $TypeName<Page2M> {
+                type Error = &'static str;
+                fn try_from(p: $TypeName) -> Result<Self, &'static str> {
+                    if let Ok(aligned_upper_bound) = $chunk::<Page2M>::try_from(*p.end() + 1) {
+                        return Ok(Self::new(
+                            $chunk::<Page2M>::try_from(*p.start())?,
+                            aligned_upper_bound - 1,
+                        ));
+                    } else {
+                        return Err("Could not convert 4KiB page range into 2MiB page range.");
+                    }
+                }
+            }
+            impl TryFrom<$TypeName<Page4K>> for $TypeName<Page1G> {
+                type Error = &'static str;
+                fn try_from(p: $TypeName) -> Result<Self, &'static str> {
+                    if let Ok(aligned_upper_bound) = $chunk::<Page1G>::try_from(*p.end() + 1) {
+                        return Ok(Self::new(
+                            $chunk::<Page1G>::try_from(*p.start())?,
+                            aligned_upper_bound - 1,
+                        ));
+                    } else {
+                        return Err("Could not convert 4KiB page range into 1GiB page range.");
+                    }
+                }
+            }
         }
     };
 }
diff --git a/doc/src/spawn/lib.rs.html b/doc/src/spawn/lib.rs.html
index 27a14da88b..1322dc5fb0 100644
--- a/doc/src/spawn/lib.rs.html
+++ b/doc/src/spawn/lib.rs.html
@@ -1019,10 +1019,6 @@
 1019
 1020
 1021
-1022
-1023
-1024
-1025
 
//! This crate offers routines for spawning new tasks
 //! and convenient builder patterns for customizing new tasks. 
 //! 
@@ -1053,7 +1049,6 @@
 use cpu::CpuId;
 use debugit::debugit;
 use spin::Mutex;
-use irq_safety::enable_interrupts;
 use memory::{get_kernel_mmi_ref, MmiRef};
 use stack::Stack;
 use task::{Task, TaskRef, RestartInfo, RunState, JoinableTaskRef, ExitableTaskRef, FailureCleanupFunction};
@@ -1688,7 +1683,13 @@
     R: Send + 'static,
     F: FnOnce(A) -> R,
 {
-    let task_entry_func;
+    // The first time a task runs, its entry function `task_wrapper()` is
+    // jumped to from the `task_switch()` function, right after the context
+    // switch occured. However, we set the context of the new task to have
+    // interrupts enabled (in `ContextRegular::new`), so interrupts are enabled
+    // as soon as the new task is switched to.
+
+    let task_entry_func;
     let task_arg;
     let recovered_preemption_guard;
     let exitable_taskref;
@@ -1732,16 +1733,7 @@
         );
     }
 
-    // The first time that a task runs, its entry function `task_wrapper()` is jumped to
-    // from the `task_switch()` function, right after the context switch occurred.
-    // Since the `task_switch()` function was originally invoked from an interrupt handler,
-    // interrupts were disabled but never had the chance to be re-enabled
-    // because we did not return from the interrupt handler as usual.
-    // Therefore, we need to re-enable interrupts and preemption here to ensure that
-    // things continue to run as normal, with interrupts and preemption enabled
-    // such that we can properly preempt this task.
-    drop(recovered_preemption_guard);
-    enable_interrupts();
+    drop(recovered_preemption_guard);
 
     // This synchronizes with the acquire fence in `JoinableTaskRef::join()`.
     fence(Ordering::Release);
diff --git a/doc/stack/struct.Stack.html b/doc/stack/struct.Stack.html
index fcb77505d8..98ef8dfacc 100644
--- a/doc/stack/struct.Stack.html
+++ b/doc/stack/struct.Stack.html
@@ -136,9 +136,9 @@ 
Arguments

Methods from Deref<Target = AllocatedPages>§

pub fn start_address(&self) -> VirtualAddress

Returns the starting VirtualAddress in this range of pages.

pub fn size_in_bytes(&self) -> usize

Returns the size in bytes of this range of pages.

pub fn size_in_pages(&self) -> usize

Returns the size in number of pages of this range of pages.

-

pub fn start(&self) -> &Page

Returns the starting Page in this range of pages.

-

pub fn end(&self) -> &Page

Returns the ending Page (inclusive) in this range of pages.

-

pub fn range(&self) -> &PageRange

Returns a reference to the inner PageRange, which is cloneable/iterable.

+

pub fn start(&self) -> &Page<Page4K>

Returns the starting Page in this range of pages.

+

pub fn end(&self) -> &Page<Page4K>

Returns the ending Page (inclusive) in this range of pages.

+

pub fn range(&self) -> &PageRange<Page4K>

Returns a reference to the inner PageRange, which is cloneable/iterable.

pub fn offset_of_address(&self, addr: VirtualAddress) -> Option<usize>

Returns the offset of the given VirtualAddress within this range of pages, i.e., addr - self.start_address().

If the given addr is not covered by this range of pages, this returns None.