diff --git a/doc/boot_info/index.html b/doc/boot_info/index.html index 27fef04fe0..154d33c77f 100644 --- a/doc/boot_info/index.html +++ b/doc/boot_info/index.html @@ -1,4 +1,4 @@ -boot_info - Rust

Crate boot_info

source ·
Expand description

This crate provides an abstraction over multiboot2 and UEFI boot +boot_info - Rust

Crate boot_info

source ·
Expand description

This crate provides an abstraction over multiboot2 and UEFI boot information.

It allows the kernel’s initialisation to be the same, regardless of whether it was booted using BIOS or UEFI.

diff --git a/doc/boot_info/multiboot2/index.html b/doc/boot_info/multiboot2/index.html index 5419ca1862..02dd851f65 100644 --- a/doc/boot_info/multiboot2/index.html +++ b/doc/boot_info/multiboot2/index.html @@ -1 +1 @@ -boot_info::multiboot2 - Rust
\ No newline at end of file +boot_info::multiboot2 - Rust
\ No newline at end of file diff --git a/doc/boot_info/struct.ElfSectionFlags.html b/doc/boot_info/struct.ElfSectionFlags.html index 34384d02ac..5f8116a057 100644 --- a/doc/boot_info/struct.ElfSectionFlags.html +++ b/doc/boot_info/struct.ElfSectionFlags.html @@ -1,15 +1,15 @@ -ElfSectionFlags in boot_info - Rust
pub struct ElfSectionFlags { /* private fields */ }
Expand description

ELF section flags.

-

Implementations§

The section contains data that should be writable during program execution.

-

The section occupies memory during the process execution.

-

The section contains executable machine instructions.

-

Returns an empty set of flags.

-

Returns the set containing all flags.

-

Returns the raw value of the flags currently stored.

-

Convert from underlying bit representation, unless that +ElfSectionFlags in boot_info - Rust

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

ELF section flags.

+

Implementations§

The section contains data that should be writable during program execution.

+

The section occupies memory during the process execution.

+

The section contains executable machine instructions.

+

Returns an empty set of flags.

+

Returns the set containing all flags.

+

Returns the raw value of the flags currently stored.

+

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

-

Convert from underlying bit representation, dropping any bits +

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

-

Convert from underlying bit representation, preserving all +

Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).

Safety

The caller of the bitflags! macro can chose to allow or @@ -17,35 +17,35 @@

Safety

The caller of from_bits_unchecked() has to ensure that all bits correspond to a defined flag or that extra bits are valid for this bitflags type.

-

Returns true if no flags are currently stored.

-

Returns true if all flags are currently set.

-

Returns true if there are flags common to both self and other.

-

Returns true if all of the flags in other are contained within self.

-

Inserts the specified flags in-place.

-

Removes the specified flags in-place.

-

Toggles the specified flags in-place.

-

Inserts or removes the specified flags depending on the passed value.

-

Returns the intersection between the flags in self and +

Returns true if no flags are currently stored.

+

Returns true if all flags are currently set.

+

Returns true if there are flags common to both self and other.

+

Returns true if all of the flags in other are contained within self.

+

Inserts the specified flags in-place.

+

Removes the specified flags in-place.

+

Toggles the specified flags in-place.

+

Inserts or removes the specified flags depending on the passed value.

+

Returns the intersection between the flags in self and other.

Specifically, the returned set contains only the flags which are present in both self and other.

This is equivalent to using the & operator (e.g. ops::BitAnd), as in flags & other.

-

Returns the union of between the flags in self and other.

+

Returns the union of between the flags in self and other.

Specifically, the returned set contains all flags which are present in either self or other, including any which are present in both (see Self::symmetric_difference if that is undesirable).

This is equivalent to using the | operator (e.g. ops::BitOr), as in flags | other.

-

Returns the difference between the flags in self and other.

+

Returns the difference between the flags in self and other.

Specifically, the returned set contains all flags present in self, except for the ones present in other.

It is also conceptually equivalent to the “bit-clear” operation: flags & !other (and this syntax is also supported).

This is equivalent to using the - operator (e.g. ops::Sub), as in flags - other.

-

Returns the symmetric difference between the flags +

Returns the symmetric difference between the flags in self and other.

Specifically, the returned set contains the flags present which are present in self or other, but that are not present in @@ -53,27 +53,27 @@

Safety
one of the sets self and other.

This is equivalent to using the ^ operator (e.g. ops::BitXor), as in flags ^ other.

-

Returns the complement of this set of flags.

+

Returns the complement of this set of flags.

Specifically, the returned set contains all the flags which are not set in self, but which are allowed for this type.

Alternatively, it can be thought of as the set difference between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

Formats the value using the given formatter.

Returns the intersection between the two sets of flags.

-
The resulting type after applying the & operator.

Disables all flags disabled in the set.

-

Returns the union of the two sets of flags.

-
The resulting type after applying the | operator.

Adds the set of flags.

-

Returns the left flags, but with all the right flags toggled.

-
The resulting type after applying the ^ operator.

Toggles the set of flags.

-
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Extends a collection with the contents of an iterator. Read more
🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Creates a value from an iterator. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
Formats the value using the given formatter.

Returns the complement of this set of flags.

-
The resulting type after applying the ! operator.
Formats the value using the given formatter.
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Formats the value using the given formatter.

Returns the intersection between the two sets of flags.

+
The resulting type after applying the & operator.

Disables all flags disabled in the set.

+

Returns the union of the two sets of flags.

+
The resulting type after applying the | operator.

Adds the set of flags.

+

Returns the left flags, but with all the right flags toggled.

+
The resulting type after applying the ^ operator.

Toggles the set of flags.

+
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Extends a collection with the contents of an iterator. Read more
🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Creates a value from an iterator. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
Formats the value using the given formatter.

Returns the complement of this set of flags.

+
The resulting type after applying the ! operator.
Formats the value using the given formatter.
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
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.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Returns the set difference of the two sets of flags.

-
The resulting type after applying the - operator.

Disables all flags enabled in the set.

-
Formats the value using the given formatter.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+operator. Read more

Returns the set difference of the two sets of flags.

+
The resulting type after applying the - operator.

Disables all flags enabled in the set.

+
Formats the value using the given formatter.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/boot_info/struct.ReservedMemoryRegion.html b/doc/boot_info/struct.ReservedMemoryRegion.html index ff0b4c2a81..5574b615d8 100644 --- a/doc/boot_info/struct.ReservedMemoryRegion.html +++ b/doc/boot_info/struct.ReservedMemoryRegion.html @@ -1,7 +1,7 @@ -ReservedMemoryRegion in boot_info - Rust
pub struct ReservedMemoryRegion {
+ReservedMemoryRegion in boot_info - Rust
pub struct ReservedMemoryRegion {
     pub start: PhysicalAddress,
     pub len: usize,
-}

Fields§

§start: PhysicalAddress§len: usize

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+}

Fields§

§start: PhysicalAddress§len: usize

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/boot_info/trait.BootInformation.html b/doc/boot_info/trait.BootInformation.html index 767d5f264a..87853b1110 100644 --- a/doc/boot_info/trait.BootInformation.html +++ b/doc/boot_info/trait.BootInformation.html @@ -1,4 +1,4 @@ -BootInformation in boot_info - Rust
pub trait BootInformation: 'static {
+BootInformation in boot_info - Rust
pub trait BootInformation: 'static {
     type MemoryRegion<'a>: MemoryRegion;
     type MemoryRegions<'a>: Iterator<Item = Self::MemoryRegion<'a>>;
     type ElfSection<'a>: ElfSection;
@@ -13,20 +13,20 @@
     fn elf_sections(&self) -> Result<Self::ElfSections<'_>, &'static str>;
     fn modules(&self) -> Self::Modules<'_>;
     fn additional_reserved_memory_regions(
        &self
    ) -> Result<Self::AdditionalReservedMemoryRegions, &'static str>; - fn kernel_end(&self) -> Result<PhysicalAddress, &'static str>; + fn kernel_end(&self) -> Result<VirtualAddress, &'static str>; fn rsdp(&self) -> Option<PhysicalAddress>; fn stack_size(&self) -> Result<usize, &'static str>; fn is_empty(&self) -> bool { ... } -}

Required Associated Types§

Required Methods§

Returns the boot information’s starting virtual address.

-

Returns the boot information’s length.

-

Returns memory regions describing the physical memory.

-

Returns the kernel’s ELF sections.

-

Returns the modules found in the kernel image.

-

Returns additional reserved memory regions that aren’t included in +}

Required Associated Types§

Required Methods§

Returns the boot information’s starting virtual address.

+

Returns the boot information’s length.

+

Returns memory regions describing the physical memory.

+

Returns the kernel’s ELF sections.

+

Returns the modules found in the kernel image.

+

Returns additional reserved memory regions that aren’t included in the list of regions returned by [memory_regions].

-

Returns the end of the kernel’s image in physical memory.

-

Returns the RSDP if it was provided by the bootloader.

-

Returns the stack size in bytes.

-

Provided Methods§

Returns whether the boot information is empty.

-

Implementations on Foreign Types§

Implementors§

\ No newline at end of file +

Returns the end of the kernel’s image in memory.

+

Returns the RSDP if it was provided by the bootloader.

+

Returns the stack size in bytes.

+

Provided Methods§

Returns whether the boot information is empty.

+

Implementations on Foreign Types§

Implementors§

\ No newline at end of file diff --git a/doc/boot_info/trait.ElfSection.html b/doc/boot_info/trait.ElfSection.html index def996bc04..28071e6a29 100644 --- a/doc/boot_info/trait.ElfSection.html +++ b/doc/boot_info/trait.ElfSection.html @@ -1,4 +1,4 @@ -ElfSection in boot_info - Rust

Trait boot_info::ElfSection

source ·
pub trait ElfSection {
+ElfSection in boot_info - Rust

Trait boot_info::ElfSection

source ·
pub trait ElfSection {
     fn name(&self) -> &str;
     fn start(&self) -> VirtualAddress;
     fn len(&self) -> usize;
@@ -7,7 +7,8 @@
     fn is_empty(&self) -> bool { ... }
 }

Required Methods§

Returns the section’s name.

Returns the section’s starting virtual address.

-

Returns the section’s length.

-

Returns the section’s flags.

-

Provided Methods§

Returns whether the section is empty.

+

Returns the section’s length in memory, as opposed to its length in the +ELF file.

+

Returns the section’s flags.

+

Provided Methods§

Returns whether the section is empty.

Implementations on Foreign Types§

Implementors§

\ No newline at end of file diff --git a/doc/boot_info/trait.Module.html b/doc/boot_info/trait.Module.html index 3aa19e3f57..fe97fa4070 100644 --- a/doc/boot_info/trait.Module.html +++ b/doc/boot_info/trait.Module.html @@ -1,11 +1,11 @@ -Module in boot_info - Rust

Trait boot_info::Module

source ·
pub trait Module {
+Module in boot_info - Rust

Trait boot_info::Module

source ·
pub trait Module {
     fn name(&self) -> Result<&str, &'static str>;
     fn start(&self) -> PhysicalAddress;
     fn len(&self) -> usize;
 
     fn is_empty(&self) -> bool { ... }
-}

Required Methods§

Returns the module’s name.

-

Returns the module’s starting physical address.

-

Returns the module’s length.

-

Provided Methods§

Returns whether the module is empty.

+}

Required Methods§

Returns the module’s name.

+

Returns the module’s starting physical address.

+

Returns the module’s length.

+

Provided Methods§

Returns whether the module is empty.

Implementations on Foreign Types§

Implementors§

\ No newline at end of file diff --git a/doc/captain/fn.init.html b/doc/captain/fn.init.html index 2a1bc5002a..cc7fe8d9f2 100644 --- a/doc/captain/fn.init.html +++ b/doc/captain/fn.init.html @@ -1,4 +1,4 @@ -init in captain - Rust

Function captain::init

source ·
pub fn init(
    kernel_mmi_ref: MmiRef,
    identity_mapped_pages: NoDrop<EarlyIdentityMappedPages>,
    bsp_initial_stack: NoDrop<Stack>,
    ap_start_realmode_begin: VirtualAddress,
    ap_start_realmode_end: VirtualAddress,
    rsdp_address: Option<PhysicalAddress>
) -> Result<(), &'static str>
Expand description

Initialize the Captain, which is the main module that steers the ship of Theseus.

+init in captain - Rust

Function captain::init

source ·
pub fn init(
    kernel_mmi_ref: MmiRef,
    identity_mapped_pages: NoDrop<EarlyIdentityMappedPages>,
    bsp_initial_stack: NoDrop<Stack>,
    ap_start_realmode_begin: VirtualAddress,
    ap_start_realmode_end: VirtualAddress,
    ap_gdt: VirtualAddress,
    rsdp_address: Option<PhysicalAddress>
) -> Result<(), &'static str>
Expand description

Initialize the Captain, which is the main module that steers the ship of Theseus.

This does the rest of the initialization procedures so that the OS can continue running and do actual useful work.

Arguments

diff --git a/doc/captain/index.html b/doc/captain/index.html index e3e2c35cb8..f728402b4e 100644 --- a/doc/captain/index.html +++ b/doc/captain/index.html @@ -1,4 +1,4 @@ -captain - Rust

Crate captain

source ·
Expand description

The main initialization routine and setup logic of the OS.

+captain - Rust

Crate captain

source ·
Expand description

The main initialization routine and setup logic of the OS.

The captain steers the ship of Theseus, meaning that it contains basic logic for initializing all of the other crates in the proper order and with the proper flow of data between them.

Currently, this is the default captain in Theseus, which does the following:

diff --git a/doc/crate_metadata/constant.BSS_SECTION_NAME.html b/doc/crate_metadata/constant.BSS_SECTION_NAME.html index 864d7a2b43..41432c206d 100644 --- a/doc/crate_metadata/constant.BSS_SECTION_NAME.html +++ b/doc/crate_metadata/constant.BSS_SECTION_NAME.html @@ -1 +1 @@ -BSS_SECTION_NAME in crate_metadata - Rust
pub const BSS_SECTION_NAME: &'static str;
\ No newline at end of file +BSS_SECTION_NAME in crate_metadata - Rust
pub const BSS_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.DATA_SECTION_NAME.html b/doc/crate_metadata/constant.DATA_SECTION_NAME.html index 071297d902..b022b67582 100644 --- a/doc/crate_metadata/constant.DATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.DATA_SECTION_NAME.html @@ -1 +1 @@ -DATA_SECTION_NAME in crate_metadata - Rust
pub const DATA_SECTION_NAME: &'static str;
\ No newline at end of file +DATA_SECTION_NAME in crate_metadata - Rust
pub const DATA_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html b/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html index 8eec4a68cb..d4288352cb 100644 --- a/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html +++ b/doc/crate_metadata/constant.EH_FRAME_SECTION_NAME.html @@ -1 +1 @@ -EH_FRAME_SECTION_NAME in crate_metadata - Rust
pub const EH_FRAME_SECTION_NAME: &'static str;
\ No newline at end of file +EH_FRAME_SECTION_NAME in crate_metadata - Rust
pub const EH_FRAME_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html b/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html index 4fafbcbf65..51e6f14868 100644 --- a/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html +++ b/doc/crate_metadata/constant.GCC_EXCEPT_TABLE_SECTION_NAME.html @@ -1 +1 @@ -GCC_EXCEPT_TABLE_SECTION_NAME in crate_metadata - Rust
pub const GCC_EXCEPT_TABLE_SECTION_NAME: &'static str;
\ No newline at end of file +GCC_EXCEPT_TABLE_SECTION_NAME in crate_metadata - Rust
pub const GCC_EXCEPT_TABLE_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.RODATA_SECTION_NAME.html b/doc/crate_metadata/constant.RODATA_SECTION_NAME.html index d93efc48ad..8442258d6d 100644 --- a/doc/crate_metadata/constant.RODATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.RODATA_SECTION_NAME.html @@ -1 +1 @@ -RODATA_SECTION_NAME in crate_metadata - Rust
pub const RODATA_SECTION_NAME: &'static str;
\ No newline at end of file +RODATA_SECTION_NAME in crate_metadata - Rust
pub const RODATA_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.TEXT_SECTION_NAME.html b/doc/crate_metadata/constant.TEXT_SECTION_NAME.html index 30515ff7a7..3d103c7cc0 100644 --- a/doc/crate_metadata/constant.TEXT_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TEXT_SECTION_NAME.html @@ -1 +1 @@ -TEXT_SECTION_NAME in crate_metadata - Rust
pub const TEXT_SECTION_NAME: &'static str;
\ No newline at end of file +TEXT_SECTION_NAME in crate_metadata - Rust
pub const TEXT_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html b/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html index 46cd7fd4fe..b9d8c81528 100644 --- a/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TLS_BSS_SECTION_NAME.html @@ -1 +1 @@ -TLS_BSS_SECTION_NAME in crate_metadata - Rust
pub const TLS_BSS_SECTION_NAME: &'static str;
\ No newline at end of file +TLS_BSS_SECTION_NAME in crate_metadata - Rust
pub const TLS_BSS_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html b/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html index aae887fef0..411b3fd7b6 100644 --- a/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html +++ b/doc/crate_metadata/constant.TLS_DATA_SECTION_NAME.html @@ -1 +1 @@ -TLS_DATA_SECTION_NAME in crate_metadata - Rust
pub const TLS_DATA_SECTION_NAME: &'static str;
\ No newline at end of file +TLS_DATA_SECTION_NAME in crate_metadata - Rust
pub const TLS_DATA_SECTION_NAME: &'static str;
\ No newline at end of file diff --git a/doc/crate_metadata/enum.SectionType.html b/doc/crate_metadata/enum.SectionType.html index 01a4d29f8b..f01cd42813 100644 --- a/doc/crate_metadata/enum.SectionType.html +++ b/doc/crate_metadata/enum.SectionType.html @@ -1,4 +1,4 @@ -SectionType in crate_metadata - Rust
pub enum SectionType {
+SectionType in crate_metadata - Rust
pub enum SectionType {
     Text,
     Rodata,
     Data,
@@ -27,11 +27,11 @@
 that should be called when traversing up the stack for cleanup. 

Blog post from author of gold linker: https://www.airs.com/blog/archives/460 Some documentation here: https://gcc.gnu.org/wiki/Dwarf2EHNewbiesHowto

-

Implementations§

Returns the const &str name of this SectionType.

-

Returns true if Data or Bss, otherwise false.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used +

Implementations§

Returns the const &str name of this SectionType.

+

Returns true if Data or Bss, otherwise false.

+

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason.
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/crate_metadata/type.Shndx.html b/doc/crate_metadata/type.Shndx.html index 31e99631d9..b2410fd1d4 100644 --- a/doc/crate_metadata/type.Shndx.html +++ b/doc/crate_metadata/type.Shndx.html @@ -1,4 +1,4 @@ -Shndx in crate_metadata - Rust

Type Definition crate_metadata::Shndx

pub type Shndx = usize;
Expand description

A Section Header iNDeX (SHNDX), as specified by the ELF format. +Shndx in crate_metadata - Rust

Type Definition crate_metadata::Shndx

source ·
pub type Shndx = usize;
Expand description

A Section Header iNDeX (SHNDX), as specified by the ELF format. Even though this is typically encoded as a u16, its decoded form can exceed the max size of u16.

\ No newline at end of file diff --git a/doc/memory/all.html b/doc/memory/all.html index a4e99cb4fa..37801c32b9 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/fn.create_contiguous_mapping.html b/doc/memory/fn.create_contiguous_mapping.html index 355d13f1f0..efeb08d8c8 100644 --- a/doc/memory/fn.create_contiguous_mapping.html +++ b/doc/memory/fn.create_contiguous_mapping.html @@ -1,4 +1,4 @@ -create_contiguous_mapping in memory - Rust
pub fn create_contiguous_mapping<F: Into<PteFlagsArch>>(
    size_in_bytes: usize,
    flags: F
) -> Result<(MappedPages, PhysicalAddress), &'static str>
Expand description

A convenience function that creates a new memory mapping by allocating frames that are contiguous in physical memory. +create_contiguous_mapping in memory - Rust

pub fn create_contiguous_mapping<F: Into<PteFlagsArch>>(
    size_in_bytes: usize,
    flags: F
) -> Result<(MappedPages, PhysicalAddress), &'static str>
Expand description

A convenience function that creates a new memory mapping by allocating frames that are contiguous in physical memory. If contiguous frames are not required, then see create_mapping(). Returns a tuple containing the new MappedPages and the starting PhysicalAddress of the first frame, which is a convenient way to get the physical address without walking the page tables.

diff --git a/doc/memory/fn.create_mapping.html b/doc/memory/fn.create_mapping.html index 8e1b63c929..69ad0fbbc7 100644 --- a/doc/memory/fn.create_mapping.html +++ b/doc/memory/fn.create_mapping.html @@ -1,4 +1,4 @@ -create_mapping in memory - Rust

Function memory::create_mapping

source ·
pub fn create_mapping<F: Into<PteFlagsArch>>(
    size_in_bytes: usize,
    flags: F
) -> Result<MappedPages, &'static str>
Expand description

A convenience function that creates a new memory mapping. The pages allocated are contiguous in memory but there’s +create_mapping in memory - Rust

Function memory::create_mapping

source ·
pub fn create_mapping<F: Into<PteFlagsArch>>(
    size_in_bytes: usize,
    flags: F
) -> Result<MappedPages, &'static str>
Expand description

A convenience function that creates a new memory mapping. The pages allocated are contiguous in memory but there’s no guarantee that the frames they are mapped to are also contiguous in memory. If contiguous frames are required then see create_contiguous_mapping(). Returns the new MappedPages.

diff --git a/doc/memory/fn.get_kernel_mmi_ref.html b/doc/memory/fn.get_kernel_mmi_ref.html index 854da96c6c..350de34827 100644 --- a/doc/memory/fn.get_kernel_mmi_ref.html +++ b/doc/memory/fn.get_kernel_mmi_ref.html @@ -1,3 +1,3 @@ -get_kernel_mmi_ref in memory - Rust

Function memory::get_kernel_mmi_ref

source ·
pub fn get_kernel_mmi_ref() -> Option<&'static MmiRef>
Expand description

Returns a reference to the kernel’s MemoryManagementInfo, if initialized. +get_kernel_mmi_ref in memory - Rust

Function memory::get_kernel_mmi_ref

source ·
pub fn get_kernel_mmi_ref() -> Option<&'static MmiRef>
Expand description

Returns a reference to the kernel’s MemoryManagementInfo, if initialized. If not, it returns None.

\ No newline at end of file diff --git a/doc/memory/fn.init.html b/doc/memory/fn.init.html index 18909114ab..9a23915b9c 100644 --- a/doc/memory/fn.init.html +++ b/doc/memory/fn.init.html @@ -1,4 +1,4 @@ -init in memory - Rust

Function memory::init

source ·
pub fn init(
    boot_info: &impl BootInformation,
    kernel_stack_start: VirtualAddress
) -> Result<InitialMemoryMappings, &'static str>
Expand description

Initializes the virtual memory management system. +init in memory - Rust

Function memory::init

source ·
pub fn init(
    boot_info: &impl BootInformation,
    kernel_stack_start: VirtualAddress
) -> Result<InitialMemoryMappings, &'static str>
Expand description

Initializes the virtual memory management system. Consumes the given BootInformation, because after the memory system is initialized, the original BootInformation will be unmapped and inaccessible.

\ No newline at end of file diff --git a/doc/memory/fn.init_post_heap.html b/doc/memory/fn.init_post_heap.html index 37b644bb5c..a7e9bde204 100644 --- a/doc/memory/fn.init_post_heap.html +++ b/doc/memory/fn.init_post_heap.html @@ -1,4 +1,4 @@ -init_post_heap in memory - Rust

Function memory::init_post_heap

source ·
pub fn init_post_heap(
    page_table: PageTable,
    additional_mapped_pages: MappedPages,
    heap_mapped_pages: MappedPages
) -> MmiRef
Expand description

Finishes initializing the memory management system after the heap is ready.

+init_post_heap in memory - Rust

Function memory::init_post_heap

source ·
pub fn init_post_heap(
    page_table: PageTable,
    additional_mapped_pages: MappedPages,
    heap_mapped_pages: MappedPages
) -> MmiRef
Expand description

Finishes initializing the memory management system after the heap is ready.

Returns the following tuple:

