From 91597533b49e5357aa7e4d3742f6bf7d89304e2b Mon Sep 17 00:00:00 2001 From: wyfcyx Date: Sun, 30 Jun 2024 12:35:12 +0000 Subject: [PATCH] deploy: 162182fe1dad1ac2948d06a9eeff5c0400d2ff31 --- ch4/os/mm/address/struct.PhysAddr.html | 4 ++-- ch4/os/mm/address/struct.PhysPageNum.html | 2 +- ch4/os/mm/address/struct.VirtAddr.html | 2 +- ch4/os/mm/address/struct.VirtPageNum.html | 2 +- .../mm/frame_allocator/struct.FRAME_ALLOCATOR.html | 2 +- ch4/os/mm/memory_set/struct.KERNEL_SPACE.html | 2 +- ch4/os/mm/memory_set/struct.MapArea.html | 2 +- ch4/os/mm/memory_set/struct.MapPermission.html | 14 +++++++------- ch4/os/mm/page_table/struct.PTEFlags.html | 14 +++++++------- ch4/os/task/struct.TASK_MANAGER.html | 2 +- ch4/search-index.js | 2 +- ch4/src/os/mm/memory_set.rs.html | 2 +- ch4/trait.impl/lazy_static/trait.LazyStatic.js | 2 +- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/ch4/os/mm/address/struct.PhysAddr.html b/ch4/os/mm/address/struct.PhysAddr.html index c8c0584b..8c6486f6 100644 --- a/ch4/os/mm/address/struct.PhysAddr.html +++ b/ch4/os/mm/address/struct.PhysAddr.html @@ -1,8 +1,8 @@ PhysAddr in os::mm::address - Rust

Struct os::mm::address::PhysAddr

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

Definitions

-

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

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} +

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

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/ch4/os/mm/address/struct.PhysPageNum.html b/ch4/os/mm/address/struct.PhysPageNum.html index 971982c2..3c2801eb 100644 --- a/ch4/os/mm/address/struct.PhysPageNum.html +++ b/ch4/os/mm/address/struct.PhysPageNum.html @@ -1,5 +1,5 @@ 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]

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 +

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysPageNum

source

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

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/ch4/os/mm/address/struct.VirtAddr.html b/ch4/os/mm/address/struct.VirtAddr.html index e40be9b3..fc84eead 100644 --- a/ch4/os/mm/address/struct.VirtAddr.html +++ b/ch4/os/mm/address/struct.VirtAddr.html @@ -1,6 +1,6 @@ VirtAddr in os::mm::address - Rust

Struct os::mm::address::VirtAddr

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

virtual address

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtAddr

source

pub fn floor(&self) -> VirtPageNum

source

pub fn ceil(&self) -> VirtPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

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/ch4/os/mm/address/struct.VirtPageNum.html b/ch4/os/mm/address/struct.VirtPageNum.html index fb764ef0..2bcdb5b9 100644 --- a/ch4/os/mm/address/struct.VirtPageNum.html +++ b/ch4/os/mm/address/struct.VirtPageNum.html @@ -1,5 +1,5 @@ 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]

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 +

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

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

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/ch4/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch4/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html index d17fee1b..a56b1c5f 100644 --- a/ch4/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ b/ch4/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html @@ -2,7 +2,7 @@ __private_field: (), }
Expand description

frame allocator instance through lazy_static!

Fields§

§__private_field: ()

Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§

source

pub fn exclusive_access(&self) -> RefMut<'_, T>

Exclusive access inner data in UPSafeCell. Panic if the data has been borrowed.

-

Trait Implementations§

source§

impl Deref for FRAME_ALLOCATOR

§

type Target = UPSafeCell<StackFrameAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPSafeCell<StackFrameAllocator>

Dereferences the value.
source§

impl LazyStatic for FRAME_ALLOCATOR

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Deref for FRAME_ALLOCATOR

§

type Target = UPSafeCell<StackFrameAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPSafeCell<StackFrameAllocator>

Dereferences the value.
source§

impl LazyStatic for FRAME_ALLOCATOR

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/ch4/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch4/os/mm/memory_set/struct.KERNEL_SPACE.html index ad7bd6a7..e393c81c 100644 --- a/ch4/os/mm/memory_set/struct.KERNEL_SPACE.html +++ b/ch4/os/mm/memory_set/struct.KERNEL_SPACE.html @@ -1,7 +1,7 @@ KERNEL_SPACE in os::mm::memory_set - Rust

Struct os::mm::memory_set::KERNEL_SPACE

source ·
pub struct KERNEL_SPACE {
     __private_field: (),
 }
Expand description

a memory set instance through lazy_static! managing kernel space

-

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KERNEL_SPACE

§

type Target = Arc<UPSafeCell<MemorySet>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<UPSafeCell<MemorySet>>

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KERNEL_SPACE

§

