pub struct PhysAddr(pub usize);
Expand description
Definitions
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
impl PhysAddr
pub fn floor(&self) -> PhysPageNum
pub fn ceil(&self) -> PhysPageNum
pub fn page_offset(&self) -> usize
pub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
impl PhysAddr
pub fn floor(&self) -> PhysPageNum
pub fn ceil(&self) -> PhysPageNum
pub fn page_offset(&self) -> usize
pub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
source§impl From<usize> for PhysAddr
impl From<usize> for PhysAddr
T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} T -> usize: T.0 usize -> T: usize.into()
-source§impl Ord for PhysAddr
impl Ord for PhysAddr
source§impl Ord for PhysAddr
impl Ord for PhysAddr
source§impl PartialEq for PhysAddr
impl PartialEq for PhysAddr
source§fn eq(&self, other: &PhysAddr) -> bool
fn eq(&self, other: &PhysAddr) -> bool
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 @@
Struct os::mm::address::PhysPageNum
source · pub struct PhysPageNum(pub usize);
Expand description
physical page number
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
impl PhysPageNum
pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
pub fn get_bytes_array(&self) -> &'static mut [u8]
pub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl Clone for PhysPageNum
impl Clone for PhysPageNum
source§fn clone(&self) -> PhysPageNum
fn clone(&self) -> PhysPageNum
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PhysPageNum
impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
source§impl From<PhysPageNum> for usize
impl From<PhysPageNum> for usize
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
source§impl From<usize> for PhysPageNum
impl From<usize> for PhysPageNum
source§impl Ord for PhysPageNum
impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
fn cmp(&self, other: &PhysPageNum) -> Ordering
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
impl PhysPageNum
pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
pub fn get_bytes_array(&self) -> &'static mut [u8]
pub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl Clone for PhysPageNum
impl Clone for PhysPageNum
source§fn clone(&self) -> PhysPageNum
fn clone(&self) -> PhysPageNum
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PhysPageNum
impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
source§impl From<PhysPageNum> for usize
impl From<PhysPageNum> for usize
source§fn from(v: PhysPageNum) -> Self
fn from(v: PhysPageNum) -> Self
source§impl From<usize> for PhysPageNum
impl From<usize> for PhysPageNum
source§impl Ord for PhysPageNum
impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for PhysPageNum
impl PartialEq for PhysPageNum
source§fn eq(&self, other: &PhysPageNum) -> bool
fn eq(&self, other: &PhysPageNum) -> bool
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 @@
pub struct VirtAddr(pub usize);
Expand description
virtual address
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
impl VirtAddr
pub fn floor(&self) -> VirtPageNum
pub fn ceil(&self) -> VirtPageNum
pub fn page_offset(&self) -> usize
pub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl Ord for VirtAddr
impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl Ord for VirtAddr
impl Ord for VirtAddr
source§impl PartialEq for VirtAddr
impl PartialEq for VirtAddr
source§fn eq(&self, other: &VirtAddr) -> bool
fn eq(&self, other: &VirtAddr) -> bool
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 @@
Struct os::mm::address::VirtPageNum
source · pub struct VirtPageNum(pub usize);
Expand description
virtual page number
-Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
fn clone(&self) -> VirtPageNum
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for VirtPageNum
impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl From<VirtPageNum> for usize
impl From<VirtPageNum> for usize
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl From<usize> for VirtPageNum
impl From<usize> for VirtPageNum
source§impl Ord for VirtPageNum
impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
fn cmp(&self, other: &VirtPageNum) -> Ordering
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
fn clone(&self) -> VirtPageNum
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for VirtPageNum
impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl From<VirtPageNum> for usize
impl From<VirtPageNum> for usize
source§fn from(v: VirtPageNum) -> Self
fn from(v: VirtPageNum) -> Self
source§impl From<usize> for VirtPageNum
impl From<usize> for VirtPageNum
source§impl Ord for VirtPageNum
impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for VirtPageNum
impl PartialEq for VirtPageNum
source§fn eq(&self, other: &VirtPageNum) -> bool
fn eq(&self, other: &VirtPageNum) -> bool
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>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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
impl Deref for FRAME_ALLOCATOR
§type Target = UPSafeCell<StackFrameAllocator>
type Target = UPSafeCell<StackFrameAllocator>
source§fn deref(&self) -> &UPSafeCell<StackFrameAllocator>
fn deref(&self) -> &UPSafeCell<StackFrameAllocator>
impl LazyStatic for FRAME_ALLOCATOR
Auto Trait Implementations§
impl Freeze for FRAME_ALLOCATOR
impl RefUnwindSafe for FRAME_ALLOCATOR
impl Send for FRAME_ALLOCATOR
impl Sync for FRAME_ALLOCATOR
impl Unpin for FRAME_ALLOCATOR
impl UnwindSafe for FRAME_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for FRAME_ALLOCATOR
impl Deref for FRAME_ALLOCATOR
§type Target = UPSafeCell<StackFrameAllocator>
type Target = UPSafeCell<StackFrameAllocator>
source§fn deref(&self) -> &UPSafeCell<StackFrameAllocator>
fn deref(&self) -> &UPSafeCell<StackFrameAllocator>
impl LazyStatic for FRAME_ALLOCATOR
Auto Trait Implementations§
impl Freeze for FRAME_ALLOCATOR
impl RefUnwindSafe for FRAME_ALLOCATOR
impl Send for FRAME_ALLOCATOR
impl Sync for FRAME_ALLOCATOR
impl Unpin for FRAME_ALLOCATOR
impl UnwindSafe for FRAME_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> From<T> for T
impl<T> From<T> for T
source§fn from(t: T) -> T
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 @@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
impl Deref for KERNEL_SPACE
impl LazyStatic for KERNEL_SPACE
Auto Trait Implementations§
impl Freeze for KERNEL_SPACE
impl RefUnwindSafe for KERNEL_SPACE
impl Send for KERNEL_SPACE
impl Sync for KERNEL_SPACE
impl Unpin for KERNEL_SPACE
impl UnwindSafe for KERNEL_SPACE
Blanket Implementations§
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
impl Deref for KERNEL_SPACE
impl LazyStatic for KERNEL_SPACE
Auto Trait Implementations§
impl Freeze for KERNEL_SPACE
impl RefUnwindSafe for KERNEL_SPACE
impl Send for KERNEL_SPACE
impl Sync for KERNEL_SPACE
impl Unpin for KERNEL_SPACE
impl UnwindSafe for KERNEL_SPACE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> From<T> for T
impl<T> From<T> for T
source§fn from(t: T) -> T
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 -) -> Selfpub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
pub fn map(&mut self, page_table: &mut PageTable)
pub fn unmap(&mut self, page_table: &mut PageTable)
pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)
pub fn append_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
pub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfpub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
pub fn map(&mut self, page_table: &mut PageTable)
pub fn unmap(&mut self, page_table: &mut PageTable)
pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)
pub fn append_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum)
Auto Trait Implementations§
impl Freeze for MapArea
impl RefUnwindSafe for MapArea
impl Send for MapArea
impl Sync for MapArea
impl Unpin for MapArea
impl UnwindSafe for MapArea
Blanket Implementations§
source§impl<T> Borrow<T> for Twhere
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
.
-
impl<T> Borrow<T> for Twhere
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
.
-
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
impl Binary for MapPermission
source§impl BitAnd for MapPermission
impl BitAnd for MapPermission
source§impl BitAndAssign for MapPermission
impl BitAndAssign for MapPermission
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl Binary for MapPermission
impl Binary for MapPermission
source§impl BitAnd for MapPermission
impl BitAnd for MapPermission
source§impl BitAndAssign for MapPermission
impl BitAndAssign for MapPermission
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for MapPermission
impl BitOr for MapPermission
source§fn bitor(self, other: MapPermission) -> Self
fn bitor(self, other: MapPermission) -> Self
Returns the union of the two sets of flags.
§type Output = MapPermission
type Output = MapPermission
|
operator.source§impl BitOrAssign for MapPermission
impl BitOrAssign for MapPermission
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for MapPermission
impl BitXor for MapPermission
source§impl BitXorAssign for MapPermission
impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for MapPermission
impl Clone for MapPermission
source§fn clone(&self) -> MapPermission
fn clone(&self) -> MapPermission
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MapPermission
impl Debug for MapPermission
source§impl Extend<MapPermission> for MapPermission
impl Extend<MapPermission> for MapPermission
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl FromIterator<MapPermission> for MapPermission
impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Hash for MapPermission
impl Hash for MapPermission
source§impl Clone for MapPermission
impl Clone for MapPermission
source§fn clone(&self) -> MapPermission
fn clone(&self) -> MapPermission
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MapPermission
impl Debug for MapPermission
source§impl Extend<MapPermission> for MapPermission
impl Extend<MapPermission> for MapPermission
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl FromIterator<MapPermission> for MapPermission
impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Hash for MapPermission
impl Hash for MapPermission
source§impl LowerHex for MapPermission
impl LowerHex for MapPermission
source§impl Not for MapPermission
impl Not for MapPermission
source§impl Octal for MapPermission
impl Octal for MapPermission
source§impl Ord for MapPermission
impl Ord for MapPermission
source§impl LowerHex for MapPermission
impl LowerHex for MapPermission
source§impl Not for MapPermission
impl Not for MapPermission
source§impl Octal for MapPermission
impl Octal for MapPermission
source§impl Ord for MapPermission
impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for MapPermission
impl PartialEq for MapPermission
source§fn eq(&self, other: &MapPermission) -> bool
fn eq(&self, other: &MapPermission) -> bool
self
and other
values to be equal, and is used
@@ -76,8 +76,8 @@ by ==
.source§impl PartialOrd for MapPermission
impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl Sub for MapPermission
impl Sub for MapPermission
source§impl SubAssign for MapPermission
impl SubAssign for MapPermission
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for MapPermission
impl UpperHex for MapPermission
impl Copy for MapPermission
impl Eq for MapPermission
impl StructuralPartialEq for MapPermission
Auto Trait Implementations§
impl Freeze for MapPermission
impl RefUnwindSafe for MapPermission
impl Send for MapPermission
impl Sync for MapPermission
impl Unpin for MapPermission
impl UnwindSafe for MapPermission
Blanket Implementations§
source§impl SubAssign for MapPermission
impl SubAssign for MapPermission
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
impl UpperHex for MapPermission
impl Copy for MapPermission
impl Eq for MapPermission
impl StructuralPartialEq for MapPermission
Auto Trait Implementations§
impl Freeze for MapPermission
impl RefUnwindSafe for MapPermission
impl Send for MapPermission
impl Sync for MapPermission
impl Unpin for MapPermission
impl UnwindSafe for MapPermission
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> From<T> for T
impl<T> From<T> for T
source§fn from(t: T) -> T
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 inself
, 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 BitAndAssign for PTEFlags
impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Extend<PTEFlags> for PTEFlags
impl Extend<PTEFlags> for PTEFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl FromIterator<PTEFlags> for PTEFlags
impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Extend<PTEFlags> for PTEFlags
impl Extend<PTEFlags> for PTEFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl FromIterator<PTEFlags> for PTEFlags
impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Ord for PTEFlags
impl Ord for PTEFlags
source§impl PartialOrd for PTEFlags
impl PartialOrd for PTEFlags
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl SubAssign for PTEFlags
impl SubAssign for PTEFlags
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
impl Copy for PTEFlags
impl Eq for PTEFlags
impl StructuralPartialEq for PTEFlags
Auto Trait Implementations§
impl Freeze for PTEFlags
impl RefUnwindSafe for PTEFlags
impl Send for PTEFlags
impl Sync for PTEFlags
impl Unpin for PTEFlags
impl UnwindSafe for PTEFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
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.
impl<T> BorrowMut<T> for Twhere
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.
sourcepub fn change_current_program_brk(&self, size: i32) -> Option<usize>
pub fn change_current_program_brk(&self, size: i32) -> Option<usize>
Change the current ‘Running’ task’s program break
sourcefn run_next_task(&self)
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
impl Deref for TASK_MANAGER
§type Target = TaskManager
type Target = TaskManager
source§fn deref(&self) -> &TaskManager
fn deref(&self) -> &TaskManager
impl LazyStatic for TASK_MANAGER
Auto Trait Implementations§
impl Freeze for TASK_MANAGER
impl RefUnwindSafe for TASK_MANAGER
impl Send for TASK_MANAGER
impl Sync for TASK_MANAGER
impl Unpin for TASK_MANAGER
impl UnwindSafe for TASK_MANAGER
Blanket Implementations§
Trait Implementations§
source§impl Deref for TASK_MANAGER
impl Deref for TASK_MANAGER
§type Target = TaskManager
type Target = TaskManager
source§fn deref(&self) -> &TaskManager
fn deref(&self) -> &TaskManager
impl LazyStatic for TASK_MANAGER
Auto Trait Implementations§
impl Freeze for TASK_MANAGER
impl RefUnwindSafe for TASK_MANAGER
impl Send for TASK_MANAGER
impl Sync for TASK_MANAGER
impl Unpin for TASK_MANAGER
impl UnwindSafe for TASK_MANAGER
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> From<T> for T
impl<T> From<T> for T
source§fn from(t: T) -> T
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```=?=<{Dlf}{{DlBd}{{Cn{Ch}}}}{c{{l{e}}}{}{}}000000000{cn{}}0000{{DnDn}Dn}?>````````````{{}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```=?=<{Dlf}{{DlBd}{{Cn{Ch}}}}{c{{l{e}}}{}{}}000000000{cn{}}0000{{DnDn}Dn}?>````````````{{}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