  • The kernel’s new MemoryManagementInfo, representing the initial virtual address space,
  • diff --git a/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html b/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html index ec805aef35..3791c4b418 100644 --- a/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html +++ b/doc/memory/fn.set_broadcast_tlb_shootdown_cb.html @@ -1,3 +1,3 @@ -set_broadcast_tlb_shootdown_cb in memory - Rust
    pub fn set_broadcast_tlb_shootdown_cb(func: fn(_: PageRange))
    Expand description

    Set the function callback that will be invoked every time a TLB shootdown is necessary, +set_broadcast_tlb_shootdown_cb in memory - Rust

    pub fn set_broadcast_tlb_shootdown_cb(func: fn(_: PageRange))
    Expand description

    Set the function callback that will be invoked every time a TLB shootdown is necessary, i.e., during page table remapping and unmapping operations.

    \ No newline at end of file diff --git a/doc/memory/fn.translate.html b/doc/memory/fn.translate.html new file mode 100644 index 0000000000..9e99d8fa90 --- /dev/null +++ b/doc/memory/fn.translate.html @@ -0,0 +1,3 @@ +translate in memory - Rust

    Function memory::translate

    source ·
    pub fn translate(virtual_address: VirtualAddress) -> Option<PhysicalAddress>
    Expand description

    A convenience function to translate the given virtual address into a +physical address using the currently-active page table.

    +
    \ No newline at end of file diff --git a/doc/memory/index.html b/doc/memory/index.html index cf120a6778..27a6f15940 100644 --- a/doc/memory/index.html +++ b/doc/memory/index.html @@ -1,4 +1,4 @@ -memory - Rust

    Crate memory

    source ·
    Expand description

    This crate implements the main memory management subsystem for Theseus.

    +memory - Rust

    Crate memory

    source ·
    Expand description

    This crate implements the main memory management subsystem for Theseus.

    The primary type of interest is MappedPages, which offers a robust interface that unifies the usage of arbitrary memory regions with that of Rust’s safe type system and lifetimes.

    @@ -24,4 +24,5 @@

    Acknowledgments

    If not, it returns None.
    Initializes the virtual memory management system. Consumes the given BootInformation, because after the memory system is initialized, the original BootInformation will be unmapped and inaccessible.
    Finishes initializing the memory management system after the heap is ready.
    Set the function callback that will be invoked every time a TLB shootdown is necessary, -i.e., during page table remapping and unmapping operations.

    Type Definitions

    A shareable reference to a MemoryManagementInfo struct wrapper in a lock.
    \ No newline at end of file +i.e., during page table remapping and unmapping operations.
    A convenience function to translate the given virtual address into a +physical address using the currently-active page table.

Type Definitions

A shareable reference to a MemoryManagementInfo struct wrapper in a lock.
\ No newline at end of file diff --git a/doc/memory/paging/mapper/fn.translate.html b/doc/memory/paging/mapper/fn.translate.html new file mode 100644 index 0000000000..b5fca4f8ab --- /dev/null +++ b/doc/memory/paging/mapper/fn.translate.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../memory/fn.translate.html...

+ + + \ No newline at end of file diff --git a/doc/memory/sidebar-items.js b/doc/memory/sidebar-items.js index 8563161727..f569543a65 100644 --- a/doc/memory/sidebar-items.js +++ b/doc/memory/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["PAGE_SIZE","Page size is 4096 bytes, 4KiB pages."],["PTE_FRAME_MASK","A mask for the bits of a page table entry that contain the physical frame address."]],"enum":[["MemoryRegionType","Types of physical memory. See each variant’s documentation."]],"fn":[["allocate_frames","Allocates the given number of frames with no constraints on the starting physical address."],["allocate_frames_at","Allocates the given number of frames starting at (inclusive of) the frame containing the given `PhysicalAddress`."],["allocate_frames_by_bytes","Allocates frames with no constraints on the starting physical address, with a size given by the number of bytes. "],["allocate_frames_by_bytes_at","Allocates frames starting at the given `PhysicalAddress` with a size given in number of bytes. "],["allocate_pages","Allocates the given number of pages with no constraints on the starting virtual address."],["allocate_pages_at","Allocates the given number of pages starting at (inclusive of) the page containing the given `VirtualAddress`."],["allocate_pages_by_bytes","Allocates pages with no constraints on the starting virtual address, with a size given by the number of bytes. "],["allocate_pages_by_bytes_at","Allocates pages starting at the given `VirtualAddress` with a size given in number of bytes. "],["create_contiguous_mapping","A convenience function that creates a new memory mapping by allocating frames that are contiguous in physical memory. If contiguous frames are not required, then see `create_mapping()`. Returns a tuple containing the new `MappedPages` and the starting PhysicalAddress of the first frame, which is a convenient way to get the physical address without walking the page tables."],["create_mapping","A convenience function that creates a new memory mapping. The pages allocated are contiguous in memory but there’s no guarantee that the frames they are mapped to are also contiguous in memory. If contiguous frames are required then see `create_contiguous_mapping()`. Returns the new `MappedPages.` "],["get_kernel_mmi_ref","Returns a reference to the kernel’s `MemoryManagementInfo`, if initialized. If not, it returns `None`."],["init","Initializes the virtual memory management system. Consumes the given BootInformation, because after the memory system is initialized, the original BootInformation will be unmapped and inaccessible."],["init_post_heap","Finishes initializing the memory management system after the heap is ready."],["set_broadcast_tlb_shootdown_cb","Set the function callback that will be invoked every time a TLB shootdown is necessary, i.e., during page table remapping and unmapping operations."]],"struct":[["AllocatedFrames","Represents a range of allocated physical memory [`Frame`]s; derefs to [`FrameRange`]."],["AllocatedPages","Represents a range of allocated `VirtualAddress`es, specified in `Page`s. "],["BorrowedMappedPages","A borrowed [`MappedPages`] object that derefs to `&T` and optionally also `&mut T`."],["BorrowedSliceMappedPages","A borrowed [`MappedPages`] object that derefs to a slice `&[T]` and optionally also `&mut [T]`."],["EarlyIdentityMappedPages","The set of identity mappings that should be dropped before starting the first application."],["Frame","A `Frame` is a chunk of physical memory aligned to a [`PAGE_SIZE`] boundary."],["FrameRange","A range of [`Frame`]s that are contiguous in physical memory."],["Immutable","A marker type used to indicate that a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] is borrowed immutably."],["InitialMemoryMappings","Information returned after initialising the memory subsystem."],["MappedPages","Represents a contiguous range of virtual memory pages that are currently mapped. A `MappedPages` object can only have a single range of contiguous pages, not multiple disjoint ranges. This does not guarantee that its pages are mapped to frames that are contiguous in physical memory."],["Mapper",""],["MemoryManagementInfo","This holds all the information for a `Task`’s memory mappings and address space (this is basically the equivalent of Linux’s mm_struct)"],["Mutable","A marker type used to indicate that a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] is borrowed mutably."],["Page","A `Page` is a chunk of virtual memory aligned to a [`PAGE_SIZE`] boundary."],["PageRange","A range of [`Page`]s that are contiguous in virtual memory."],["PageTable","A top-level root (P4) page table."],["PhysicalAddress","A physical memory address, which is a `usize` under the hood."],["PhysicalMemoryRegion","A region of physical memory."],["PteFlags","Common, architecture-independent flags for a page table entry (PTE) that define how a page is mapped."],["PteFlagsArch","Page table entry (PTE) flags on x86_64."],["PteFlagsX86_64","Page table entry (PTE) flags on x86_64."],["VirtualAddress","A virtual memory address, which is a `usize` under the hood."]],"trait":[["Mutability","A trait for parameterizing a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] as mutably or immutably borrowed."]],"type":[["MmiRef","A shareable reference to a `MemoryManagementInfo` struct wrapper in a lock."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":[["PAGE_SIZE","Page size is 4096 bytes, 4KiB pages."],["PTE_FRAME_MASK","A mask for the bits of a page table entry that contain the physical frame address."]],"enum":[["MemoryRegionType","Types of physical memory. See each variant’s documentation."]],"fn":[["allocate_frames","Allocates the given number of frames with no constraints on the starting physical address."],["allocate_frames_at","Allocates the given number of frames starting at (inclusive of) the frame containing the given `PhysicalAddress`."],["allocate_frames_by_bytes","Allocates frames with no constraints on the starting physical address, with a size given by the number of bytes. "],["allocate_frames_by_bytes_at","Allocates frames starting at the given `PhysicalAddress` with a size given in number of bytes. "],["allocate_pages","Allocates the given number of pages with no constraints on the starting virtual address."],["allocate_pages_at","Allocates the given number of pages starting at (inclusive of) the page containing the given `VirtualAddress`."],["allocate_pages_by_bytes","Allocates pages with no constraints on the starting virtual address, with a size given by the number of bytes. "],["allocate_pages_by_bytes_at","Allocates pages starting at the given `VirtualAddress` with a size given in number of bytes. "],["create_contiguous_mapping","A convenience function that creates a new memory mapping by allocating frames that are contiguous in physical memory. If contiguous frames are not required, then see `create_mapping()`. Returns a tuple containing the new `MappedPages` and the starting PhysicalAddress of the first frame, which is a convenient way to get the physical address without walking the page tables."],["create_mapping","A convenience function that creates a new memory mapping. The pages allocated are contiguous in memory but there’s no guarantee that the frames they are mapped to are also contiguous in memory. If contiguous frames are required then see `create_contiguous_mapping()`. Returns the new `MappedPages.` "],["get_kernel_mmi_ref","Returns a reference to the kernel’s `MemoryManagementInfo`, if initialized. If not, it returns `None`."],["init","Initializes the virtual memory management system. Consumes the given BootInformation, because after the memory system is initialized, the original BootInformation will be unmapped and inaccessible."],["init_post_heap","Finishes initializing the memory management system after the heap is ready."],["set_broadcast_tlb_shootdown_cb","Set the function callback that will be invoked every time a TLB shootdown is necessary, i.e., during page table remapping and unmapping operations."],["translate","A convenience function to translate the given virtual address into a physical address using the currently-active page table."]],"struct":[["AllocatedFrames","Represents a range of allocated physical memory [`Frame`]s; derefs to [`FrameRange`]."],["AllocatedPages","Represents a range of allocated `VirtualAddress`es, specified in `Page`s. "],["BorrowedMappedPages","A borrowed [`MappedPages`] object that derefs to `&T` and optionally also `&mut T`."],["BorrowedSliceMappedPages","A borrowed [`MappedPages`] object that derefs to a slice `&[T]` and optionally also `&mut [T]`."],["EarlyIdentityMappedPages","The set of identity mappings that should be dropped before starting the first application."],["Frame","A `Frame` is a chunk of physical memory aligned to a [`PAGE_SIZE`] boundary."],["FrameRange","A range of [`Frame`]s that are contiguous in physical memory."],["Immutable","A marker type used to indicate that a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] is borrowed immutably."],["InitialMemoryMappings","Information returned after initialising the memory subsystem."],["MappedPages","Represents a contiguous range of virtual memory pages that are currently mapped. A `MappedPages` object can only have a single range of contiguous pages, not multiple disjoint ranges. This does not guarantee that its pages are mapped to frames that are contiguous in physical memory."],["Mapper",""],["MemoryManagementInfo","This holds all the information for a `Task`’s memory mappings and address space (this is basically the equivalent of Linux’s mm_struct)"],["Mutable","A marker type used to indicate that a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] is borrowed mutably."],["Page","A `Page` is a chunk of virtual memory aligned to a [`PAGE_SIZE`] boundary."],["PageRange","A range of [`Page`]s that are contiguous in virtual memory."],["PageTable","A top-level root (P4) page table."],["PhysicalAddress","A physical memory address, which is a `usize` under the hood."],["PhysicalMemoryRegion","A region of physical memory."],["PteFlags","Common, architecture-independent flags for a page table entry (PTE) that define how a page is mapped."],["PteFlagsArch","Page table entry (PTE) flags on x86_64."],["PteFlagsX86_64","Page table entry (PTE) flags on x86_64."],["VirtualAddress","A virtual memory address, which is a `usize` under the hood."]],"trait":[["Mutability","A trait for parameterizing a [`BorrowedMappedPages`] or [`BorrowedSliceMappedPages`] as mutably or immutably borrowed."]],"type":[["MmiRef","A shareable reference to a `MemoryManagementInfo` struct wrapper in a lock."]]}; \ No newline at end of file diff --git a/doc/memory/struct.BorrowedMappedPages.html b/doc/memory/struct.BorrowedMappedPages.html index 14754e7447..988a138ad7 100644 --- a/doc/memory/struct.BorrowedMappedPages.html +++ b/doc/memory/struct.BorrowedMappedPages.html @@ -1,29 +1,29 @@ -BorrowedMappedPages in memory - Rust
pub struct BorrowedMappedPages<T: FromBytes, M: Mutability = Immutable> { /* private fields */ }
Expand description

A borrowed MappedPages object that derefs to &T and optionally also &mut T.

+BorrowedMappedPages in memory - Rust
pub struct BorrowedMappedPages<T: FromBytes, M: Mutability = Immutable> { /* private fields */ }
Expand description

A borrowed MappedPages object that derefs to &T and optionally also &mut T.

By default, the Mutability type parameter is Immutable for ease of use.

When dropped, the borrow ends and the contained MappedPages is dropped and unmapped. You can manually end the borrow and reclaim the inner MappedPages via Self::into_inner().

-

Implementations§

Immutably borrows the given MappedPages as an instance of type &T +

Implementations§

Immutably borrows the given MappedPages as an instance of type &T located at the given byte_offset into the MappedPages.

See MappedPages::as_type() for more info.

Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

-

Mutably borrows the given MappedPages as an instance of type &mut T +

Mutably borrows the given MappedPages as an instance of type &mut T located at the given byte_offset into the MappedPages.

See MappedPages::as_type_mut() for more info.

Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

-

Consumes this object and returns the inner MappedPages.

-

Trait Implementations§

Only Mutable BorrowedMappedPages implement AsMut<T>.

-
Converts this type into a mutable reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedMappedPages implement AsRef<T>.

-
Converts this type into a shared reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedMappedPages implement Borrow<T>.

-
Immutably borrows from an owned value. Read more

Only Mutable BorrowedMappedPages implement BorrowMut<T>.

-
Mutably borrows from an owned value. Read more

Both Mutable and Immutable BorrowedMappedPages can deref into &T.

-
The resulting type after dereferencing.
Dereferences the value.

Only Mutable BorrowedMappedPages can deref into &mut T.

-
Mutably dereferences the value.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used +

Consumes this object and returns the inner MappedPages.

+

Trait Implementations§

Only Mutable BorrowedMappedPages implement AsMut<T>.

+
Converts this type into a mutable reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedMappedPages implement AsRef<T>.

+
Converts this type into a shared reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedMappedPages implement Borrow<T>.

+
Immutably borrows from an owned value. Read more

Only Mutable BorrowedMappedPages implement BorrowMut<T>.

+
Mutably borrows from an owned value. Read more

Both Mutable and Immutable BorrowedMappedPages can deref into &T.

+
The resulting type after dereferencing.
Dereferences the value.

Only Mutable BorrowedMappedPages can deref into &mut T.

+
Mutably dereferences the value.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
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.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.BorrowedSliceMappedPages.html b/doc/memory/struct.BorrowedSliceMappedPages.html index ca7a6af880..0d59f360b6 100644 --- a/doc/memory/struct.BorrowedSliceMappedPages.html +++ b/doc/memory/struct.BorrowedSliceMappedPages.html @@ -1,18 +1,18 @@ -BorrowedSliceMappedPages in memory - Rust
pub struct BorrowedSliceMappedPages<T: FromBytes, M: Mutability = Immutable> { /* private fields */ }
Expand description

A borrowed MappedPages object that derefs to a slice &[T] and optionally also &mut [T].

+BorrowedSliceMappedPages in memory - Rust
pub struct BorrowedSliceMappedPages<T: FromBytes, M: Mutability = Immutable> { /* private fields */ }
Expand description

A borrowed MappedPages object that derefs to a slice &[T] and optionally also &mut [T].

For ease of use, the default Mutability type parameter is Immutable.

When dropped, the borrow ends and the contained MappedPages is dropped and unmapped. You can manually end the borrow and reclaim the inner MappedPages via Self::into_inner().

-

Implementations§

Immutably borrows the given MappedPages as a slice &[T] +

Implementations§

Immutably borrows the given MappedPages as a slice &[T] of length elements of type T starting at the given byte_offset into the MappedPages.

See MappedPages::as_slice() for more info.

Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

-

Mutably borrows the given MappedPages as an instance of type &mut T +

Mutably borrows the given MappedPages as an instance of type &mut T starting at the given byte_offset into the MappedPages.

See MappedPages::as_type_mut() for more info.

Upon failure, returns an error containing the unmodified MappedPages and a string describing the error.

-

Consumes this object and returns the inner MappedPages.

+

Consumes this object and returns the inner MappedPages.

Methods from Deref<Target = [T]>§

🔬This is a nightly-only experimental API. (slice_flatten)

Takes a &[[T; N]], and flattens it to a &[T].

Panics

This panics if the length of the resulting slice would overflow a usize.

@@ -2108,17 +2108,17 @@
Examples
Examples
assert_eq!(["hello", "world"].connect(" "), "hello world");
 assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
-

Trait Implementations§

Only Mutable BorrowedSliceMappedPages implement AsMut<T>.

-
Converts this type into a mutable reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedSliceMappedPages implement AsRef<[T]>.

-
Converts this type into a shared reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedSliceMappedPages implement Borrow<T>.

-
Immutably borrows from an owned value. Read more

Only Mutable BorrowedSliceMappedPages implement BorrowMut<T>.

-
Mutably borrows from an owned value. Read more

Both Mutable and Immutable BorrowedSliceMappedPages can deref into &[T].

-
The resulting type after dereferencing.
Dereferences the value.

Only Mutable BorrowedSliceMappedPages can deref into &mut T.

-
Mutably dereferences the value.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Only Mutable BorrowedSliceMappedPages implement AsMut<T>.

+
Converts this type into a mutable reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedSliceMappedPages implement AsRef<[T]>.

+
Converts this type into a shared reference of the (usually inferred) input type.

Both Mutable and Immutable BorrowedSliceMappedPages implement Borrow<T>.

+
Immutably borrows from an owned value. Read more

Only Mutable BorrowedSliceMappedPages implement BorrowMut<T>.

+
Mutably borrows from an owned value. Read more

Both Mutable and Immutable BorrowedSliceMappedPages can deref into &[T].

+
The resulting type after dereferencing.
Dereferences the value.

Only Mutable BorrowedSliceMappedPages can deref into &mut T.

+
Mutably dereferences the value.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
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.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.EarlyIdentityMappedPages.html b/doc/memory/struct.EarlyIdentityMappedPages.html index 4cdc1ee2ff..d0b6537e55 100644 --- a/doc/memory/struct.EarlyIdentityMappedPages.html +++ b/doc/memory/struct.EarlyIdentityMappedPages.html @@ -1,4 +1,4 @@ -EarlyIdentityMappedPages in memory - Rust
pub struct EarlyIdentityMappedPages { /* private fields */ }
Expand description

The set of identity mappings that should be dropped before starting the first application.

+EarlyIdentityMappedPages in memory - Rust
pub struct EarlyIdentityMappedPages { /* private fields */ }
Expand description

The set of identity mappings that should be dropped before starting the first application.

Currently there are only 4 identity mappings, used for the base kernel image:

  1. the .init early text section,
  2. @@ -6,7 +6,7 @@
  3. the .rodata section, which includes all read-only data,
  4. the .data section, which includes .bss and all read-write data.
-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.Immutable.html b/doc/memory/struct.Immutable.html index 19d942defb..928b6e0201 100644 --- a/doc/memory/struct.Immutable.html +++ b/doc/memory/struct.Immutable.html @@ -1,7 +1,7 @@ -Immutable in memory - Rust

Struct memory::Immutable

source ·
#[non_exhaustive]
pub struct Immutable {}
Expand description

A marker type used to indicate that a BorrowedMappedPages +Immutable in memory - Rust

Struct memory::Immutable

source ·
#[non_exhaustive]
pub struct Immutable {}
Expand description

A marker type used to indicate that a BorrowedMappedPages or BorrowedSliceMappedPages is borrowed immutably.

Implements the Mutability trait.

-

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.InitialMemoryMappings.html b/doc/memory/struct.InitialMemoryMappings.html index 64d6e1992e..ac0918866b 100644 --- a/doc/memory/struct.InitialMemoryMappings.html +++ b/doc/memory/struct.InitialMemoryMappings.html @@ -1,4 +1,4 @@ -InitialMemoryMappings in memory - Rust
pub struct InitialMemoryMappings {
+InitialMemoryMappings in memory - Rust
pub struct InitialMemoryMappings {
     pub page_table: PageTable,
     pub text: NoDrop<MappedPages>,
     pub rodata: NoDrop<MappedPages>,
@@ -26,7 +26,7 @@
 
 
§additional: NoDrop<MappedPages>

The list of additional mappings that must be kept forever.

Currently, this contains only one mapping: the early VGA buffer.

-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.MappedPages.html b/doc/memory/struct.MappedPages.html index 7019b3ee42..c075eb7341 100644 --- a/doc/memory/struct.MappedPages.html +++ b/doc/memory/struct.MappedPages.html @@ -1,14 +1,14 @@ -MappedPages in memory - Rust

Struct memory::MappedPages

source ·
pub struct MappedPages { /* private fields */ }
Expand description

Represents a contiguous range of virtual memory pages that are currently mapped. +MappedPages in memory - Rust

Struct memory::MappedPages

source ·
pub struct MappedPages { /* private fields */ }
Expand description

Represents a contiguous range of virtual memory pages that are currently mapped. A MappedPages object can only have a single range of contiguous pages, not multiple disjoint ranges. This does not guarantee that its pages are mapped to frames that are contiguous in physical memory.

This object also represents ownership of those pages; if this object falls out of scope, it will be dropped, and the pages will be unmapped and then also de-allocated. Thus, it ensures memory safety by guaranteeing that this object must be held in order to access data stored in these mapped pages, much like a guard type.

-

Implementations§

Returns an empty MappedPages object that performs no allocation or mapping actions. +

Implementations§

Returns an empty MappedPages object that performs no allocation or mapping actions. Can be used as a placeholder, but will not permit any real usage.

-

Returns the flags that describe this MappedPages page table permissions.

-

Merges the given MappedPages object mp into this MappedPages object (self).

+

Returns the flags that describe this MappedPages page table permissions.

+

Merges the given MappedPages object mp into this MappedPages object (self).

For example, if you have the following MappedPages objects:

  • this mapping, with a page range including one page at 0x2000
  • @@ -22,7 +22,7 @@ which prevents the mp from being dropped.

    Note

