From d77657125e65dd49a66da70cd315b8e9205acbff Mon Sep 17 00:00:00 2001 From: wyfcyx Date: Sun, 21 Jan 2024 14:29:33 +0000 Subject: [PATCH] deploy: 526c7e7d74a05e17d6d7d8130c1353e0083509ad --- ch5/os/board/constant.MEMORY_END.html | 2 +- ch5/os/mm/address/struct.PhysAddr.html | 4 ++-- ch5/os/mm/address/struct.PhysPageNum.html | 2 +- ch5/os/mm/address/struct.VirtAddr.html | 2 +- ch5/os/mm/address/struct.VirtPageNum.html | 2 +- ch5/os/mm/memory_set/struct.MapPermission.html | 18 +++++++++--------- ch5/os/mm/page_table/struct.PTEFlags.html | 14 +++++++------- ch5/os/mm/struct.MapPermission.html | 18 +++++++++--------- ch5/os/mm/struct.PhysAddr.html | 4 ++-- ch5/os/mm/struct.PhysPageNum.html | 2 +- ch5/os/mm/struct.VirtAddr.html | 2 +- ch5/os/mm/struct.VirtPageNum.html | 2 +- ch5/search-index.js | 2 +- ch5/src/os/boards/qemu.rs.html | 2 +- ch5/trait.impl/core/clone/trait.Clone.js | 2 +- ch5/trait.impl/core/cmp/trait.Eq.js | 2 +- ch5/trait.impl/core/cmp/trait.Ord.js | 2 +- ch5/trait.impl/core/cmp/trait.PartialEq.js | 2 +- ch5/trait.impl/core/cmp/trait.PartialOrd.js | 2 +- ch5/trait.impl/core/convert/trait.From.js | 2 +- ch5/trait.impl/core/fmt/trait.Binary.js | 2 +- ch5/trait.impl/core/fmt/trait.Debug.js | 2 +- ch5/trait.impl/core/fmt/trait.LowerHex.js | 2 +- ch5/trait.impl/core/fmt/trait.UpperHex.js | 2 +- ch5/trait.impl/core/marker/trait.Copy.js | 2 +- .../core/marker/trait.StructuralEq.js | 2 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- ch5/trait.impl/core/ops/bit/trait.BitAnd.js | 2 +- .../core/ops/bit/trait.BitAndAssign.js | 2 +- ch5/trait.impl/core/ops/deref/trait.Deref.js | 2 +- ch5/trait.impl/core/ops/drop/trait.Drop.js | 2 +- ch5/trait.impl/lazy_static/trait.LazyStatic.js | 2 +- .../os/mm/address/struct.SimpleRange.js | 2 +- 33 files changed, 57 insertions(+), 57 deletions(-) diff --git a/ch5/os/board/constant.MEMORY_END.html b/ch5/os/board/constant.MEMORY_END.html index 9f073603..11491d0a 100644 --- a/ch5/os/board/constant.MEMORY_END.html +++ b/ch5/os/board/constant.MEMORY_END.html @@ -1,2 +1,2 @@ MEMORY_END in os::board - Rust -

Constant os::board::MEMORY_END

source ·
pub const MEMORY_END: usize = 0x81000000;
\ No newline at end of file +

Constant os::board::MEMORY_END

source ·
pub const MEMORY_END: usize = 0x8800_0000;
\ No newline at end of file diff --git a/ch5/os/mm/address/struct.PhysAddr.html b/ch5/os/mm/address/struct.PhysAddr.html index 019ec8ba..f642e2cb 100644 --- a/ch5/os/mm/address/struct.PhysAddr.html +++ b/ch5/os/mm/address/struct.PhysAddr.html @@ -5,10 +5,10 @@
source

pub fn page_offset(&self) -> usize

Get page offset

source

pub fn aligned(&self) -> bool

Check page aligned

source§

impl PhysAddr

source

pub fn get_mut<T>(&self) -> &'static mut T

Get mutable reference to PhysAddr value

-

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} +

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} T -> usize: T.0 usize -> T: usize.into()

-
source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysAddr

source§

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

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

fn max(self, other: Self) -> Self
where +
source§

fn from(v: usize) -> Self

Converts to this type from the input type.

source§

impl Ord for PhysAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/address/struct.PhysPageNum.html b/ch5/os/mm/address/struct.PhysPageNum.html index e101d612..4a82bb91 100644 --- a/ch5/os/mm/address/struct.PhysPageNum.html +++ b/ch5/os/mm/address/struct.PhysPageNum.html @@ -1,7 +1,7 @@ PhysPageNum in os::mm::address - Rust

Struct os::mm::address::PhysPageNum

source ·
pub struct PhysPageNum(pub usize);
Expand description

physical page number

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysPageNum

source

pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]

Get PageTableEntry on PhysPageNum

-
source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

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

source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/address/struct.VirtAddr.html b/ch5/os/mm/address/struct.VirtAddr.html index afd8ca2e..d57a6243 100644 --- a/ch5/os/mm/address/struct.VirtAddr.html +++ b/ch5/os/mm/address/struct.VirtAddr.html @@ -5,7 +5,7 @@
source

pub fn page_offset(&self) -> usize

Get page offset

source

pub fn aligned(&self) -> bool

Check page aligned

Trait Implementations§

source§

impl Clone for VirtAddr

source§

fn clone(&self) -> VirtAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtAddr

Debugging

-
source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

fn max(self, other: Self) -> Self
where +
source§

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

Formats the value using the given formatter. Read more

source§

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/address/struct.VirtPageNum.html b/ch5/os/mm/address/struct.VirtPageNum.html index 5b0dca38..daa65307 100644 --- a/ch5/os/mm/address/struct.VirtPageNum.html +++ b/ch5/os/mm/address/struct.VirtPageNum.html @@ -1,7 +1,7 @@ VirtPageNum in os::mm::address - Rust

Struct os::mm::address::VirtPageNum

source ·
pub struct VirtPageNum(pub usize);
Expand description

virtual page number

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

pub fn indexes(&self) -> [usize; 3]

Return VPN 3 level index

-

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

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

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/memory_set/struct.MapPermission.html b/ch5/os/mm/memory_set/struct.MapPermission.html index 9802750a..47e65071 100644 --- a/ch5/os/mm/memory_set/struct.MapPermission.html +++ b/ch5/os/mm/memory_set/struct.MapPermission.html @@ -64,16 +64,16 @@ not set in self, but which are allowed for this type.

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§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MapPermission

source§

fn bitor(self, other: MapPermission) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MapPermission

source§

fn bitxor(self, other: Self) -> Self

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

-
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

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

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

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

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

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

impl PartialEq for MapPermission

source§

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

This method tests for self and other values to be equal, and is used @@ -81,8 +81,8 @@ by ==.
source§

impl PartialOrd for MapPermission

source§

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

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

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

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

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

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

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

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

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

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

impl Sub for MapPermission

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/ch5/os/mm/page_table/struct.PTEFlags.html b/ch5/os/mm/page_table/struct.PTEFlags.html index 8ca2c912..56a118ad 100644 --- a/ch5/os/mm/page_table/struct.PTEFlags.html +++ b/ch5/os/mm/page_table/struct.PTEFlags.html @@ -59,16 +59,16 @@ not set in self, but which are allowed for this type.

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§

source§

impl Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for PTEFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for PTEFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for PTEFlags

source§

fn bitor(self, other: PTEFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = PTEFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for PTEFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for PTEFlags

source§

fn bitxor(self, other: Self) -> Self

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

-
§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for PTEFlags

source§

fn clone(&self) -> PTEFlags

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PTEFlags

source§

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

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

impl Extend<PTEFlags> for PTEFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PTEFlags> for PTEFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PTEFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

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

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

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

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

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

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

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

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

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

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

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

impl PartialEq for PTEFlags

source§

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

This method tests for self and other values to be equal, and is used @@ -76,8 +76,8 @@ by ==.
source§

impl PartialOrd for PTEFlags

source§

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

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

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

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

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

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

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

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

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

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

impl Sub for PTEFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the - operator.
source§

impl SubAssign for PTEFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for PTEFlags

source§

impl Eq for PTEFlags

source§

impl StructuralEq for PTEFlags

source§

impl StructuralPartialEq for PTEFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = PTEFlags

The resulting type after applying the - operator.
source§

impl SubAssign for PTEFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for PTEFlags

source§

impl Eq for PTEFlags

source§

impl StructuralEq for PTEFlags

source§

impl StructuralPartialEq for PTEFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/ch5/os/mm/struct.MapPermission.html b/ch5/os/mm/struct.MapPermission.html index c41cf1f2..5fe78521 100644 --- a/ch5/os/mm/struct.MapPermission.html +++ b/ch5/os/mm/struct.MapPermission.html @@ -64,16 +64,16 @@ not set in self, but which are allowed for this type.

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§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MapPermission

source§

fn bitor(self, other: MapPermission) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MapPermission

source§

fn bitxor(self, other: Self) -> Self

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

-
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

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

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

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

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

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

impl PartialEq for MapPermission

source§

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

This method tests for self and other values to be equal, and is used @@ -81,8 +81,8 @@ by ==.
source§

impl PartialOrd for MapPermission

source§

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

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

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

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

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

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

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

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

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

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

impl Sub for MapPermission

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/ch5/os/mm/struct.PhysAddr.html b/ch5/os/mm/struct.PhysAddr.html index 1ecec220..f73327d7 100644 --- a/ch5/os/mm/struct.PhysAddr.html +++ b/ch5/os/mm/struct.PhysAddr.html @@ -5,10 +5,10 @@
source

pub fn page_offset(&self) -> usize

Get page offset

source

pub fn aligned(&self) -> bool

Check page aligned

source§

impl PhysAddr

source

pub fn get_mut<T>(&self) -> &'static mut T

Get mutable reference to PhysAddr value

-

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} +

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} T -> usize: T.0 usize -> T: usize.into()

-
source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysAddr

source§

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

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

fn max(self, other: Self) -> Self
where +
source§

fn from(v: usize) -> Self