type Target = Arc<UPSafeCell<MemorySet>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<UPSafeCell<MemorySet>>

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

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/ch4/os/mm/memory_set/struct.MapArea.html b/ch4/os/mm/memory_set/struct.MapArea.html index ce79e436..5baf89d5 100644 --- a/ch4/os/mm/memory_set/struct.MapArea.html +++ b/ch4/os/mm/memory_set/struct.MapArea.html @@ -9,7 +9,7 @@ end_va: VirtAddr, map_type: MapType, map_perm: MapPermission -) -> Self
source

pub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn map(&mut self, page_table: &mut PageTable)

source

pub fn unmap(&mut self, page_table: &mut PageTable)

source

pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)

source

pub fn append_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)

source

pub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])

data: start-aligned but maybe with shorter length +) -> Self

source

pub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn map(&mut self, page_table: &mut PageTable)

source

pub fn unmap(&mut self, page_table: &mut PageTable)

source

pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)

source

pub fn append_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)

source

pub fn copy_data(&mut self, page_table: &PageTable, data: &[u8])

data: start-aligned but maybe with shorter length assume that all frames were cleared before

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 diff --git a/ch4/os/mm/memory_set/struct.MapPermission.html b/ch4/os/mm/memory_set/struct.MapPermission.html index 7c2a9b6b..04954e22 100644 --- a/ch4/os/mm/memory_set/struct.MapPermission.html +++ b/ch4/os/mm/memory_set/struct.MapPermission.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 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.

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 +

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 @@ -76,8 +76,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 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 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/ch4/os/mm/page_table/struct.PTEFlags.html b/ch4/os/mm/page_table/struct.PTEFlags.html index a380dcee..046c7dd0 100644 --- a/ch4/os/mm/page_table/struct.PTEFlags.html +++ b/ch4/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.

+
§

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.

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

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,7 +76,7 @@ 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.

+
§

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 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 diff --git a/ch4/os/task/struct.TASK_MANAGER.html b/ch4/os/task/struct.TASK_MANAGER.html index ed901eb3..698b0f9b 100644 --- a/ch4/os/task/struct.TASK_MANAGER.html +++ b/ch4/os/task/struct.TASK_MANAGER.html @@ -13,7 +13,7 @@ But in ch4, we load apps statically, so the first task is a real app.

source

pub fn change_current_program_brk(&self, size: i32) -> Option<usize>

Change the current ‘Running’ task’s program break

source

fn run_next_task(&self)

Switch current Running task to the task we have found, or there is no Ready task and we can exit with all applications completed

-

Trait Implementations§

source§

impl Deref for TASK_MANAGER

§

type Target = TaskManager

The resulting type after dereferencing.
source§

fn deref(&self) -> &TaskManager

Dereferences the value.
source§

impl LazyStatic for TASK_MANAGER

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Deref for TASK_MANAGER

§

type Target = TaskManager

The resulting type after dereferencing.
source§

fn deref(&self) -> &TaskManager

Dereferences the value.
source§