    No remapping actions or page reallocations will occur on either a failure or a success.

    -

Splits this MappedPages into two separate MappedPages objects:

+

Splits this MappedPages into two separate MappedPages objects:

  • [beginning : at_page - 1]
  • [at_page : end]
  • @@ -36,7 +36,7 @@
    Note

    Returns an Err containing this MappedPages (self) if at_page is not within its bounds.

    Note

    No remapping actions or page reallocations will occur on either a failure or a success.

    -

Creates a deep copy of this MappedPages memory region, +

Creates a deep copy of this MappedPages memory region, by duplicating not only the virtual memory mapping but also the underlying physical memory frames.

The caller can optionally specify new flags for the duplicated mapping, @@ -45,17 +45,17 @@

Note
since it avoids extra remap() operations.

Returns a new MappedPages object with the same in-memory contents as this object, but at a completely new memory region.

-

Change the mapping flags of this MappedPages’s page table entries.

+

Change the mapping flags of this MappedPages’s page table entries.

Note that attempting to change certain “reserved” flags will have no effect. For example, the EXCLUSIVE flag cannot be changed beause arbitrarily setting it would violate safety.

-

Consumes and unmaps this MappedPages object without auto-deallocating its AllocatedPages and AllocatedFrames, +

Consumes and unmaps this MappedPages object without auto-deallocating its AllocatedPages and AllocatedFrames, allowing the caller to continue using them directly, e.g., reusing them for a future mapping. This removes the need to attempt to to reallocate those same pages or frames on a separate code path.

Note that only the first contiguous range of AllocatedFrames will be returned, if any were unmapped. All other non-contiguous ranges will be auto-dropped and deallocated. This is due to how frame deallocation works.

-

Reinterprets this MappedPages’s underlying memory region as a struct of the given type T, +

Reinterprets this MappedPages’s underlying memory region as a struct of the given type T, i.e., overlays a struct on top of this mapped memory region.

Requirements

The type T must implement the FromBytes trait, which is similar to the requirements @@ -79,9 +79,9 @@

Arguments
with a lifetime dependent upon the lifetime of this MappedPages object. This ensures safety by guaranteeing that the returned struct reference cannot be used after this MappedPages object is dropped and unmapped.

-

Same as MappedPages::as_type(), but returns a mutable reference to the type T.

+

Same as MappedPages::as_type(), but returns a mutable reference to the type T.

Thus, it also checks that the underlying mapping is writable.

-

Reinterprets this MappedPages’s underlying memory region as &[T], a length-element slice of type T.

+

Reinterprets this MappedPages’s underlying memory region as &[T], a length-element slice of type T.

It has similar requirements and behavior as MappedPages::as_type().

Arguments
    @@ -97,12 +97,12 @@
    Arguments
    with a lifetime dependent upon the lifetime of this MappedPages object. This ensures safety by guaranteeing that the returned slice cannot be used after this MappedPages object is dropped and unmapped.

    -

Same as MappedPages::as_slice(), but returns a mutable slice.

+

Same as MappedPages::as_slice(), but returns a mutable slice.

Thus, it checks that the underlying mapping is writable.

-

A convenience function for BorrowedMappedPages::from().

-

A convenience function for BorrowedMappedPages::from_mut().

-

A convenience function for BorrowedSliceMappedPages::from().

-

A convenience function for BorrowedSliceMappedPages::from_mut().

+

A convenience function for BorrowedMappedPages::from().

+

A convenience function for BorrowedMappedPages::from_mut().

+

A convenience function for BorrowedSliceMappedPages::from().

+

A convenience function for BorrowedSliceMappedPages::from_mut().

Methods from Deref<Target = PageRange>§

Returns the VirtualAddress of the starting Page in this PageRange.

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.

@@ -175,7 +175,7 @@
Examples
for _ in r.by_ref() {} // Precise field values are unspecified here assert!(r.is_empty());
-

Trait Implementations§

Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.Mapper.html b/doc/memory/struct.Mapper.html index 35fd775e34..45d1cc34bb 100644 --- a/doc/memory/struct.Mapper.html +++ b/doc/memory/struct.Mapper.html @@ -1,11 +1,11 @@ -Mapper in memory - Rust

Struct memory::Mapper

source ·
pub struct Mapper { /* private fields */ }

Implementations§

Dumps all page table entries at all four page table levels for the given VirtualAddress, +Mapper in memory - Rust

Struct memory::Mapper

source ·
pub struct Mapper { /* private fields */ }

Implementations§

Dumps all page table entries at all four page table levels for the given VirtualAddress, and also shows their PteFlags.

The page table details are written to the log as an info message.

-

Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

-

Translates a virtual memory Page to a physical memory Frame by walking the page tables.

-

Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

+

Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

+

Translates a virtual memory Page to a physical memory Frame by walking the page tables.

+

Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

-

Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

+

Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

diff --git a/doc/memory/struct.MemoryManagementInfo.html b/doc/memory/struct.MemoryManagementInfo.html index c3c7e995a9..dd4a9058a9 100644 --- a/doc/memory/struct.MemoryManagementInfo.html +++ b/doc/memory/struct.MemoryManagementInfo.html @@ -1,4 +1,4 @@ -MemoryManagementInfo in memory - Rust
pub struct MemoryManagementInfo {
+MemoryManagementInfo in memory - Rust
pub struct MemoryManagementInfo {
     pub page_table: PageTable,
     pub extra_mapped_pages: Vec<MappedPages>,
 }
Expand description

This holds all the information for a Task’s memory mappings and address space @@ -7,7 +7,7 @@

§extra_mapped_pages: Vec<MappedPages>

The list of additional memory mappings that have the same lifetime as this MMI and are thus owned by this MMI. This currently includes only the mappings for the heap and the early VGA buffer.

-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.Mutable.html b/doc/memory/struct.Mutable.html index cbb3d3220d..0a8144b82e 100644 --- a/doc/memory/struct.Mutable.html +++ b/doc/memory/struct.Mutable.html @@ -1,7 +1,7 @@ -Mutable in memory - Rust

Struct memory::Mutable

source ·
#[non_exhaustive]
pub struct Mutable {}
Expand description

A marker type used to indicate that a BorrowedMappedPages +Mutable in memory - Rust

Struct memory::Mutable

source ·
#[non_exhaustive]
pub struct Mutable {}
Expand description

A marker type used to indicate that a BorrowedMappedPages or BorrowedSliceMappedPages is borrowed mutably.

Implements the Mutability trait.

-

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory/struct.PageTable.html b/doc/memory/struct.PageTable.html index 3a918d1fb8..47661418b6 100644 --- a/doc/memory/struct.PageTable.html +++ b/doc/memory/struct.PageTable.html @@ -18,14 +18,14 @@
Note

Switches from the currently-active page table (this PageTable, i.e., self) to the given new_table. After this function, the given new_table will be the currently-active PageTable.

Returns the physical address of this page table’s top-level p4 frame

-

Methods from Deref<Target = Mapper>§

Dumps all page table entries at all four page table levels for the given VirtualAddress, +

Methods from Deref<Target = Mapper>§

Dumps all page table entries at all four page table levels for the given VirtualAddress, and also shows their PteFlags.

The page table details are written to the log as an info message.

-

Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

-

Translates a virtual memory Page to a physical memory Frame by walking the page tables.

-

Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

+

Translates a VirtualAddress to a PhysicalAddress by walking the page tables.

+

Translates a virtual memory Page to a physical memory Frame by walking the page tables.

+

Maps the given virtual AllocatedPages to the given physical AllocatedFrames.

Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

-

Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

+

Maps the given AllocatedPages to randomly chosen (allocated) physical frames.

Consumes the given AllocatedPages and returns a MappedPages object which contains those AllocatedPages.

Trait Implementations§

Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

diff --git a/doc/memory/trait.Mutability.html b/doc/memory/trait.Mutability.html index 14fde4800e..86feeb08e0 100644 --- a/doc/memory/trait.Mutability.html +++ b/doc/memory/trait.Mutability.html @@ -1,4 +1,4 @@ -Mutability in memory - Rust

Trait memory::Mutability

source ·
pub trait Mutability: Sealed { }
Expand description

A trait for parameterizing a BorrowedMappedPages +Mutability in memory - Rust

Trait memory::Mutability

source ·
pub trait Mutability: Sealed { }
Expand description

A trait for parameterizing a BorrowedMappedPages or BorrowedSliceMappedPages as mutably or immutably borrowed.

Only Mutable and Immutable are able to implement this trait.

-

Implementors§

\ No newline at end of file +

Implementors§

\ No newline at end of file diff --git a/doc/memory/type.MmiRef.html b/doc/memory/type.MmiRef.html index 4714567b4e..f2d0e0814a 100644 --- a/doc/memory/type.MmiRef.html +++ b/doc/memory/type.MmiRef.html @@ -1,2 +1,2 @@ -MmiRef in memory - Rust

Type Definition memory::MmiRef

source ·
pub type MmiRef = Arc<MutexIrqSafe<MemoryManagementInfo>>;
Expand description

A shareable reference to a MemoryManagementInfo struct wrapper in a lock.

+MmiRef in memory - Rust

Type Definition memory::MmiRef

source ·
pub type MmiRef = Arc<MutexIrqSafe<MemoryManagementInfo>>;
Expand description

A shareable reference to a MemoryManagementInfo struct wrapper in a lock.

\ No newline at end of file diff --git a/doc/memory_structs/index.html b/doc/memory_structs/index.html index 06c08cc003..96e979e3d8 100644 --- a/doc/memory_structs/index.html +++ b/doc/memory_structs/index.html @@ -1,4 +1,4 @@ -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. diff --git a/doc/memory_structs/struct.FrameRange.html b/doc/memory_structs/struct.FrameRange.html index 0e09e2d84a..aad73954f6 100644 --- a/doc/memory_structs/struct.FrameRange.html +++ b/doc/memory_structs/struct.FrameRange.html @@ -1,22 +1,22 @@ -FrameRange in memory_structs - Rust
    pub struct FrameRange(_);
    Expand description

    A range of Frames that are contiguous in physical memory.

    -

    Implementations§

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

    -

    Creates a FrameRange that will always yield None when iterated.

    -

    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.

    -

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    -

    Returns the number of Frames covered by this iterator.

    +FrameRange in memory_structs - Rust
    pub struct FrameRange(_);
    Expand description

    A range of Frames that are contiguous in physical memory.

    +

    Implementations§

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

    +

    Creates a FrameRange that will always yield None when iterated.

    +

    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.

    +

    Returns the PhysicalAddress of the starting Frame in this FrameRange.

    +

    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.

    -

    Returns the size of this range in number of bytes.

    -

    Returns true if this FrameRange contains the given PhysicalAddress.

    -

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

    +

    Returns the size of this range in number of bytes.

    +

    Returns true if this FrameRange contains the given PhysicalAddress.

    +

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

    -

    Returns the PhysicalAddress at the given offset into this FrameRangewithin this FrameRange, i.e., addr - self.start_address().

    +

    Returns the PhysicalAddress at the given offset into this FrameRangewithin this FrameRange, i.e., addr - self.start_address().

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

    Examples

    If the range covers addresses 0x2000 to 0x4000, then address_at_offset(0x1500) would return Some(0x3500).

    -

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

    -

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

    +

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

    +

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

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

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

    Returns the lower bound of the range (inclusive).

    When using an inclusive range for iteration, the values of start() and @@ -74,9 +74,9 @@

    Examples
    for _ in r.by_ref() {} // Precise field values are unspecified here assert!(r.is_empty());
-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory_structs/struct.PageRange.html b/doc/memory_structs/struct.PageRange.html index f403b29ea7..8d3c18d76b 100644 --- a/doc/memory_structs/struct.PageRange.html +++ b/doc/memory_structs/struct.PageRange.html @@ -1,22 +1,22 @@ -PageRange in memory_structs - Rust
pub struct PageRange(_);
Expand description

A range of Pages that are contiguous in virtual memory.

-

Implementations§

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

-

Creates a PageRange that will always yield None when iterated.

-

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.

-

Returns the VirtualAddress of the starting Page in this PageRange.

-

Returns the number of Pages covered by this iterator.

+PageRange in memory_structs - Rust
pub struct PageRange(_);
Expand description

A range of Pages that are contiguous in virtual memory.

+

Implementations§

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

+

Creates a PageRange that will always yield None when iterated.

+

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.

+

Returns the VirtualAddress of the starting Page in this PageRange.

+

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.

-

Returns the size of this range in number of bytes.

-

Returns true if this PageRange contains the given VirtualAddress.

-

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

+

Returns the size of this range in number of bytes.

+

Returns true if this PageRange contains the given VirtualAddress.

+

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

-

Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., addr - self.start_address().

+

Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., addr - self.start_address().

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

Examples

If the range covers addresses 0x2000 to 0x4000, then address_at_offset(0x1500) would return Some(0x3500).

-

Returns a new separate PageRange that is extended to include the given Page.

-

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

+

Returns a new separate PageRange that is extended to include the given Page.

+

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

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

Methods from Deref<Target = RangeInclusive<Page>>§

Returns the lower bound of the range (inclusive).

When using an inclusive range for iteration, the values of start() and @@ -74,9 +74,9 @@

Examples
for _ in r.by_ref() {} // Precise field values are unspecified here assert!(r.is_empty());
-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used +

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

+sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

diff --git a/doc/memory_x86_64/fn.find_section_memory_bounds.html b/doc/memory_x86_64/fn.find_section_memory_bounds.html index b1edcb14e6..25ca8c8f26 100644 --- a/doc/memory_x86_64/fn.find_section_memory_bounds.html +++ b/doc/memory_x86_64/fn.find_section_memory_bounds.html @@ -1,4 +1,4 @@ -find_section_memory_bounds in memory_x86_64 - Rust
pub fn find_section_memory_bounds(
    boot_info: &impl BootInformation
) -> Result<(AggregatedSectionMemoryBounds, [Option<SectionMemoryBounds>; 32]), &'static str>
Expand description

Finds the addresses in memory of the main kernel sections, as specified by the given boot information.

+find_section_memory_bounds in memory_x86_64 - Rust
pub fn find_section_memory_bounds<F>(
    boot_info: &impl BootInformation,
    translate: F
) -> Result<(AggregatedSectionMemoryBounds, [Option<SectionMemoryBounds>; 32]), &'static str>where
    F: Fn(VirtualAddress) -> Option<PhysicalAddress>,
Expand description

Finds the addresses in memory of the main kernel sections, as specified by the given boot information.

Returns the following tuple, if successful:

Required Methods§

Returns the section’s name.

Returns the section’s starting virtual address.

-

Returns the section’s length.

+

Returns the section’s length in memory, as opposed to its length in the +ELF file.

Returns the section’s flags.

Provided Methods§

Returns whether the section is empty.

Implementations on Foreign Types§

Implementors§

\ No newline at end of file diff --git a/doc/multicore_bringup/fn.get_graphic_info.html b/doc/multicore_bringup/fn.get_graphic_info.html index 94ebd0d4a5..87075504f2 100644 --- a/doc/multicore_bringup/fn.get_graphic_info.html +++ b/doc/multicore_bringup/fn.get_graphic_info.html @@ -1,4 +1,4 @@ -get_graphic_info in multicore_bringup - Rust
pub fn get_graphic_info() -> Option<GraphicInfo>
Expand description

Returns information about the currently-active graphical framebuffer.

+get_graphic_info in multicore_bringup - Rust
pub fn get_graphic_info() -> Option<GraphicInfo>
Expand description

Returns information about the currently-active graphical framebuffer.

This will return None if handle_ap_cores() has not yet been invoked (which is the function that obtains the graphic info in the first place), or if the obtained graphic info is invalid.

diff --git a/doc/multicore_bringup/fn.handle_ap_cores.html b/doc/multicore_bringup/fn.handle_ap_cores.html index 660a70eab9..a32996a3a3 100644 --- a/doc/multicore_bringup/fn.handle_ap_cores.html +++ b/doc/multicore_bringup/fn.handle_ap_cores.html @@ -1,4 +1,4 @@ -handle_ap_cores in multicore_bringup - Rust
pub fn handle_ap_cores(
    kernel_mmi_ref: &MmiRef,
    ap_start_realmode_begin: VirtualAddress,
    ap_start_realmode_end: VirtualAddress,
    max_framebuffer_resolution: Option<(u16, u16)>
) -> Result<u32, &'static str>
Expand description

Starts up and sets up AP cores based on system information from ACPI +handle_ap_cores in multicore_bringup - Rust

pub fn handle_ap_cores(
    kernel_mmi_ref: &MmiRef,
    ap_start_realmode_begin: VirtualAddress,
    ap_start_realmode_end: VirtualAddress,
    ap_gdt: VirtualAddress,
    max_framebuffer_resolution: Option<(u16, u16)>
) -> Result<u32, &'static str>
Expand description

Starts up and sets up AP cores based on system information from ACPI (specifically the MADT (APIC) table).

Arguments:

    diff --git a/doc/multicore_bringup/index.html b/doc/multicore_bringup/index.html index 430ec1cda2..27abeb716f 100644 --- a/doc/multicore_bringup/index.html +++ b/doc/multicore_bringup/index.html @@ -1,4 +1,4 @@ -multicore_bringup - Rust
    Expand description

    Functions for initializing and bringing up other CPU cores.

    +multicore_bringup - Rust
    Expand description

    Functions for initializing and bringing up other CPU cores.

    These functions are intended to be invoked from the main core (the BSP – bootstrap core) in order to jumpstart other cores.

    Structs

    A structure to access information about the graphical framebuffer mode diff --git a/doc/multicore_bringup/struct.GraphicInfo.html b/doc/multicore_bringup/struct.GraphicInfo.html index 8d70c1b65f..2feea16a1d 100644 --- a/doc/multicore_bringup/struct.GraphicInfo.html +++ b/doc/multicore_bringup/struct.GraphicInfo.html @@ -1,26 +1,26 @@ -GraphicInfo in multicore_bringup - Rust
    #[repr(packed)]
    pub struct GraphicInfo { /* private fields */ }
    Expand description

    A structure to access information about the graphical framebuffer mode +GraphicInfo in multicore_bringup - Rust

    #[repr(packed)]
    pub struct GraphicInfo { /* private fields */ }
    Expand description

    A structure to access information about the graphical framebuffer mode that was discovered and chosen in the AP’s real-mode initialization sequence.

    Struct format

    The layout of fields in this struct must be kept in sync with the code in ap_realmode.asm that writes to this structure.

    -

    Implementations§

    Returns the visible width of the screen, in pixels.

    -

    Returns the visible height of the screen, in pixels.

    -

    Returns the physical address of the primary framebuffer memory.

    -

    Returns the total size in bytes of the VGA graphics memory.

    +

    Implementations§

    Returns the visible width of the screen, in pixels.

    +

    Returns the visible height of the screen, in pixels.

    +

    Returns the physical address of the primary framebuffer memory.

    +

    Returns the total size in bytes of the VGA graphics memory.

    This memory contains the framebuffer as well as any extra visible displayable memory, which can be used for any graphics purposes, e.g., a backbuffer for double buffering (aka page flipping).

    -

    The number of bytes in each row or line of the framebuffer’s memory.

    +

    The number of bytes in each row or line of the framebuffer’s memory.

    This is similar to the “stride” of a framebuffer, but is expressed in units of bytes rather than in units of pixels.

    -

    The size of each pixel, in number of bits, not bytes.

    -

    The size of a pixel’s Red value, in number of bits.

    -

    The position of the least significant bit of a pixel’s Red value.

    -

    The size of a pixel’s Green value, in number of bits.

    -

    The position of the least significant bit of a pixel’s Green value.

    -

    The size of a pixel’s Blue value, in number of bits.

    -

    The position of the least significant bit of a pixel’s Blue value.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    +

    The size of each pixel, in number of bits, not bytes.

    +

    The size of a pixel’s Red value, in number of bits.

    +

    The position of the least significant bit of a pixel’s Red value.

    +

    The size of a pixel’s Green value, in number of bits.

    +

    The position of the least significant bit of a pixel’s Green value.

    +

    The size of a pixel’s Blue value, in number of bits.

    +

    The position of the least significant bit of a pixel’s Blue value.

    +

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    Calls U::from(self).

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

    diff --git a/doc/nano_core/index.html b/doc/nano_core/index.html index 59abd66039..bf275d1302 100644 --- a/doc/nano_core/index.html +++ b/doc/nano_core/index.html @@ -1,4 +1,4 @@ -nano_core - Rust

    Crate nano_core

    source ·
    Expand description

    The aptly-named tiny crate containing the first OS code to run.

    +nano_core - Rust

    Crate nano_core

    source ·
    Expand description

    The aptly-named tiny crate containing the first OS code to run.

    The nano_core is very simple, and only does the following things:

    1. Bootstraps the OS after the bootloader is finished, and initializes simple things like logging.
    2. diff --git a/doc/search-index.js b/doc/search-index.js index 91d1c7397f..21c07befda 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -11,9 +11,9 @@ var searchIndex = JSON.parse('{\ "atomic_linked_list":{"doc":"","t":[0,0,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["atomic_linked_list","atomic_map","AtomicLinkedList","AtomicLinkedListIter","AtomicLinkedListIterMut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","from","from","from","into","into","into","into_iter","into_iter","iter","iter_mut","new","next","next","push_front","push_front_timeout","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","AtomicMap","AtomicMapIter","AtomicMapIterMut","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","drop","fmt","from","from","from","get","get_mut","insert","insert_timeout","into","into","into","into_iter","into_iter","iter","new","next","next","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":["atomic_linked_list","","atomic_linked_list::atomic_linked_list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","atomic_linked_list::atomic_map","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A basic atomic linked list. A generic, singly-linked list …","A basic map structure which is backed by an atomic linked …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","returns a forward iterator through this linked list. ","returns a forward iterator through this linked list, …","Create a new empty AtomicLinkedList.","","","add a new element to the front of the list.","add a new element to the front of the list, but will abort …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns a reference to the value matching the given key, …","Returns a mutable reference to the value matching the …","Adds a new key-value pair to the map. If the given key is …","Adds a new key-value pair to the map. If the given key is …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns a forward iterator through this map. ","Create a new empty AtomicMap.","","","","","","","","","","",""],"i":[0,0,0,0,0,5,6,2,5,6,2,2,5,6,2,5,6,2,5,6,2,2,2,5,6,2,2,5,6,2,5,6,2,5,6,2,0,0,0,12,14,11,12,14,11,11,11,12,14,11,11,11,11,11,12,14,11,12,14,11,11,12,14,12,14,11,12,14,11,12,14,11],"f":[0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]],3],4],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,5],[2,6],[[],2],[5,7],[6,7],[2,8],[[2,9],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],10],[[],10],[[],10],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[11],[[[11,[1]],3],4],[[]],[[]],[[]],[11,7],[11,7],[11,7],[[11,9],[[8,[7]]]],[[]],[[]],[[]],[[]],[[]],[11,12],[[],11],[[[12,[13]]],7],[[[14,[13]]],7],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],10],[[],10],[[],10]],"p":[[8,"Debug"],[3,"AtomicLinkedList"],[3,"Formatter"],[6,"Result"],[3,"AtomicLinkedListIter"],[3,"AtomicLinkedListIterMut"],[4,"Option"],[4,"Result"],[15,"u64"],[3,"TypeId"],[3,"AtomicMap"],[3,"AtomicMapIter"],[8,"PartialEq"],[3,"AtomicMapIterMut"]]},\ "block_allocator":{"doc":"","t":[3,11,11,11,11,11,11,11,11,11,11,11],"n":["FixedSizeBlockAllocator","allocate","borrow","borrow_mut","deallocate","from","init","into","new","try_from","try_into","type_id"],"q":["block_allocator","","","","","","","","","","",""],"d":["","Allocates a chunk of the given size with the given …","","","Frees the given allocation. ptr must be a pointer returned …","Returns the argument unchanged.","Initialize the allocator with the given heap bounds.","Calls U::from(self).","Creates an empty FixedSizeBlockAllocator.","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2],3],[[]],[[]],[[1,3,2]],[[]],[[1,4,4]],[[]],[[],1],[[],5],[[],5],[[],6]],"p":[[3,"FixedSizeBlockAllocator"],[3,"Layout"],[15,"u8"],[15,"usize"],[4,"Result"],[3,"TypeId"]]},\ "block_cache":{"doc":"A caching layer for block based storage devices.","t":[3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BlockCache","as_any","as_any_mut","borrow","borrow_mut","flush","from","into","into_any","into_any_arc","into_any_rc","new","read_block","try_from","try_into","type_id","write_block"],"q":["block_cache","","","","","","","","","","","","","","","",""],"d":["A cache to store read and written blocks from a storage …","","","","","Flushes the given block to the backing storage device. If …","Returns the argument unchanged.","Calls U::from(self).","","","","Creates a new BlockCache device ","An internal function that first checks the cache for a …","","","",""],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],"f":[0,[[],1],[[],1],[[]],[[]],[[2,[4,[3]]],[[6,[5]]]],[[]],[[]],[[[8,[7]]],[[8,[1,7]]]],[9,[[9,[1]]]],[10,[[10,[1]]]],[11,2],[[2,3],[[6,[5]]]],[[],6],[[],6],[[],12],[[2,3,13],[[6,[5]]]]],"p":[[8,"Any"],[3,"BlockCache"],[15,"usize"],[4,"Option"],[15,"str"],[4,"Result"],[3,"Global"],[3,"Box"],[3,"Arc"],[3,"Rc"],[6,"StorageDeviceRef"],[3,"TypeId"],[4,"Cow"]]},\ -"boot_info":{"doc":"This crate provides an abstraction over multiboot2 and …","t":[18,16,8,18,8,16,3,16,8,16,16,8,16,16,3,18,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,12,10,10,0,10,10,11,11,11,10,11,10,10,10,10,10,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11],"n":["ALLOCATED","AdditionalReservedMemoryRegions","BootInformation","EXECUTABLE","ElfSection","ElfSection","ElfSectionFlags","ElfSections","MemoryRegion","MemoryRegion","MemoryRegions","Module","Module","Modules","ReservedMemoryRegion","WRITABLE","additional_reserved_memory_regions","all","bitand","bitand_assign","bitor","bitor_assign","bits","bitxor","bitxor_assign","borrow","borrow","borrow_mut","borrow_mut","clone","cmp","complement","contains","difference","elf_sections","empty","eq","extend","flags","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","into","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_usable","kernel_end","len","len","len","len","len","memory_regions","modules","multiboot2","name","name","not","partial_cmp","remove","rsdp","set","stack_size","start","start","start","start","start","sub","sub_assign","symmetric_difference","toggle","try_from","try_from","try_into","try_into","type_id","type_id","union","MemoryRegions","borrow","borrow_mut","from","into","into_iter","next","try_from","try_into","type_id"],"q":["boot_info","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","boot_info::multiboot2","","","","","","","","",""],"d":["The section occupies memory during the process execution.","","","The section contains executable machine instructions.","","","ELF section flags.","","","","","","","","","The section contains data that should be writable during …","Returns additional reserved memory regions that aren’t …","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the kernel’s ELF sections.","Returns an empty set of flags.","","","Returns the section’s flags.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns whether the region is empty.","Returns whether the section is empty.","Returns whether the module is empty.","Returns whether the boot information is empty.","Returns true if no flags are currently stored.","Returns whether the region can be used by the frame …","Returns the end of the kernel’s image in physical memory.","Returns the region’s length.","Returns the section’s length.","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 complement of this set of flags.","","Removes the specified flags in-place.","Returns the RSDP if it was provided by the bootloader.","Inserts or removes the specified flags depending on the …","Returns the stack size in bytes.","Returns the region’s starting physical address.","Returns the section’s starting virtual address.","Returns the module’s starting physical address.","Returns the boot information’s starting virtual address.","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Toggles the specified flags in-place.","","","","","","","Returns the union of between the flags in self and other.","","","","Returns the argument unchanged.","Calls U::from(self).","","","","",""],"i":[3,17,0,3,0,17,0,17,0,17,17,0,17,17,0,3,17,3,3,3,3,3,3,3,3,3,10,3,10,3,3,3,3,3,17,3,3,3,18,3,3,3,3,3,10,3,10,3,3,3,3,3,3,3,3,3,10,3,19,18,20,17,3,19,17,19,18,20,17,10,17,17,0,18,20,3,3,3,17,3,17,19,18,20,17,10,3,3,3,3,3,10,3,10,3,10,3,0,16,16,16,16,16,16,16,16,16],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[],3],[[3,3],3],[[3,3]],[[3,3],3],[[3,3]],[3,4],[[3,3],3],[[3,3]],[[]],[[]],[[]],[[]],[3,3],[[3,3],5],[3,3],[[3,3],6],[[3,3],3],[[],[[2,[1]]]],[[],3],[[3,3],6],[[3,7]],[[],3],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[10,8],9],[[]],[[]],[4,[[11,[3]]]],[4,3],[4,3],[7,3],[3],[[3,3]],[[3,3],3],[[3,3],6],[[]],[[]],[3,6],[[],6],[[],6],[[],6],[[],6],[3,6],[[],6],[[],[[2,[12,1]]]],[[],13],[[],13],[[],13],[[],13],0,[[],[[2,[1]]]],[[]],0,[[],1],[[],[[2,[1,1]]]],[3,3],[[3,3],[[11,[5]]]],[[3,3]],[[],[[11,[12]]]],[[3,3,6]],[[],[[2,[13,1]]]],[[],12],[[],14],[[],12],[[],[[11,[14]]]],0,[[3,3],3],[[3,3]],[[3,3],3],[[3,3]],[[],2],[[],2],[[],2],[[],2],[[],15],[[],15],[[3,3],3],0,[[]],[[]],[[]],[[]],[[]],[16,11],[[],2],[[],2],[[],15]],"p":[[15,"str"],[4,"Result"],[3,"ElfSectionFlags"],[15,"u64"],[4,"Ordering"],[15,"bool"],[8,"IntoIterator"],[3,"Formatter"],[6,"Result"],[3,"ReservedMemoryRegion"],[4,"Option"],[3,"PhysicalAddress"],[15,"usize"],[3,"VirtualAddress"],[3,"TypeId"],[3,"MemoryRegions"],[8,"BootInformation"],[8,"ElfSection"],[8,"MemoryRegion"],[8,"Module"]]},\ +"boot_info":{"doc":"This crate provides an abstraction over multiboot2 and …","t":[18,16,8,18,8,16,3,16,8,16,16,8,16,16,3,18,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,12,10,10,0,10,10,11,11,11,10,11,10,10,10,10,10,12,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11],"n":["ALLOCATED","AdditionalReservedMemoryRegions","BootInformation","EXECUTABLE","ElfSection","ElfSection","ElfSectionFlags","ElfSections","MemoryRegion","MemoryRegion","MemoryRegions","Module","Module","Modules","ReservedMemoryRegion","WRITABLE","additional_reserved_memory_regions","all","bitand","bitand_assign","bitor","bitor_assign","bits","bitxor","bitxor_assign","borrow","borrow","borrow_mut","borrow_mut","clone","cmp","complement","contains","difference","elf_sections","empty","eq","extend","flags","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","into","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_usable","kernel_end","len","len","len","len","len","memory_regions","modules","multiboot2","name","name","not","partial_cmp","remove","rsdp","set","stack_size","start","start","start","start","start","sub","sub_assign","symmetric_difference","toggle","try_from","try_from","try_into","try_into","type_id","type_id","union","MemoryRegions","borrow","borrow_mut","from","into","into_iter","next","try_from","try_into","type_id"],"q":["boot_info","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","boot_info::multiboot2","","","","","","","","",""],"d":["The section occupies memory during the process execution.","","","The section contains executable machine instructions.","","","ELF section flags.","","","","","","","","","The section contains data that should be writable during …","Returns additional reserved memory regions that aren’t …","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the kernel’s ELF sections.","Returns an empty set of flags.","","","Returns the section’s flags.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns whether the region is empty.","Returns whether the section is empty.","Returns whether the module is empty.","Returns whether the boot information is empty.","Returns true if no flags are currently stored.","Returns whether the region can be used by the frame …","Returns the end of the kernel’s image in memory.","Returns the region’s length.","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 complement of this set of flags.","","Removes the specified flags in-place.","Returns the RSDP if it was provided by the bootloader.","Inserts or removes the specified flags depending on the …","Returns the stack size in bytes.","Returns the region’s starting physical address.","Returns the section’s starting virtual address.","Returns the module’s starting physical address.","Returns the boot information’s starting virtual address.","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Toggles the specified flags in-place.","","","","","","","Returns the union of between the flags in self and other.","","","","Returns the argument unchanged.","Calls U::from(self).","","","","",""],"i":[3,17,0,3,0,17,0,17,0,17,17,0,17,17,0,3,17,3,3,3,3,3,3,3,3,3,10,3,10,3,3,3,3,3,17,3,3,3,18,3,3,3,3,3,10,3,10,3,3,3,3,3,3,3,3,3,10,3,19,18,20,17,3,19,17,19,18,20,17,10,17,17,0,18,20,3,3,3,17,3,17,19,18,20,17,10,3,3,3,3,3,10,3,10,3,10,3,0,16,16,16,16,16,16,16,16,16],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[],3],[[3,3],3],[[3,3]],[[3,3],3],[[3,3]],[3,4],[[3,3],3],[[3,3]],[[]],[[]],[[]],[[]],[3,3],[[3,3],5],[3,3],[[3,3],6],[[3,3],3],[[],[[2,[1]]]],[[],3],[[3,3],6],[[3,7]],[[],3],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[3,8],9],[[10,8],9],[[]],[[]],[4,[[11,[3]]]],[4,3],[4,3],[7,3],[3],[[3,3]],[[3,3],3],[[3,3],6],[[]],[[]],[3,6],[[],6],[[],6],[[],6],[[],6],[3,6],[[],6],[[],[[2,[12,1]]]],[[],13],[[],13],[[],13],[[],13],0,[[],[[2,[1]]]],[[]],0,[[],1],[[],[[2,[1,1]]]],[3,3],[[3,3],[[11,[5]]]],[[3,3]],[[],[[11,[14]]]],[[3,3,6]],[[],[[2,[13,1]]]],[[],14],[[],12],[[],14],[[],[[11,[12]]]],0,[[3,3],3],[[3,3]],[[3,3],3],[[3,3]],[[],2],[[],2],[[],2],[[],2],[[],15],[[],15],[[3,3],3],0,[[]],[[]],[[]],[[]],[[]],[16,11],[[],2],[[],2],[[],15]],"p":[[15,"str"],[4,"Result"],[3,"ElfSectionFlags"],[15,"u64"],[4,"Ordering"],[15,"bool"],[8,"IntoIterator"],[3,"Formatter"],[6,"Result"],[3,"ReservedMemoryRegion"],[4,"Option"],[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"TypeId"],[3,"MemoryRegions"],[8,"BootInformation"],[8,"ElfSection"],[8,"MemoryRegion"],[8,"Module"]]},\ "bootloader_modules":{"doc":"An abstraction for bootloader-provided “modules”.","t":[3,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BootloaderModule","borrow","borrow_mut","end_address","fmt","from","into","name","new","size_in_bytes","start_address","try_from","try_into","type_id"],"q":["bootloader_modules","","","","","","","","","","","","",""],"d":["A record of a bootloader module’s name and location in …","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[]],[[]],[1,2],[[1,3],4],[[]],[[]],[1,5],[[2,2,5],1],[1,6],[1,2],[[],7],[[],7],[[],8]],"p":[[3,"BootloaderModule"],[3,"PhysicalAddress"],[3,"Formatter"],[6,"Result"],[3,"String"],[15,"usize"],[4,"Result"],[3,"TypeId"]]},\ -"captain":{"doc":"The main initialization routine and setup logic of the OS. ","t":[5],"n":["init"],"q":["captain"],"d":["Initialize the Captain, which is the main module that …"],"i":[0],"f":[[[1,[3,[2]],[3,[4]],5,5,[7,[6]]],[[9,[8]]]]],"p":[[6,"MmiRef"],[3,"EarlyIdentityMappedPages"],[3,"NoDrop"],[3,"Stack"],[3,"VirtualAddress"],[3,"PhysicalAddress"],[4,"Option"],[15,"str"],[4,"Result"]]},\ +"captain":{"doc":"The main initialization routine and setup logic of the OS. ","t":[5],"n":["init"],"q":["captain"],"d":["Initialize the Captain, which is the main module that …"],"i":[0],"f":[[[1,[3,[2]],[3,[4]],5,5,5,[7,[6]]],[[9,[8]]]]],"p":[[6,"MmiRef"],[3,"EarlyIdentityMappedPages"],[3,"NoDrop"],[3,"Stack"],[3,"VirtualAddress"],[3,"PhysicalAddress"],[4,"Option"],[15,"str"],[4,"Result"]]},\ "catch_unwind":{"doc":"Support for catching a panic while a panicked Task is …","t":[5,5],"n":["catch_unwind_with_arg","resume_unwind"],"q":["catch_unwind",""],"d":["Invokes the given closure f, catching a panic as it is …","Resumes the unwinding procedure after it was caught with …"],"i":[0,0],"f":[[[],[[2,[1]]]],[1,3]],"p":[[4,"KillReason"],[4,"Result"],[15,"never"]]},\ "color":{"doc":"A simple representation of the standard RGB color model.","t":[17,17,17,17,3,17,17,17,17,17,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BLACK","BLUE","BROWN","CYAN","Color","DARK_GRAY","GRAY","GREEN","LIGHT_BLUE","LIGHT_CYAN","LIGHT_GRAY","LIGHT_GREEN","MAGENTA","PINK","RED","TRANSPARENT","WHITE","YELLOW","blue","borrow","borrow_mut","clone","eq","fmt","from","green","into","new","red","set_transparency","transparency","try_from","try_into","type_id"],"q":["color","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","This structure represents a color value in the standard …","","","","","","","","","","","","","","Returns the blue component of this Color as a u8 value.","","","","","","Returns the argument unchanged.","Returns the green component of this Color as a u8 value.","Calls U::from(self).","Creates a new Color structure from a 4 bytes ARGB …","Returns the red component of this Color as a u8 value.","Sets the transparency of the color, in which 0 is opaque …","Returns the transparency component of this Color as a u8 …","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[[]],[[]],[1,1],[[1,1],3],[[1,4],5],[[]],[1,2],[[]],[6,1],[1,2],[[1,2]],[1,2],[[],7],[[],7],[[],8]],"p":[[3,"Color"],[15,"u8"],[15,"bool"],[3,"Formatter"],[6,"Result"],[15,"u32"],[4,"Result"],[3,"TypeId"]]},\ "compositor":{"doc":"This crate defines a trait of Compositor . A compositor …","t":[8,8,3,10,11,11,10,12,11,11,10,10,12,11,11,11],"n":["CompositableRegion","Compositor","FramebufferUpdates","blend_buffers","borrow","borrow_mut","composite","coordinate_in_dest_framebuffer","from","into","row_range","size","src_framebuffer","try_from","try_into","type_id"],"q":["compositor","","","","","","","","","","","","","","",""],"d":["A CompositableRegion is an abstract region (i.e., a …","A compositor composites (combines or blends) a series of …","A source framebuffer to be composited, along with its …","Blends the pixels in the source framebuffer src_fb within …","","","Composites the framebuffers in the list of source …","The coordinate in the destination framebuffer where the …","Returns the argument unchanged.","Calls U::from(self).","Returns the range of rows covered by this region, given …","Returns the number of pixels in the region.","The source framebuffer to be composited.","","",""],"i":[0,0,0,11,12,12,13,12,12,12,11,11,12,12,12,12],"f":[0,0,0,[[1,1,2,[4,[3]]],[[6,[5]]]],[[]],[[]],[[7,1,[0,[7,8]]],[[6,[5]]]],0,[[]],[[]],[[],[[4,[9]]]],[[],3],0,[[],6],[[],6],[[],10]],"p":[[3,"Framebuffer"],[3,"Coord"],[15,"usize"],[3,"Range"],[15,"str"],[4,"Result"],[8,"IntoIterator"],[8,"Clone"],[15,"isize"],[3,"TypeId"],[8,"CompositableRegion"],[3,"FramebufferUpdates"],[8,"Compositor"]]},\ @@ -75,16 +75,16 @@ var searchIndex = JSON.parse('{\ "logger":{"doc":"A basic logger implementation for system-wide logging in …","t":[17,17,6,5,5,5,5,5,5,5],"n":["DEFAULT_LOG_LEVEL","LOG_MAX_WRITERS","LogOutputFunc","early_init","init","mirror_to_vga","set_log_level","take_early_log_writers","write_fmt","write_str"],"q":["logger","","","","","","","","",""],"d":["By default, Theseus will print all log levels, including …","The maximum number of output streams that a logger can …","The signature of a callback function that will optionally …","Initializes Theseus’s early system logger, which only …","Initialize the fully-featured Theseus system logger.","Call this to enable mirroring logging macros to the screen","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,0],"f":[0,0,0,[[[2,[1]],3],[[5,[4]]]],[[[2,[1]],3],[[5,[4]]]],[6],[1],[[]],[7,8],[9,8]],"p":[[4,"Level"],[4,"Option"],[8,"IntoIterator"],[3,"SetLoggerError"],[4,"Result"],[6,"LogOutputFunc"],[3,"Arguments"],[6,"Result"],[15,"str"]]},\ "madt":{"doc":"Support for the MADT ACPI table, which includes interrupt …","t":[13,13,13,13,17,3,4,3,3,3,3,3,3,13,13,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,5,12,11,11,11,11,11,11,11,11,11,12,11,12,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["IntSrcOverride","IoApic","LocalApic","LocalApicAddressOverride","MADT_SIGNATURE","Madt","MadtEntry","MadtIntSrcOverride","MadtIoApic","MadtIter","MadtLocalApic","MadtLocalApicAddressOverride","MadtNonMaskableInterrupt","NonMaskableInterrupt","UnknownOrCorrupt","address","apic_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","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_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","find_nmi_entry_for_processor","flags","flags","flags","flags","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get","gsi","gsi_base","handle","id","into","into","into","into","into","into","into","into","into_iter","irq_source","iter","lint","local_apic_phys_addr","next","phys_addr","processor","processor","sdt","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_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"],"q":["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 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 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","","","","","","","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).","","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","Returns a reference to the Sdt header in this MADT table.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[6,6,6,6,0,0,0,0,0,0,0,0,0,6,6,8,7,1,5,6,7,8,9,10,11,1,5,6,7,8,9,10,11,1,9,5,6,7,8,9,10,11,5,6,7,8,9,10,11,0,1,7,9,10,6,7,8,9,10,11,1,5,6,7,8,9,10,11,1,9,8,0,8,1,5,6,7,8,9,10,11,5,9,1,10,1,5,11,7,10,1,5,6,7,8,9,10,11,1,5,6,7,8,9,10,11,1,5,6,7,8,9,10,11,1,5,6,7,8,9,10,11],"f":[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,5]],[1,13],0,0,0,[[6,14],15],[[7,14],15],[[8,14],15],[[9,14],15],[[10,14],15],[[11,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,[1,21],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22]],"p":[[3,"Madt"],[3,"PageTable"],[15,"str"],[4,"Result"],[3,"MadtIter"],[4,"MadtEntry"],[3,"MadtLocalApic"],[3,"MadtIoApic"],[3,"MadtIntSrcOverride"],[3,"MadtNonMaskableInterrupt"],[3,"MadtLocalApicAddressOverride"],[15,"u8"],[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":[3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["MemFile","as_mapping","borrow","borrow_mut","flush","from","from_mapped_pages","get_name","get_parent_dir","into","len","new","read_at","set_parent_dir","try_from","try_into","type_id","write_at"],"q":["memfs","","","","","","","","","","","","","","","","",""],"d":["The struct that represents a file in memory that is backed …","","","","","Returns the argument unchanged.","Creates a new MemFile in the given parent directory with …","","","Calls U::from(self).","","Allocates writable memory space for the given contents and …","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,[[4,[2,3]]]],[[]],[[]],[1,[[4,[5]]]],[[]],[[2,6,7,8],[[4,[9,3]]]],[1,6],[1,[[10,[8]]]],[[]],[1,7],[[6,8],[[4,[9,3]]]],[[1,7],[[4,[7,5]]]],[[1,11]],[[],4],[[],4],[[],12],[[1,7],[[4,[7,5]]]]],"p":[[3,"MemFile"],[3,"MappedPages"],[15,"str"],[4,"Result"],[4,"IoError"],[3,"String"],[15,"usize"],[6,"DirRef"],[6,"FileRef"],[4,"Option"],[6,"WeakDirRef"],[3,"TypeId"]]},\ -"memory":{"doc":"This crate implements the main memory management subsystem …","t":[18,18,3,3,3,3,18,18,18,18,18,18,18,3,3,3,13,18,3,3,3,3,3,4,6,8,3,18,18,17,18,18,18,17,3,3,3,3,3,3,3,3,13,13,18,18,3,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,5,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["ACCESSED","ACCESSED","AllocatedFrames","AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","MemoryRegionType","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","PageRange","PageTable","PhysicalAddress","PhysicalMemoryRegion","PteFlags","PteFlagsArch","PteFlagsX86_64","Reserved","Unknown","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","_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","adjust_for_higher_level_pte","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","as_allocated_frame","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_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","create_contiguous_mapping","create_mapping","data","deep_copy","default","default","default","default","deref","deref","deref","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","drop","dump_pte","empty","empty","empty","empty","empty","empty","empty","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","forward_checked","forward_checked","frame_offset","frames","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","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_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","map_allocated_pages","map_allocated_pages_to","merge","merge","merge","new","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","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","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","split","split","split","stack","stack_guard","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_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_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","typ","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"],"q":["memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","Represents a range of allocated physical memory Frames; …","Represents a range of allocated VirtualAddresses, …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","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 that is available for any general purpose.","If set, this page table entry represents a “huge” …","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","Represents a contiguous range of virtual memory pages that …","","This holds all the information for a Task’s memory …","Types of physical memory. See each variant’s …","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.","A region of physical memory.","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 that is reserved for special use and is only ever …","Memory of an unknown type. This is a default value that …","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 …","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 PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","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 …","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 …","Returns an AllocatedFrame if this AllocatedFrames object …","","","","","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 …","A convenience function that creates a new memory mapping …","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 AllocatedFrames 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 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.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","","Returns the argument unchanged.","Immutably borrows the given MappedPages as a slice &[T] of …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","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 an instance of …","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 …","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).","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 …","Merges the given AllocatedPages object ap into this …","Merges the given AllocatedFrames object other 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 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 …","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 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.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this AllocatedFrames into two separate …","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","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.","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,0,0,0,0,3,1,3,1,3,1,3,0,0,0,25,3,0,0,0,0,0,0,0,0,0,1,3,0,3,3,3,0,0,0,0,0,0,0,0,0,25,25,1,3,0,1,3,3,1,3,1,3,1,3,4,4,6,6,7,8,4,4,6,6,7,8,37,9,11,3,1,3,0,0,0,0,0,0,0,0,12,19,20,19,20,22,22,22,22,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,37,1,4,29,15,6,12,19,19,3,20,20,7,24,8,18,25,42,9,11,31,22,36,37,38,1,4,29,15,6,12,19,19,3,20,20,7,24,8,18,25,42,9,11,31,22,36,37,38,1,4,6,3,7,24,8,25,9,11,1,4,6,3,7,24,8,25,9,11,1,4,6,19,3,20,7,8,1,3,7,8,1,3,9,11,0,0,37,22,1,4,6,3,15,12,19,20,24,9,11,31,22,19,20,9,11,31,1,3,1,3,1,3,15,12,22,29,1,15,12,3,9,11,22,1,4,6,19,3,20,7,8,25,9,11,1,3,1,3,1,3,36,22,1,1,1,1,1,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,12,3,3,3,3,3,7,24,8,25,9,11,31,22,36,37,38,7,8,6,24,1,1,4,29,15,6,12,19,19,3,3,20,20,7,24,8,18,25,42,9,11,31,22,36,37,38,1,3,1,3,1,3,1,3,19,20,11,9,0,3,1,4,6,19,3,20,37,0,0,1,3,1,3,1,3,1,4,4,29,15,6,6,12,19,3,20,7,24,8,18,25,42,9,11,31,22,36,37,38,22,22,22,22,19,20,12,9,11,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,29,29,15,12,22,1,4,6,3,24,9,11,4,6,31,1,3,7,8,9,11,9,11,7,7,7,7,4,36,37,1,4,6,19,3,20,7,8,3,31,22,1,3,37,1,3,0,9,11,11,9,15,12,22,37,37,7,8,9,11,7,8,1,4,4,6,6,3,7,8,1,4,4,6,6,3,7,8,31,1,3,37,9,11,1,4,6,3,7,24,8,25,9,11,4,6,1,3,29,29,1,4,29,15,6,12,19,3,20,7,24,8,18,25,42,9,11,31,22,36,37,38,1,4,29,15,6,12,19,3,20,7,24,8,18,25,42,9,11,31,22,36,37,38,24,1,4,29,15,6,12,19,3,20,7,24,8,18,25,42,9,11,31,22,36,37,38,1,3,22,1,3,4,6,31,1,3,4,6],"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,[[1,2],1],[[3,2],3],[[4,4],4],[[4,5],4],[[6,6],6],[[6,5],6],[[7,5],7],[[8,5],8],[[4,5]],[[4,4]],[[6,5]],[[6,6]],[[7,5]],[[8,5]],0,[[9,5],[[10,[4]]]],[[11,5],[[10,[6]]]],[3,3],[[],1],[[],3],[5,[[10,[12]]]],[[6,5],[[14,[12,13]]]],[5,[[10,[12]]]],[[6,5],[[14,[12,13]]]],[5,[[10,[15]]]],[[4,5],[[14,[15,13]]]],[5,[[10,[15]]]],[[4,5],[[14,[15,13]]]],[12,16],[[[19,[17,18]]]],[[[20,[17,18]]]],[[[19,[17,21]]]],[[[20,[17,21]]]],[[22,5,5],[[14,[13]]]],[[22,5,5],[[14,[13]]]],[[22,5],[[14,[13]]]],[[22,5],[[14,[13]]]],[[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,23],[3,23],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1]],[[4,4]],[[6,6]],[[3,3]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[19,[17,21]]]],[[]],[[]],[[[20,[17,21]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[19,[17,18]]]],[[]],[[[20,[17,18]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[4,4],[6,6],[3,3],[7,7],[24,24],[8,8],[25,25],[9,9],[11,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,1],26],[[4,4],26],[[6,6],26],[[[19,[[0,[17,27]],21]],[19,[[0,[17,27]],21]]],26],[[3,3],26],[[[20,[[0,[17,27]],21]],[20,[[0,[17,27]],21]]],26],[[7,7],26],[[8,8],26],[1,1],[3,3],[4,7],[6,8],[[1,1],2],[[3,3],2],[[9,4],2],[[11,6],2],[[5,[28,[3]]],[[14,[13]]]],[[5,[28,[3]]],[[14,[22,13]]]],0,[[22,29,[10,[[28,[3]]]]],[[14,[22,13]]]],[[],1],[[],4],[[],6],[[],3],[15,9],[12,11],[[[19,[17,21]]]],[[[20,[17,21]]]],[24,11],[9,30],[11,30],[31,29],[22,9],[[[19,[17,18]]]],[[[20,[17,18]]]],[9,30],[11,30],[31,29],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[15],[12],[22],[[29,4]],[[],1],[[],15],[[],12],[[],3],[[],9],[[],11],[[],22],[[1,1],2],[[4,4],2],[[6,6],2],[[[19,[[0,[17,32]],21]],[19,[[0,[17,32]],21]]],2],[[3,3],2],[[[20,[[0,[17,32]],21]],[20,[[0,[17,32]],21]]],2],[[7,7],2],[[8,8],2],[[25,25],2],[[9,9],2],[[11,11],2],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[1],[3],0,[22,3],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[15,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[12,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[7,33],[[14,[34]]]],[[24,33],[[14,[34]]]],[[8,33],[[14,[34]]]],[[25,33],[[14,[34]]]],[[9,33],[[14,[34]]]],[[11,33],[[14,[34]]]],[[31,33],35],[[22,33],35],[[36,33],35],[[37,33],35],[[38,33],35],[[7,5],[[10,[7]]]],[[8,5],[[10,[8]]]],[6,5],0,[3,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,5],[[14,[[19,[17]]]]]],[1,3],[[]],[[22,5,5],[[14,[[20,[17]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,[[10,[1]]]],[23,[[10,[3]]]],[23,1],[23,3],[23,1],[23,3],[[],1],[[],3],[[22,5],[[14,[[19,[17,18]]]]]],[[22,5,5],[[14,[[20,[17,18]]]]]],[[6,5],11],[[4,5],9],[[],[[10,[39]]]],[3,40],[1],[4],[6],[[[19,[[0,[17,41]],21]]]],[3],[[[20,[[0,[17,41]],21]]]],0,[4,[[14,[37,13]]]],[[31,22,22],39],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[[]],[[]],[4,5],[[]],[[]],[[]],[6,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,5],[[14,[[19,[17,42]]]]]],[[22,5],[[14,[[19,[17,18]]]]]],[[22,5,5],[[14,[[20,[17,42]]]]]],[[22,5,5],[[14,[[20,[17,18]]]]]],[[[19,[17,21]]],22],[[[20,[17,21]]],22],[12],[9],[11],[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],[[29,15,[28,[3]]],[[14,[22,13]]]],[[29,15,12,[28,[3]]],[[14,[22,13]]]],[[15,15],[[14,[15]]]],[[12,12],[[14,[12]]]],[[22,22],14],[[],1],[5,[[10,[4]]]],[5,[[10,[6]]]],[[],3],[[11,25],24],[[7,7],9],[[8,8],11],[5,4],[5,6],[[31,12,[10,[15]]],[[14,[31,13]]]],[1,1],[3,3],[7,5],[8,5],[[9,4],[[10,[5]]]],[[11,6],[[10,[5]]]],[[9,9],[[10,[9]]]],[[11,11],[[10,[11]]]],[7,5],[7,5],[7,5],[7,5],[4,5],0,0,[[1,1],[[10,[26]]]],[[4,4],[[10,[26]]]],[[6,6],[[10,[26]]]],[[[19,[[0,[17,43]],21]],[19,[[0,[17,43]],21]]],[[10,[26]]]],[[3,3],[[10,[26]]]],[[[20,[[0,[17,43]],21]],[20,[[0,[17,43]],21]]],[[10,[26]]]],[[7,7],[[10,[26]]]],[[8,8],[[10,[26]]]],[[3,40],3],[31,6],[[22,29,[28,[3]]],[[14,[13]]]],[[1,1]],[[3,3]],0,[[1,1,2]],[[3,3,2]],[[]],[9,5],[11,5],[11,5],[9,5],[[15,7],[[14,[15]]]],[[12,8],[[14,[12]]]],[[22,7],[[14,[22]]]],0,0,[7,4],[8,6],[9,4],[11,6],[[7,7],[[10,[5]]]],[[8,8],[[10,[5]]]],[[1,1],1],[[4,5],4],[[4,4],4],[[6,5],6],[[6,6],6],[[3,3],3],[[7,5],7],[[8,5],8],[[1,1]],[[4,4]],[[4,5]],[[6,6]],[[6,5]],[[3,3]],[[7,5]],[[8,5]],[[31,31]],[[1,1],1],[[3,3],3],0,[[9,7],9],[[11,8],11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],44],[[],44],[[1,1]],[[3,3]],[[29,4],[[10,[6]]]],[[29,7],[[10,[8]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],0,[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[1,1],1],[[3,3],3],[[22,29],[[14,[22]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[31,31],[[14,[13]]]],[[1,2],1],[[3,2],3],[[],4],[[],6]],"p":[[3,"PteFlags"],[15,"bool"],[3,"PteFlagsArch"],[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"Page"],[3,"Frame"],[3,"PageRange"],[4,"Option"],[3,"FrameRange"],[3,"AllocatedFrames"],[15,"str"],[4,"Result"],[3,"AllocatedPages"],[3,"AllocatedFrame"],[8,"FromBytes"],[3,"Mutable"],[3,"BorrowedMappedPages"],[3,"BorrowedSliceMappedPages"],[8,"Mutability"],[3,"MappedPages"],[15,"u64"],[3,"PhysicalMemoryRegion"],[4,"MemoryRegionType"],[4,"Ordering"],[8,"Ord"],[8,"Into"],[3,"Mapper"],[3,"RangeInclusive"],[3,"PageTable"],[8,"PartialEq"],[3,"Formatter"],[3,"Error"],[6,"Result"],[3,"MemoryManagementInfo"],[3,"InitialMemoryMappings"],[3,"EarlyIdentityMappedPages"],[6,"MmiRef"],[15,"u8"],[8,"Hash"],[3,"Immutable"],[8,"PartialOrd"],[3,"String"],[3,"TypeId"]],"a":{"cache":[226,227,395,396],"cacheable":[226,227,395,396],"mmi":[22],"no_exec":[256,257,403,404],"non-cacheable":[226,227,395,396],"page attribute table":[342,448],"pat":[342,448],"present":[406,407,580,581],"read_only":[408,409,585,586],"slot":[342,448]}},\ +"memory":{"doc":"This crate implements the main memory management subsystem …","t":[18,18,3,3,3,3,18,18,18,18,18,18,18,3,3,3,13,18,3,3,3,3,3,4,6,8,3,18,18,17,18,18,18,17,3,3,3,3,3,3,3,3,13,13,18,18,3,18,18,18,18,18,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,5,5,5,5,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["ACCESSED","ACCESSED","AllocatedFrames","AllocatedPages","BorrowedMappedPages","BorrowedSliceMappedPages","CACHE_DISABLE","DEVICE_MEMORY","DEVICE_MEMORY","DIRTY","DIRTY","EXCLUSIVE","EXCLUSIVE","EarlyIdentityMappedPages","Frame","FrameRange","Free","HUGE_PAGE","Immutable","InitialMemoryMappings","MappedPages","Mapper","MemoryManagementInfo","MemoryRegionType","MmiRef","Mutability","Mutable","NOT_EXECUTABLE","NOT_EXECUTABLE","PAGE_SIZE","PAT_BIT0","PAT_BIT1","PAT_BIT2_FOR_P1","PTE_FRAME_MASK","Page","PageRange","PageTable","PhysicalAddress","PhysicalMemoryRegion","PteFlags","PteFlagsArch","PteFlagsX86_64","Reserved","Unknown","VALID","VALID","VirtualAddress","WRITABLE","WRITABLE","WRITE_THROUGH","_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","adjust_for_higher_level_pte","all","all","allocate_frames","allocate_frames_at","allocate_frames_by_bytes","allocate_frames_by_bytes_at","allocate_pages","allocate_pages_at","allocate_pages_by_bytes","allocate_pages_by_bytes_at","as_allocated_frame","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_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","create_contiguous_mapping","create_mapping","data","deep_copy","default","default","default","default","deref","deref","deref","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","drop","dump_pte","empty","empty","empty","empty","empty","empty","empty","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","forward_checked","forward_checked","frame_offset","frames","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","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_borrowed","into_borrowed_mut","into_borrowed_slice","into_borrowed_slice_mut","into_inner","into_inner","into_iter","into_iter","into_iter","is_accessed","is_accessed","is_all","is_all","is_device_memory","is_device_memory","is_dirty","is_dirty","is_empty","is_empty","is_exclusive","is_exclusive","is_executable","is_executable","is_huge","is_valid","is_valid","is_writable","is_writable","map_allocated_pages","map_allocated_pages_to","merge","merge","merge","new","new","new","new","new","new","new","new_canonical","new_canonical","new_table","not","not","number","number","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","remap","remove","remove","rodata","set","set","set_broadcast_tlb_shootdown_cb","size_in_bytes","size_in_bytes","size_in_frames","size_in_pages","split","split","split","stack","stack_guard","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_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","typ","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"],"q":["memory","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["The hardware will set this bit when the page is accessed.…","The hardware will set this bit when the page is accessed.…","Represents a range of allocated physical memory Frames; …","Represents a range of allocated VirtualAddresses, …","A borrowed MappedPages object that derefs to &T and …","A borrowed MappedPages object that derefs to a slice &[T] …","If set, this page’s content is never cached, neither for …","If set, this page maps device memory, which is …","An alias for Self::CACHE_DISABLE in order to ease …","The hardware will set this bit when the page has been …","The hardware will set this bit when the page has been …","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 that is available for any general purpose.","If set, this page table entry represents a “huge” …","A marker type used to indicate that a BorrowedMappedPages …","Information returned after initialising the memory …","Represents a contiguous range of virtual memory pages that …","","This holds all the information for a Task’s memory …","Types of physical memory. See each variant’s …","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.","A region of physical memory.","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 that is reserved for special use and is only ever …","Memory of an unknown type. This is a default value that …","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 …","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 PhysicalAddress at the given offset into this …","Returns a copy of this PteFlagsX86_64 with its flags …","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 …","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 …","Returns an AllocatedFrame if this AllocatedFrames object …","","","","","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 …","A convenience function that creates a new memory mapping …","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 AllocatedFrames 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 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.","Returns the argument unchanged.","Immutably borrows the given MappedPages as an instance of …","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.","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 an instance of …","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 …","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).","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 …","Merges the given AllocatedPages object ap into this …","Merges the given AllocatedFrames object other 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 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 …","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 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.","Splits this AllocatedPages into two separate AllocatedPages…","Splits this AllocatedFrames into two separate …","Splits this MappedPages into two separate MappedPages …","The kernel’s stack actual data page mappings.","The kernel stack’s guard page.","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,0,0,0,0,3,1,3,1,3,1,3,0,0,0,25,3,0,0,0,0,0,0,0,0,0,1,3,0,3,3,3,0,0,0,0,0,0,0,0,0,25,25,1,3,0,1,3,3,1,3,1,3,1,3,4,4,6,6,7,8,4,4,6,6,7,8,37,9,11,3,1,3,0,0,0,0,0,0,0,0,12,19,20,19,20,22,22,22,22,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,37,1,4,29,15,6,12,19,19,3,20,20,7,24,8,25,18,42,9,11,31,22,36,37,38,1,4,29,15,6,12,19,19,3,20,20,7,24,8,25,18,42,9,11,31,22,36,37,38,1,4,6,3,7,24,8,25,9,11,1,4,6,3,7,24,8,25,9,11,1,4,6,19,3,20,7,8,1,3,7,8,1,3,9,11,0,0,37,22,1,4,6,3,15,12,19,20,24,9,11,31,22,19,20,9,11,31,1,3,1,3,1,3,15,12,22,29,1,15,12,3,9,11,22,1,4,6,19,3,20,7,8,25,9,11,1,3,1,3,1,3,36,22,1,1,1,1,1,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,12,3,3,3,3,3,7,24,8,25,9,11,31,22,36,37,38,7,8,6,24,1,1,4,29,15,6,12,19,19,3,3,20,20,7,24,8,25,18,42,9,11,31,22,36,37,38,1,3,1,3,1,3,1,3,19,20,11,9,0,3,1,4,6,19,3,20,37,0,0,1,3,1,3,1,3,1,4,4,29,15,6,6,12,19,3,20,7,24,8,25,18,42,9,11,31,22,36,37,38,22,22,22,22,19,20,12,9,11,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,29,29,15,12,22,1,4,6,3,24,9,11,4,6,31,1,3,7,8,9,11,9,11,7,7,7,7,4,36,37,1,4,6,19,3,20,7,8,3,31,22,1,3,37,1,3,0,9,11,11,9,15,12,22,37,37,7,8,9,11,7,8,1,4,4,6,6,3,7,8,1,4,4,6,6,3,7,8,31,1,3,37,9,11,1,4,6,3,7,24,8,25,9,11,4,6,1,3,0,29,29,1,4,29,15,6,12,19,3,20,7,24,8,25,18,42,9,11,31,22,36,37,38,1,4,29,15,6,12,19,3,20,7,24,8,25,18,42,9,11,31,22,36,37,38,24,1,4,29,15,6,12,19,3,20,7,24,8,25,18,42,9,11,31,22,36,37,38,1,3,22,1,3,4,6,31,1,3,4,6],"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,[[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,[6]]]],[3,3],[[],1],[[],3],[5,[[10,[12]]]],[[6,5],[[14,[12,13]]]],[5,[[10,[12]]]],[[6,5],[[14,[12,13]]]],[5,[[10,[15]]]],[[4,5],[[14,[15,13]]]],[5,[[10,[15]]]],[[4,5],[[14,[15,13]]]],[12,16],[[[19,[17,18]]]],[[[20,[17,18]]]],[[[19,[17,21]]]],[[[20,[17,21]]]],[[22,5,5],[[14,[13]]]],[[22,5,5],[[14,[13]]]],[[22,5],[[14,[13]]]],[[22,5],[[14,[13]]]],[[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,23],[3,23],[[1,1],1],[[4,4],4],[[6,6],6],[[3,3],3],[[1,1]],[[4,4]],[[6,6]],[[3,3]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[[19,[17,21]]]],[[]],[[]],[[]],[[[20,[17,21]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[19,[17,18]]]],[[]],[[]],[[[20,[17,18]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[4,4],[6,6],[3,3],[7,7],[24,24],[8,8],[25,25],[9,9],[11,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,1],26],[[4,4],26],[[6,6],26],[[[19,[[0,[17,27]],21]],[19,[[0,[17,27]],21]]],26],[[3,3],26],[[[20,[[0,[17,27]],21]],[20,[[0,[17,27]],21]]],26],[[7,7],26],[[8,8],26],[1,1],[3,3],[4,7],[6,8],[[1,1],2],[[3,3],2],[[9,4],2],[[11,6],2],[[5,[28,[3]]],[[14,[13]]]],[[5,[28,[3]]],[[14,[22,13]]]],0,[[22,29,[10,[[28,[3]]]]],[[14,[22,13]]]],[[],1],[[],4],[[],6],[[],3],[15,9],[12,11],[[[19,[17,21]]]],[[[20,[17,21]]]],[24,11],[9,30],[11,30],[31,29],[22,9],[[[19,[17,18]]]],[[[20,[17,18]]]],[9,30],[11,30],[31,29],[[1,2],1],[[3,2],3],[[1,1],1],[[3,3],3],[[1,2],1],[[3,2],3],[15],[12],[22],[[29,4]],[[],1],[[],15],[[],12],[[],3],[[],9],[[],11],[[],22],[[1,1],2],[[4,4],2],[[6,6],2],[[[19,[[0,[17,32]],21]],[19,[[0,[17,32]],21]]],2],[[3,3],2],[[[20,[[0,[17,32]],21]],[20,[[0,[17,32]],21]]],2],[[7,7],2],[[8,8],2],[[25,25],2],[[9,9],2],[[11,11],2],[[1,2],1],[[3,2],3],[[1,2],1],[[3,2],3],[1],[3],0,[22,3],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[1,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[4,33],[[14,[34]]]],[[15,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[6,33],[[14,[34]]]],[[12,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[3,33],[[14,[34]]]],[[7,33],[[14,[34]]]],[[24,33],[[14,[34]]]],[[8,33],[[14,[34]]]],[[25,33],[[14,[34]]]],[[9,33],[[14,[34]]]],[[11,33],[[14,[34]]]],[[31,33],35],[[22,33],35],[[36,33],35],[[37,33],35],[[38,33],35],[[7,5],[[10,[7]]]],[[8,5],[[10,[8]]]],[6,5],0,[[]],[3,1],[[]],[[]],[[]],[[]],[[]],[[]],[[22,5],[[14,[[19,[17]]]]]],[[]],[1,3],[[]],[[22,5,5],[[14,[[20,[17]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,[[10,[1]]]],[23,[[10,[3]]]],[23,1],[23,3],[23,1],[23,3],[[],1],[[],3],[[22,5],[[14,[[19,[17,18]]]]]],[[22,5,5],[[14,[[20,[17,18]]]]]],[[6,5],11],[[4,5],9],[[],[[10,[39]]]],[3,40],[1],[4],[6],[[[19,[[0,[17,41]],21]]]],[3],[[[20,[[0,[17,41]],21]]]],0,[4,[[14,[37,13]]]],[[31,22,22],39],[[1,1]],[[3,3]],[[1,1],1],[[3,3],3],[[1,1],2],[[3,3],2],[[]],[[]],[4,5],[[]],[[]],[6,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,5],[[14,[[19,[17,42]]]]]],[[22,5],[[14,[[19,[17,18]]]]]],[[22,5,5],[[14,[[20,[17,42]]]]]],[[22,5,5],[[14,[[20,[17,18]]]]]],[[[19,[17,21]]],22],[[[20,[17,21]]],22],[12],[9],[11],[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],[[29,15,[28,[3]]],[[14,[22,13]]]],[[29,15,12,[28,[3]]],[[14,[22,13]]]],[[15,15],[[14,[15]]]],[[12,12],[[14,[12]]]],[[22,22],14],[[],1],[5,[[10,[4]]]],[5,[[10,[6]]]],[[],3],[[11,25],24],[[7,7],9],[[8,8],11],[5,4],[5,6],[[31,12,[10,[15]]],[[14,[31,13]]]],[1,1],[3,3],[7,5],[8,5],[[9,4],[[10,[5]]]],[[11,6],[[10,[5]]]],[[9,9],[[10,[9]]]],[[11,11],[[10,[11]]]],[7,5],[7,5],[7,5],[7,5],[4,5],0,0,[[1,1],[[10,[26]]]],[[4,4],[[10,[26]]]],[[6,6],[[10,[26]]]],[[[19,[[0,[17,43]],21]],[19,[[0,[17,43]],21]]],[[10,[26]]]],[[3,3],[[10,[26]]]],[[[20,[[0,[17,43]],21]],[20,[[0,[17,43]],21]]],[[10,[26]]]],[[7,7],[[10,[26]]]],[[8,8],[[10,[26]]]],[[3,40],3],[31,6],[[22,29,[28,[3]]],[[14,[13]]]],[[1,1]],[[3,3]],0,[[1,1,2]],[[3,3,2]],[[]],[9,5],[11,5],[11,5],[9,5],[[15,7],[[14,[15]]]],[[12,8],[[14,[12]]]],[[22,7],[[14,[22]]]],0,0,[7,4],[8,6],[9,4],[11,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,4]],[[4,5]],[[6,5]],[[6,6]],[[3,3]],[[7,5]],[[8,5]],[[31,31]],[[1,1],1],[[3,3],3],0,[[9,7],9],[[11,8],11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],44],[[],44],[[1,1]],[[3,3]],[4,[[10,[6]]]],[[29,4],[[10,[6]]]],[[29,7],[[10,[8]]]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],0,[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[1,1],1],[[3,3],3],[[22,29],[[14,[22]]]],[[1,2],1],[[3,2],3],[4,5],[6,5],[[31,31],[[14,[13]]]],[[1,2],1],[[3,2],3],[[],4],[[],6]],"p":[[3,"PteFlags"],[15,"bool"],[3,"PteFlagsArch"],[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"Page"],[3,"Frame"],[3,"PageRange"],[4,"Option"],[3,"FrameRange"],[3,"AllocatedFrames"],[15,"str"],[4,"Result"],[3,"AllocatedPages"],[3,"AllocatedFrame"],[8,"FromBytes"],[3,"Mutable"],[3,"BorrowedMappedPages"],[3,"BorrowedSliceMappedPages"],[8,"Mutability"],[3,"MappedPages"],[15,"u64"],[3,"PhysicalMemoryRegion"],[4,"MemoryRegionType"],[4,"Ordering"],[8,"Ord"],[8,"Into"],[3,"Mapper"],[3,"RangeInclusive"],[3,"PageTable"],[8,"PartialEq"],[3,"Formatter"],[3,"Error"],[6,"Result"],[3,"MemoryManagementInfo"],[3,"InitialMemoryMappings"],[3,"EarlyIdentityMappedPages"],[6,"MmiRef"],[15,"u8"],[8,"Hash"],[3,"Immutable"],[8,"PartialOrd"],[3,"String"],[3,"TypeId"]],"a":{"cache":[226,227,395,396],"cacheable":[226,227,395,396],"mmi":[22],"no_exec":[256,257,403,404],"non-cacheable":[226,227,395,396],"page attribute table":[342,448],"pat":[342,448],"present":[406,407,581,582],"read_only":[408,409,586,587],"slot":[342,448]}},\ "memory_initialization":{"doc":"","t":[5],"n":["init_memory_management"],"q":["memory_initialization"],"d":["Initializes the virtual memory management system and …"],"i":[0],"f":[[[1,2],[[4,[3]]]]],"p":[[8,"BootInformation"],[3,"VirtualAddress"],[15,"str"],[4,"Result"]]},\ "memory_structs":{"doc":"This crate contains basic types used for memory management.","t":[3,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Frame","FrameRange","Page","PageRange","PhysicalAddress","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","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_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","cmp","cmp","cmp","cmp","containing_address","containing_address","contains_address","contains_address","default","default","deref","deref","deref_mut","deref_mut","empty","empty","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_phys_addr","from_virt_addr","hash","hash","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_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","value","value","zero","zero"],"q":["memory_structs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A Frame is a chunk of physical memory aligned to a …","A range of Frames that are contiguous in physical memory.","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.","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 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 …","","","","","","","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.","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).","","","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":[0,0,0,0,0,0,1,1,3,3,4,5,1,1,3,3,4,5,6,8,4,5,1,3,1,3,1,3,1,3,1,3,1,3,1,3,4,5,6,8,1,3,4,5,6,8,1,3,4,5,6,8,1,3,4,5,4,5,6,8,1,3,6,8,6,8,6,8,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,1,3,4,5,6,8,8,6,1,3,1,1,3,3,4,5,6,8,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,1,3,4,5,6,8,1,3,4,5,6,8,1,3,4,5,6,8,1,3,1,3],"f":[0,0,0,0,0,0,[[1,1],1],[[1,2],1],[[3,3],3],[[3,2],3],[[4,2],4],[[5,2],5],[[1,1]],[[1,2]],[[3,3]],[[3,2]],[[4,2]],[[5,2]],[[6,2],[[7,[1]]]],[[8,2],[[7,[3]]]],[[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],[8,8],[[1,1],9],[[3,3],9],[[4,4],9],[[5,5],9],[1,4],[3,5],[[6,1],10],[[8,3],10],[[],1],[[],3],[6,11],[8,11],[6,11],[8,11],[[],6],[[],8],[[1,1],10],[[3,3],10],[[4,4],10],[[5,5],10],[[6,6],10],[[8,8],10],[[1,12],13],[[1,12],13],[[1,12],13],[[1,12],13],[[1,12],13],[[1,12],13],[[1,12],13],[[3,12],13],[[3,12],13],[[3,12],13],[[3,12],13],[[3,12],13],[[3,12],13],[[3,12],13],[[4,12],13],[[5,12],13],[[6,12],13],[[8,12],13],[[4,2],[[7,[4]]]],[[5,2],[[7,[5]]]],[3,2],[[]],[[]],[[]],[[]],[[]],[[]],[[3,2],8],[[1,2],6],[1],[3],[[]],[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,[9]]]],[[3,3],[[7,[9]]]],[[4,4],[[7,[9]]]],[[5,5],[[7,[9]]]],[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,3],3],[[3,2],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],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[1,2],[3,2],[[],1],[[],3]],"p":[[3,"VirtualAddress"],[15,"usize"],[3,"PhysicalAddress"],[3,"Page"],[3,"Frame"],[3,"PageRange"],[4,"Option"],[3,"FrameRange"],[4,"Ordering"],[15,"bool"],[3,"RangeInclusive"],[3,"Formatter"],[6,"Result"],[4,"Result"],[3,"TypeId"]]},\ -"memory_x86_64":{"doc":"This crate implements the virtual memory subsystem …","t":[16,3,8,8,16,16,16,16,8,16,16,3,10,11,11,11,11,12,10,12,5,10,12,11,11,11,11,5,5,12,11,11,11,11,11,10,10,10,10,10,10,10,10,12,10,10,10,10,10,12,12,5,5,11,11,11,11,11,11],"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","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":["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 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 physical memory.","Returns the section’s length.","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":[14,0,0,0,14,14,14,14,0,14,14,0,14,4,7,4,7,7,14,4,0,15,4,4,7,4,7,0,0,7,4,7,15,16,14,14,15,16,14,14,14,15,16,7,14,14,15,16,14,4,7,0,0,4,7,4,7,4,7],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[]],[[]],[[]],[[]],0,[[],[[2,[1]]]],0,[[],[[2,[1]]]],[[],3],0,[[4,5],6],[[7,5],6],[[]],[[]],[[],8],[[],[[2,[1]]]],0,[[]],[[]],[[],9],[[],9],[[],9],[[],[[2,[8,1]]]],[[],10],[[],10],[[],10],[[],[[2,[1]]]],[[]],[[],1],[[],[[2,[1,1]]]],0,[[],[[11,[8]]]],[[],[[2,[10,1]]]],[[],12],[[],8],[[],[[11,[12]]]],0,0,[[]],[12],[[],2],[[],2],[[],2],[[],2],[[],13],[[],13]],"p":[[15,"str"],[4,"Result"],[3,"ElfSectionFlags"],[3,"SectionMemoryBounds"],[3,"Formatter"],[6,"Result"],[3,"AggregatedSectionMemoryBounds"],[3,"PhysicalAddress"],[15,"bool"],[15,"usize"],[4,"Option"],[3,"VirtualAddress"],[3,"TypeId"],[8,"BootInformation"],[8,"ElfSection"],[8,"Module"]]},\ +"memory_x86_64":{"doc":"This crate implements the virtual memory subsystem …","t":[16,3,8,8,16,16,16,16,8,16,16,3,10,11,11,11,11,12,10,12,5,10,12,11,11,11,11,5,5,12,11,11,11,11,11,10,10,10,10,10,10,10,10,12,10,10,10,10,10,12,12,5,5,11,11,11,11,11,11],"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","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":["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 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":[14,0,0,0,14,14,14,14,0,14,14,0,14,4,7,4,7,7,14,4,0,15,4,4,7,4,7,0,0,7,4,7,15,16,14,14,15,16,14,14,14,15,16,7,14,14,15,16,14,4,7,0,0,4,7,4,7,4,7],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[]],[[]],[[]],[[]],0,[[],[[2,[1]]]],0,[[],[[2,[1]]]],[[],3],0,[[4,5],6],[[7,5],6],[[]],[[]],[[],8],[[],[[2,[1]]]],0,[[]],[[]],[[],9],[[],9],[[],9],[[],[[2,[10,1]]]],[[],11],[[],11],[[],11],[[],[[2,[1]]]],[[]],[[],1],[[],[[2,[1,1]]]],0,[[],[[12,[8]]]],[[],[[2,[11,1]]]],[[],10],[[],8],[[],[[12,[10]]]],0,0,[[]],[10],[[],2],[[],2],[[],2],[[],2],[[],13],[[],13]],"p":[[15,"str"],[4,"Result"],[3,"ElfSectionFlags"],[3,"SectionMemoryBounds"],[3,"Formatter"],[6,"Result"],[3,"AggregatedSectionMemoryBounds"],[3,"PhysicalAddress"],[15,"bool"],[3,"VirtualAddress"],[15,"usize"],[4,"Option"],[3,"TypeId"],[8,"BootInformation"],[8,"ElfSection"],[8,"Module"]]},\ "mlx5":{"doc":"A mlx5 driver for a ConnectX-5 100GbE Network Interface …","t":[17,17,3,17,11,11,11,5,11,11,11,11,11,11,11,11],"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":["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 MutexIrqSafe, …","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,8,8,8,0,8,8,8,8,8,8,8,8],"f":[0,0,0,0,[[]],[[]],[[]],[[],[[2,[1]]]],[[3,4,4,5],[[7,[1,6]]]],[[]],[8],[[8,9],[[7,[6]]]],[[8,10]],[[],7],[[],7],[[],11]],"p":[[3,"MutexIrqSafe"],[4,"Option"],[3,"PciDevice"],[15,"usize"],[15,"u16"],[15,"str"],[4,"Result"],[3,"ConnectX5Nic"],[3,"TransmitBuffer"],[3,"PhysicalAddress"],[3,"TypeId"]]},\ "mlx_ethernet":{"doc":"This crate defines the layout of memory objects that make …","t":[3,3,3,3,3,3,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,5,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,13,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,3,3,3,4,13,4,3,3,4,4,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,4,4,13,13,13,4,13,13,13,13,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,3,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,3,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,3,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"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":["mlx_ethernet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::command_queue","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::completion_queue","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::event_queue","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::initialization_segment","","","","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::receive_queue","","","","","","","","","","","","","","","","","","","","","","","","mlx_ethernet::send_queue","","","","","","","","","","","","","","","","","","","","","","","","","","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,57,57,35,35,36,36,35,36,36,35,36,36,36,36,36,36,36,58,0,0,0,0,0,32,0,0,0,0,0,0,34,20,20,20,20,20,20,20,20,20,59,37,21,22,36,21,22,0,0,57,37,32,20,58,34,35,35,36,32,32,32,32,32,32,20,0,32,32,20,20,20,32,36,32,36,35,60,32,34,20,0,0,20,20,20,0,20,20,20,20,0,23,58,35,36,20,20,20,20,35,35,35,32,59,59,23,17,60,32,57,58,59,24,17,25,35,20,36,21,22,23,37,34,38,26,39,60,32,57,58,59,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,60,32,57,58,59,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,60,32,57,58,59,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,60,32,57,58,59,24,17,25,35,35,20,20,36,36,21,22,23,37,37,34,38,26,39,35,20,36,37,60,32,57,58,59,24,17,25,35,20,36,21,22,23,37,34,38,26,39,60,32,57,58,59,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,61,0,0,61,61,61,61,31,61,31,31,31,31,61,31,61,31,31,31,61,31,61,31,61,31,51,51,0,0,51,50,51,50,51,50,51,50,51,50,51,50,50,51,51,51,50,51,50,51,53,53,53,0,0,52,53,52,53,52,52,53,52,53,52,53,52,52,52,53,53,53,52,53,52,53,0,0,0,54,55,56,54,55,56,54,55,56,55,56,54,55,56,55,56,54,55,56,55,55,54,55,56,54,55,56,54,55,56,56],"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],[14,[[15,[35,[41,[35]]]]]],[[],15],[[],15],[14,[[15,[20,[41,[20]]]]]],[[],15],[42,[[15,[36,[41,[36]]]]]],[[],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,49,1,6,43],[[15,[50,30]]]],[[51,12],13],[[]],[[]],[[]],[[]],[50,[[15,[30]]]],[[],15],[42,[[15,[51,[41,[51]]]]]],[[],15],[[],[[15,[51,[41,[51]]]]]],[[],15],[[],15],[[],16],[[],16],0,0,0,0,0,[[]],[[]],[[]],[[]],[[46,29,46,46,2,9,6],[[15,[52,30]]]],[52],[[53,12],13],[[]],[[]],[[]],[[]],[52,40],[[52,18],40],[[],15],[42,[[15,[53,[41,[53]]]]]],[[],15],[[],[[15,[53,[41,[53]]]]]],[[],15],[[],15],[[],16],[[],16],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],54],[[],55],[[],56],[[55,29]],[[56,29]],[[]],[[]],[[]],[55],[56],[[]],[[]],[[]],[[55,14,14]],[[55,14,14,14,18]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],16],[[],16],[[],16],[[56,14,18,14]]],"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,"Queue"],[3,"ReceiveQueue"],[4,"ReceiveQueueState"],[3,"SendQueue"],[4,"SendQueueState"],[3,"DoorbellRecord"],[3,"WorkQueueEntrySend"],[3,"WorkQueueEntryReceive"],[4,"ManagePagesOpMod"],[4,"QueryPagesOpMod"],[4,"QueryVportStateOpMod"],[4,"CommandTransportType"],[4,"InitializingState"]]},\ "mod_mgmt":{"doc":"","t":[13,3,13,17,13,17,3,4,17,17,13,17,17,13,13,13,17,13,4,13,3,3,3,17,17,3,13,17,17,3,13,17,4,6,3,6,3,6,6,17,17,17,17,13,13,13,3,13,6,3,6,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,5,11,11,11,11,5,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,12,12,11,11,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,12,12,11,11,11,11,12,11,11,11,11,12,12,12,0,11,11,11,12,12,12,5,0,11,12,12,12,5,11,12,12,12,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5],"n":["AbsolutePath","AppCrateRef","Application","BSS_SECTION_NAME","Bss","CRATE_HASH_DELIMITER","CrateNamespace","CrateType","DATA_BSS_SECTION_FLAGS","DATA_SECTION_NAME","Data","EH_FRAME_SECTION_NAME","EXTRA_FILES_DIRECTORY_NAME","EhFrame","Executable","File","GCC_EXCEPT_TABLE_SECTION_NAME","GccExceptTable","IntoCrateObjectFile","Kernel","LoadedCrate","LoadedSection","LoadedSectionInner","MODULE_PREFIX_DELIMITER","NAMESPACES_DIRECTORY_NAME","NamespaceDir","Prefix","RODATA_SECTION_FLAGS","RODATA_SECTION_NAME","RelocationEntry","Rodata","SECTION_HASH_DELIMITER","SectionType","Shndx","StrRef","StrongCrateRef","StrongDependency","StrongSectionRef","SymbolMap","TEXT_SECTION_FLAGS","TEXT_SECTION_NAME","TLS_BSS_SECTION_NAME","TLS_DATA_SECTION_NAME","Text","TlsBss","TlsData","TlsDataImage","Userspace","WeakCrateRef","WeakDependent","WeakSectionRef","add_symbols","addend","as_func","as_ref","as_str","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","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_on_write","cmp","copy_section_data_to","crate_name","crate_name_as_prefix","crate_name_from_path","crate_name_without_hash","crate_names","crates_dependent_on_me","crates_i_depend_on","create_application_namespace","data_pages","data_sections","data_sections_iter","debug_symbols_file","default","default_namespace_name","deref","deref","deref","deserialize","dir","drop","drop","dump_symbol_map","dump_symbol_map_recursive","eq","eq","eq","eq","find_section","find_symbol_table","find_symbols_starting_with","find_symbols_starting_with_and_namespace","find_weak_dependent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_crate","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_elf_relocation","from_module_name","get_containing_crate_name","get_containing_crate_name_ranges","get_crate","get_crate_and_namespace","get_crate_containing_address","get_crate_object_file","get_crate_object_file_starting_with","get_crate_object_files_starting_with","get_crate_starting_with","get_crates_starting_with","get_file_and_dir_names_starting_with","get_file_starting_with","get_files_starting_with","get_function_section","get_hash","get_initial_kernel_namespace","get_namespaces_directory","get_section_containing_address","get_symbol","get_symbol_and_namespace","get_symbol_or_load","get_symbol_starting_with","get_tls_initializer_data","global","global_sections","global_sections_iter","hash","init","inner","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_absolute","is_data_or_bss","is_valid_crate_name_char","load_crate","load_crate_as_application","load_crates","mapped_pages","mapped_pages_offset","method_get_crate_object_file_starting_with","method_get_crate_object_files_starting_with","name","name","name","name_without_hash","new","new","new","object_file","offset","parent_crate","parse_nano_core","partial_cmp","pointer_value","recursive_namespace","reexported_symbols","relocation","relocation","replace_containing_crate_name","replace_nano_core_crates","rewrite_section_dependents","rodata_pages","section","section","section_name_str_ref","section_name_without_hash","sections","sections_dependent_on_me","sections_i_depend_on","serialize","size","text_pages","tls_sections","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","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","typ","typ","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","virt_addr","with_dependencies","write_crate_object_file","write_relocation","parse_nano_core","replace_nano_core_crates"],"q":["mod_mgmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","mod_mgmt::parse_nano_core","mod_mgmt::replace_nano_core_crates"],"d":["An absolute path that points to the crate object file. ","An application crate that has been loaded into a …","","","A bss section is just like a data section, but is …","A crate’s name and its hash are separated by “-”, …","This struct represents a namespace of crates and their “…","The type of a crate, based on its object file naming …",".data and .bss sections are read-write and non-executable.","","A data section contains data that is both readable and …","","The name of the directory that contains all other “…","The .eh_frame section contains information about stack …","","A direct reference to the crate object file. This will be …","","A .gcc_except_table section contains landing pads for …","A type that can be converted into a crate object file.","","Represents a single crate whose object file has been …","Represents a section that has been loaded and is part of a …","The parts of a LoadedSection that may be mutable, i.e., …","The Theseus Makefile appends prefixes onto bootloader …","The name of the directory that contains all of the …","A wrapper around a Directory reference that offers special …","A string prefix that will be used to search for the crate …",".rodata sections are read-only and non-executable.","","The information necessary to calculate and write a …","An rodata section contains read-only data, i.e., constants.","A section’s demangled name and its hash are separated by …","The possible types of sections that can be loaded from a …","A Section Header iNDeX (SHNDX), as specified by the ELF …","A wrapper around an Arc<str>: an immutable shared …","A Strong reference to a LoadedCrate.","A representation that the owner A of (a LoadedSection …","A Strong reference (Arc) to a LoadedSection.","A “symbol map” from a fully-qualified demangled symbol …",".text sections are read-only and executable.","","","","A text section contains executable code, i.e., functions. ","A .tbss section is a read-only section that holds all-zero …","A .tdata section is a read-only section that holds the …","An initialized TLS area data image ready to be used by a …","","A Weak reference to a LoadedCrate.","A representation that the section A in this struct depends …","A Weak reference (Weak) to a LoadedSection.","Adds only global symbols in the given sections iterator to …","The value that is added to the source section’s address …","Reinterprets this section’s underlying MappedPages …","","Obtain a reference to the inner str.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Duplicates this CrateNamespace into a new CrateNamespace, …","","Copies the actual data contents of this LoadedSection to …","The name of this crate.","Returns this crate name as a symbol prefix, including a …","Returns the crate name that is derived from a crate object …","Returns the substring of this crate’s name that excludes …","Returns a list of all of the crate names currently loaded …","Currently may contain duplicates!","Returns the set of crates that this crate depends on. …","Create a new application CrateNamespace that uses the …","A tuple of:","The set of .data and .bss sections in this crate. The Shndx…","A convenience function to iterate over only the data …","The file that contains debug symbols for this crate. …","","Returns the string suffix for use as the name of the …","","","","","Returns the directory that this CrateNamespace is based on.","","","Simple debugging function that returns the entire symbol …","Same as dump_symbol_map(), but includes symbols from …","","","","","Returns the first LoadedSection that matches the given …","Returns a reference to the symbol table in the given …","Returns a copied list of the corresponding LoadedSections …","Similar to find_symbols_starting_with, but also includes a …","Returns the index of the first WeakDependent object in …","","","","","","","","","","","","","","Iterates over all crates in this namespace and calls the …","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 a tuple of (CrateType, &str, &str) based on the …","Parses the given symbol string to try to find the name of …","Same as get_containing_crate_name(), but returns the …","Acquires the lock on this CrateNamespace’s crate list …","Acquires the lock on this CrateNamespace’s crate list …","Finds the crate that contains the given VirtualAddress in …","Gets the given object file based on its crate name prefix. ","Like get_crate_starting_with(), but for crate object files …","Like get_crates_starting_with(), but for crate object file…","Finds the LoadedCrate whose name starts with the given …","Finds the LoadedCrates whose names start with the given …","Returns the list of file and directory names in this …","Finds the single file in this directory whose name starts …","Returns the list of files in this Directory whose name …","Returns the LoadedSection of type SectionType::Text that …","","Returns a reference to the default kernel namespace, …","Returns the top-level directory that contains all of the …","Finds the section that contains the given VirtualAddress …","Finds the corresponding LoadedSection reference for the …","Like get_symbol(), but also returns the exact …","Finds the corresponding LoadedSection reference for the …","Returns a weak reference to the LoadedSection whose name …","Returns a new copy of this namespace’s initial TLS area, …","Whether or not this section’s symbol was exported …","The set of global symbols in this crate, including regular …","A convenience function to iterate over only the global …","","Initializes the module management system based on the …","The inner contents of a section that could possibly change …","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 relocation type results in a …","Returns true if Data or Bss, otherwise false.","Crate names must be only alphanumeric characters, an …","Loads the specified crate into memory, allowing it to be …","Loads the specified application crate into this …","This function first loads all of the given crates’ …","The MappedPages that cover this section.","The offset into the mapped_pages where this section starts","Same as get_crate_object_file_starting_with(), but is a …","Same as get_crate_object_files_starting_with(), but is a …","Returns the const &str name of this SectionType.","Returns the name of this CrateNamespace, which is just …","The full string name of this section, a fully-qualified …","Returns the substring of this section’s name that …","Create a new LoadedSection, with an empty dependencies …","Creates a new CrateNamespace that is completely empty (no …","Creates a new NamespaceDir that wraps the given DirRef.","The object file that this crate was loaded from.","The offset from the starting virtual address of the target …","The LoadedCrate object that contains/owns this section","Routines for parsing the nano_core, the fully-linked, …","","Returns the value of the TLS self pointer for this TLS …","Returns the recursive namespace that this CrateNamespace …","The set of symbols that this crate’s global symbols are …","The details of the relocation action that was performed.","The details of the relocation action that was performed.","Replaces the old_crate_name substring in the given …","Routines for replacing the crates that comprise the …","Finds all of the weak dependents (sections that depend on …","A tuple of:","A strong reference to the LoadedSection B that the owner …","A weak reference to the LoadedSection A that depends on …","Returns the default name for the given SectionType as a …","Returns the substring of the given section’s name that …","A map containing all the sections in this crate. In …","The list of sections in foreign crates that depend on this …","The list of sections in foreign crates that this section …","","The size in bytes of this section.","A tuple of:","The set of thread-local storage (TLS) symbols in this …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The type of this section, e.g., .text, .rodata, .data, .bss…","The type of relocation calculation that is performed to …","","","","","","","","","","","","","","","The starting VirtualAddress of this section (except for …","Same as [new()](#method.new), but uses the given …","Insert the given crate object file based on its crate type …","Actually write the value of a relocation entry.","Parses and/or deserializes the file containing details …","See the module-level documentation for how this works. "],"i":[31,0,24,0,8,0,0,0,0,0,8,0,0,8,24,31,0,8,0,24,0,0,0,0,0,0,31,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,24,0,0,0,1,11,4,7,7,7,7,7,14,4,24,8,23,9,10,11,31,25,1,12,33,7,14,4,24,8,23,9,10,11,31,25,1,12,33,7,8,9,10,11,12,7,8,9,10,11,12,1,7,4,14,14,0,14,1,14,14,0,14,14,14,14,23,24,7,25,12,8,1,14,25,1,1,7,24,8,11,14,0,1,1,4,7,7,14,4,4,24,8,9,10,11,31,12,33,1,7,7,14,4,24,8,23,9,10,11,31,25,1,12,33,11,24,0,0,1,1,1,12,1,1,1,1,12,12,12,14,7,0,0,1,1,1,1,1,1,4,14,14,7,0,4,7,14,4,24,8,23,9,10,11,31,25,1,12,33,11,8,0,1,1,1,4,4,1,1,8,1,4,4,4,1,12,14,11,4,0,7,33,1,14,9,10,0,0,1,14,9,10,0,4,14,23,23,8,4,14,14,7,8,9,10,11,12,7,4,7,14,4,24,8,23,9,10,11,31,25,1,12,33,7,14,4,24,8,23,9,10,11,31,25,1,12,33,4,11,7,14,4,24,8,23,9,10,11,31,25,1,12,33,4,4,12,0,0,0],"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,[[1,2],3],0,[4,[[6,[5]]]],[7,5],[7,5],[7],[[]],[7,5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[7,7],13],[[4,4],[[6,[5]]]],0,[14,15],[16,5],[14,5],[[1,2],[[17,[7]]]],[14,[[17,[[18,[14]],19]]]],[14,[[17,[[18,[14]],19]]]],[[[21,[[20,[1]]]]],[[6,[[20,[1]],5]]]],0,0,[14,22],0,[[],23],[24,5],[7],[25,26],[12,27],[[],[[6,[8]]]],[1,12],[14],[25],[1,15],[1,15],[[7,7],2],[[24,24],2],[[8,8],2],[[11,11],2],[14,[[21,[20]]]],[28,[[6,[5]]]],[[1,5],17],[[1,5],17],[[4,20],[[21,[3]]]],[[7,29],[[6,[30]]]],[[7,29],[[6,[30]]]],[[14,29],[[6,[30]]]],[[4,29],[[6,[30]]]],[[4,29],[[6,[30]]]],[[24,29],[[6,[30]]]],[[8,29],[[6,[30]]]],[[9,29],[[6,[30]]]],[[10,29],[[6,[30]]]],[[11,29],[[6,[30]]]],[[31,29],32],[[12,29],32],[[33,29],32],[[1,2]],[[]],[5,7],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[34,11],[5,[[6,[5]]]],[5,[[17,[5,19]]]],[5,[[17,[[35,[3]],19]]]],[[1,5],[[21,[26]]]],[[20,5],21],[[1,36,2],[[21,[26]]]],[[12,5],[[21,[37]]]],[[20,5],21],[[20,5],17],[[20,5],21],[[20,5],17],[[12,5],[[17,[15]]]],[[12,5],[[21,[37]]]],[[12,5],[[17,[37]]]],[[14,5],[[21,[20]]]],[[],38],[[],[[21,[20]]]],[[],[[21,[27]]]],[[1,36,2],21],[[1,5],39],[[1,5],21],[[1,5,[21,[1]],40,2],39],[[1,5],39],[1,33],0,0,[14,22],[7],[[[17,[41]],42],[[6,[20,5]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[11,2],[8,2],[43,2],[[1,37,[21,[1]],40,2],[[6,[5]]]],[[20,37,40,2],[[6,[25,5]]]],[[1,[21,[1]],40,2],[[6,[5]]]],0,0,[[1,5],21],[[1,5],17],[8,5],[1,5],0,[4,5],[[8,7,[20,[[46,[44,45]]]],3,36,3,2,[18,[14]]],4],[[15,12,[21,[[20,[1]]]]],1],[27,12],0,0,0,0,[[7,7],[[21,[13]]]],[33,3],[1,[[21,[20]]]],0,0,0,[[5,5,5],[[21,[15]]]],0,[[47,47,40],[[6,[5]]]],0,0,0,[8,7],[5,5],0,0,0,[8,6],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],15],[[],15],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],0,0,[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],[[],48],0,[[8,7,[20,[[46,[44,45]]]],3,36,3,2,[18,[14]],[17,[9,19]],[17,[10,19]]],4],[[12,5],[[6,[37,5]]]],[[11,3,36,2],[[6,[5]]]],[[20,44,44,44,2],6],[[20,26,40],[[6,[5]]]]],"p":[[3,"CrateNamespace"],[15,"bool"],[15,"usize"],[3,"LoadedSection"],[15,"str"],[4,"Result"],[3,"StrRef"],[4,"SectionType"],[3,"StrongDependency"],[3,"WeakDependent"],[3,"RelocationEntry"],[3,"NamespaceDir"],[4,"Ordering"],[3,"LoadedCrate"],[3,"String"],[3,"Path"],[3,"Vec"],[3,"CowWeak"],[3,"Global"],[3,"Arc"],[4,"Option"],[8,"Iterator"],[3,"LoadedSectionInner"],[4,"CrateType"],[3,"AppCrateRef"],[6,"StrongCrateRef"],[6,"DirRef"],[3,"ElfFile"],[3,"Formatter"],[3,"Error"],[4,"IntoCrateObjectFile"],[6,"Result"],[3,"TlsDataImage"],[3,"Rela"],[3,"Range"],[3,"VirtualAddress"],[6,"FileRef"],[15,"u64"],[6,"WeakSectionRef"],[6,"MmiRef"],[3,"BootloaderModule"],[3,"MemoryManagementInfo"],[15,"char"],[3,"MappedPages"],[3,"Spin"],[3,"Mutex"],[6,"StrongSectionRef"],[3,"TypeId"]]},\ "mouse":{"doc":"A basic driver for a mouse connected to the legacy PS/2 …","t":[5],"n":["init"],"q":["mouse"],"d":["Initialize the PS/2 mouse driver and register its …"],"i":[0],"f":[[[1,[3,[2]]],[[5,[4]]]]],"p":[[3,"PS2Mouse"],[4,"Event"],[3,"Queue"],[15,"str"],[4,"Result"]]},\ "mouse_data":{"doc":"","t":[3,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12],"n":["MouseButtons","MouseEvent","MouseMovementRelative","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buttons","clone","clone","clone","fifth","fifth_or_err","fmt","fmt","fmt","fourth","fourth_or_err","from","from","from","from_bytes","into","into","into","into_bytes","left","left_or_err","middle","middle_or_err","movement","new","new","new","right","right_or_err","scroll_movement","set_fifth","set_fifth_checked","set_fourth","set_fourth_checked","set_left","set_left_checked","set_middle","set_middle_checked","set_right","set_right_checked","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","with_fifth","with_fifth_checked","with_fourth","with_fourth_checked","with_left","with_left_checked","with_middle","with_middle_checked","with_right","with_right_checked","x_movement","y_movement"],"q":["mouse_data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","Returns the value of fifth.","Returns the value of fifth.","","","","Returns the value of fourth.","Returns the value of fourth.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Converts the given bytes directly into the bitfield struct.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the underlying bits.","Returns the value of left.","Returns the value of left.","Returns the value of middle.","Returns the value of middle.","","","Returns an instance with zero initialized data.","","Returns the value of right.","Returns the value of right.","","Sets the value of fifth to the given value.","Sets the value of fifth to the given value.","Sets the value of fourth to the given value.","Sets the value of fourth to the given value.","Sets the value of left to the given value.","Sets the value of left to the given value.","Sets the value of middle to the given value.","Sets the value of middle to the given value.","Sets the value of right to the given value.","Sets the value of right to the given value.","","","","","","","","","","Returns a copy of the bitfield with the value of fifth set …","Returns a copy of the bitfield with the value of fifth set …","Returns a copy of the bitfield with the value of fourth …","Returns a copy of the bitfield with the value of fourth …","Returns a copy of the bitfield with the value of left set …","Returns a copy of the bitfield with the value of left set …","Returns a copy of the bitfield with the value of middle …","Returns a copy of the bitfield with the value of middle …","Returns a copy of the bitfield with the value of right set …","Returns a copy of the bitfield with the value of right set …","",""],"i":[0,0,0,1,2,3,1,2,3,3,1,2,3,2,2,1,2,3,2,2,1,2,3,2,1,2,3,2,2,2,2,2,3,1,2,3,2,2,1,2,2,2,2,2,2,2,2,2,2,1,2,3,1,2,3,1,2,3,2,2,2,2,2,2,2,2,2,2,1,1],"f":[0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[1,1],[2,2],[3,3],[2],[2,[[5,[4]]]],[[1,6],7],[[2,6],7],[[3,6],7],[2],[2,[[5,[4]]]],[[]],[[]],[[]],[[],2],[[]],[[]],[[]],[2],[2],[2,[[5,[4]]]],[2],[2,[[5,[4]]]],0,[[8,8,9],1],[[],2],[[2,1],3],[2],[2,[[5,[4]]]],0,[2],[2,[[5,[10]]]],[2],[2,[[5,[10]]]],[2],[2,[[5,[10]]]],[2],[2,[[5,[10]]]],[2],[2,[[5,[10]]]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],11],[[],11],[[],11],[2,2],[2,[[5,[2,10]]]],[2,2],[2,[[5,[2,10]]]],[2,2],[2,[[5,[2,10]]]],[2,2],[2,[[5,[2,10]]]],[2,2],[2,[[5,[2,10]]]],0,0],"p":[[3,"MouseMovementRelative"],[3,"MouseButtons"],[3,"MouseEvent"],[3,"InvalidBitPattern"],[4,"Result"],[3,"Formatter"],[6,"Result"],[15,"i16"],[15,"i8"],[3,"OutOfBounds"],[3,"TypeId"]]},\ -"multicore_bringup":{"doc":"Functions for initializing and bringing up other CPU …","t":[3,11,11,11,11,11,11,11,11,11,11,5,11,11,5,11,11,11,11,11,11,11,11,11,11,11],"n":["GraphicInfo","bits_per_pixel","blue_position","blue_size","borrow","borrow_mut","bytes_per_scanline","clone","clone_into","fmt","from","get_graphic_info","green_position","green_size","handle_ap_cores","height","into","physical_address","red_position","red_size","to_owned","total_memory_size_in_bytes","try_from","try_into","type_id","width"],"q":["multicore_bringup","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A structure to access information about the graphical …","The size of each pixel, in number of bits, not bytes.","The position of the least significant bit of a pixel’s …","The size of a pixel’s Blue value, in number of bits.","","","The number of bytes in each row or line of the framebuffer…","","","","Returns the argument unchanged.","Returns information about the currently-active graphical …","The position of the least significant bit of a pixel’s …","The size of a pixel’s Green value, in number of bits.","Starts up and sets up AP cores based on system information …","Returns the visible height of the screen, in pixels.","Calls U::from(self).","Returns the physical address of the primary framebuffer …","The position of the least significant bit of a pixel’s …","The size of a pixel’s Red value, in number of bits.","","Returns the total size in bytes of the VGA graphics memory.","","","","Returns the visible width of the screen, in pixels."],"i":[0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,2],[1,2],[1,2],[[]],[[]],[1,3],[1,1],[[]],[[1,4],5],[[]],[[],[[6,[1]]]],[1,2],[1,2],[[7,8,8,6],[[11,[9,10]]]],[1,3],[[]],[1,9],[1,2],[1,2],[[]],[1,9],[[],11],[[],11],[[],12],[1,3]],"p":[[3,"GraphicInfo"],[15,"u8"],[15,"u16"],[3,"Formatter"],[6,"Result"],[4,"Option"],[6,"MmiRef"],[3,"VirtualAddress"],[15,"u32"],[15,"str"],[4,"Result"],[3,"TypeId"]]},\ +"multicore_bringup":{"doc":"Functions for initializing and bringing up other CPU …","t":[3,11,11,11,11,11,11,11,11,11,11,5,11,11,5,11,11,11,11,11,11,11,11,11,11,11],"n":["GraphicInfo","bits_per_pixel","blue_position","blue_size","borrow","borrow_mut","bytes_per_scanline","clone","clone_into","fmt","from","get_graphic_info","green_position","green_size","handle_ap_cores","height","into","physical_address","red_position","red_size","to_owned","total_memory_size_in_bytes","try_from","try_into","type_id","width"],"q":["multicore_bringup","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A structure to access information about the graphical …","The size of each pixel, in number of bits, not bytes.","The position of the least significant bit of a pixel’s …","The size of a pixel’s Blue value, in number of bits.","","","The number of bytes in each row or line of the framebuffer…","","","","Returns the argument unchanged.","Returns information about the currently-active graphical …","The position of the least significant bit of a pixel’s …","The size of a pixel’s Green value, in number of bits.","Starts up and sets up AP cores based on system information …","Returns the visible height of the screen, in pixels.","Calls U::from(self).","Returns the physical address of the primary framebuffer …","The position of the least significant bit of a pixel’s …","The size of a pixel’s Red value, in number of bits.","","Returns the total size in bytes of the VGA graphics memory.","","","","Returns the visible width of the screen, in pixels."],"i":[0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[1,2],[1,2],[1,2],[[]],[[]],[1,3],[1,1],[[]],[[1,4],5],[[]],[[],[[6,[1]]]],[1,2],[1,2],[[7,8,8,8,6],[[11,[9,10]]]],[1,3],[[]],[1,9],[1,2],[1,2],[[]],[1,9],[[],11],[[],11],[[],12],[1,3]],"p":[[3,"GraphicInfo"],[15,"u8"],[15,"u16"],[3,"Formatter"],[6,"Result"],[4,"Option"],[6,"MmiRef"],[3,"VirtualAddress"],[15,"u32"],[15,"str"],[4,"Result"],[3,"TypeId"]]},\ "multiple_heaps":{"doc":"An implementation of an allocator that uses multiple …","t":[3,17,11,11,11,11,11,11,5,11,5,11,11,11],"n":["MultipleHeaps","PER_CORE_HEAP_INITIAL_SIZE_PAGES","alloc","borrow","borrow_mut","dealloc","empty","from","init_individual_heap","into","switch_to_multiple_heaps","try_from","try_into","type_id"],"q":["multiple_heaps","","","","","","","","","","","","",""],"d":["An allocator that contains multiple heaps. The heap that …","Starting size of each per-core heap. ","Allocates the given layout from the heap of the core the …","","","Deallocates the memory at the address given by ptr. Memory …","","Returns the argument unchanged.","Initializes the heap given by key. There are 11 size …","Calls U::from(self).","The setup routine for multiple heaps. It creates and …","","",""],"i":[0,0,1,1,1,1,1,1,0,1,0,1,1,1],"f":[0,0,[[1,2],3],[[]],[[]],[[1,3,2]],[[],1],[[]],[[4,1],[[6,[5]]]],[[]],[[],[[6,[5]]]],[[],6],[[],6],[[],7]],"p":[[3,"MultipleHeaps"],[3,"Layout"],[15,"u8"],[15,"usize"],[15,"str"],[4,"Result"],[3,"TypeId"]]},\ "mutex_preemption":{"doc":"Offers preemption-safe Mutex and RwLock types that …","t":[3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["MutexPreempt","MutexPreemptGuard","RwLockPreempt","RwLockPreemptReadGuard","RwLockPreemptWriteGuard","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","default","deref","deref","deref","deref_mut","deref_mut","fmt","fmt","force_read_decrement","force_unlock","force_write_unlock","from","from","from","from","from","get_mut","get_mut","get_mut","get_mut","into","into","into","into","into","into_inner","into_inner","into_inner","into_inner","is_locked","is_locked","is_locked","is_locked","lock","lock","lock","lock_mut","lock_mut","new","new","read","reader_count","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_lock","try_lock","try_lock","try_lock_mut","try_lock_mut","try_read","try_write","type_id","type_id","type_id","type_id","type_id","write","writer_count"],"q":["mutex_preemption","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A mutual exclusion wrapper based on spin::Mutex that …","A guard that allows the locked data to be accessed, during …","A multi-reader, single-writer mutual exclusion wrapper …","A guard that allows the locked data to be immutably …","A guard that allows the locked data to be mutably accessed,","","","","","","","","","","","","","","","","","","","","Force decrement the reader count.","Force unlock the spinlock.","Force unlock exclusive write access.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns a mutable reference to the underlying data.","","","Returns a mutable reference to the underlying data.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes this MutexPreempt, returning the underlying data.","","","Consumes this RwLockPreempt, returning the underlying data.","Returns true if the lock is currently held.","","","Returns true if the lock is currently held.","","Spins until the lock can be acquired, upon which …","","","","Creates a new lock wrapping the supplied data.","Creates a new lock wrapping the supplied data.","Locks this RwLockPreempt with shared read (immutable) …","Return the number of readers that currently hold the lock …","","","","","","","","","","","Tries to lock the MutexPreempt. If it is already locked, …","","","","","Attempt to acquire this lock with shared read (immutable) …","Attempt to acquire this lock with exclusive write …","","","","","","Lock this RwLockPreempt with exclusive write access, …","Return the number of writers that currently hold the lock."],"i":[0,0,0,0,0,3,5,4,6,7,3,5,4,6,7,3,4,5,6,7,5,7,3,4,4,3,4,3,5,4,6,7,3,3,4,4,3,5,4,6,7,3,3,4,4,3,3,4,4,3,3,4,3,4,3,4,4,4,3,5,4,6,7,3,5,4,6,7,3,3,4,3,4,4,4,3,5,4,6,7,4,4],"f":[0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[3,[[0,[1,2]]]]]],[[],[[4,[[0,[1,2]]]]]],[[[5,[1]]]],[[[6,[1]]]],[[[7,[1]]]],[[[5,[1]]]],[[[7,[1]]]],[[[3,[[0,[1,8]]]],9],10],[[[4,[[0,[1,8]]]],9],10],[[[4,[1]]]],[[[3,[1]]]],[[[4,[1]]]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]]]],[3],[4],[[[4,[1]]]],[[]],[[]],[[]],[[]],[[]],[3],[3],[4],[4],[[[3,[1]]],11],[3,11],[4,11],[[[4,[1]]],11],[3],[[[3,[1]]],[[5,[1]]]],[4],[3],[4],[[],3],[[],4],[[[4,[1]]],[[6,[1]]]],[[[4,[1]]],12],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[[3,[1]]],[[14,[[5,[1]]]]]],[3,14],[4,14],[3,14],[4,14],[[[4,[1]]],[[14,[[6,[1]]]]]],[[[4,[1]]],[[14,[[7,[1]]]]]],[[],15],[[],15],[[],15],[[],15],[[],15],[[[4,[1]]],[[7,[1]]]],[[[4,[1]]],12]],"p":[[8,"Sized"],[8,"Default"],[3,"MutexPreempt"],[3,"RwLockPreempt"],[3,"MutexPreemptGuard"],[3,"RwLockPreemptReadGuard"],[3,"RwLockPreemptWriteGuard"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"bool"],[15,"usize"],[4,"Result"],[4,"Option"],[3,"TypeId"]]},\ "mutex_sleep":{"doc":"Locking types that put a task to sleep while it waits for …","t":[3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["MutexSleep","MutexSleepGuard","RwLockSleep","RwLockSleepReadGuard","RwLockSleepWriteGuard","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","default","deref","deref","deref","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","force_read_decrement","force_write_unlock","from","from","from","from","from","get_mut","get_mut","get_mut","get_mut","into","into","into","into","into","into_inner","into_inner","into_inner","into_inner","is_locked","is_locked","is_locked","is_locked","lock","lock","lock","lock_mut","lock_mut","new","new","read","reader_count","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_lock","try_lock","try_lock","try_lock_mut","try_lock_mut","try_read","try_write","type_id","type_id","type_id","type_id","type_id","write","writer_count"],"q":["mutex_sleep","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A mutual exclusion wrapper that puts a Task to sleep while …","A guard that allows the locked data to be accessed, during …","A multi-reader, single-writer mutual exclusion wrapper …","A guard that allows the locked data to be immutably …","A guard that allows the locked data to be mutably accessed,","","","","","","","","","","","","","","","","","","","","","","","Force decrement the reader count.","Force unlock exclusive write access.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns a mutable reference to the underlying data.","","","Returns a mutable reference to the underlying data.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes this MutexSleep, returning the underlying data.","","Consumes this RwLockSleep, returning the underlying data.","","","Returns true if the lock is currently held.","","Returns true if the lock is currently held.","","Blocks until the lock is acquired by putting this Task to …","","","","Creates a new lock wrapping the supplied data.","Creates a new lock wrapping the supplied data.","Locks this RwLockSleep with shared read (immutable) access.","Return the number of readers that currently hold the lock …","","","","","","","","","","","","Tries to lock the MutexSleep. If it is already locked, it …","","","","Attempt to acquire this lock with shared read (immutable) …","Attempt to acquire this lock with exclusive write …","","","","","","Locks this RwLockSleep with exclusive write (mutable) …","Return the number of writers that currently hold the lock."],"i":[0,0,0,0,0,3,5,4,6,7,3,5,4,6,7,3,4,5,6,7,5,7,5,6,7,3,4,4,4,3,5,4,6,7,3,3,4,4,3,5,4,6,7,3,3,4,4,3,3,4,4,3,3,4,3,4,3,4,4,4,3,5,4,6,7,3,5,4,6,7,3,3,4,3,4,4,4,3,5,4,6,7,4,4],"f":[0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[3,[[0,[1,2]]]]]],[[],[[4,[[0,[1,2]]]]]],[[[5,[1]]]],[[[6,[1]]]],[[[7,[1]]]],[[[5,[1]]]],[[[7,[1]]]],[[[5,[1]]]],[[[6,[1]]]],[[[7,[1]]]],[[[3,[[0,[1,8]]]],9],10],[[[4,[[0,[1,8]]]],9],10],[[[4,[1]]]],[[[4,[1]]]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]]]],[3],[4],[[[4,[1]]]],[[]],[[]],[[]],[[]],[[]],[3],[3],[4],[4],[3,11],[[[3,[1]]],11],[4,11],[[[4,[1]]],11],[3],[[[3,[1]]],[[13,[[5,[1]],12]]]],[4],[3],[4],[[],3],[[],4],[[[4,[1]]],[[13,[[6,[1]],12]]]],[[[4,[1]]],14],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[3,15],[[[3,[1]]],[[15,[[5,[1]]]]]],[4,15],[3,15],[4,15],[[[4,[1]]],[[15,[[6,[1]]]]]],[[[4,[1]]],[[15,[[7,[1]]]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[[4,[1]]],[[13,[[7,[1]],12]]]],[[[4,[1]]],14]],"p":[[8,"Sized"],[8,"Default"],[3,"MutexSleep"],[3,"RwLockSleep"],[3,"MutexSleepGuard"],[3,"RwLockSleepReadGuard"],[3,"RwLockSleepWriteGuard"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"bool"],[15,"str"],[4,"Result"],[15,"usize"],[4,"Option"],[3,"TypeId"]]},\ diff --git a/doc/src/boot_info/lib.rs.html b/doc/src/boot_info/lib.rs.html index e08ebf6a85..03df71e92c 100644 --- a/doc/src/boot_info/lib.rs.html +++ b/doc/src/boot_info/lib.rs.html @@ -130,6 +130,7 @@ 130 131 132 +133
      //! This crate provides an abstraction over multiboot2 and UEFI boot
       //! information.
       //!
      @@ -170,7 +171,8 @@
           /// Returns the section's starting virtual address.
           fn start(&self) -> VirtualAddress;
       
      -    /// Returns the section's length.
      +    /// Returns the section's length in memory, as opposed to its length in the
      +    /// ELF file.
           fn len(&self) -> usize;
       
           /// Returns whether the section is empty.
      @@ -253,8 +255,8 @@
               &self,
           ) -> Result<Self::AdditionalReservedMemoryRegions, &'static str>;
       
      -    /// Returns the end of the kernel's image in physical memory.
      -    fn kernel_end(&self) -> Result<PhysicalAddress, &'static str>;
      +    /// Returns the end of the kernel's image in memory.
      +    fn kernel_end(&self) -> Result<VirtualAddress, &'static str>;
       
           /// Returns the RSDP if it was provided by the bootloader.
           fn rsdp(&self) -> Option<PhysicalAddress>;
      diff --git a/doc/src/boot_info/multiboot2.rs.html b/doc/src/boot_info/multiboot2.rs.html
      index 76323dd52d..4de1b20ef2 100644
      --- a/doc/src/boot_info/multiboot2.rs.html
      +++ b/doc/src/boot_info/multiboot2.rs.html
      @@ -224,6 +224,9 @@
       224
       225
       226
      +227
      +228
      +229
       
      use crate::{ElfSectionFlags, ReservedMemoryRegion};
       use core::{cmp, iter::Iterator};
       use kernel_config::memory::KERNEL_OFFSET;
      @@ -422,9 +425,12 @@
               .into_iter())
           }
       
      -    fn kernel_end(&self) -> Result<PhysicalAddress, &'static str> {
      -        let reserved_region = kernel_memory_region(self)?;
      -        Ok(reserved_region.start + reserved_region.len)
      +    fn kernel_end(&self) -> Result<VirtualAddress, &'static str> {
      +        use crate::ElfSection;
      +        self.elf_sections()?
      +            .map(|section| section.start() + section.len())
      +            .max()
      +            .ok_or("no elf sections")
           }
       