Converts to this type from the input type.

source§

impl Ord for PhysAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/struct.PhysPageNum.html b/ch5/os/mm/struct.PhysPageNum.html index 3203023b..d6e193ab 100644 --- a/ch5/os/mm/struct.PhysPageNum.html +++ b/ch5/os/mm/struct.PhysPageNum.html @@ -1,7 +1,7 @@ PhysPageNum in os::mm - Rust

Struct os::mm::PhysPageNum

source ·
pub struct PhysPageNum(pub usize);
Expand description

physical page number

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysPageNum

source

pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]

Get PageTableEntry on PhysPageNum

-
source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

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

source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/struct.VirtAddr.html b/ch5/os/mm/struct.VirtAddr.html index 90879f95..860a6717 100644 --- a/ch5/os/mm/struct.VirtAddr.html +++ b/ch5/os/mm/struct.VirtAddr.html @@ -5,7 +5,7 @@
source

pub fn page_offset(&self) -> usize

Get page offset

source

pub fn aligned(&self) -> bool

Check page aligned

Trait Implementations§

source§

impl Clone for VirtAddr

source§

fn clone(&self) -> VirtAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtAddr

Debugging

-
source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

fn max(self, other: Self) -> Self
where +
source§

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

Formats the value using the given formatter. Read more

source§

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/os/mm/struct.VirtPageNum.html b/ch5/os/mm/struct.VirtPageNum.html index bb769cdc..edfc9803 100644 --- a/ch5/os/mm/struct.VirtPageNum.html +++ b/ch5/os/mm/struct.VirtPageNum.html @@ -1,7 +1,7 @@ VirtPageNum in os::mm - Rust

Struct os::mm::VirtPageNum

source ·
pub struct VirtPageNum(pub usize);
Expand description

virtual page number

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

pub fn indexes(&self) -> [usize; 3]

Return VPN 3 level index