impl LazyStatic for TASK_MANAGER

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/ch4/search-index.js b/ch4/search-index.js index b2a0ca0c..4e1b727f 100644 --- a/ch4/search-index.js +++ b/ch4/search-index.js @@ -1,5 +1,5 @@ var searchIndex = new Map(JSON.parse('[\ -["os",{"t":"CHCCCCCQQHCCCCCCSSSESSEESSSSSHFNNNNHNNNNHHHEEEEEEEEEECECCHCCEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNNNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNONNHNHHNNNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTTTTNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNHNNNNNNNNNNNNHHHECFNNNNONNNNNSSSSSCCHSHHHHHFFFFONNNNNNNHCOHHNHNNNNNNONNNHNHNOOHNHNOOHCCONNNNNNNNNFNNNNNOOONNNNHPPPFGONNNNNNNNNNNNONNONOOONONNNNNNSSHHHFCHHOOOHHOHHOHOFNNNNNOOONOONNNO","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","kernel_stack_position","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","panic","get_app_data","get_num_app","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTableEntry","PhysAddr","PhysPageNum","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","heap_allocator","init","memory_set","page_table","remap_test","translated_byte_buffer","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_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","append_to","append_to","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_bits","from_bits_truncate","from_bits_unchecked","from_elf","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","remap_test","remove","sbss_with_stack","sdata","set","shrink_to","shrink_to","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","translated_byte_buffer","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","union","unmap","writable","console_putchar","set_timer","shutdown","UPSafeCell","up","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_EXIT","SYSCALL_GET_TIME","SYSCALL_SBRK","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","syscall","FD_STDOUT","sys_write","sys_exit","sys_get_time","sys_sbrk","sys_yield","TASK_MANAGER","TaskContext","TaskManager","TaskManagerInner","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","change_current_program_brk","change_program_brk","context","current_task","current_trap_cx","current_user_token","deref","exit_current_and_run_next","find_next_task","from","from","from","get_current_token","get_current_trap_cx","inner","into","into","into","mark_current_exited","mark_current_exited","mark_current_suspended","mark_current_suspended","num_app","ra","run_first_task","run_first_task","run_next_task","run_next_task","s","sp","suspend_current_and_run_next","switch","task","tasks","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","__switch","Exited","Ready","Running","TaskControlBlock","TaskStatus","base_size","borrow","borrow","borrow_mut","borrow_mut","change_program_brk","clone","clone_into","eq","from","from","get_trap_cx","get_user_token","heap_bottom","into","into","memory_set","new","program_brk","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_into","try_into","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"],[30,"os::console"],[40,"os::lang_items"],[41,"os::loader"],[43,"os::mm"],[62,"os::mm::address"],[182,"os::mm::frame_allocator"],[231,"os::mm::heap_allocator"],[236,"os::mm::memory_set"],[368,"os::mm::page_table"],[466,"os::sbi"],[469,"os::sync"],[471,"os::sync::up"],[482,"os::syscall"],[490,"os::syscall::fs"],[492,"os::syscall::process"],[496,"os::task"],[550,"os::task::context"],[563,"os::task::switch"],[564,"os::task::task"],[598,"os::timer"],[603,"os::trap"],[618,"os::trap::context"],[634,"core::fmt"],[635,"core::result"],[636,"core::any"],[637,"core::panic::panic_info"],[638,"core::marker"],[639,"core::cmp"],[640,"core::clone"],[641,"core::option"],[642,"core::alloc::layout"],[643,"alloc::sync"],[644,"core::iter::traits::collect"],[645,"core::hash"],[646,"alloc::vec"],[647,"core::cell"]],"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,0,8,8,8,8,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,30,14,16,17,18,19,30,14,16,17,18,19,14,16,14,16,17,18,19,14,16,17,18,19,14,16,17,18,30,30,14,16,17,18,14,16,14,16,17,18,30,14,14,14,16,16,16,17,17,17,18,18,18,19,17,19,17,17,19,18,30,14,16,17,18,19,30,19,59,19,30,19,30,14,16,14,16,17,18,59,19,20,18,14,16,17,18,19,30,14,16,17,18,19,30,14,16,17,18,19,30,14,16,17,18,19,0,0,0,0,0,34,32,33,36,33,34,36,33,34,33,60,32,33,34,36,33,60,36,0,0,0,36,33,34,33,0,36,33,34,32,36,33,36,33,60,36,33,34,36,33,34,36,33,34,0,0,0,0,0,42,42,0,0,0,0,0,39,39,39,39,43,38,39,38,40,38,39,39,39,39,39,39,39,39,38,40,43,42,39,38,40,43,42,39,42,39,42,39,39,39,39,40,40,43,39,0,0,0,39,42,39,0,0,39,42,39,39,39,39,39,38,40,43,42,39,39,39,39,38,39,39,39,38,39,39,38,40,43,42,39,39,39,40,40,40,38,40,40,38,38,39,38,39,38,0,39,0,0,39,38,40,0,0,0,39,39,39,42,39,39,38,38,38,40,43,42,39,38,40,43,42,39,38,40,43,42,39,39,40,40,40,48,48,48,0,0,0,48,48,48,48,48,48,48,48,48,48,48,48,28,48,48,41,48,28,41,48,28,48,28,48,28,48,48,48,48,48,28,48,28,48,41,41,28,48,48,48,48,48,41,41,48,28,48,48,48,48,41,48,48,48,48,41,48,28,48,48,28,41,41,28,48,48,28,28,48,41,48,48,48,48,48,28,48,41,41,0,41,48,28,41,48,28,41,48,28,48,41,28,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,53,61,55,53,61,55,53,0,0,61,0,0,55,0,53,53,61,55,53,53,53,53,61,55,0,53,0,53,53,56,0,53,0,53,56,56,0,0,0,61,53,61,55,53,61,55,53,61,55,0,56,56,56,56,56,56,56,56,56,56,56,56,0,58,58,58,0,0,57,57,58,57,58,57,58,58,58,57,58,57,57,57,57,58,57,57,57,57,57,58,57,57,58,57,58,57,58,0,0,0,0,0,0,0,0,0,54,54,54,0,0,54,0,0,54,0,54,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54],"f":"`{{}b}```````{{}d}```````````````````{f{{h{ff}}}}`{ce{}{}}0{cc{}}1{jb}{c{{l{e}}}{}{}}0{cn{}}{{A`Ab}Ad}{Afd}{f{{Aj{Ah}}}}{{}f}``````````````;````````````````{AlAn}{B`An}::::::::::::{AlBb}{B`Bd}{AlAl}{B`B`}{BbBb}{BdBd}{{{Bf{c}}}{{Bf{c}}}{BhBjBlBnC`Cb}}{{ce}b{}{}}0000{{AlAl}Cd}{{B`B`}Cd}{{BbBb}Cd}{{BdBd}Cd}``{{AlAl}An}{{B`B`}An}{{BbBb}An}{{BdBd}An}?>{{AlCf}Ad}{{B`Cf}Ad}{{BbCf}Ad}{{BdCf}Ad}{cc{}}0{BbAl}{fAl}2{BdB`}{fB`}{fBb}{AlBb}66{B`Bd}{fBd}8{Bb{{Aj{Ah}}}}{{{Bf{c}}}c{BhBjBlBnC`}}{Bbc{}}{Bb{{Aj{Ch}}}}2{Bd{{Cj{f}}}}{ce{}{}}000000{{{Bf{c}}}e{BhBjBlBnC`}{}}``{{cc}{{Cl{c}}}{BhBjBlBnC`}}{{cc}{{Bf{c}}}{BhBjBlBnC`}}{{{Cl{c}}}{{Cn{e}}}{BhBjBlBnC`}{}}{Alf}{B`f}{{AlAl}{{Cn{Cd}}}}{{B`B`}{{Cn{Cd}}}}{{BbBb}{{Cn{Cd}}}}{{BdBd}{{Cn{Cd}}}}``{Bhb}{Bdb}<<<<<{c{{l{e}}}{}{}}00000000000{cn{}}00000``````{D`{{Cn{Bb}}}}{Db{{Cn{Bb}}}}{ce{}{}}00000``{{D`Bb}b}{{DbBb}b}{Dd{{Df{Db}}}}{Dhb}``{{DhCf}Ad}{{}{{Cn{Dh}}}}{{}b}{Bbb}{cc{}}00{{DbBbBb}b}3:::{{}D`}{BbDh}{{}Db}```{c{{l{e}}}{}{}}00000{cn{}}00``{Djd}99````````````{Dlb}{{}Dn}{{DlB`B`}An}{{E`EbBd}b}`{{DnDn}Dn}{{DnDn}b}10{DnAh}`21{ce{}{}}000000000{EdEd}{DnDn}{{ce}b{}{}}0{{DnDn}Cd}2{{DnDn}An}{{E`Eb{Aj{Ah}}}b}`{Ef{{Eh{{Df{Dl}}}}}}:```={{EdEd}An}3``{{Dnc}b{{El{}{{Ej{Dn}}}}}}{{EdCf}Ad}{{DnCf}Ad}0000{cc{}}0000{Ah{{Cn{Dn}}}}{AhDn}0{{{Aj{Ah}}}{{h{Dlff}}}}{cDn{{El{}{{Ej{Dn}}}}}}{{Dnc}bEn}{{DnDn}b}{{DlB`B`Dn}b}{{DnDn}Dn}?{ce{}{}}0000{DnAn}0{{E`Eb}b}{{E`EbBd}b}`{Dlb}`{{B`B`EdDn}E`}{{}Dl}0{DnDn}`{{DnDn}{{Cn{Cd}}}}{{DlE`{Cn{{Aj{Ah}}}}}b}{{}b}=``{{DnDnAn}b}{{DlB`B`}An}9```=?=<````````````{{}F`}{{F`F`}F`}{{F`F`}b}10{F`Ah}``21{ce{}{}}00000{F`F`}{ChCh}{{ce}b{}{}}0{{F`F`}Cd}3{{F`F`}An}89{{}Ch}1{ChAn}{{F`c}b{{El{}{{Ej{F`}}}}}}{{EbBd}{{Cn{Ch}}}}0{ChF`}{{F`Cf}Ad}0000`{cc{}}00{Ah{{Cn{F`}}}}{AhF`}0{cF`{{El{}{{Ej{F`}}}}}}{fEb}{{F`c}bEn}{{F`F`}b}{{F`F`}F`}>{ce{}{}}00{F`An}0>{{EbBdBbF`}b}{{}Eb}{{BbF`}Ch}{F`F`}{{F`F`}{{Cn{Cd}}}}{ChBb}{ChAn}:`{{F`F`An}b}:;:99;{Ebf}{{EbBd}{{Cn{Ch}}}}{{fAhf}{{Fb{{Aj{Ah}}}}}}{c{{l{e}}}{}{}}00000{cn{}}00?{{EbBd}b}7{fb}0{And}```{ce{}{}}0{{{Df{c}}}{{Fd{c}}}{}}{cc{}}`2{c{{Df{c}}}{}}887```````{{f{Cj{f}}}Ff}`{{fAhf}Ff}{Fhd}{{}Ff}{FhFf}1`````888888{{FjFh}{{Cn{f}}}}{Fh{{Cn{f}}}}``{{}Fl}{{}f}{FnFj}{{}b}{Fj{{Cn{f}}}}==={Fjf}{FjFl}`{ce{}{}}004{Fjb}50``5{Fjd}61``6```{c{{l{e}}}{}{}}00000{cn{}}00`44{cc{}}{fG`}6```332{{}G`}```````7777{{GbFh}{{Cn{f}}}}{GdGd}{{ce}b{}{}}{{GdGd}An}66{GbFl}{Gbf}`==`{{{Aj{Ah}}f}Gb}```>`;;;;::``{{}f}0{{}b}``00```00`{{}d}0`0``{{fffff}Fl}{ce{}{}}0>0```{{Flf}b}``{c{{l{e}}}{}{}}0{cn{}}`","D":"AOd","p":[[1,"unit"],[1,"never"],[1,"usize"],[1,"tuple"],[5,"Arguments",634],[6,"Result",635],[5,"TypeId",636],[5,"Stdout",30],[1,"str"],[8,"Result",634],[5,"PanicInfo",637],[1,"u8"],[1,"slice"],[5,"PhysAddr",62],[1,"bool"],[5,"VirtAddr",62],[5,"PhysPageNum",62],[5,"VirtPageNum",62],[5,"SimpleRange",62],[10,"StepByOne",62],[10,"Copy",638],[10,"PartialEq",639],[10,"PartialOrd",639],[10,"Debug",634],[10,"Clone",640],[6,"Ordering",639],[5,"Formatter",634],[5,"PageTableEntry",368],[1,"array"],[5,"SimpleRangeIterator",62],[6,"Option",641],[10,"FrameAllocator",182],[5,"StackFrameAllocator",182],[5,"FRAME_ALLOCATOR",182],[5,"UPSafeCell",471],[5,"FrameTracker",182],[5,"Layout",642],[5,"MemorySet",236],[5,"MapPermission",236],[5,"MapArea",236],[5,"PageTable",368],[6,"MapType",236],[5,"KERNEL_SPACE",236],[5,"Arc",643],[17,"Item"],[10,"IntoIterator",644],[10,"Hasher",645],[5,"PTEFlags",368],[5,"Vec",646],[5,"RefMut",647],[1,"isize"],[1,"i32"],[5,"TaskManager",496],[5,"TrapContext",618],[5,"TASK_MANAGER",496],[5,"TaskContext",550],[5,"TaskControlBlock",564],[6,"TaskStatus",564],[8,"VPNRange",62],[8,"FrameAllocatorImpl",182],[5,"TaskManagerInner",496]],"r":[[19,16],[22,16],[23,16],[43,182],[44,236],[45,236],[46,236],[47,236],[48,368],[49,62],[50,62],[51,62],[52,62],[54,182],[60,236],[61,368],[469,471],[497,550],[603,618]],"b":[[118,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[119,"impl-From%3Cusize%3E-for-PhysAddr"],[121,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[122,"impl-From%3Cusize%3E-for-VirtAddr"],[123,"impl-From%3Cusize%3E-for-PhysPageNum"],[124,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[127,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[128,"impl-From%3Cusize%3E-for-VirtPageNum"],[292,"impl-LowerHex-for-MapPermission"],[293,"impl-UpperHex-for-MapPermission"],[294,"impl-Debug-for-MapPermission"],[295,"impl-Octal-for-MapPermission"],[296,"impl-Binary-for-MapPermission"],[411,"impl-UpperHex-for-PTEFlags"],[412,"impl-Debug-for-PTEFlags"],[413,"impl-Octal-for-PTEFlags"],[414,"impl-Binary-for-PTEFlags"],[415,"impl-LowerHex-for-PTEFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIABQwARAAwAHwACACQABAAsAAkANwAAAD0AAQBAAAAARQABAEgAAABLACkAdwABAHoAAwCAAAEAgwAFAI8AJwC4AAEAvAARANQAAADZAA4A6wAAAO0AAQD0AAUA+wACAAMBAAAGAQ4AGAEBABsBAgAfAQoAMwEBAEABAgBEAQIASQEDAE4BAQBRAQQAWQEBAFwBEABuAQUAdwEEAIIBAQCGAQoAlQEMAKgBAACqAQAAswEDALgBAgC8AQAAwQEBAMQBAQDHAQgA0QEBANYBAADZAQEA4AEHAOsBAAD1AQYAAgIAAB4CCAAoAgEAMAICADUCAgA6AgQAQAICAEUCAgBKAg8AYwIBAG0CAQB3AgIA"}]\ +["os",{"t":"CHCCCCCQQHCCCCCCSSSESSEESSSSSHFNNNNHNNNNHHHEEEEEEEEEECECCHCCEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNNNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNONNHNHHNNNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTTTTNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNHNNNNNNNNNNNNHHHECFNNNNONNNNNSSSSSCCHSHHHHHFFFFONNNNNNNHCOHHNHNNNNNNONNNHNHNOOHNHNOOHCCONNNNNNNNNFNNNNNOOONNNNHPPPFGONNNNNNNNNNNNONNONOOONONNNNNNSSHHHFCHHOOOHHOHHOHOFNNNNNOOONOONNNO","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","kernel_stack_position","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","panic","get_app_data","get_num_app","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTableEntry","PhysAddr","PhysPageNum","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","heap_allocator","init","memory_set","page_table","remap_test","translated_byte_buffer","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_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","append_to","append_to","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_bits","from_bits_truncate","from_bits_unchecked","from_elf","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","remap_test","remove","sbss_with_stack","sdata","set","shrink_to","shrink_to","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","translated_byte_buffer","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","union","unmap","writable","console_putchar","set_timer","shutdown","UPSafeCell","up","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_EXIT","SYSCALL_GET_TIME","SYSCALL_SBRK","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","syscall","FD_STDOUT","sys_write","sys_exit","sys_get_time","sys_sbrk","sys_yield","TASK_MANAGER","TaskContext","TaskManager","TaskManagerInner","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","change_current_program_brk","change_program_brk","context","current_task","current_trap_cx","current_user_token","deref","exit_current_and_run_next","find_next_task","from","from","from","get_current_token","get_current_trap_cx","inner","into","into","into","mark_current_exited","mark_current_exited","mark_current_suspended","mark_current_suspended","num_app","ra","run_first_task","run_first_task","run_next_task","run_next_task","s","sp","suspend_current_and_run_next","switch","task","tasks","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","__switch","Exited","Ready","Running","TaskControlBlock","TaskStatus","base_size","borrow","borrow","borrow_mut","borrow_mut","change_program_brk","clone","clone_into","eq","from","from","get_trap_cx","get_user_token","heap_bottom","into","into","memory_set","new","program_brk","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_into","try_into","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"],[30,"os::console"],[40,"os::lang_items"],[41,"os::loader"],[43,"os::mm"],[62,"os::mm::address"],[182,"os::mm::frame_allocator"],[231,"os::mm::heap_allocator"],[236,"os::mm::memory_set"],[368,"os::mm::page_table"],[466,"os::sbi"],[469,"os::sync"],[471,"os::sync::up"],[482,"os::syscall"],[490,"os::syscall::fs"],[492,"os::syscall::process"],[496,"os::task"],[550,"os::task::context"],[563,"os::task::switch"],[564,"os::task::task"],[598,"os::timer"],[603,"os::trap"],[618,"os::trap::context"],[634,"core::fmt"],[635,"core::result"],[636,"core::any"],[637,"core::panic::panic_info"],[638,"core::marker"],[639,"core::cmp"],[640,"core::clone"],[641,"core::option"],[642,"core::alloc::layout"],[643,"alloc::sync"],[644,"core::iter::traits::collect"],[645,"core::hash"],[646,"alloc::vec"],[647,"core::cell"]],"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,0,8,8,8,8,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,30,14,16,17,18,19,30,14,16,17,18,19,14,16,14,16,17,18,19,14,16,17,18,19,14,16,17,18,30,30,14,16,17,18,14,16,14,16,17,18,30,14,14,14,16,16,16,17,17,17,18,18,18,19,17,19,17,17,19,18,30,14,16,17,18,19,30,19,59,19,30,19,30,14,16,14,16,17,18,59,19,20,18,14,16,17,18,19,30,14,16,17,18,19,30,14,16,17,18,19,30,14,16,17,18,19,0,0,0,0,0,34,32,33,36,33,34,36,33,34,33,60,32,33,34,36,33,60,36,0,0,0,36,33,34,33,0,36,33,34,32,36,33,36,33,60,36,33,34,36,33,34,36,33,34,0,0,0,0,0,42,42,0,0,0,0,0,39,39,39,39,43,38,39,38,40,38,39,39,39,39,39,39,39,39,38,40,43,42,39,38,40,43,42,39,42,39,42,39,39,39,39,40,40,43,39,0,0,0,39,42,39,0,0,39,42,39,39,39,39,39,38,40,43,42,39,39,39,39,38,39,39,39,38,39,39,38,40,43,42,39,39,39,40,40,40,38,40,40,38,38,39,38,39,38,0,39,0,0,39,38,40,0,0,0,39,39,39,42,39,39,38,38,38,40,43,42,39,38,40,43,42,39,38,40,43,42,39,39,40,40,40,48,48,48,0,0,0,48,48,48,48,48,48,48,48,48,48,48,48,28,48,48,41,48,28,41,48,28,48,28,48,28,48,48,48,48,48,28,48,28,48,41,41,28,48,48,48,48,48,41,41,48,28,48,48,48,48,41,48,48,48,48,41,48,28,48,48,28,41,41,28,48,48,28,28,48,41,48,48,48,48,48,28,48,41,41,0,41,48,28,41,48,28,41,48,28,48,41,28,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,53,61,55,53,61,55,53,0,0,61,0,0,55,0,53,53,61,55,53,53,53,53,61,55,0,53,0,53,53,56,0,53,0,53,56,56,0,0,0,61,53,61,55,53,61,55,53,61,55,0,56,56,56,56,56,56,56,56,56,56,56,56,0,58,58,58,0,0,57,57,58,57,58,57,58,58,58,57,58,57,57,57,57,58,57,57,57,57,57,58,57,57,58,57,58,57,58,0,0,0,0,0,0,0,0,0,54,54,54,0,0,54,0,0,54,0,54,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54],"f":"`{{}b}```````{{}d}```````````````````{f{{h{ff}}}}`{ce{}{}}0{cc{}}1{jb}{c{{l{e}}}{}{}}0{cn{}}{{A`Ab}Ad}{Afd}{f{{Aj{Ah}}}}{{}f}``````````````;````````````````{AlAn}{B`An}::::::::::::{AlBb}{B`Bd}{AlAl}{B`B`}{BbBb}{BdBd}{{{Bf{c}}}{{Bf{c}}}{BhBjBlBnC`Cb}}{{ce}b{}{}}0000{{AlAl}Cd}{{B`B`}Cd}{{BbBb}Cd}{{BdBd}Cd}``{{AlAl}An}{{B`B`}An}{{BbBb}An}{{BdBd}An}?>{{AlCf}Ad}{{B`Cf}Ad}{{BbCf}Ad}{{BdCf}Ad}{cc{}}0{fAl}{BbAl}{BdB`}3{fB`}{AlBb}{fBb}6{fBd}7{B`Bd}8{Bb{{Aj{Ah}}}}{{{Bf{c}}}c{BhBjBlBnC`}}{Bbc{}}{Bb{{Aj{Ch}}}}2{Bd{{Cj{f}}}}{ce{}{}}000000{{{Bf{c}}}e{BhBjBlBnC`}{}}``{{cc}{{Cl{c}}}{BhBjBlBnC`}}{{cc}{{Bf{c}}}{BhBjBlBnC`}}{{{Cl{c}}}{{Cn{e}}}{BhBjBlBnC`}{}}{Alf}{B`f}{{AlAl}{{Cn{Cd}}}}{{B`B`}{{Cn{Cd}}}}{{BbBb}{{Cn{Cd}}}}{{BdBd}{{Cn{Cd}}}}``{Bhb}{Bdb}<<<<<{c{{l{e}}}{}{}}00000000000{cn{}}00000``````{D`{{Cn{Bb}}}}{Db{{Cn{Bb}}}}{ce{}{}}00000``{{D`Bb}b}{{DbBb}b}{Dd{{Df{Db}}}}{Dhb}``{{DhCf}Ad}{{}{{Cn{Dh}}}}{{}b}{Bbb}{cc{}}00{{DbBbBb}b}3:::{{}D`}{BbDh}{{}Db}```{c{{l{e}}}{}{}}00000{cn{}}00``{Djd}99````````````{Dlb}{{}Dn}{{DlB`B`}An}{{E`EbBd}b}`{{DnDn}Dn}{{DnDn}b}10{DnAh}`21{ce{}{}}000000000{EdEd}{DnDn}{{ce}b{}{}}0{{DnDn}Cd}2{{DnDn}An}{{E`Eb{Aj{Ah}}}b}`{Ef{{Eh{{Df{Dl}}}}}}:```={{EdEd}An}3``{{Dnc}b{{El{}{{Ej{Dn}}}}}}{{EdCf}Ad}{{DnCf}Ad}0000{cc{}}0000{Ah{{Cn{Dn}}}}{AhDn}0{{{Aj{Ah}}}{{h{Dlff}}}}{cDn{{El{}{{Ej{Dn}}}}}}{{Dnc}bEn}{{DnDn}b}{{DlB`B`Dn}b}{{DnDn}Dn}?{ce{}{}}0000{DnAn}0{{E`Eb}b}{{E`EbBd}b}`{Dlb}`{{B`B`EdDn}E`}{{}Dl}0{DnDn}`{{DnDn}{{Cn{Cd}}}}{{DlE`{Cn{{Aj{Ah}}}}}b}{{}b}=``{{DnDnAn}b}{{DlB`B`}An}9```=?=<````````````{{}F`}{{F`F`}F`}{{F`F`}b}10{F`Ah}``21{ce{}{}}00000{F`F`}{ChCh}{{ce}b{}{}}0{{F`F`}Cd}3{{F`F`}An}89{{}Ch}1{ChAn}{{F`c}b{{El{}{{Ej{F`}}}}}}{{EbBd}{{Cn{Ch}}}}0{ChF`}{{F`Cf}Ad}0000`{cc{}}00{Ah{{Cn{F`}}}}{AhF`}0{cF`{{El{}{{Ej{F`}}}}}}{fEb}{{F`c}bEn}{{F`F`}b}{{F`F`}F`}>{ce{}{}}00{F`An}0>{{EbBdBbF`}b}{{}Eb}{{BbF`}Ch}{F`F`}{{F`F`}{{Cn{Cd}}}}{ChBb}{ChAn}:`{{F`F`An}b}:;:99;{Ebf}{{EbBd}{{Cn{Ch}}}}{{fAhf}{{Fb{{Aj{Ah}}}}}}{c{{l{e}}}{}{}}00000{cn{}}00?{{EbBd}b}7{fb}0{And}```{ce{}{}}0{{{Df{c}}}{{Fd{c}}}{}}{cc{}}`2{c{{Df{c}}}{}}887```````{{f{Cj{f}}}Ff}`{{fAhf}Ff}{Fhd}{{}Ff}{FhFf}1`````888888{{FjFh}{{Cn{f}}}}{Fh{{Cn{f}}}}``{{}Fl}{{}f}{FnFj}{{}b}{Fj{{Cn{f}}}}==={Fjf}{FjFl}`{ce{}{}}004{Fjb}50``5{Fjd}61``6```{c{{l{e}}}{}{}}00000{cn{}}00`44{cc{}}{fG`}6```332{{}G`}```````7777{{GbFh}{{Cn{f}}}}{GdGd}{{ce}b{}{}}{{GdGd}An}66{GbFl}{Gbf}`==`{{{Aj{Ah}}f}Gb}```>`;;;;::``{{}f}0{{}b}``00```00`{{}d}0`0``{{fffff}Fl}{ce{}{}}0>0```{{Flf}b}``{c{{l{e}}}{}{}}0{cn{}}`","D":"AOd","p":[[1,"unit"],[1,"never"],[1,"usize"],[1,"tuple"],[5,"Arguments",634],[6,"Result",635],[5,"TypeId",636],[5,"Stdout",30],[1,"str"],[8,"Result",634],[5,"PanicInfo",637],[1,"u8"],[1,"slice"],[5,"PhysAddr",62],[1,"bool"],[5,"VirtAddr",62],[5,"PhysPageNum",62],[5,"VirtPageNum",62],[5,"SimpleRange",62],[10,"StepByOne",62],[10,"Copy",638],[10,"PartialEq",639],[10,"PartialOrd",639],[10,"Debug",634],[10,"Clone",640],[6,"Ordering",639],[5,"Formatter",634],[5,"PageTableEntry",368],[1,"array"],[5,"SimpleRangeIterator",62],[6,"Option",641],[10,"FrameAllocator",182],[5,"StackFrameAllocator",182],[5,"FRAME_ALLOCATOR",182],[5,"UPSafeCell",471],[5,"FrameTracker",182],[5,"Layout",642],[5,"MemorySet",236],[5,"MapPermission",236],[5,"MapArea",236],[5,"PageTable",368],[6,"MapType",236],[5,"KERNEL_SPACE",236],[5,"Arc",643],[17,"Item"],[10,"IntoIterator",644],[10,"Hasher",645],[5,"PTEFlags",368],[5,"Vec",646],[5,"RefMut",647],[1,"isize"],[1,"i32"],[5,"TaskManager",496],[5,"TrapContext",618],[5,"TASK_MANAGER",496],[5,"TaskContext",550],[5,"TaskControlBlock",564],[6,"TaskStatus",564],[8,"VPNRange",62],[8,"FrameAllocatorImpl",182],[5,"TaskManagerInner",496]],"r":[[19,16],[22,16],[23,16],[43,182],[44,236],[45,236],[46,236],[47,236],[48,368],[49,62],[50,62],[51,62],[52,62],[54,182],[60,236],[61,368],[469,471],[497,550],[603,618]],"b":[[118,"impl-From%3Cusize%3E-for-PhysAddr"],[119,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[120,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[122,"impl-From%3Cusize%3E-for-VirtAddr"],[123,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[124,"impl-From%3Cusize%3E-for-PhysPageNum"],[126,"impl-From%3Cusize%3E-for-VirtPageNum"],[128,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[292,"impl-Octal-for-MapPermission"],[293,"impl-Binary-for-MapPermission"],[294,"impl-Debug-for-MapPermission"],[295,"impl-UpperHex-for-MapPermission"],[296,"impl-LowerHex-for-MapPermission"],[411,"impl-LowerHex-for-PTEFlags"],[412,"impl-Debug-for-PTEFlags"],[413,"impl-UpperHex-for-PTEFlags"],[414,"impl-Octal-for-PTEFlags"],[415,"impl-Binary-for-PTEFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIABRAARAAwAHwACACQABAAsAAkANwAAAD0AAQBAAAAARQABAEgAAABLACkAdwACAHsAAgB/AAAAgQAAAIMABQCPACcAuAABALwAEQDUAAAA2QAOAOsAAADtAAEA9AAFAPsAAgADAQAABgEOABgBAQAbAQIAHwEKADMBAQBAAQIARAECAEkBAwBOAQEAUQEEAFkBAQBcARAAbgEFAHcBBACCAQEAhgEKAJUBDACoAQAAqgEAALMBAwC4AQIAvAEAAMEBAQDEAQEAxwEIANEBAQDWAQAA2QEBAOABBwDrAQAA9QEGAAICAAAeAggAKAIBADACAgA1AgIAOgIEAEACAgBFAgIASgIPAGMCAQBtAgEAdwICAA=="}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/ch4/src/os/mm/memory_set.rs.html b/ch4/src/os/mm/memory_set.rs.html index 931488d4..fb7c5e88 100644 --- a/ch4/src/os/mm/memory_set.rs.html +++ b/ch4/src/os/mm/memory_set.rs.html @@ -746,7 +746,7 @@ } /// data: start-aligned but maybe with shorter length /// assume that all frames were cleared before - pub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8]) { + pub fn copy_data(&mut self, page_table: &PageTable, data: &[u8]) { assert_eq!(self.map_type, MapType::Framed); let mut start: usize = 0; let mut current_vpn = self.vpn_range.get_start(); diff --git a/ch4/trait.impl/lazy_static/trait.LazyStatic.js b/ch4/trait.impl/lazy_static/trait.LazyStatic.js index c7ce7845..cb99aff8 100644 --- a/ch4/trait.impl/lazy_static/trait.LazyStatic.js +++ b/ch4/trait.impl/lazy_static/trait.LazyStatic.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"os":[["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for TASK_MANAGER"]] +"os":[["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for TASK_MANAGER"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file