           fn rsdp(&self) -> Option<PhysicalAddress> {
      diff --git a/doc/src/captain/lib.rs.html b/doc/src/captain/lib.rs.html
      index eea570959e..b1739605f0 100644
      --- a/doc/src/captain/lib.rs.html
      +++ b/doc/src/captain/lib.rs.html
      @@ -202,6 +202,8 @@
       202
       203
       204
      +205
      +206
       
      //! The main initialization routine and setup logic of the OS. 
       //! 
       //! The `captain` steers the ship of Theseus, meaning that it contains basic logic 
      @@ -289,6 +291,7 @@
           bsp_initial_stack: NoDrop<Stack>,
           ap_start_realmode_begin: VirtualAddress,
           ap_start_realmode_end: VirtualAddress,
      +    ap_gdt: VirtualAddress,
           rsdp_address: Option<PhysicalAddress>,
       ) -> Result<(), &'static str> {
           #[cfg(mirror_log_to_vga)]
      @@ -332,6 +335,7 @@
               &kernel_mmi_ref,
               ap_start_realmode_begin,
               ap_start_realmode_end,
      +        ap_gdt,
               Some(kernel_config::display::FRAMEBUFFER_MAX_RESOLUTION),
           )?;
           let cpu_count = ap_count + 1;
      diff --git a/doc/src/memory/lib.rs.html b/doc/src/memory/lib.rs.html
      index 0ad1453bf9..7be9005c1c 100644
      --- a/doc/src/memory/lib.rs.html
      +++ b/doc/src/memory/lib.rs.html
      @@ -262,6 +262,18 @@
       262
       263
       264
      +265
      +266
      +267
      +268
      +269
      +270
      +271
      +272
      +273
      +274
      +275
      +276
       