-

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

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

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/ch5/search-index.js b/ch5/search-index.js index 2673e814..510114b4 100644 --- a/ch5/search-index.js +++ b/ch5/search-index.js @@ -1,5 +1,5 @@ var searchIndex = new Map(JSON.parse('[\ -["os",{"doc":"The main module and entrypoint","t":"CHCCCCCQQHCCCCCCSSSESSEESSSSSFNNNNHNNNNHFONNNNHHHNHNNNFEEFFFFFFFFOCOOOHCCHCCOOHHHHSSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTTTTNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHNNNNNNNNNNNNHHHHFOCFNNNNONNNNNSSSSSSSSSCCHSSHHHHHHHHHSFFFFFFFOHHNNCOOHHHNHHNONCCOHCOOOHOHOHCHCNNNFNNNNNOOONNNNFFONHNNNNNNHNNNNNONNNNNNFFFFONNNNNNNNNONNNNNNNNNNNNNHNNOHNONNNNNNNNNNNNFFONNNNNOHHHNNNNONNNHHNHNNNNNNHPPFFGPONNNNNNONNNNONNNNNNNNONNNNNOONOOOONONNNNNNNNNSSHHHFCHHOOOHHOHHOHOFNNNNNOOONOONNNO","n":["board","clear_bss","config","console","lang_items","loader","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","panic","APP_NAMES","__private_field","borrow","borrow_mut","deref","from","get_app_data","get_app_data_by_name","get_num_app","into","list_apps","try_from","try_into","type_id","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTableEntry","PhysAddr","PhysPageNum","VirtAddr","VirtPageNum","__private_field","address","areas","bits","bits","frame_alloc","frame_allocator","heap_allocator","init","memory_set","page_table","page_table","ppn","remap_test","translated_byte_buffer","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","l","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","r","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","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","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","is_all","is_empty","is_valid","map","new","new","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_refmut","translated_str","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","union","unmap","writable","console_getchar","console_putchar","set_timer","shutdown","UPSafeCell","inner","up","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GET_TIME","SYSCALL_READ","SYSCALL_WAITPID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","syscall","FD_STDIN","FD_STDOUT","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_waitpid","sys_yield","IDLE_PID","INITPROC","KernelStack","PidAllocator","PidHandle","Processor","TaskContext","TaskManager","__private_field","add_initproc","add_task","borrow","borrow_mut","context","current","current","current_task","current_trap_cx","current_user_token","deref","exit_current_and_run_next","fetch_task","from","idle_task_cx","into","manager","pid","pid","pid_alloc","processor","ra","ready_queue","recycled","run_tasks","s","schedule","sp","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","TASK_MANAGER","TaskManager","__private_field","add","add_task","borrow","borrow","borrow_mut","borrow_mut","deref","fetch","fetch_task","from","from","into","into","new","ready_queue","try_from","try_from","try_into","try_into","type_id","type_id","KernelStack","PID_ALLOCATOR","PidAllocator","PidHandle","__private_field","alloc","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","deref","drop","drop","from","from","from","from","get_top","into","into","into","into","kernel_stack_position","new","new","pid","pid_alloc","push_on_top","recycled","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_task","current_trap_cx","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","__switch","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","Zombie","base_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","children","clone","clone_into","eq","exec","exit_code","fork","from","from","from","get_status","get_trap_cx","get_user_token","getpid","inner","inner_exclusive_access","into","into","into","is_zombie","kernel_stack","memory_set","new","parent","pid","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","get_time","get_time_ms","set_next_trigger","TrapContext","context","enable_timer_interrupt","init","kernel_satp","kernel_sp","sepc","set_kernel_trap_entry","set_user_trap_entry","sstatus","trap_from_kernel","trap_handler","trap_handler","trap_return","x","TrapContext","app_init_context","borrow","borrow_mut","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[16,"os::board"],[19,"os::config"],[29,"os::console"],[39,"os::lang_items"],[40,"os::loader"],[54,"os::mm"],[82,"os::mm::address"],[203,"os::mm::frame_allocator"],[252,"os::mm::heap_allocator"],[257,"os::mm::memory_set"],[389,"os::mm::page_table"],[490,"os::sbi"],[494,"os::sync"],[497,"os::sync::up"],[508,"os::syscall"],[520,"os::syscall::fs"],[524,"os::syscall::process"],[531,"os::task"],[575,"os::task::context"],[588,"os::task::manager"],[612,"os::task::pid"],[659,"os::task::processor"],[689,"os::task::switch"],[690,"os::task::task"],[741,"os::timer"],[746,"os::trap"],[761,"os::trap::context"],[777,"core::fmt"],[778,"core::result"],[779,"core::any"],[780,"core::fmt"],[781,"alloc::vec"],[782,"core::option"],[783,"alloc::string"],[784,"core::marker"],[785,"core::cmp"],[786,"core::cmp"],[787,"core::cmp"],[788,"alloc::sync"],[789,"core::iter::traits::collect"],[790,"core::hash"],[791,"core::cell"],[792,"core::marker"]],"d":["Constants used in rCore for qemu","clear BSS segment","Constants used in rCore","SBI console driver, for text output","The panic handler","Loading user applications into memory","Memory management implementation","print string macro","println string macro","the rust entry-point of os","SBI call wrappers","Synchronization and interior mutability primitives","Implementation of syscalls","Task management implementation","RISC-V timer-related functionality","Trap handling functionality","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","All of app’s name","","","","","Returns the argument unchanged.","get applications data","get app data from name","get app number","Calls U::from(self).","list all apps","","","","manage a frame which has the same lifecycle as the tracker","","","a memory set instance through lazy_static! managing kernel …","map permission corresponding to that in pte: R W X U","memory set structure, controls virtual-memory space","page table entry structure","physical address","physical page number","virtual address","virtual page number","","Implementation of physical and virtual address and page …","","","PTE","allocate a frame","Implementation of FrameAllocator which controls all the …","The global allocator","initiate heap allocator, frame allocator and kernel space","Implementation of MapArea and MemorySet.","Implementation of PageTableEntry and PageTable.","","","Check PageTable running correctly","translate a pointer to a mutable u8 Vec through page table","translate a generic through page table and return a …","translate a pointer to a mutable u8 Vec end with \\\\0 …","physical address","","physical address","physical page number","a simple range structure for type T","iterator for the simple range structure","","","a simple range structure for virtual page number","","virtual address","virtual page number","Check page aligned","Check page aligned","","","","","","","","","","","","","PhysAddr->PhysPageNum","VirtAddr->VirtPageNum","","","","","","","","","","","","","","","","","","","","","PhysAddr->PhysPageNum","VirtAddr->VirtPageNum","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Get mutable reference to PhysAddr value","","Get PageTableEntry on PhysPageNum","","Return VPN 3 level index","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","Get page offset","Get page offset","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","frame allocator instance through lazy_static!","","","manage a frame which has the same lifecycle as the tracker","an implementation for frame allocator","","","","","","","","","","","","","","","","","","","allocate a frame","a simple test for frame allocator","deallocate a frame","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","initiate the frame allocator using ekernel and MEMORY_END","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Create an empty FrameTracker","","","","","","","","","","","","","","heap allocator instance","heap space ([u8; KERNEL_HEAP_SIZE])","panic when heap allocation error occurs","","initiate heap allocator","","","a memory set instance through lazy_static! managing kernel …","map area structure, controls a contiguous piece of virtual …","map permission corresponding to that in pte: R W X U","map type for memory set: identical or framed","memory set structure, controls virtual-memory space","Readable","Accessible in U mode","Writable","Excutable","","Refresh TLB with sfence.vma","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 …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","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, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline and TrapContext and …","Clone a same MemorySet","","","Inserts the specified flags in-place.","Assume that no conflicts.","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).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","Mention that trampoline is not collected by areas.","","","Create an empty MemorySet","Without kernel stacks.","Returns the complement of this set of flags.","","","","Remove all MapArea","Check PageTable running correctly","Removes the specified flags in-place.","Remove MapArea that starts with start_vpn","","","Inserts or removes the specified flags depending on the …","","","","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.","Get pagetable root_ppn","Translate throuth pagetable","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","page table entry structure","","","","","","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.","","PTE","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 an empty set of flags.","Return an empty PTE","","Check PTE executable","","","","Return 10bit flag","","","","","","","Returns the argument unchanged.","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 …","","Temporarily used to get arguments from user space.","","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).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Check PTE valid","","","Create a PTE from ppn","Returns the complement of this set of flags.","","Return 44bit ppn","Check PTE readable","Removes the specified flags in-place.","","Inserts or removes the specified flags depending on the …","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.","","","","translate a pointer to a mutable u8 Vec through page table","translate a generic through page table and return a …","translate a pointer to a mutable u8 Vec end with \\\\0 …","","","","","","","","","","Returns the union of between the flags in self and other.","","Check PTE writable","use sbi call to getchar from console (qemu uart handler)","use sbi call to putchar in console (qemu uart handler)","use sbi call to set timer","use sbi call to shutdown the kernel","Wrap a static data structure inside it so that we are able …","inner data","Uniprocessor interior mutability primitives","Wrap a static data structure inside it so that we are able …","","","Exclusive access inner data in UPSafeCell. Panic if the …","Returns the argument unchanged.","inner data","Calls U::from(self).","User is responsible to guarantee that inner struct is only …","","","","","","","","","","","","","File and filesystem-related syscalls","","handle syscall exception with syscall_id and other …","","","","","","","","","","If there is not a child process whose pid is same as …","","pid of usertests app in make run TEST=1","Globle process that init user shell","Kernelstack for app","Pid Allocator struct","Bind pid lifetime to PidHandle","Processor management structure","task context structure containing some registers","A array of TaskControlBlock that is thread-safe","","Add init process to the manager","Interface offered to add task","","","Implementation of TaskContext","","The task currently executing on the current processor","Get running task","Get the mutable reference to trap context of current task","Get token of the address space of current task","","Exit the current ‘Running’ task and run the next task …","Interface offered to pop the first task","Returns the argument unchanged.","The basic control flow of each core, helping to select and …","Calls U::from(self).","Implementation of TaskManager","Implementation of PidAllocator","","Allocate a pid from PID_ALLOCATOR","Implementation of Processor and Intersection of control …","return address ( e.g. __restore ) of __switch ASM function","","","The main part of process execution and scheduling Loop …","s0-11 register, callee saved","Return to idle control flow for new scheduling","kernel stack pointer of app","Suspend the current ‘Running’ task and run the next …","Wrap switch.S as a function","Take the current task,leaving a None in its place","Implementation of TaskControlBlock","","","","task context structure containing some registers","","","Returns the argument unchanged.","set Task Context{__restore ASM funciton: trap_return, sp: …","Calls U::from(self).","return address ( e.g. __restore ) of __switch ASM function","s0-11 register, callee saved","kernel stack pointer of app","","","","init task context","","A array of TaskControlBlock that is thread-safe","","Add a task to TaskManager","Interface offered to add task","","","","","","Remove the first task and return it,or None if TaskManager …","Interface offered to pop the first task","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Creat an empty TaskManager","","","","","","","","Kernelstack for app","","Pid Allocator struct","Bind pid lifetime to PidHandle","","Allocate a pid","","","","","","","","","","Recycle a pid","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the value on the top of kernelstack","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","Create an empty PidAllocator","Create a kernelstack from pid","","Allocate a pid from PID_ALLOCATOR","Push a value on top of kernelstack","","","","","","","","","","","","","","","Processor management structure","","","","","","Get current task in cloning semanteme","The task currently executing on the current processor","Get running task","Get the mutable reference to trap context of current task","Get token of the address space of current task","","Returns the argument unchanged.","Returns the argument unchanged.","Get mutable reference to idle_task_cx","The basic control flow of each core, helping to select and …","Calls U::from(self).","Calls U::from(self).","Create an empty Processor","The main part of process execution and scheduling Loop …","Return to idle control flow for new scheduling","Get current task in moving semanteme","Take the current task,leaving a None in its place","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","get current time","get current time in microseconds","set the next timer interrupt","trap context structure containing sstatus, sepc and …","Implementation of TrapContext","enable timer interrupt in sie CSR","initialize CSR stvec as the entry of __alltraps","Addr of Page Table","kernel stack","CSR sepc","","","CSR sstatus ","Unimplement: traps/interrupts/exceptions from kernel mode …","handle an interrupt, exception, or system call from user …","Addr of trap_handler function","set the new addr of __restore asm function in TRAMPOLINE …","general regs[0..31]","trap context structure containing sstatus, sepc and …","init app context","","","Returns the argument unchanged.","Calls U::from(self).","Addr of Page Table","kernel stack","CSR sepc","set stack pointer to x_2 reg (sp)","CSR sstatus ","Addr of trap_handler function","","","","general regs[0..31]"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,0,6,6,6,6,0,0,10,10,10,10,10,0,0,0,10,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,45,0,40,41,32,0,0,0,0,0,0,40,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,20,34,18,20,21,22,23,34,18,20,21,22,23,18,20,18,20,21,22,23,18,20,21,22,23,18,20,21,22,34,34,18,20,21,22,18,20,18,20,21,22,34,18,18,18,20,20,20,21,21,21,22,22,22,23,21,23,18,21,21,23,22,34,18,20,21,22,23,34,23,70,23,34,23,34,18,20,18,20,21,22,70,23,24,22,18,20,21,22,23,34,18,20,21,22,23,34,18,20,21,22,23,34,18,20,21,22,23,0,0,0,0,0,37,35,36,16,36,37,16,36,37,36,71,35,36,37,16,36,71,16,0,0,0,16,36,37,36,0,16,36,37,35,16,36,16,36,71,16,36,37,16,36,37,16,36,37,0,0,0,0,0,42,42,0,0,0,0,0,41,41,41,41,45,40,41,40,41,41,41,41,41,41,41,41,40,43,45,42,41,40,43,45,42,41,42,41,42,41,41,41,41,43,43,45,41,0,0,0,41,42,41,0,0,41,42,41,41,41,41,41,40,43,45,42,41,43,41,41,41,40,40,41,41,41,40,41,41,40,43,45,42,41,41,41,43,43,43,40,43,43,40,40,41,40,41,40,40,0,41,40,0,0,41,0,0,0,41,41,41,42,41,41,40,40,40,43,45,42,41,40,43,45,42,41,40,43,45,42,41,41,43,43,43,51,51,51,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,32,51,51,44,51,32,44,51,32,51,32,51,32,51,51,51,51,51,32,51,32,51,44,44,32,51,51,51,51,51,44,44,51,32,51,51,51,51,44,51,51,51,51,44,51,32,51,51,32,44,44,32,51,51,32,32,51,44,51,51,51,51,51,32,51,44,44,44,0,0,0,44,51,32,44,51,32,44,51,32,51,44,32,0,0,0,0,0,38,0,0,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,57,57,0,62,66,0,0,0,57,0,0,57,66,57,0,0,64,0,0,59,60,62,0,59,0,59,0,0,0,0,57,57,57,0,59,59,59,59,59,59,59,59,59,59,59,59,0,0,61,60,0,60,61,60,61,61,60,0,60,61,60,61,60,60,60,61,60,61,60,61,0,0,0,0,63,62,62,58,64,63,62,58,64,63,62,62,63,58,64,62,58,64,63,64,62,58,64,63,0,62,64,64,0,64,62,62,58,64,63,62,58,64,63,62,58,64,63,0,0,67,66,67,66,67,66,66,0,0,0,67,66,67,66,66,66,67,66,0,0,66,0,66,67,66,67,66,67,0,68,68,0,0,0,68,69,55,69,68,55,69,68,69,68,68,68,55,69,55,55,69,68,69,69,69,55,55,55,55,69,68,69,55,69,55,69,55,69,69,68,69,55,69,68,55,69,68,55,69,68,0,0,0,0,0,0,0,0,0,56,56,56,0,0,56,0,0,56,0,56,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56],"f":"`{{}b}```````{{}d}````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}{Abd}``66{Ad{{Af{n}}}}6{Ah{{Al{Aj}}}}{n{{An{{Al{Aj}}}}}}{{}Ah}:<776````````````````{{}{{An{B`}}}}``=````={{AhAjAh}{{Af{{Al{Aj}}}}}}{Ahc{}}{{AhAj}Bb}````````````{BdBf}{BhBf}{ce{}{}}00000000000{BdBj}{BhBl}{BdBd}{BhBh}{BjBj}{BlBl}{{{Bn{c}}}{{Bn{c}}}{C`CbCdCfChCj}}{{ce}b{}{}}0000{{BdBd}Cl}{{BhBh}Cl}{{BjBj}Cl}{{BlBl}Cl}``{{BdBd}Bf}{{BhBh}Bf}{{BjBj}Bf}{{BlBl}Bf}?>{{BdCn}A`}{{BhCn}A`}{{BjCn}A`}{{BlCn}A`}{cc{}}{AhBd}{BjBd}2{BlBh}3{AhBh}{BdBj}5{AhBj}{AhBl}{BhBl}88{Bj{{Al{Aj}}}}{{{Bn{c}}}c{C`CbCdCfCh}}{Bdc{}}{Bjc{}}{Bj{{Al{D`}}}}3{Bl{{Db{Ah}}}}{ce{}{}}000000{{{Bn{c}}}e{C`CbCdCfCh}{}}``{{cc}{{Dd{c}}}{C`CbCdCfCh}}{{cc}{{Bn{c}}}{C`CbCdCfCh}}{{{Dd{c}}}{{An{e}}}{C`CbCdCfCh}{}}{BdAh}{BhAh}{{BdBd}{{An{Cl}}}}{{BhBh}{{An{Cl}}}}{{BjBj}{{An{Cl}}}}{{BlBl}{{An{Cl}}}}``{C`b}{Blb}<<<<<{c{{h{e}}}{}{}}00000000000{cj{}}00000``````{Df{{An{Bj}}}}{Dh{{An{Bj}}}}{ce{}{}}00000``{{DfBj}b}{{DhBj}b}{Dj{{Dl{Dh}}}}{B`b}``{{B`Cn}A`}{{}{{An{B`}}}}{{}b}{Bjb}{cc{}}00{{DhBjBj}b}3:::{{}Df}{BjB`}{{}Dh}```{c{{h{e}}}{}{}}00000{cj{}}00``{Dnd}99````````````{E`b}{{}Eb}`{{EbEb}Eb}{{EbEb}b}10{EbAj}`21{ce{}{}}000000000{EdEd}{EbEb}{{ce}b{}{}}0{{EbEb}Cl}2{{EbEb}Bf}{{EfEh{Al{Aj}}}b}`{Ej{{El{{Dl{E`}}}}}}:```;{{EdEd}Bf}3``{{Ebc}b{{F`{}{{En{Eb}}}}}}{{EdCn}A`}{{EbCn}A`}0000{cc{}}0000{EfEf}{Aj{{An{Eb}}}}{AjEb}0{{{Al{Aj}}}{{Fb{E`AhAh}}}}{E`E`}{cEb{{F`{}{{En{Eb}}}}}}{{Ebc}bFd}{{EbEb}b}{{E`BhBhEb}b}{{EbEb}Eb}{{EbEb}Bf}{ce{}{}}0000{EbBf}0{{EfEh}b}{{EfEhBl}b}`{E`b}`{{BhBhEdEb}Ef}{{}E`}0{EbEb}`{{EbEb}{{An{Cl}}}}{{E`Ef{An{{Al{Aj}}}}}b}5{{}b}>{{E`Bl}b}``{{EbEbBf}b}```>{{EbEb}b}?==0{E`Ah}{{E`Bl}{{An{D`}}}}{c{{h{e}}}{}{}}000000000{cj{}}0000{{EbEb}Eb}{{EfEh}b}{{EfEhBl}b}````````````{{}Ff}{{FfFf}Ff}{{FfFf}b}10{FfAj}``21{ce{}{}}00000{FfFf}{D`D`}{{ce}b{}{}}0{{FfFf}Cl}3{{FfFf}Bf}89{{}D`}1{D`Bf}{{Ffc}b{{F`{}{{En{Ff}}}}}}{{EhBl}{{An{D`}}}}0{D`Ff}{{FfCn}A`}0000`{cc{}}00{Aj{{An{Ff}}}}{AjFf}0{cFf{{F`{}{{En{Ff}}}}}}{AhEh}{{Ffc}bFd}{{FfFf}b}{{FfFf}Ff}>{ce{}{}}00{FfBf}0>{{EhBlBjFf}b}{{}Eh}{{BjFf}D`}{FfFf}{{FfFf}{{An{Cl}}}}{D`Bj}{D`Bf}:`{{FfFfBf}b}:;:99;{EhAh}{{EhBl}{{An{D`}}}}{{EhBh}{{An{Bd}}}}{{AhAjAh}{{Af{{Al{Aj}}}}}}{Ahc{}}{{AhAj}Bb}{c{{h{e}}}{}{}}00000{cj{}}00{{FfFf}Ff}{{EhBl}b};{{}Ah}{Ahb}0{Bfd}````{ce{}{}}0{{{Dl{c}}}{{Fh{c}}}{}}{cc{}}`2{c{{Dl{c}}}{}}::9```````````{{Ah{Db{Ah}}}Fj}``{{AhAjAh}Fj}0{AjFj}{Fld}{{}Fj}00{{FjFl}Fj}1`````````{{}b}{{{El{Fn}}}b};;```{{}{{An{{El{Fn}}}}}}{{}G`}{{}Ah}{Gb{{El{Fn}}}}{Flb}4>`{ce{}{}}```{{}Gd}````8`{Gfb}`9`7`{c{{h{e}}}{}{}}0{cj{}}`44{cc{}}{AhGf}6```332{{}Gf}```{{Gh{El{Fn}}}b}>8888{Gj{{Dl{Gh}}}}{Gh{{An{{El{Fn}}}}}}?55::{{}Gh}`888877`````{GlGd}<<<<<<<<`{{GlAh}b}{Gn{{Dl{Gl}}}}{Gdb}{H`b};;;;{H`Ah}{ce{}{}}000{Ah{{Fb{AhAh}}}}{{}Gl}{GdH`}`{{}Gd}{{H`c}{}Hb}`{c{{h{e}}}{}{}}0000000{cj{}}000```7777{Hd{{An{{El{Fn}}}}}}`{{}{{An{{El{Fn}}}}}}{{}G`}{{}Ah}{Hf{{Dl{Hd}}}}{cc{}}0{HdGf}`>>{{}Hd}{{}b}{Gfb}98;;;;::````````{ce{}{}}00000`{HhHh}{{ce}b{}{}}{{HhHh}Bf}{{Fn{Al{Aj}}}b}`{{{El{Fn}}}{{El{Fn}}}}:::{HjHh}{HjG`}{HjAh}{FnAh}`{Fn{{Fh{Hj}}}}:::{HjBf}``{{{Al{Aj}}}Fn}````<`{c{{h{e}}}{}{}}00000{cj{}}00``{{}Ah}0{{}b}``00```00`{{}d}0`0``{{AhAhAhAhAh}G`}{ce{}{}}0{cc{}}1```{{G`Ah}b}``887`","c":[],"p":[[1,"unit"],[1,"never"],[5,"Arguments",777],[6,"Result",778],[5,"TypeId",779],[5,"Stdout",29],[1,"str"],[8,"Result",777],[5,"PanicInfo",780],[5,"APP_NAMES",40],[5,"Vec",781],[1,"usize"],[1,"u8"],[1,"slice"],[6,"Option",782],[5,"FrameTracker",203],[5,"String",783],[5,"PhysAddr",82],[1,"bool"],[5,"VirtAddr",82],[5,"PhysPageNum",82],[5,"VirtPageNum",82],[5,"SimpleRange",82],[10,"StepByOne",82],[10,"Copy",784],[10,"PartialEq",785],[10,"PartialOrd",785],[10,"Debug",777],[10,"Clone",786],[6,"Ordering",785],[5,"Formatter",777],[5,"PageTableEntry",389],[1,"array"],[5,"SimpleRangeIterator",82],[10,"FrameAllocator",203],[5,"StackFrameAllocator",203],[5,"FRAME_ALLOCATOR",203],[5,"UPSafeCell",497],[5,"Layout",787],[5,"MemorySet",257],[5,"MapPermission",257],[6,"MapType",257],[5,"MapArea",257],[5,"PageTable",389],[5,"KERNEL_SPACE",257],[5,"Arc",788],[17,"Item"],[10,"IntoIterator",789],[1,"tuple"],[10,"Hasher",790],[5,"PTEFlags",389],[5,"RefMut",791],[1,"isize"],[1,"i32"],[5,"TaskControlBlock",690],[5,"TrapContext",761],[5,"INITPROC",531],[5,"PidHandle",612],[5,"TaskContext",575],[5,"TaskManager",588],[5,"TASK_MANAGER",588],[5,"PidAllocator",612],[5,"PID_ALLOCATOR",612],[5,"KernelStack",612],[10,"Sized",784],[5,"Processor",659],[5,"PROCESSOR",659],[6,"TaskStatus",690],[5,"TaskControlBlockInner",690],[8,"VPNRange",82],[8,"FrameAllocatorImpl",203]],"b":[[137,"impl-From%3Cusize%3E-for-PhysAddr"],[138,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[140,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[142,"impl-From%3Cusize%3E-for-VirtAddr"],[143,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[145,"impl-From%3Cusize%3E-for-PhysPageNum"],[146,"impl-From%3Cusize%3E-for-VirtPageNum"],[147,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[311,"impl-UpperHex-for-MapPermission"],[312,"impl-LowerHex-for-MapPermission"],[313,"impl-Binary-for-MapPermission"],[314,"impl-Debug-for-MapPermission"],[315,"impl-Octal-for-MapPermission"],[432,"impl-Binary-for-PTEFlags"],[433,"impl-UpperHex-for-PTEFlags"],[434,"impl-LowerHex-for-PTEFlags"],[435,"impl-Debug-for-PTEFlags"],[436,"impl-Octal-for-PTEFlags"]]}]\ +["os",{"doc":"The main module and entrypoint","t":"CHCCCCCQQHCCCCCCSSSESSEESSSSSFNNNNHNNNNHFONNNNHHHNHNNNFEEFFFFFFFFOCOOOHCCHCCOOHHHHSSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTTTTNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHNNNNNNNNNNNNHHHHFOCFNNNNONNNNNSSSSSSSSSCCHSSHHHHHHHHHSFFFFFFFOHHNNCOOHHHNHHNONCCOHCOOOHOHOHCHCNNNFNNNNNOOONNNNFFONHNNNNNNHNNNNNONNNNNNFFFFONNNNNNNNNONNNNNNNNNNNNNHNNOHNONNNNNNNNNNNNFFONNNNNOHHHNNNNONNNHHNHNNNNNNHPPFFGPONNNNNNONNNNONNNNNNNNONNNNNOONOOOONONNNNNNNNNSSHHHFCHHOOOHHOHHOHOFNNNNNOOONOONNNO","n":["board","clear_bss","config","console","lang_items","loader","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","panic","APP_NAMES","__private_field","borrow","borrow_mut","deref","from","get_app_data","get_app_data_by_name","get_num_app","into","list_apps","try_from","try_into","type_id","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTableEntry","PhysAddr","PhysPageNum","VirtAddr","VirtPageNum","__private_field","address","areas","bits","bits","frame_alloc","frame_allocator","heap_allocator","init","memory_set","page_table","page_table","ppn","remap_test","translated_byte_buffer","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","l","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","r","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","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","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","is_all","is_empty","is_valid","map","new","new","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_refmut","translated_str","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","union","unmap","writable","console_getchar","console_putchar","set_timer","shutdown","UPSafeCell","inner","up","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GET_TIME","SYSCALL_READ","SYSCALL_WAITPID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","syscall","FD_STDIN","FD_STDOUT","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_waitpid","sys_yield","IDLE_PID","INITPROC","KernelStack","PidAllocator","PidHandle","Processor","TaskContext","TaskManager","__private_field","add_initproc","add_task","borrow","borrow_mut","context","current","current","current_task","current_trap_cx","current_user_token","deref","exit_current_and_run_next","fetch_task","from","idle_task_cx","into","manager","pid","pid","pid_alloc","processor","ra","ready_queue","recycled","run_tasks","s","schedule","sp","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","TASK_MANAGER","TaskManager","__private_field","add","add_task","borrow","borrow","borrow_mut","borrow_mut","deref","fetch","fetch_task","from","from","into","into","new","ready_queue","try_from","try_from","try_into","try_into","type_id","type_id","KernelStack","PID_ALLOCATOR","PidAllocator","PidHandle","__private_field","alloc","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","deref","drop","drop","from","from","from","from","get_top","into","into","into","into","kernel_stack_position","new","new","pid","pid_alloc","push_on_top","recycled","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_task","current_trap_cx","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","__switch","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","Zombie","base_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","children","clone","clone_into","eq","exec","exit_code","fork","from","from","from","get_status","get_trap_cx","get_user_token","getpid","inner","inner_exclusive_access","into","into","into","is_zombie","kernel_stack","memory_set","new","parent","pid","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","get_time","get_time_ms","set_next_trigger","TrapContext","context","enable_timer_interrupt","init","kernel_satp","kernel_sp","sepc","set_kernel_trap_entry","set_user_trap_entry","sstatus","trap_from_kernel","trap_handler","trap_handler","trap_return","x","TrapContext","app_init_context","borrow","borrow_mut","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[16,"os::board"],[19,"os::config"],[29,"os::console"],[39,"os::lang_items"],[40,"os::loader"],[54,"os::mm"],[82,"os::mm::address"],[203,"os::mm::frame_allocator"],[252,"os::mm::heap_allocator"],[257,"os::mm::memory_set"],[389,"os::mm::page_table"],[490,"os::sbi"],[494,"os::sync"],[497,"os::sync::up"],[508,"os::syscall"],[520,"os::syscall::fs"],[524,"os::syscall::process"],[531,"os::task"],[575,"os::task::context"],[588,"os::task::manager"],[612,"os::task::pid"],[659,"os::task::processor"],[689,"os::task::switch"],[690,"os::task::task"],[741,"os::timer"],[746,"os::trap"],[761,"os::trap::context"],[777,"core::fmt"],[778,"core::result"],[779,"core::any"],[780,"core::fmt"],[781,"alloc::vec"],[782,"core::option"],[783,"alloc::string"],[784,"core::marker"],[785,"core::cmp"],[786,"core::cmp"],[787,"core::cmp"],[788,"alloc::sync"],[789,"core::iter::traits::collect"],[790,"core::hash"],[791,"core::cell"],[792,"core::marker"]],"d":["Constants used in rCore for qemu","clear BSS segment","Constants used in rCore","SBI console driver, for text output","The panic handler","Loading user applications into memory","Memory management implementation","print string macro","println string macro","the rust entry-point of os","SBI call wrappers","Synchronization and interior mutability primitives","Implementation of syscalls","Task management implementation","RISC-V timer-related functionality","Trap handling functionality","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","All of app’s name","","","","","Returns the argument unchanged.","get applications data","get app data from name","get app number","Calls U::from(self).","list all apps","","","","manage a frame which has the same lifecycle as the tracker","","","a memory set instance through lazy_static! managing kernel …","map permission corresponding to that in pte: R W X U","memory set structure, controls virtual-memory space","page table entry structure","physical address","physical page number","virtual address","virtual page number","","Implementation of physical and virtual address and page …","","","PTE","allocate a frame","Implementation of FrameAllocator which controls all the …","The global allocator","initiate heap allocator, frame allocator and kernel space","Implementation of MapArea and MemorySet.","Implementation of PageTableEntry and PageTable.","","","Check PageTable running correctly","translate a pointer to a mutable u8 Vec through page table","translate a generic through page table and return a …","translate a pointer to a mutable u8 Vec end with \\\\0 …","physical address","","physical address","physical page number","a simple range structure for type T","iterator for the simple range structure","","","a simple range structure for virtual page number","","virtual address","virtual page number","Check page aligned","Check page aligned","","","","","","","","","","","","","PhysAddr->PhysPageNum","VirtAddr->VirtPageNum","","","","","","","","","","","","","","","","","","","","","PhysAddr->PhysPageNum","VirtAddr->VirtPageNum","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Get mutable reference to PhysAddr value","","Get PageTableEntry on PhysPageNum","","Return VPN 3 level index","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","Get page offset","Get page offset","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","frame allocator instance through lazy_static!","","","manage a frame which has the same lifecycle as the tracker","an implementation for frame allocator","","","","","","","","","","","","","","","","","","","allocate a frame","a simple test for frame allocator","deallocate a frame","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","initiate the frame allocator using ekernel and MEMORY_END","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Create an empty FrameTracker","","","","","","","","","","","","","","heap allocator instance","heap space ([u8; KERNEL_HEAP_SIZE])","panic when heap allocation error occurs","","initiate heap allocator","","","a memory set instance through lazy_static! managing kernel …","map area structure, controls a contiguous piece of virtual …","map permission corresponding to that in pte: R W X U","map type for memory set: identical or framed","memory set structure, controls virtual-memory space","Readable","Accessible in U mode","Writable","Excutable","","Refresh TLB with sfence.vma","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 …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","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, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline and TrapContext and …","Clone a same MemorySet","","","Inserts the specified flags in-place.","Assume that no conflicts.","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).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","Mention that trampoline is not collected by areas.","","","Create an empty MemorySet","Without kernel stacks.","Returns the complement of this set of flags.","","","","Remove all MapArea","Check PageTable running correctly","Removes the specified flags in-place.","Remove MapArea that starts with start_vpn","","","Inserts or removes the specified flags depending on the …","","","","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.","Get pagetable root_ppn","Translate throuth pagetable","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","page table entry structure","","","","","","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.","","PTE","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 an empty set of flags.","Return an empty PTE","","Check PTE executable","","","","Return 10bit flag","","","","","","","Returns the argument unchanged.","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 …","","Temporarily used to get arguments from user space.","","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).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Check PTE valid","","","Create a PTE from ppn","Returns the complement of this set of flags.","","Return 44bit ppn","Check PTE readable","Removes the specified flags in-place.","","Inserts or removes the specified flags depending on the …","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.","","","","translate a pointer to a mutable u8 Vec through page table","translate a generic through page table and return a …","translate a pointer to a mutable u8 Vec end with \\\\0 …","","","","","","","","","","Returns the union of between the flags in self and other.","","Check PTE writable","use sbi call to getchar from console (qemu uart handler)","use sbi call to putchar in console (qemu uart handler)","use sbi call to set timer","use sbi call to shutdown the kernel","Wrap a static data structure inside it so that we are able …","inner data","Uniprocessor interior mutability primitives","Wrap a static data structure inside it so that we are able …","","","Exclusive access inner data in UPSafeCell. Panic if the …","Returns the argument unchanged.","inner data","Calls U::from(self).","User is responsible to guarantee that inner struct is only …","","","","","","","","","","","","","File and filesystem-related syscalls","","handle syscall exception with syscall_id and other …","","","","","","","","","","If there is not a child process whose pid is same as …","","pid of usertests app in make run TEST=1","Globle process that init user shell","Kernelstack for app","Pid Allocator struct","Bind pid lifetime to PidHandle","Processor management structure","task context structure containing some registers","A array of TaskControlBlock that is thread-safe","","Add init process to the manager","Interface offered to add task","","","Implementation of TaskContext","","The task currently executing on the current processor","Get running task","Get the mutable reference to trap context of current task","Get token of the address space of current task","","Exit the current ‘Running’ task and run the next task …","Interface offered to pop the first task","Returns the argument unchanged.","The basic control flow of each core, helping to select and …","Calls U::from(self).","Implementation of TaskManager","Implementation of PidAllocator","","Allocate a pid from PID_ALLOCATOR","Implementation of Processor and Intersection of control …","return address ( e.g. __restore ) of __switch ASM function","","","The main part of process execution and scheduling Loop …","s0-11 register, callee saved","Return to idle control flow for new scheduling","kernel stack pointer of app","Suspend the current ‘Running’ task and run the next …","Wrap switch.S as a function","Take the current task,leaving a None in its place","Implementation of TaskControlBlock","","","","task context structure containing some registers","","","Returns the argument unchanged.","set Task Context{__restore ASM funciton: trap_return, sp: …","Calls U::from(self).","return address ( e.g. __restore ) of __switch ASM function","s0-11 register, callee saved","kernel stack pointer of app","","","","init task context","","A array of TaskControlBlock that is thread-safe","","Add a task to TaskManager","Interface offered to add task","","","","","","Remove the first task and return it,or None if TaskManager …","Interface offered to pop the first task","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Creat an empty TaskManager","","","","","","","","Kernelstack for app","","Pid Allocator struct","Bind pid lifetime to PidHandle","","Allocate a pid","","","","","","","","","","Recycle a pid","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the value on the top of kernelstack","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","Create an empty PidAllocator","Create a kernelstack from pid","","Allocate a pid from PID_ALLOCATOR","Push a value on top of kernelstack","","","","","","","","","","","","","","","Processor management structure","","","","","","Get current task in cloning semanteme","The task currently executing on the current processor","Get running task","Get the mutable reference to trap context of current task","Get token of the address space of current task","","Returns the argument unchanged.","Returns the argument unchanged.","Get mutable reference to idle_task_cx","The basic control flow of each core, helping to select and …","Calls U::from(self).","Calls U::from(self).","Create an empty Processor","The main part of process execution and scheduling Loop …","Return to idle control flow for new scheduling","Get current task in moving semanteme","Take the current task,leaving a None in its place","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","get current time","get current time in microseconds","set the next timer interrupt","trap context structure containing sstatus, sepc and …","Implementation of TrapContext","enable timer interrupt in sie CSR","initialize CSR stvec as the entry of __alltraps","Addr of Page Table","kernel stack","CSR sepc","","","CSR sstatus ","Unimplement: traps/interrupts/exceptions from kernel mode …","handle an interrupt, exception, or system call from user …","Addr of trap_handler function","set the new addr of __restore asm function in TRAMPOLINE …","general regs[0..31]","trap context structure containing sstatus, sepc and …","init app context","","","Returns the argument unchanged.","Calls U::from(self).","Addr of Page Table","kernel stack","CSR sepc","set stack pointer to x_2 reg (sp)","CSR sstatus ","Addr of trap_handler function","","","","general regs[0..31]"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,0,6,6,6,6,0,0,10,10,10,10,10,0,0,0,10,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,45,0,40,41,32,0,0,0,0,0,0,40,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,20,34,18,20,21,22,23,34,18,20,21,22,23,18,20,18,20,21,22,23,18,20,21,22,23,18,20,21,22,34,34,18,20,21,22,18,20,18,20,21,22,34,18,18,18,20,20,20,21,21,21,22,22,22,23,21,23,18,21,21,23,22,34,18,20,21,22,23,34,23,70,23,34,23,34,18,20,18,20,21,22,70,23,24,22,18,20,21,22,23,34,18,20,21,22,23,34,18,20,21,22,23,34,18,20,21,22,23,0,0,0,0,0,37,35,36,16,36,37,16,36,37,36,71,35,36,37,16,36,71,16,0,0,0,16,36,37,36,0,16,36,37,35,16,36,16,36,71,16,36,37,16,36,37,16,36,37,0,0,0,0,0,42,42,0,0,0,0,0,41,41,41,41,45,40,41,40,41,41,41,41,41,41,41,41,40,43,45,42,41,40,43,45,42,41,42,41,42,41,41,41,41,43,43,45,41,0,0,0,41,42,41,0,0,41,42,41,41,41,41,41,40,43,45,42,41,43,41,41,41,40,40,41,41,41,40,41,41,40,43,45,42,41,41,41,43,43,43,40,43,43,40,40,41,40,41,40,40,0,41,40,0,0,41,0,0,0,41,41,41,42,41,41,40,40,40,43,45,42,41,40,43,45,42,41,40,43,45,42,41,41,43,43,43,51,51,51,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,32,51,51,44,51,32,44,51,32,51,32,51,32,51,51,51,51,51,32,51,32,51,44,44,32,51,51,51,51,51,44,44,51,32,51,51,51,51,44,51,51,51,51,44,51,32,51,51,32,44,44,32,51,51,32,32,51,44,51,51,51,51,51,32,51,44,44,44,0,0,0,44,51,32,44,51,32,44,51,32,51,44,32,0,0,0,0,0,38,0,0,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,57,57,0,62,66,0,0,0,57,0,0,57,66,57,0,0,64,0,0,59,60,62,0,59,0,59,0,0,0,0,57,57,57,0,59,59,59,59,59,59,59,59,59,59,59,59,0,0,61,60,0,60,61,60,61,61,60,0,60,61,60,61,60,60,60,61,60,61,60,61,0,0,0,0,63,62,62,58,64,63,62,58,64,63,62,62,63,58,64,62,58,64,63,64,62,58,64,63,0,62,64,64,0,64,62,62,58,64,63,62,58,64,63,62,58,64,63,0,0,67,66,67,66,67,66,66,0,0,0,67,66,67,66,66,66,67,66,0,0,66,0,66,67,66,67,66,67,0,68,68,0,0,0,68,69,55,69,68,55,69,68,69,68,68,68,55,69,55,55,69,68,69,69,69,55,55,55,55,69,68,69,55,69,55,69,55,69,69,68,69,55,69,68,55,69,68,55,69,68,0,0,0,0,0,0,0,0,0,56,56,56,0,0,56,0,0,56,0,56,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56],"f":"`{{}b}```````{{}d}````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}{Abd}``66{Ad{{Af{n}}}}6{Ah{{Al{Aj}}}}{n{{An{{Al{Aj}}}}}}{{}Ah}:<776````````````````{{}{{An{B`}}}}``=````={{AhAjAh}{{Af{{Al{Aj}}}}}}{Ahc{}}{{AhAj}Bb}````````````{BdBf}{BhBf}{ce{}{}}00000000000{BdBj}{BhBl}{BdBd}{BhBh}{BjBj}{BlBl}{{{Bn{c}}}{{Bn{c}}}{C`CbCdCfChCj}}{{ce}b{}{}}0000{{BdBd}Cl}{{BhBh}Cl}{{BjBj}Cl}{{BlBl}Cl}``{{BdBd}Bf}{{BhBh}Bf}{{BjBj}Bf}{{BlBl}Bf}?>{{BdCn}A`}{{BhCn}A`}{{BjCn}A`}{{BlCn}A`}{cc{}}{BjBd}1{AhBd}2{BlBh}{AhBh}{BdBj}5{AhBj}{BhBl}{AhBl}88{Bj{{Al{Aj}}}}{{{Bn{c}}}c{C`CbCdCfCh}}{Bdc{}}{Bjc{}}{Bj{{Al{D`}}}}3{Bl{{Db{Ah}}}}{ce{}{}}000000{{{Bn{c}}}e{C`CbCdCfCh}{}}``{{cc}{{Dd{c}}}{C`CbCdCfCh}}{{cc}{{Bn{c}}}{C`CbCdCfCh}}{{{Dd{c}}}{{An{e}}}{C`CbCdCfCh}{}}{BdAh}{BhAh}{{BdBd}{{An{Cl}}}}{{BhBh}{{An{Cl}}}}{{BjBj}{{An{Cl}}}}{{BlBl}{{An{Cl}}}}``{C`b}{Blb}<<<<<{c{{h{e}}}{}{}}00000000000{cj{}}00000``````{Df{{An{Bj}}}}{Dh{{An{Bj}}}}{ce{}{}}00000``{{DfBj}b}{{DhBj}b}{Dj{{Dl{Dh}}}}{B`b}``{{B`Cn}A`}{{}{{An{B`}}}}{{}b}{Bjb}{cc{}}00{{DhBjBj}b}3:::{{}Df}{BjB`}{{}Dh}```{c{{h{e}}}{}{}}00000{cj{}}00``{Dnd}99````````````{E`b}{{}Eb}`{{EbEb}Eb}{{EbEb}b}10{EbAj}`21{ce{}{}}000000000{EdEd}{EbEb}{{ce}b{}{}}0{{EbEb}Cl}2{{EbEb}Bf}{{EfEh{Al{Aj}}}b}`{Ej{{El{{Dl{E`}}}}}}:```;{{EdEd}Bf}3``{{Ebc}b{{F`{}{{En{Eb}}}}}}{{EdCn}A`}{{EbCn}A`}0000{cc{}}0000{EfEf}{Aj{{An{Eb}}}}{AjEb}0{{{Al{Aj}}}{{Fb{E`AhAh}}}}{E`E`}{cEb{{F`{}{{En{Eb}}}}}}{{Ebc}bFd}{{EbEb}b}{{E`BhBhEb}b}{{EbEb}Eb}{{EbEb}Bf}{ce{}{}}0000{EbBf}0{{EfEh}b}{{EfEhBl}b}`{E`b}`{{BhBhEdEb}Ef}{{}E`}0{EbEb}`{{EbEb}{{An{Cl}}}}{{E`Ef{An{{Al{Aj}}}}}b}5{{}b}>{{E`Bl}b}``{{EbEbBf}b}```>{{EbEb}b}?==0{E`Ah}{{E`Bl}{{An{D`}}}}{c{{h{e}}}{}{}}000000000{cj{}}0000{{EbEb}Eb}{{EfEh}b}{{EfEhBl}b}````````````{{}Ff}{{FfFf}Ff}{{FfFf}b}10{FfAj}``21{ce{}{}}00000{FfFf}{D`D`}{{ce}b{}{}}0{{FfFf}Cl}3{{FfFf}Bf}89{{}D`}1{D`Bf}{{Ffc}b{{F`{}{{En{Ff}}}}}}{{EhBl}{{An{D`}}}}0{D`Ff}{{FfCn}A`}0000`{cc{}}00{Aj{{An{Ff}}}}{AjFf}0{cFf{{F`{}{{En{Ff}}}}}}{AhEh}{{Ffc}bFd}{{FfFf}b}{{FfFf}Ff}>{ce{}{}}00{FfBf}0>{{EhBlBjFf}b}{{}Eh}{{BjFf}D`}{FfFf}{{FfFf}{{An{Cl}}}}{D`Bj}{D`Bf}:`{{FfFfBf}b}:;:99;{EhAh}{{EhBl}{{An{D`}}}}{{EhBh}{{An{Bd}}}}{{AhAjAh}{{Af{{Al{Aj}}}}}}{Ahc{}}{{AhAj}Bb}{c{{h{e}}}{}{}}00000{cj{}}00{{FfFf}Ff}{{EhBl}b};{{}Ah}{Ahb}0{Bfd}````{ce{}{}}0{{{Dl{c}}}{{Fh{c}}}{}}{cc{}}`2{c{{Dl{c}}}{}}::9```````````{{Ah{Db{Ah}}}Fj}``{{AhAjAh}Fj}0{AjFj}{Fld}{{}Fj}00{{FjFl}Fj}1`````````{{}b}{{{El{Fn}}}b};;```{{}{{An{{El{Fn}}}}}}{{}G`}{{}Ah}{Gb{{El{Fn}}}}{Flb}4>`{ce{}{}}```{{}Gd}````8`{Gfb}`9`7`{c{{h{e}}}{}{}}0{cj{}}`44{cc{}}{AhGf}6```332{{}Gf}```{{Gh{El{Fn}}}b}>8888{Gj{{Dl{Gh}}}}{Gh{{An{{El{Fn}}}}}}?55::{{}Gh}`888877`````{GlGd}<<<<<<<<`{{GlAh}b}{Gn{{Dl{Gl}}}}{Gdb}{H`b};;;;{H`Ah}{ce{}{}}000{Ah{{Fb{AhAh}}}}{{}Gl}{GdH`}`{{}Gd}{{H`c}{}Hb}`{c{{h{e}}}{}{}}0000000{cj{}}000```7777{Hd{{An{{El{Fn}}}}}}`{{}{{An{{El{Fn}}}}}}{{}G`}{{}Ah}{Hf{{Dl{Hd}}}}{cc{}}0{HdGf}`>>{{}Hd}{{}b}{Gfb}98;;;;::````````{ce{}{}}00000`{HhHh}{{ce}b{}{}}{{HhHh}Bf}{{Fn{Al{Aj}}}b}`{{{El{Fn}}}{{El{Fn}}}}:::{HjHh}{HjG`}{HjAh}{FnAh}`{Fn{{Fh{Hj}}}}:::{HjBf}``{{{Al{Aj}}}Fn}````<`{c{{h{e}}}{}{}}00000{cj{}}00``{{}Ah}0{{}b}``00```00`{{}d}0`0``{{AhAhAhAhAh}G`}{ce{}{}}0{cc{}}1```{{G`Ah}b}``887`","c":[],"p":[[1,"unit"],[1,"never"],[5,"Arguments",777],[6,"Result",778],[5,"TypeId",779],[5,"Stdout",29],[1,"str"],[8,"Result",777],[5,"PanicInfo",780],[5,"APP_NAMES",40],[5,"Vec",781],[1,"usize"],[1,"u8"],[1,"slice"],[6,"Option",782],[5,"FrameTracker",203],[5,"String",783],[5,"PhysAddr",82],[1,"bool"],[5,"VirtAddr",82],[5,"PhysPageNum",82],[5,"VirtPageNum",82],[5,"SimpleRange",82],[10,"StepByOne",82],[10,"Copy",784],[10,"PartialEq",785],[10,"PartialOrd",785],[10,"Debug",777],[10,"Clone",786],[6,"Ordering",785],[5,"Formatter",777],[5,"PageTableEntry",389],[1,"array"],[5,"SimpleRangeIterator",82],[10,"FrameAllocator",203],[5,"StackFrameAllocator",203],[5,"FRAME_ALLOCATOR",203],[5,"UPSafeCell",497],[5,"Layout",787],[5,"MemorySet",257],[5,"MapPermission",257],[6,"MapType",257],[5,"MapArea",257],[5,"PageTable",389],[5,"KERNEL_SPACE",257],[5,"Arc",788],[17,"Item"],[10,"IntoIterator",789],[1,"tuple"],[10,"Hasher",790],[5,"PTEFlags",389],[5,"RefMut",791],[1,"isize"],[1,"i32"],[5,"TaskControlBlock",690],[5,"TrapContext",761],[5,"INITPROC",531],[5,"PidHandle",612],[5,"TaskContext",575],[5,"TaskManager",588],[5,"TASK_MANAGER",588],[5,"PidAllocator",612],[5,"PID_ALLOCATOR",612],[5,"KernelStack",612],[10,"Sized",784],[5,"Processor",659],[5,"PROCESSOR",659],[6,"TaskStatus",690],[5,"TaskControlBlockInner",690],[8,"VPNRange",82],[8,"FrameAllocatorImpl",203]],"b":[[137,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[139,"impl-From%3Cusize%3E-for-PhysAddr"],[141,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[142,"impl-From%3Cusize%3E-for-VirtAddr"],[143,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[145,"impl-From%3Cusize%3E-for-PhysPageNum"],[146,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[147,"impl-From%3Cusize%3E-for-VirtPageNum"],[311,"impl-Octal-for-MapPermission"],[312,"impl-Binary-for-MapPermission"],[313,"impl-UpperHex-for-MapPermission"],[314,"impl-LowerHex-for-MapPermission"],[315,"impl-Debug-for-MapPermission"],[432,"impl-UpperHex-for-PTEFlags"],[433,"impl-Octal-for-PTEFlags"],[434,"impl-LowerHex-for-PTEFlags"],[435,"impl-Binary-for-PTEFlags"],[436,"impl-Debug-for-PTEFlags"]]}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/ch5/src/os/boards/qemu.rs.html b/ch5/src/os/boards/qemu.rs.html index 19a479a3..6b566483 100644 --- a/ch5/src/os/boards/qemu.rs.html +++ b/ch5/src/os/boards/qemu.rs.html @@ -11,7 +11,7 @@
//! Constants used in rCore for qemu
 
 pub const CLOCK_FREQ: usize = 12500000;
-pub const MEMORY_END: usize = 0x81000000;
+pub const MEMORY_END: usize = 0x8800_0000;
 
 pub const MMIO: &[(usize, usize)] = &[
     (0x0010_0000, 0x00_2000), // VIRT_TEST/RTC  in virt machine
diff --git a/ch5/trait.impl/core/clone/trait.Clone.js b/ch5/trait.impl/core/clone/trait.Clone.js
index 7192c301..f41b048e 100644
--- a/ch5/trait.impl/core/clone/trait.Clone.js
+++ b/ch5/trait.impl/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Clone for MapType"],["impl Clone for MapPermission"],["impl Clone for PhysAddr"],["impl<T> Clone for SimpleRange<T>"],["impl Clone for VirtAddr"],["impl Clone for PTEFlags"],["impl Clone for TaskStatus"],["impl Clone for VirtPageNum"],["impl Clone for PhysPageNum"],["impl Clone for PageTableEntry"]]
+"os":[["impl Clone for PhysAddr"],["impl Clone for PhysPageNum"],["impl Clone for PageTableEntry"],["impl Clone for VirtPageNum"],["impl Clone for VirtAddr"],["impl Clone for TaskStatus"],["impl Clone for MapType"],["impl<T> Clone for SimpleRange<T>"],["impl Clone for PTEFlags"],["impl Clone for MapPermission"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/cmp/trait.Eq.js b/ch5/trait.impl/core/cmp/trait.Eq.js
index a9e6cc41..e57c63d6 100644
--- a/ch5/trait.impl/core/cmp/trait.Eq.js
+++ b/ch5/trait.impl/core/cmp/trait.Eq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Eq for VirtPageNum"],["impl Eq for VirtAddr"],["impl Eq for PhysPageNum"],["impl Eq for PTEFlags"],["impl Eq for PhysAddr"],["impl Eq for MapPermission"]]
+"os":[["impl Eq for PTEFlags"],["impl Eq for PhysAddr"],["impl Eq for VirtPageNum"],["impl Eq for VirtAddr"],["impl Eq for MapPermission"],["impl Eq for PhysPageNum"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/cmp/trait.Ord.js b/ch5/trait.impl/core/cmp/trait.Ord.js
index fcb091dc..941f8694 100644
--- a/ch5/trait.impl/core/cmp/trait.Ord.js
+++ b/ch5/trait.impl/core/cmp/trait.Ord.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Ord for VirtPageNum"],["impl Ord for PTEFlags"],["impl Ord for MapPermission"],["impl Ord for VirtAddr"],["impl Ord for PhysAddr"],["impl Ord for PhysPageNum"]]
+"os":[["impl Ord for MapPermission"],["impl Ord for VirtAddr"],["impl Ord for PTEFlags"],["impl Ord for VirtPageNum"],["impl Ord for PhysPageNum"],["impl Ord for PhysAddr"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/cmp/trait.PartialEq.js b/ch5/trait.impl/core/cmp/trait.PartialEq.js
index 80661c4e..53ff2d77 100644
--- a/ch5/trait.impl/core/cmp/trait.PartialEq.js
+++ b/ch5/trait.impl/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl PartialEq for TaskStatus"],["impl PartialEq for VirtAddr"],["impl PartialEq for PhysPageNum"],["impl PartialEq for MapPermission"],["impl PartialEq for VirtPageNum"],["impl PartialEq for PTEFlags"],["impl PartialEq for PhysAddr"],["impl PartialEq for MapType"]]
+"os":[["impl PartialEq for MapPermission"],["impl PartialEq for PTEFlags"],["impl PartialEq for PhysPageNum"],["impl PartialEq for MapType"],["impl PartialEq for VirtPageNum"],["impl PartialEq for TaskStatus"],["impl PartialEq for VirtAddr"],["impl PartialEq for PhysAddr"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/cmp/trait.PartialOrd.js b/ch5/trait.impl/core/cmp/trait.PartialOrd.js
index eb47e448..0cdbc717 100644
--- a/ch5/trait.impl/core/cmp/trait.PartialOrd.js
+++ b/ch5/trait.impl/core/cmp/trait.PartialOrd.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl PartialOrd for VirtPageNum"],["impl PartialOrd for PTEFlags"],["impl PartialOrd for VirtAddr"],["impl PartialOrd for PhysAddr"],["impl PartialOrd for MapPermission"],["impl PartialOrd for PhysPageNum"]]
+"os":[["impl PartialOrd for PhysPageNum"],["impl PartialOrd for VirtPageNum"],["impl PartialOrd for MapPermission"],["impl PartialOrd for PhysAddr"],["impl PartialOrd for VirtAddr"],["impl PartialOrd for PTEFlags"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/convert/trait.From.js b/ch5/trait.impl/core/convert/trait.From.js
index f24710c0..1beeb4a1 100644
--- a/ch5/trait.impl/core/convert/trait.From.js
+++ b/ch5/trait.impl/core/convert/trait.From.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl From<VirtPageNum> for usize"],["impl From<PhysPageNum> for usize"],["impl From<usize> for VirtAddr"],["impl From<usize> for PhysPageNum"],["impl From<PhysPageNum> for PhysAddr"],["impl From<VirtPageNum> for VirtAddr"],["impl From<usize> for VirtPageNum"],["impl From<VirtAddr> for usize"],["impl From<VirtAddr> for VirtPageNum"],["impl From<PhysAddr> for PhysPageNum"],["impl From<PhysAddr> for usize"],["impl From<usize> for PhysAddr"]]
+"os":[["impl From<usize> for PhysAddr"],["impl From<usize> for VirtAddr"],["impl From<PhysPageNum> for usize"],["impl From<VirtAddr> for VirtPageNum"],["impl From<usize> for VirtPageNum"],["impl From<PhysPageNum> for PhysAddr"],["impl From<VirtPageNum> for VirtAddr"],["impl From<VirtAddr> for usize"],["impl From<PhysAddr> for usize"],["impl From<PhysAddr> for PhysPageNum"],["impl From<usize> for PhysPageNum"],["impl From<VirtPageNum> for usize"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/fmt/trait.Binary.js b/ch5/trait.impl/core/fmt/trait.Binary.js
index 67d73d58..5e6fe660 100644
--- a/ch5/trait.impl/core/fmt/trait.Binary.js
+++ b/ch5/trait.impl/core/fmt/trait.Binary.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Binary for MapPermission"],["impl Binary for PTEFlags"]]
+"os":[["impl Binary for PTEFlags"],["impl Binary for MapPermission"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/fmt/trait.Debug.js b/ch5/trait.impl/core/fmt/trait.Debug.js
index ecf3eea5..cca398c5 100644
--- a/ch5/trait.impl/core/fmt/trait.Debug.js
+++ b/ch5/trait.impl/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Debug for MapType"],["impl Debug for VirtPageNum"],["impl Debug for PTEFlags"],["impl Debug for PhysPageNum"],["impl Debug for VirtAddr"],["impl Debug for FrameTracker"],["impl Debug for MapPermission"],["impl Debug for PhysAddr"]]
+"os":[["impl Debug for FrameTracker"],["impl Debug for PTEFlags"],["impl Debug for VirtPageNum"],["impl Debug for MapPermission"],["impl Debug for PhysPageNum"],["impl Debug for PhysAddr"],["impl Debug for MapType"],["impl Debug for VirtAddr"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/fmt/trait.LowerHex.js b/ch5/trait.impl/core/fmt/trait.LowerHex.js
index 7d1d172e..04ef597e 100644
--- a/ch5/trait.impl/core/fmt/trait.LowerHex.js
+++ b/ch5/trait.impl/core/fmt/trait.LowerHex.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl LowerHex for PTEFlags"],["impl LowerHex for MapPermission"]]
+"os":[["impl LowerHex for MapPermission"],["impl LowerHex for PTEFlags"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/fmt/trait.UpperHex.js b/ch5/trait.impl/core/fmt/trait.UpperHex.js
index 0b7f038e..38891636 100644
--- a/ch5/trait.impl/core/fmt/trait.UpperHex.js
+++ b/ch5/trait.impl/core/fmt/trait.UpperHex.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl UpperHex for PTEFlags"],["impl UpperHex for MapPermission"]]
+"os":[["impl UpperHex for MapPermission"],["impl UpperHex for PTEFlags"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/marker/trait.Copy.js b/ch5/trait.impl/core/marker/trait.Copy.js
index dfe6397f..da630d14 100644
--- a/ch5/trait.impl/core/marker/trait.Copy.js
+++ b/ch5/trait.impl/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Copy for PageTableEntry"],["impl Copy for TaskStatus"],["impl Copy for VirtPageNum"],["impl Copy for PhysPageNum"],["impl Copy for PhysAddr"],["impl Copy for MapType"],["impl Copy for MapPermission"],["impl Copy for PTEFlags"],["impl Copy for VirtAddr"],["impl<T> Copy for SimpleRange<T>"]]
+"os":[["impl<T> Copy for SimpleRange<T>"],["impl Copy for PhysPageNum"],["impl Copy for PhysAddr"],["impl Copy for PageTableEntry"],["impl Copy for TaskStatus"],["impl Copy for VirtPageNum"],["impl Copy for VirtAddr"],["impl Copy for MapPermission"],["impl Copy for PTEFlags"],["impl Copy for MapType"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/marker/trait.StructuralEq.js b/ch5/trait.impl/core/marker/trait.StructuralEq.js
index efd84719..2c422c02 100644
--- a/ch5/trait.impl/core/marker/trait.StructuralEq.js
+++ b/ch5/trait.impl/core/marker/trait.StructuralEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl StructuralEq for PhysAddr"],["impl StructuralEq for PTEFlags"],["impl StructuralEq for VirtPageNum"],["impl StructuralEq for VirtAddr"],["impl StructuralEq for PhysPageNum"],["impl StructuralEq for MapPermission"]]
+"os":[["impl StructuralEq for PhysAddr"],["impl StructuralEq for PhysPageNum"],["impl StructuralEq for PTEFlags"],["impl StructuralEq for VirtPageNum"],["impl StructuralEq for VirtAddr"],["impl StructuralEq for MapPermission"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/marker/trait.StructuralPartialEq.js b/ch5/trait.impl/core/marker/trait.StructuralPartialEq.js
index bb4e3d2e..74aac85f 100644
--- a/ch5/trait.impl/core/marker/trait.StructuralPartialEq.js
+++ b/ch5/trait.impl/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl StructuralPartialEq for VirtAddr"],["impl StructuralPartialEq for PTEFlags"],["impl StructuralPartialEq for MapPermission"],["impl StructuralPartialEq for PhysPageNum"],["impl StructuralPartialEq for VirtPageNum"],["impl StructuralPartialEq for MapType"],["impl StructuralPartialEq for PhysAddr"],["impl StructuralPartialEq for TaskStatus"]]
+"os":[["impl StructuralPartialEq for PhysPageNum"],["impl StructuralPartialEq for PhysAddr"],["impl StructuralPartialEq for VirtPageNum"],["impl StructuralPartialEq for TaskStatus"],["impl StructuralPartialEq for VirtAddr"],["impl StructuralPartialEq for MapPermission"],["impl StructuralPartialEq for MapType"],["impl StructuralPartialEq for PTEFlags"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/ops/bit/trait.BitAnd.js b/ch5/trait.impl/core/ops/bit/trait.BitAnd.js
index 114d6245..ada33c4e 100644
--- a/ch5/trait.impl/core/ops/bit/trait.BitAnd.js
+++ b/ch5/trait.impl/core/ops/bit/trait.BitAnd.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl BitAnd for MapPermission"],["impl BitAnd for PTEFlags"]]
+"os":[["impl BitAnd for PTEFlags"],["impl BitAnd for MapPermission"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/ops/bit/trait.BitAndAssign.js b/ch5/trait.impl/core/ops/bit/trait.BitAndAssign.js
index 86b142a8..dc6f96b5 100644
--- a/ch5/trait.impl/core/ops/bit/trait.BitAndAssign.js
+++ b/ch5/trait.impl/core/ops/bit/trait.BitAndAssign.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl BitAndAssign for MapPermission"],["impl BitAndAssign for PTEFlags"]]
+"os":[["impl BitAndAssign for PTEFlags"],["impl BitAndAssign for MapPermission"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/ops/deref/trait.Deref.js b/ch5/trait.impl/core/ops/deref/trait.Deref.js
index f10716a4..a9a427b4 100644
--- a/ch5/trait.impl/core/ops/deref/trait.Deref.js
+++ b/ch5/trait.impl/core/ops/deref/trait.Deref.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Deref for KERNEL_SPACE"],["impl Deref for PROCESSOR"],["impl Deref for PID_ALLOCATOR"],["impl Deref for APP_NAMES"],["impl Deref for TASK_MANAGER"],["impl Deref for FRAME_ALLOCATOR"],["impl Deref for INITPROC"]]
+"os":[["impl Deref for PID_ALLOCATOR"],["impl Deref for PROCESSOR"],["impl Deref for INITPROC"],["impl Deref for KERNEL_SPACE"],["impl Deref for TASK_MANAGER"],["impl Deref for APP_NAMES"],["impl Deref for FRAME_ALLOCATOR"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/core/ops/drop/trait.Drop.js b/ch5/trait.impl/core/ops/drop/trait.Drop.js
index a75b2869..dc64eea9 100644
--- a/ch5/trait.impl/core/ops/drop/trait.Drop.js
+++ b/ch5/trait.impl/core/ops/drop/trait.Drop.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl Drop for KernelStack"],["impl Drop for PidHandle"],["impl Drop for FrameTracker"]]
+"os":[["impl Drop for PidHandle"],["impl Drop for KernelStack"],["impl Drop for FrameTracker"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/trait.impl/lazy_static/trait.LazyStatic.js b/ch5/trait.impl/lazy_static/trait.LazyStatic.js
index 9beefc1a..78d162ec 100644
--- a/ch5/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch5/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"os":[["impl LazyStatic for INITPROC"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for APP_NAMES"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for FRAME_ALLOCATOR"]]
+"os":[["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for APP_NAMES"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch5/type.impl/os/mm/address/struct.SimpleRange.js b/ch5/type.impl/os/mm/address/struct.SimpleRange.js
index bbe8cc9b..b5a4824b 100644
--- a/ch5/type.impl/os/mm/address/struct.SimpleRange.js
+++ b/ch5/type.impl/os/mm/address/struct.SimpleRange.js
@@ -1,3 +1,3 @@
 (function() {var type_impls = {
-"os":[["
source§

impl<T> SimpleRange<T>

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

",0,"os::mm::address::VPNRange"],["
source§

impl<T> Clone for SimpleRange<T>

source§

fn clone(&self) -> SimpleRange<T>

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

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

Performs copy-assignment from source. Read more
","Clone","os::mm::address::VPNRange"],["
source§

impl<T> Copy for SimpleRange<T>

","Copy","os::mm::address::VPNRange"],["
source§

impl<T> IntoIterator for SimpleRange<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
","IntoIterator","os::mm::address::VPNRange"]] +"os":[["
source§

impl<T> SimpleRange<T>

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

",0,"os::mm::address::VPNRange"],["
source§

impl<T> Copy for SimpleRange<T>

","Copy","os::mm::address::VPNRange"],["
source§

impl<T> IntoIterator for SimpleRange<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
","IntoIterator","os::mm::address::VPNRange"],["
source§

impl<T> Clone for SimpleRange<T>

source§

fn clone(&self) -> SimpleRange<T>

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

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

Performs copy-assignment from source. Read more
","Clone","os::mm::address::VPNRange"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file