      //! This crate implements the main memory management subsystem for Theseus.
       //!
       //! The primary type of interest is [`MappedPages`], which offers a robust
      @@ -285,6 +297,7 @@
       pub use self::paging::{
           PageTable, Mapper, Mutability, Mutable, Immutable,
           MappedPages, BorrowedMappedPages, BorrowedSliceMappedPages,
      +    translate,
       };
       
       pub use memory_structs::{Frame, Page, FrameRange, PageRange, VirtualAddress, PhysicalAddress};
      @@ -484,7 +497,18 @@
           debug!("Initialized new frame allocator!");
           frame_allocator::dump_frame_allocator_state();
       
      -    page_allocator::init(VirtualAddress::new_canonical(boot_info.kernel_end()?.value()))?;
      +    page_allocator::init(
      +        VirtualAddress::new(
      +            // We subtract 1 when translating because `kernel_end` returns an exclusive
      +            // upper bound, which can cause problems if the kernel ends on a page boundary.
      +            // We then add it back later to get the correct identity virtual address.
      +            translate(boot_info.kernel_end()? - 1)
      +                .ok_or("couldn't translate kernel end virtual address")?
      +                .value()
      +                + 1,
      +        )
      +        .ok_or("couldn't convert kernel end physical address into virtual address")?,
      +    )?;
           debug!("Initialized new page allocator!");
           page_allocator::dump_page_allocator_state();
       
      diff --git a/doc/src/memory/paging/mapper.rs.html b/doc/src/memory/paging/mapper.rs.html
      index c3f095d128..64c37080f8 100644
      --- a/doc/src/memory/paging/mapper.rs.html
      +++ b/doc/src/memory/paging/mapper.rs.html
      @@ -1244,6 +1244,11 @@
       1244
       1245
       1246
      +1247
      +1248
      +1249
      +1250
      +1251
       
      // Copyright 2016 Philipp Oppermann. See the README.md
       // file at the top-level directory of this distribution.
       //
      @@ -1296,6 +1301,11 @@
       /// that it is only invoked for `UnmappedFrames`.
       pub(super) static INTO_ALLOCATED_FRAMES_FUNC: Once<fn(FrameRange) -> AllocatedFrames> = Once::new();
       
      +/// A convenience function to translate the given virtual address into a
      +/// physical address using the currently-active page table.
      +pub fn translate(virtual_address: VirtualAddress) -> Option<PhysicalAddress> {
      +    Mapper::from_current().translate(virtual_address)
      +}
       
       pub struct Mapper {
           p4: Unique<Table<Level4>>,
      diff --git a/doc/src/memory/paging/mod.rs.html b/doc/src/memory/paging/mod.rs.html
      index 64d2e72ef1..4957177d5a 100644
      --- a/doc/src/memory/paging/mod.rs.html
      +++ b/doc/src/memory/paging/mod.rs.html
      @@ -419,6 +419,15 @@
       419
       420
       421
      +422
      +423
      +424
      +425
      +426
      +427
      +428
      +429
      +430
       
      // Copyright 2016 Philipp Oppermann. See the README.md
       // file at the top-level directory of this distribution.
       //
      @@ -440,7 +449,7 @@
           temporary_page::TemporaryPage,
           mapper::{
               Mapper, MappedPages, BorrowedMappedPages, BorrowedSliceMappedPages,
      -        Mutability, Mutable, Immutable,
      +        Mutability, Mutable, Immutable, translate,
           },
       };
       
      @@ -637,14 +646,14 @@
           // `page_table_entry::UnmappedFrames` back into `AllocatedFrames`.
           mapper::INTO_ALLOCATED_FRAMES_FUNC.call_once(|| into_alloc_frames_fn);
       
      -    let (aggregated_section_memory_bounds, _sections_memory_bounds) = find_section_memory_bounds(boot_info)?;
      -    debug!("{:X?}\n{:X?}", aggregated_section_memory_bounds, _sections_memory_bounds);
      -    
           // bootstrap a PageTable from the currently-loaded page table
           let mut page_table = PageTable::from_current()
               .map_err(|_| "Failed to allocate frame for initial page table; is it merged with another section?")?;
           debug!("Bootstrapped initial {:?}", page_table);
       
      +    let (aggregated_section_memory_bounds, _sections_memory_bounds) = find_section_memory_bounds(boot_info, |virtual_address| page_table.translate(virtual_address))?;
      +    debug!("{:X?}\n{:X?}", aggregated_section_memory_bounds, _sections_memory_bounds);
      +
           let boot_info_start_vaddr = boot_info.start().ok_or("boot_info start virtual address was invalid")?;
           let boot_info_start_paddr = page_table.translate(boot_info_start_vaddr).ok_or("Couldn't get boot_info start physical address")?;
           let boot_info_size = boot_info.len();
      @@ -724,7 +733,10 @@
       
               let text_pages = page_allocator::allocate_pages_by_bytes_at(text_start_virt, text_end_virt.value() - text_start_virt.value())?;
               let text_frames = frame_allocator::allocate_frames_by_bytes_at(text_start_phys, text_end_phys.value() - text_start_phys.value())?;
      -        let text_pages_identity = page_allocator::allocate_pages_by_bytes_at(text_start_virt - KERNEL_OFFSET, text_end_virt.value() - text_start_virt.value())?;
      +        let text_pages_identity = page_allocator::allocate_pages_by_bytes_at(
      +            VirtualAddress::new_canonical(text_start_phys.value()),
      +            text_end_phys.value() - text_start_phys.value(),
      +        )?;
               text_identity_mapped_pages = NoDrop::new( unsafe {
                   Mapper::map_to_non_exclusive(new_mapper, text_pages_identity, &text_frames, text_flags)?
               });
      @@ -733,7 +745,10 @@
       
               let rodata_pages = page_allocator::allocate_pages_by_bytes_at(rodata_start_virt, rodata_end_virt.value() - rodata_start_virt.value())?;
               let rodata_frames = frame_allocator::allocate_frames_by_bytes_at(rodata_start_phys, rodata_end_phys.value() - rodata_start_phys.value())?;
      -        let rodata_pages_identity = page_allocator::allocate_pages_by_bytes_at(rodata_start_virt - KERNEL_OFFSET, rodata_end_virt.value() - rodata_start_virt.value())?;
      +        let rodata_pages_identity = page_allocator::allocate_pages_by_bytes_at(
      +            VirtualAddress::new_canonical(rodata_start_phys.value()),
      +            rodata_end_phys.value() - rodata_start_phys.value(),
      +        )?;
               rodata_identity_mapped_pages = NoDrop::new( unsafe {
                   Mapper::map_to_non_exclusive(new_mapper, rodata_pages_identity, &rodata_frames, rodata_flags)?
               });
      @@ -741,7 +756,10 @@
       
               let data_pages = page_allocator::allocate_pages_by_bytes_at(data_start_virt, data_end_virt.value() - data_start_virt.value())?;
               let data_frames = frame_allocator::allocate_frames_by_bytes_at(data_start_phys, data_end_phys.value() - data_start_phys.value())?;
      -        let data_pages_identity = page_allocator::allocate_pages_by_bytes_at(data_start_virt - KERNEL_OFFSET, data_end_virt.value() - data_start_virt.value())?;
      +        let data_pages_identity = page_allocator::allocate_pages_by_bytes_at(
      +            VirtualAddress::new_canonical(data_start_phys.value()),
      +            data_end_phys.value() - data_start_phys.value(),
      +        )?;
               data_identity_mapped_pages = NoDrop::new( unsafe {
                   Mapper::map_to_non_exclusive(new_mapper, data_pages_identity, &data_frames, data_flags)?
               });
      diff --git a/doc/src/memory_structs/lib.rs.html b/doc/src/memory_structs/lib.rs.html
      index 81ed8e945c..60f54f0a2c 100644
      --- a/doc/src/memory_structs/lib.rs.html
      +++ b/doc/src/memory_structs/lib.rs.html
      @@ -478,6 +478,9 @@
       478
       479
       480
      +481
      +482
      +483
       
      //! This crate contains basic types used for memory management.
       //!
       //! The types of interest are divided into three categories:
      @@ -848,11 +851,14 @@
                       #[doc = "A convenience method for creating a new `" $TypeName "` that spans \
                           all [`" $chunk "`]s from the given [`" $address "`] to an end bound based on the given size."]
                       pub fn [<from_ $short _addr>](starting_addr: $address, size_in_bytes: usize) -> $TypeName {
      -                    assert!(size_in_bytes > 0);
      -                    let start = $chunk::containing_address(starting_addr);
      -                    // The end bound is inclusive, hence the -1. Parentheses are needed to avoid overflow.
      -                    let end = $chunk::containing_address(starting_addr + (size_in_bytes - 1));
      -                    $TypeName::new(start, end)
      +                    if size_in_bytes == 0 {
      +                        $TypeName::empty()
      +                    } else {
      +                        let start = $chunk::containing_address(starting_addr);
      +                        // The end bound is inclusive, hence the -1. Parentheses are needed to avoid overflow.
      +                        let end = $chunk::containing_address(starting_addr + (size_in_bytes - 1));
      +                        $TypeName::new(start, end)
      +                    }
                       }
       
                       #[doc = "Returns the [`" $address "`] of the starting [`" $chunk "`] in this `" $TypeName "`."]
      diff --git a/doc/src/memory_x86_64/lib.rs.html b/doc/src/memory_x86_64/lib.rs.html
      index b2879e9368..cee2a0e441 100644
      --- a/doc/src/memory_x86_64/lib.rs.html
      +++ b/doc/src/memory_x86_64/lib.rs.html
      @@ -296,11 +296,6 @@
       296
       297
       298
      -299
      -300
      -301
      -302
      -303
       
      //! This crate implements the virtual memory subsystem interfaces for Theseus on x86_64.
       //!
       //! The `memory` crate uses this crate to obtain the multiboot2-provided memory layout
      @@ -363,7 +358,10 @@
       ///    Each of the these section bounds is aggregated to cover the bounds and sizes of *all* sections 
       ///    that share the same page table mapping flags and can thus be logically combined.
       ///  * The list of all individual sections found. 
      -pub fn find_section_memory_bounds(boot_info: &impl BootInformation) -> Result<(AggregatedSectionMemoryBounds, [Option<SectionMemoryBounds>; 32]), &'static str> {
      +pub fn find_section_memory_bounds<F>(boot_info: &impl BootInformation, translate: F) -> Result<(AggregatedSectionMemoryBounds, [Option<SectionMemoryBounds>; 32]), &'static str>
      +where
      +    F: Fn(VirtualAddress) -> Option<PhysicalAddress>,
      +{
           let mut index = 0;
           let mut init_start:        Option<(VirtualAddress, PhysicalAddress)> = None;
           let mut init_end:          Option<(VirtualAddress, PhysicalAddress)> = None;
      @@ -394,24 +392,16 @@
               debug!("Looking at loaded section {} at {:#X}, size {:#X}", section.name(), section.start(), section.len());
               let flags = convert_to_pte_flags(&section);
       
      -        // even though the linker stipulates that the kernel sections have a higher-half virtual address,
      -        // they are still loaded at a lower physical address, in which phys_addr = virt_addr - KERNEL_OFFSET.
      -        // thus, we must map the zeroeth kernel section from its low address to a higher-half address,
      -        // and we must map all the other sections from their higher given virtual address to the proper lower phys addr
      -        let mut start_phys_addr = section.start().value();
      -        if start_phys_addr >= KERNEL_OFFSET {
      -            // true for all sections but the first section (inittext)
      -            start_phys_addr -= KERNEL_OFFSET;
      -        }
      +        let mut start_virt_addr = VirtualAddress::new(section.start().value())
      +            .ok_or("section had invalid starting virtual address")?;
      +        let start_phys_addr = translate(start_virt_addr)
      +            .ok_or("couldn't translate section's starting virtual address")?;
       
      -        let mut start_virt_addr = section.start().value();
      -        if start_virt_addr < KERNEL_OFFSET {
      +        if start_virt_addr.value() < KERNEL_OFFSET {
                   // special case to handle the first section only
                   start_virt_addr += KERNEL_OFFSET;
               }
       
      -        let start_phys_addr = PhysicalAddress::new(start_phys_addr).ok_or("section had invalid starting physical address")?;
      -        let start_virt_addr = VirtualAddress::new(start_virt_addr).ok_or("section had invalid ending physical address")?;
               let end_virt_addr = start_virt_addr + section.len();
               let end_phys_addr = start_phys_addr + section.len();
       
      diff --git a/doc/src/multicore_bringup/lib.rs.html b/doc/src/multicore_bringup/lib.rs.html
      index c46fd6fbb0..016edd0d81 100644
      --- a/doc/src/multicore_bringup/lib.rs.html
      +++ b/doc/src/multicore_bringup/lib.rs.html
      @@ -478,6 +478,12 @@
       478
       479
       480
      +481
      +482
      +483
      +484
      +485
      +486
       
      //! Functions for initializing and bringing up other CPU cores. 
       //! 
       //! These functions are intended to be invoked from the main core
      @@ -502,6 +508,7 @@
       extern crate pause;
       
       use core::{
      +    convert::TryInto,
           ops::DerefMut,
           sync::atomic::Ordering,
       };
      @@ -674,6 +681,7 @@
           kernel_mmi_ref: &MmiRef,
           ap_start_realmode_begin: VirtualAddress,
           ap_start_realmode_end: VirtualAddress,
      +    ap_gdt: VirtualAddress,
           max_framebuffer_resolution: Option<(u16, u16)>,
       ) -> Result<u32, &'static str> {
           let ap_startup_size_in_bytes = ap_start_realmode_end.value() - ap_start_realmode_begin.value();
      @@ -741,6 +749,7 @@
           let (max_width, max_height) = max_framebuffer_resolution.unwrap_or((u16::MAX, u16::MAX));
           ap_trampoline_data.ap_max_fb_width.write(max_width);
           ap_trampoline_data.ap_max_fb_height.write(max_height);
      +    ap_trampoline_data.ap_gdt.write(ap_gdt.value().try_into().map_err(|_| "AP_GDT physical address larger than u32::MAX")?);
       
           let acpi_tables = acpi::get_acpi_tables().lock();
           let madt = Madt::get(&acpi_tables)
      @@ -818,7 +827,7 @@
       /// # Important Layout Note
       /// The order of the members in this struct must exactly match how they are used
       /// and specified in the AP bootup code (at the top of `defines.asm`).
      -#[derive(FromBytes)]
      +#[derive(Debug, FromBytes)]
       #[repr(C)]
       struct ApTrampolineData {
           /// A flag that indicates whether the new AP is ready. 
      @@ -852,6 +861,9 @@
           /// when changing graphical framebuffer modes in its 16-bit real-mode code. 
           ap_max_fb_height:  Volatile<u16>,
           _padding5:         [u8; 6],
      +    /// The location of the GDT_AP symbol in physical memory.
      +    ap_gdt:            Volatile<u32>,
      +    _padding6:         [u8; 4],
       }
       
       
      diff --git a/doc/src/nano_core/lib.rs.html b/doc/src/nano_core/lib.rs.html
      index 033ed2acbd..b4d629c5a4 100644
      --- a/doc/src/nano_core/lib.rs.html
      +++ b/doc/src/nano_core/lib.rs.html
      @@ -229,6 +229,26 @@
       229
       230
       231
      +232
      +233
      +234
      +235
      +236
      +237
      +238
      +239
      +240
      +241
      +242
      +243
      +244
      +245
      +246
      +247
      +248
      +249
      +250
      +251
       
      //! The aptly-named tiny crate containing the first OS code to run.
       //! 
       //! The `nano_core` is very simple, and only does the following things:
      @@ -358,7 +378,7 @@
       
           // Parse the nano_core crate (the code we're already running) since we need it to load and run applications.
           println_raw!("nano_core(): parsing nano_core crate, please wait ...");
      -    let (nano_core_crate_ref, ap_realmode_begin, ap_realmode_end) = match mod_mgmt::parse_nano_core::parse_nano_core(
      +    let (nano_core_crate_ref, ap_realmode_begin, ap_realmode_end, ap_gdt) = match mod_mgmt::parse_nano_core::parse_nano_core(
               default_namespace,
               text_mapped_pages.into_inner(),
               rodata_mapped_pages.into_inner(),
      @@ -376,8 +396,28 @@
                       .get("ap_start_realmode_end")
                       .and_then(|v| VirtualAddress::new(*v + KERNEL_OFFSET))
                       .ok_or("Missing/invalid symbol expected from assembly code \"ap_start_realmode_end\"")?;
      +
      +            let ap_gdt = {
      +                let mut ap_gdt_virtual_address = None;
      +                for (_, section) in nano_core_crate_ref.lock_as_ref().sections.iter() {
      +                    if section.name == "GDT_AP".into() {
      +                        ap_gdt_virtual_address = Some(section.virt_addr);
      +                        break;
      +                    }
      +                }
      +
      +                // The identity-mapped virtual address of GDT_AP.
      +                VirtualAddress::new(
      +                    memory::translate(ap_gdt_virtual_address.ok_or(
      +                        "Missing/invalid symbol expected from data section \"GDT_AP\"",
      +                    )?)
      +                    .ok_or("Failed to translate \"GDT_AP\"")?
      +                    .value(),
      +                )
      +                .ok_or("couldn't convert \"GDT_AP\" physical address to virtual")?
      +            };
                   // debug!("ap_realmode_begin: {:#X}, ap_realmode_end: {:#X}", ap_realmode_begin, ap_realmode_end);
      -            (nano_core_crate_ref, ap_realmode_begin, ap_realmode_end)
      +            (nano_core_crate_ref, ap_realmode_begin, ap_realmode_end, ap_gdt)
               }
               Err((msg, mapped_pages_array)) => {
                   // Because this function takes ownership of the text/rodata/data mapped_pages that cover the currently-running code,
      @@ -412,7 +452,7 @@
           // That's it, the nano_core is done! That's really all it does! 
           println_raw!("nano_core(): invoking the captain...");
           #[cfg(not(loadable))] {
      -        captain::init(kernel_mmi_ref, identity_mapped_pages, stack, ap_realmode_begin, ap_realmode_end, rsdp_address)?;
      +        captain::init(kernel_mmi_ref, identity_mapped_pages, stack, ap_realmode_begin, ap_realmode_end, ap_gdt, rsdp_address)?;
           }
           #[cfg(loadable)] {
               use memory::{EarlyIdentityMappedPages, MmiRef, PhysicalAddress};
      @@ -425,10 +465,10 @@
                   .ok_or("no single symbol matching \"captain::init\"")?;
               log::info!("The nano_core (in loadable mode) is invoking the captain init function: {:?}", section.name);
       
      -        type CaptainInitFunc = fn(MmiRef, NoDrop<EarlyIdentityMappedPages>, NoDrop<Stack>, VirtualAddress, VirtualAddress, Option<PhysicalAddress>) -> Result<(), &'static str>;
      +        type CaptainInitFunc = fn(MmiRef, NoDrop<EarlyIdentityMappedPages>, NoDrop<Stack>, VirtualAddress, VirtualAddress, VirtualAddress, Option<PhysicalAddress>) -> Result<(), &'static str>;
               let func: &CaptainInitFunc = unsafe { section.as_func() }?;
       
      -        func(kernel_mmi_ref, identity_mapped_pages, stack, ap_realmode_begin, ap_realmode_end, rsdp_address)?;
      +        func(kernel_mmi_ref, identity_mapped_pages, stack, ap_realmode_begin, ap_realmode_end, ap_gdt, rsdp_address)?;
           }
       
           // the captain shouldn't return ...