Struct os::drivers::block::BLOCK_DEVICE
source · pub struct BLOCK_DEVICE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for BLOCK_DEVICE
impl Deref for BLOCK_DEVICE
impl LazyStatic for BLOCK_DEVICE
Auto Trait Implementations§
impl Freeze for BLOCK_DEVICE
impl RefUnwindSafe for BLOCK_DEVICE
impl Send for BLOCK_DEVICE
impl Sync for BLOCK_DEVICE
impl Unpin for BLOCK_DEVICE
impl UnwindSafe for BLOCK_DEVICE
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for BLOCK_DEVICE
source§impl LazyStatic for BLOCK_DEVICE
Auto Trait Implementations§
§impl Freeze for BLOCK_DEVICE
§impl RefUnwindSafe for BLOCK_DEVICE
§impl Send for BLOCK_DEVICE
§impl Sync for BLOCK_DEVICE
§impl Unpin for BLOCK_DEVICE
§impl UnwindSafe for BLOCK_DEVICE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
index d4394c6b..6bf8e7b3 100644
--- a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
+++ b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
@@ -1,7 +1,7 @@
QUEUE_FRAMES in os::drivers::block::virtio_blk - Rust Struct os::drivers::block::virtio_blk::QUEUE_FRAMES
source · struct QUEUE_FRAMES {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Vec<FrameTracker>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
Dereferences the value.source§impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
§impl Freeze for QUEUE_FRAMES
§impl RefUnwindSafe for QUEUE_FRAMES
§impl Send for QUEUE_FRAMES
§impl Sync for QUEUE_FRAMES
§impl Unpin for QUEUE_FRAMES
§impl UnwindSafe for QUEUE_FRAMES
Blanket Implementations§
Trait Implementations§
source§impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
Dereferences the value.source§impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
§impl Freeze for QUEUE_FRAMES
§impl RefUnwindSafe for QUEUE_FRAMES
§impl Send for QUEUE_FRAMES
§impl Sync for QUEUE_FRAMES
§impl Unpin for QUEUE_FRAMES
§impl UnwindSafe for QUEUE_FRAMES
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/fs/inode/struct.OpenFlags.html b/ch8/os/fs/inode/struct.OpenFlags.html
index 2dd5bd16..ddb0ec2f 100644
--- a/ch8/os/fs/inode/struct.OpenFlags.html
+++ b/ch8/os/fs/inode/struct.OpenFlags.html
@@ -60,16 +60,16 @@ between ops::Not
), as in !flags
.
Trait Implementations§
source§impl BitAndAssign for OpenFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for OpenFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for OpenFlags
source§impl BitOrAssign for OpenFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for OpenFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Extend<OpenFlags> for OpenFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<OpenFlags> for OpenFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Extend<OpenFlags> for OpenFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<OpenFlags> for OpenFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for OpenFlags
source§impl PartialOrd for OpenFlags
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 moresource§impl SubAssign for OpenFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl Copy for OpenFlags
source§impl Eq for OpenFlags
source§impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
§impl Freeze for OpenFlags
§impl RefUnwindSafe for OpenFlags
§impl Send for OpenFlags
§impl Sync for OpenFlags
§impl Unpin for OpenFlags
§impl UnwindSafe for OpenFlags
Blanket Implementations§
source§impl SubAssign for OpenFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl Copy for OpenFlags
source§impl Eq for OpenFlags
source§impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
§impl Freeze for OpenFlags
§impl RefUnwindSafe for OpenFlags
§impl Send for OpenFlags
§impl Sync for OpenFlags
§impl Unpin for OpenFlags
§impl UnwindSafe for OpenFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/fs/inode/struct.ROOT_INODE.html b/ch8/os/fs/inode/struct.ROOT_INODE.html
index 6d1b057c..e4e4ea3d 100644
--- a/ch8/os/fs/inode/struct.ROOT_INODE.html
+++ b/ch8/os/fs/inode/struct.ROOT_INODE.html
@@ -1,6 +1,6 @@
ROOT_INODE in os::fs::inode - Rust Struct os::fs::inode::ROOT_INODE
source · pub struct ROOT_INODE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html
index 221754d3..54747dd7 100644
--- a/ch8/os/mm/address/struct.PhysAddr.html
+++ b/ch8/os/mm/address/struct.PhysAddr.html
@@ -1,8 +1,8 @@
PhysAddr in os::mm::address - Rust #[repr(C)]pub struct PhysAddr(pub usize);
Expand description
Definitions
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
Converts to this type from the input type.Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysAddr
source§impl Ord for PhysAddr
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/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html
index 8a1d8721..30df02f1 100644
--- a/ch8/os/mm/address/struct.PhysPageNum.html
+++ b/ch8/os/mm/address/struct.PhysPageNum.html
@@ -1,4 +1,4 @@
-PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for BLOCK_DEVICE
source§impl LazyStatic for BLOCK_DEVICE
Auto Trait Implementations§
§impl Freeze for BLOCK_DEVICE
§impl RefUnwindSafe for BLOCK_DEVICE
§impl Send for BLOCK_DEVICE
§impl Sync for BLOCK_DEVICE
§impl Unpin for BLOCK_DEVICE
§impl UnwindSafe for BLOCK_DEVICE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
index d4394c6b..6bf8e7b3 100644
--- a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
+++ b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html
@@ -1,7 +1,7 @@
QUEUE_FRAMES in os::drivers::block::virtio_blk - Rust Struct os::drivers::block::virtio_blk::QUEUE_FRAMES
source · struct QUEUE_FRAMES {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Vec<FrameTracker>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
Dereferences the value.source§impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
§impl Freeze for QUEUE_FRAMES
§impl RefUnwindSafe for QUEUE_FRAMES
§impl Send for QUEUE_FRAMES
§impl Sync for QUEUE_FRAMES
§impl Unpin for QUEUE_FRAMES
§impl UnwindSafe for QUEUE_FRAMES
Blanket Implementations§
Trait Implementations§
source§impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
Dereferences the value.source§impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
§impl Freeze for QUEUE_FRAMES
§impl RefUnwindSafe for QUEUE_FRAMES
§impl Send for QUEUE_FRAMES
§impl Sync for QUEUE_FRAMES
§impl Unpin for QUEUE_FRAMES
§impl UnwindSafe for QUEUE_FRAMES
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/fs/inode/struct.OpenFlags.html b/ch8/os/fs/inode/struct.OpenFlags.html
index 2dd5bd16..ddb0ec2f 100644
--- a/ch8/os/fs/inode/struct.OpenFlags.html
+++ b/ch8/os/fs/inode/struct.OpenFlags.html
@@ -60,16 +60,16 @@ between ops::Not
), as in !flags
.
Trait Implementations§
source§impl BitAndAssign for OpenFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for OpenFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for OpenFlags
source§impl BitOrAssign for OpenFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for OpenFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Extend<OpenFlags> for OpenFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<OpenFlags> for OpenFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Extend<OpenFlags> for OpenFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<OpenFlags> for OpenFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for OpenFlags
source§impl PartialOrd for OpenFlags
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 moresource§impl SubAssign for OpenFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl Copy for OpenFlags
source§impl Eq for OpenFlags
source§impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
§impl Freeze for OpenFlags
§impl RefUnwindSafe for OpenFlags
§impl Send for OpenFlags
§impl Sync for OpenFlags
§impl Unpin for OpenFlags
§impl UnwindSafe for OpenFlags
Blanket Implementations§
source§impl SubAssign for OpenFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl Copy for OpenFlags
source§impl Eq for OpenFlags
source§impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
§impl Freeze for OpenFlags
§impl RefUnwindSafe for OpenFlags
§impl Send for OpenFlags
§impl Sync for OpenFlags
§impl Unpin for OpenFlags
§impl UnwindSafe for OpenFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/fs/inode/struct.ROOT_INODE.html b/ch8/os/fs/inode/struct.ROOT_INODE.html
index 6d1b057c..e4e4ea3d 100644
--- a/ch8/os/fs/inode/struct.ROOT_INODE.html
+++ b/ch8/os/fs/inode/struct.ROOT_INODE.html
@@ -1,6 +1,6 @@
ROOT_INODE in os::fs::inode - Rust Struct os::fs::inode::ROOT_INODE
source · pub struct ROOT_INODE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html
index 221754d3..54747dd7 100644
--- a/ch8/os/mm/address/struct.PhysAddr.html
+++ b/ch8/os/mm/address/struct.PhysAddr.html
@@ -1,8 +1,8 @@
PhysAddr in os::mm::address - Rust #[repr(C)]pub struct PhysAddr(pub usize);
Expand description
Definitions
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
Converts to this type from the input type.Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysAddr
source§impl Ord for PhysAddr
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/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html
index 8a1d8721..30df02f1 100644
--- a/ch8/os/mm/address/struct.PhysPageNum.html
+++ b/ch8/os/mm/address/struct.PhysPageNum.html
@@ -1,4 +1,4 @@
-PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for BLOCK_DEVICE
impl Deref for BLOCK_DEVICE
impl LazyStatic for BLOCK_DEVICE
Auto Trait Implementations§
impl Freeze for BLOCK_DEVICE
impl RefUnwindSafe for BLOCK_DEVICE
impl Send for BLOCK_DEVICE
impl Sync for BLOCK_DEVICE
impl Unpin for BLOCK_DEVICE
impl UnwindSafe for BLOCK_DEVICE
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/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html index d4394c6b..6bf8e7b3 100644 --- a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html +++ b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html @@ -1,7 +1,7 @@Struct os::drivers::block::virtio_blk::QUEUE_FRAMES
source · struct QUEUE_FRAMES {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Vec<FrameTracker>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for QUEUE_FRAMES
impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
type Target = UPSafeCell<Vec<FrameTracker>>
source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
impl Freeze for QUEUE_FRAMES
impl RefUnwindSafe for QUEUE_FRAMES
impl Send for QUEUE_FRAMES
impl Sync for QUEUE_FRAMES
impl Unpin for QUEUE_FRAMES
impl UnwindSafe for QUEUE_FRAMES
Blanket Implementations§
Trait Implementations§
source§impl Deref for QUEUE_FRAMES
impl Deref for QUEUE_FRAMES
§type Target = UPSafeCell<Vec<FrameTracker>>
type Target = UPSafeCell<Vec<FrameTracker>>
source§fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
fn deref(&self) -> &UPSafeCell<Vec<FrameTracker>>
impl LazyStatic for QUEUE_FRAMES
Auto Trait Implementations§
impl Freeze for QUEUE_FRAMES
impl RefUnwindSafe for QUEUE_FRAMES
impl Send for QUEUE_FRAMES
impl Sync for QUEUE_FRAMES
impl Unpin for QUEUE_FRAMES
impl UnwindSafe for QUEUE_FRAMES
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/ch8/os/fs/inode/struct.OpenFlags.html b/ch8/os/fs/inode/struct.OpenFlags.html index 2dd5bd16..ddb0ec2f 100644 --- a/ch8/os/fs/inode/struct.OpenFlags.html +++ b/ch8/os/fs/inode/struct.OpenFlags.html @@ -60,16 +60,16 @@ betweenops::Not
), as in !flags
.
Trait Implementations§
source§impl BitAndAssign for OpenFlags
impl BitAndAssign for OpenFlags
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 OpenFlags
impl BitAndAssign for OpenFlags
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 OpenFlags
impl BitOrAssign for OpenFlags
source§impl BitOrAssign for OpenFlags
impl BitOrAssign for OpenFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for OpenFlags
impl BitXorAssign for OpenFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Extend<OpenFlags> for OpenFlags
impl Extend<OpenFlags> for OpenFlags
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<OpenFlags> for OpenFlags
impl FromIterator<OpenFlags> for OpenFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Extend<OpenFlags> for OpenFlags
impl Extend<OpenFlags> for OpenFlags
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<OpenFlags> for OpenFlags
impl FromIterator<OpenFlags> for OpenFlags
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 OpenFlags
impl Ord for OpenFlags
source§impl PartialOrd for OpenFlags
impl PartialOrd for OpenFlags
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 OpenFlags
impl SubAssign for OpenFlags
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 OpenFlags
impl Eq for OpenFlags
impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
impl Freeze for OpenFlags
impl RefUnwindSafe for OpenFlags
impl Send for OpenFlags
impl Sync for OpenFlags
impl Unpin for OpenFlags
impl UnwindSafe for OpenFlags
Blanket Implementations§
source§impl SubAssign for OpenFlags
impl SubAssign for OpenFlags
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 OpenFlags
impl Eq for OpenFlags
impl StructuralPartialEq for OpenFlags
Auto Trait Implementations§
impl Freeze for OpenFlags
impl RefUnwindSafe for OpenFlags
impl Send for OpenFlags
impl Sync for OpenFlags
impl Unpin for OpenFlags
impl UnwindSafe for OpenFlags
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/ch8/os/fs/inode/struct.ROOT_INODE.html b/ch8/os/fs/inode/struct.ROOT_INODE.html index 6d1b057c..e4e4ea3d 100644 --- a/ch8/os/fs/inode/struct.ROOT_INODE.html +++ b/ch8/os/fs/inode/struct.ROOT_INODE.html @@ -1,6 +1,6 @@Struct os::fs::inode::ROOT_INODE
source · pub struct ROOT_INODE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
impl Deref for ROOT_INODE
impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
impl Freeze for ROOT_INODE
impl RefUnwindSafe for ROOT_INODE
impl Send for ROOT_INODE
impl Sync for ROOT_INODE
impl Unpin for ROOT_INODE
impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html
index 221754d3..54747dd7 100644
--- a/ch8/os/mm/address/struct.PhysAddr.html
+++ b/ch8/os/mm/address/struct.PhysAddr.html
@@ -1,8 +1,8 @@
PhysAddr in os::mm::address - Rust #[repr(C)]pub struct PhysAddr(pub usize);
Expand description
Definitions
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
Converts to this type from the input type.Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysAddr
source§impl Ord for PhysAddr
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/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html
index 8a1d8721..30df02f1 100644
--- a/ch8/os/mm/address/struct.PhysPageNum.html
+++ b/ch8/os/mm/address/struct.PhysPageNum.html
@@ -1,4 +1,4 @@
-PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
source§impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
§impl Freeze for ROOT_INODE
§impl RefUnwindSafe for ROOT_INODE
§impl Send for ROOT_INODE
§impl Sync for ROOT_INODE
§impl Unpin for ROOT_INODE
§impl UnwindSafe for ROOT_INODE
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html
index 221754d3..54747dd7 100644
--- a/ch8/os/mm/address/struct.PhysAddr.html
+++ b/ch8/os/mm/address/struct.PhysAddr.html
@@ -1,8 +1,8 @@
PhysAddr in os::mm::address - Rust #[repr(C)]pub struct PhysAddr(pub usize);
Expand description
Definitions
-Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
source§impl From<PhysPageNum> for PhysAddr
source§fn from(v: PhysPageNum) -> Self
Converts to this type from the input type.Tuple Fields§
§0: usize
Implementations§
source§impl PhysAddr
sourcepub fn floor(&self) -> PhysPageNum
sourcepub fn ceil(&self) -> PhysPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
source§impl PhysAddr
sourcepub fn get_ref<T>(&self) -> &'static T
sourcepub fn get_mut<T>(&self) -> &'static mut T
Trait Implementations§
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysAddr
source§impl Ord for PhysAddr
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/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html
index 8a1d8721..30df02f1 100644
--- a/ch8/os/mm/address/struct.PhysPageNum.html
+++ b/ch8/os/mm/address/struct.PhysPageNum.html
@@ -1,4 +1,4 @@
-PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for ROOT_INODE
impl Deref for ROOT_INODE
impl LazyStatic for ROOT_INODE
Auto Trait Implementations§
impl Freeze for ROOT_INODE
impl RefUnwindSafe for ROOT_INODE
impl Send for ROOT_INODE
impl Sync for ROOT_INODE
impl Unpin for ROOT_INODE
impl UnwindSafe for ROOT_INODE
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/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html index 221754d3..54747dd7 100644 --- a/ch8/os/mm/address/struct.PhysAddr.html +++ b/ch8/os/mm/address/struct.PhysAddr.html @@ -1,8 +1,8 @@#[repr(C)]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
source§impl PhysAddr
impl PhysAddr
pub fn get_ref<T>(&self) -> &'static T
pub fn get_mut<T>(&self) -> &'static mut T
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
source§impl PhysAddr
impl PhysAddr
pub fn get_ref<T>(&self) -> &'static T
pub fn get_mut<T>(&self) -> &'static mut T
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/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html
index 8a1d8721..30df02f1 100644
--- a/ch8/os/mm/address/struct.PhysPageNum.html
+++ b/ch8/os/mm/address/struct.PhysPageNum.html
@@ -1,4 +1,4 @@
-Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
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
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
fn max(self, other: Self) -> Selfwhere
+PhysPageNum in os::mm::address - Rust Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl PhysPageNum
sourcepub fn get_pte_array(&self) -> &'static mut [PageTableEntry]
sourcepub fn get_bytes_array(&self) -> &'static mut [u8]
sourcepub 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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PhysPageNum
source§impl From<PhysAddr> for PhysPageNum
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§impl Ord for PhysPageNum
source§fn cmp(&self, other: &PhysPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
VirtAddr in os::mm::address - Rust #[repr(C)]pub struct VirtAddr(pub usize);
Tuple Fields§
§0: usize
Implementations§
source§impl VirtAddr
sourcepub fn floor(&self) -> VirtPageNum
sourcepub fn ceil(&self) -> VirtPageNum
sourcepub fn page_offset(&self) -> usize
sourcepub fn aligned(&self) -> bool
Trait Implementations§
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
source§impl From<VirtAddr> for VirtPageNum
source§impl From<VirtPageNum> for VirtAddr
source§fn from(v: VirtPageNum) -> Self
Converts to this type from the input type.source§impl Ord for VirtAddr
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
Struct os::mm::address::PhysPageNum
source · #[repr(C)]pub struct PhysPageNum(pub usize);
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/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html
index 9f455829..429a47e9 100644
--- a/ch8/os/mm/address/struct.VirtAddr.html
+++ b/ch8/os/mm/address/struct.VirtAddr.html
@@ -1,5 +1,5 @@
#[repr(C)]pub struct VirtAddr(pub usize);
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/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html
index ea8792dd..e80d01f9 100644
--- a/ch8/os/mm/address/struct.VirtPageNum.html
+++ b/ch8/os/mm/address/struct.VirtPageNum.html
@@ -1,4 +1,4 @@
-Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
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
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
fn max(self, other: Self) -> Selfwhere
+VirtPageNum in os::mm::address - Rust Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
Tuple Fields§
§0: usize
Implementations§
Trait Implementations§
source§impl Clone for VirtPageNum
source§fn clone(&self) -> VirtPageNum
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for VirtPageNum
source§impl From<VirtAddr> for VirtPageNum
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§impl Ord for VirtPageNum
source§fn cmp(&self, other: &VirtPageNum) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
FRAME_ALLOCATOR in os::mm::frame_allocator - Rust Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
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§
§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
§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§
§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
index f4181d89..0bf893b1 100644
--- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
+++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html
@@ -1,6 +1,6 @@
KERNEL_SPACE in os::mm::memory_set - Rust Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
Struct os::mm::address::VirtPageNum
source · #[repr(C)]pub struct VirtPageNum(pub usize);
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/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
index 99fc3c82..46880681 100644
--- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
+++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html
@@ -1,7 +1,7 @@
Struct os::mm::frame_allocator::FRAME_ALLOCATOR
source · pub struct FRAME_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
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/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html index f4181d89..0bf893b1 100644 --- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html +++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html @@ -1,6 +1,6 @@Struct os::mm::memory_set::KERNEL_SPACE
source · pub struct KERNEL_SPACE {
__private_field: (),
-}
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> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for KERNEL_SPACE
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html
index 43615258..10730499 100644
--- a/ch8/os/mm/memory_set/struct.MapArea.html
+++ b/ch8/os/mm/memory_set/struct.MapArea.html
@@ -8,7 +8,7 @@
end_va: VirtAddr,
map_type: MapType,
map_perm: MapPermission
-) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
sourcepub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])
data: start-aligned but maybe with shorter length
+) -> Selfsourcepub fn from_another(another: &MapArea) -> Self
sourcepub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)
sourcepub fn map(&mut self, page_table: &mut PageTable)
sourcepub fn unmap(&mut self, page_table: &mut PageTable)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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§impl BitAnd for MapPermission
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§impl BitAnd for MapPermission
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§impl BitXorAssign for MapPermission
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+§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 more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for MapPermission
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 moresource§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 moresource§impl FromIterator<MapPermission> for MapPermission
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§impl LowerHex for MapPermission
source§impl Not for MapPermission
source§impl Octal for MapPermission
source§impl Ord for MapPermission
source§fn cmp(&self, other: &MapPermission) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§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
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for MapPermission
source§fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>
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 moresource§impl Sub for MapPermission
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§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for MapPermission
source§impl Copy for MapPermission
source§impl Eq for MapPermission
source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html
index c206702c..be43ffd3 100644
--- a/ch8/os/mm/page_table/struct.PTEFlags.html
+++ b/ch8/os/mm/page_table/struct.PTEFlags.html
@@ -58,16 +58,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 BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+Trait Implementations§
source§impl BitAndAssign for PTEFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign for PTEFlags
source§impl BitOrAssign for PTEFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl BitXorAssign for PTEFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+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 moresource§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 moresource§impl FromIterator<PTEFlags> for PTEFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Ord for PTEFlags
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
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
KSTACK_ALLOCATOR in os::task::id - Rust Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for KSTACK_ALLOCATOR
§impl RefUnwindSafe for KSTACK_ALLOCATOR
§impl Send for KSTACK_ALLOCATOR
§impl Sync for KSTACK_ALLOCATOR
§impl Unpin for KSTACK_ALLOCATOR
§impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html
index 5dc270d9..7a6b217a 100644
--- a/ch8/os/task/id/struct.PID_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html
@@ -1,7 +1,7 @@
PID_ALLOCATOR in os::task::id - Rust Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
Dereferences the value.source§impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
§impl Freeze for PID_ALLOCATOR
§impl RefUnwindSafe for PID_ALLOCATOR
§impl Send for PID_ALLOCATOR
§impl Sync for PID_ALLOCATOR
§impl Unpin for PID_ALLOCATOR
§impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html
index 55c94171..be16999f 100644
--- a/ch8/os/task/manager/struct.PID2PCB.html
+++ b/ch8/os/task/manager/struct.PID2PCB.html
@@ -1,7 +1,7 @@
PID2PCB in os::task::manager - Rust pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
Dereferences the value.source§impl LazyStatic for PID2PCB
Auto Trait Implementations§
§impl Freeze for PID2PCB
§impl RefUnwindSafe for PID2PCB
§impl Send for PID2PCB
§impl Sync for PID2PCB
§impl Unpin for PID2PCB
§impl UnwindSafe for PID2PCB
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html
index 10ccbad1..74f241eb 100644
--- a/ch8/os/task/manager/struct.TASK_MANAGER.html
+++ b/ch8/os/task/manager/struct.TASK_MANAGER.html
@@ -1,7 +1,7 @@
TASK_MANAGER in os::task::manager - Rust Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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
§type Target = UPSafeCell<TaskManager>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<TaskManager>
Dereferences the value.source§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,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html
index eaa2a99d..fe287e78 100644
--- a/ch8/os/task/processor/struct.PROCESSOR.html
+++ b/ch8/os/task/processor/struct.PROCESSOR.html
@@ -1,7 +1,7 @@
PROCESSOR in os::task::processor - Rust pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<Processor>
Dereferences the value.source§impl LazyStatic for PROCESSOR
Auto Trait Implementations§
§impl Freeze for PROCESSOR
§impl RefUnwindSafe for PROCESSOR
§impl Send for PROCESSOR
§impl Sync for PROCESSOR
§impl Unpin for PROCESSOR
§impl UnwindSafe for PROCESSOR
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html
index 51fa2d09..8ce95fe1 100644
--- a/ch8/os/task/signal/struct.SignalFlags.html
+++ b/ch8/os/task/signal/struct.SignalFlags.html
@@ -58,16 +58,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
.
-source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
sourcepub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
The resulting type after applying the |
operator.source§impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
Extends a collection with the contents of an iterator. Read moresource§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 moresource§impl FromIterator<SignalFlags> for SignalFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
Creates a value from an iterator. Read moresource§impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
source§impl Not for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§impl Octal for SignalFlags
source§impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read moresource§impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
This method tests for self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
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 moresource§impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
-source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
The resulting type after applying the -
operator.source§impl SubAssign for SignalFlags
source§fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.
+source§impl UpperHex for SignalFlags
source§impl Copy for SignalFlags
source§impl Eq for SignalFlags
source§impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
§impl Freeze for SignalFlags
§impl RefUnwindSafe for SignalFlags
§impl Send for SignalFlags
§impl Sync for SignalFlags
§impl Unpin for SignalFlags
§impl UnwindSafe for SignalFlags
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html
index da63024b..a958cc70 100644
--- a/ch8/os/task/struct.INITPROC.html
+++ b/ch8/os/task/struct.INITPROC.html
@@ -1,6 +1,6 @@
INITPROC in os::task - Rust pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
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/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html index 43615258..10730499 100644 --- a/ch8/os/mm/memory_set/struct.MapArea.html +++ b/ch8/os/mm/memory_set/struct.MapArea.html @@ -8,7 +8,7 @@ end_va: VirtAddr, map_type: MapType, map_perm: MapPermission -) -> Selfpub fn from_another(another: &MapArea) -> Self
pub 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)
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 from_another(another: &MapArea) -> Self
pub 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)
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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html
index e1690c92..f50a5030 100644
--- a/ch8/os/mm/memory_set/struct.MapPermission.html
+++ b/ch8/os/mm/memory_set/struct.MapPermission.html
@@ -58,16 +58,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.
+§type Output = MapPermission
type Output = MapPermission
^
operator.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 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
@@ -75,8 +75,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/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html index c206702c..be43ffd3 100644 --- a/ch8/os/mm/page_table/struct.PTEFlags.html +++ b/ch8/os/mm/page_table/struct.PTEFlags.html @@ -58,16 +58,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 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 Ord for PTEFlags
impl Ord for PTEFlags
source§impl PartialEq for PTEFlags
impl PartialEq for PTEFlags
source§fn eq(&self, other: &PTEFlags) -> bool
fn eq(&self, other: &PTEFlags) -> bool
self
and other
values to be equal, and is used
diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
index 409678aa..528172a7 100644
--- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
+++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html
@@ -1,7 +1,7 @@
Struct os::task::id::KSTACK_ALLOCATOR
source · struct KSTACK_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
type Target = UPSafeCell<RecycleAllocator>
source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
fn deref(&self) -> &UPSafeCell<RecycleAllocator>
impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
impl Freeze for KSTACK_ALLOCATOR
impl RefUnwindSafe for KSTACK_ALLOCATOR
impl Send for KSTACK_ALLOCATOR
impl Sync for KSTACK_ALLOCATOR
impl Unpin for KSTACK_ALLOCATOR
impl UnwindSafe for KSTACK_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for KSTACK_ALLOCATOR
impl Deref for KSTACK_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
type Target = UPSafeCell<RecycleAllocator>
source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
fn deref(&self) -> &UPSafeCell<RecycleAllocator>
impl LazyStatic for KSTACK_ALLOCATOR
Auto Trait Implementations§
impl Freeze for KSTACK_ALLOCATOR
impl RefUnwindSafe for KSTACK_ALLOCATOR
impl Send for KSTACK_ALLOCATOR
impl Sync for KSTACK_ALLOCATOR
impl Unpin for KSTACK_ALLOCATOR
impl UnwindSafe for KSTACK_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/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html index 5dc270d9..7a6b217a 100644 --- a/ch8/os/task/id/struct.PID_ALLOCATOR.html +++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html @@ -1,7 +1,7 @@Struct os::task::id::PID_ALLOCATOR
source · struct PID_ALLOCATOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<RecycleAllocator>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID_ALLOCATOR
impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
type Target = UPSafeCell<RecycleAllocator>
source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
fn deref(&self) -> &UPSafeCell<RecycleAllocator>
impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
impl Freeze for PID_ALLOCATOR
impl RefUnwindSafe for PID_ALLOCATOR
impl Send for PID_ALLOCATOR
impl Sync for PID_ALLOCATOR
impl Unpin for PID_ALLOCATOR
impl UnwindSafe for PID_ALLOCATOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID_ALLOCATOR
impl Deref for PID_ALLOCATOR
§type Target = UPSafeCell<RecycleAllocator>
type Target = UPSafeCell<RecycleAllocator>
source§fn deref(&self) -> &UPSafeCell<RecycleAllocator>
fn deref(&self) -> &UPSafeCell<RecycleAllocator>
impl LazyStatic for PID_ALLOCATOR
Auto Trait Implementations§
impl Freeze for PID_ALLOCATOR
impl RefUnwindSafe for PID_ALLOCATOR
impl Send for PID_ALLOCATOR
impl Sync for PID_ALLOCATOR
impl Unpin for PID_ALLOCATOR
impl UnwindSafe for PID_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/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html index 55c94171..be16999f 100644 --- a/ch8/os/task/manager/struct.PID2PCB.html +++ b/ch8/os/task/manager/struct.PID2PCB.html @@ -1,7 +1,7 @@pub struct PID2PCB {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PID2PCB
impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
impl LazyStatic for PID2PCB
Auto Trait Implementations§
impl Freeze for PID2PCB
impl RefUnwindSafe for PID2PCB
impl Send for PID2PCB
impl Sync for PID2PCB
impl Unpin for PID2PCB
impl UnwindSafe for PID2PCB
Blanket Implementations§
Trait Implementations§
source§impl Deref for PID2PCB
impl Deref for PID2PCB
§type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
type Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
source§fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
fn deref(&self) -> &UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>
impl LazyStatic for PID2PCB
Auto Trait Implementations§
impl Freeze for PID2PCB
impl RefUnwindSafe for PID2PCB
impl Send for PID2PCB
impl Sync for PID2PCB
impl Unpin for PID2PCB
impl UnwindSafe for PID2PCB
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/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html index 10ccbad1..74f241eb 100644 --- a/ch8/os/task/manager/struct.TASK_MANAGER.html +++ b/ch8/os/task/manager/struct.TASK_MANAGER.html @@ -1,7 +1,7 @@Struct os::task::manager::TASK_MANAGER
source · pub struct TASK_MANAGER {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<TaskManager>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TASK_MANAGER
impl Deref for TASK_MANAGER
§type Target = UPSafeCell<TaskManager>
type Target = UPSafeCell<TaskManager>
source§fn deref(&self) -> &UPSafeCell<TaskManager>
fn deref(&self) -> &UPSafeCell<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 = UPSafeCell<TaskManager>
type Target = UPSafeCell<TaskManager>
source§fn deref(&self) -> &UPSafeCell<TaskManager>
fn deref(&self) -> &UPSafeCell<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/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html index eaa2a99d..fe287e78 100644 --- a/ch8/os/task/processor/struct.PROCESSOR.html +++ b/ch8/os/task/processor/struct.PROCESSOR.html @@ -1,7 +1,7 @@pub struct PROCESSOR {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<Processor>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for PROCESSOR
impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
type Target = UPSafeCell<Processor>
source§fn deref(&self) -> &UPSafeCell<Processor>
fn deref(&self) -> &UPSafeCell<Processor>
impl LazyStatic for PROCESSOR
Auto Trait Implementations§
impl Freeze for PROCESSOR
impl RefUnwindSafe for PROCESSOR
impl Send for PROCESSOR
impl Sync for PROCESSOR
impl Unpin for PROCESSOR
impl UnwindSafe for PROCESSOR
Blanket Implementations§
Trait Implementations§
source§impl Deref for PROCESSOR
impl Deref for PROCESSOR
§type Target = UPSafeCell<Processor>
type Target = UPSafeCell<Processor>
source§fn deref(&self) -> &UPSafeCell<Processor>
fn deref(&self) -> &UPSafeCell<Processor>
impl LazyStatic for PROCESSOR
Auto Trait Implementations§
impl Freeze for PROCESSOR
impl RefUnwindSafe for PROCESSOR
impl Send for PROCESSOR
impl Sync for PROCESSOR
impl Unpin for PROCESSOR
impl UnwindSafe for PROCESSOR
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/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html index 51fa2d09..8ce95fe1 100644 --- a/ch8/os/task/signal/struct.SignalFlags.html +++ b/ch8/os/task/signal/struct.SignalFlags.html @@ -58,16 +58,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
.
source§impl SignalFlags
impl SignalFlags
pub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
impl BitAndAssign for SignalFlags
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
+source§impl SignalFlags
impl SignalFlags
pub fn check_error(&self) -> Option<(i32, &'static str)>
Trait Implementations§
source§impl Binary for SignalFlags
impl Binary for SignalFlags
source§impl BitAnd for SignalFlags
impl BitAnd for SignalFlags
source§impl BitAndAssign for SignalFlags
impl BitAndAssign for SignalFlags
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 SignalFlags
impl BitOr for SignalFlags
source§fn bitor(self, other: SignalFlags) -> Self
fn bitor(self, other: SignalFlags) -> Self
Returns the union of the two sets of flags.
-§type Output = SignalFlags
type Output = SignalFlags
|
operator.source§impl BitOrAssign for SignalFlags
impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
+§type Output = SignalFlags
type Output = SignalFlags
|
operator.source§impl BitOrAssign for SignalFlags
impl BitOrAssign for SignalFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for SignalFlags
impl BitXor for SignalFlags
source§impl BitXorAssign for SignalFlags
impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
-source§impl Clone for SignalFlags
impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
fn clone(&self) -> SignalFlags
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SignalFlags
impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
impl Extend<SignalFlags> for SignalFlags
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<SignalFlags> for SignalFlags
impl FromIterator<SignalFlags> for SignalFlags
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 SignalFlags
impl Hash for SignalFlags
source§impl BitXorAssign for SignalFlags
impl BitXorAssign for SignalFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
+source§impl Clone for SignalFlags
impl Clone for SignalFlags
source§fn clone(&self) -> SignalFlags
fn clone(&self) -> SignalFlags
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SignalFlags
impl Debug for SignalFlags
source§impl Extend<SignalFlags> for SignalFlags
impl Extend<SignalFlags> for SignalFlags
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<SignalFlags> for SignalFlags
impl FromIterator<SignalFlags> for SignalFlags
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 SignalFlags
impl Hash for SignalFlags
source§impl LowerHex for SignalFlags
impl LowerHex for SignalFlags
source§impl Not for SignalFlags
impl Not for SignalFlags
source§impl Octal for SignalFlags
impl Octal for SignalFlags
source§impl Ord for SignalFlags
impl Ord for SignalFlags
source§impl Octal for SignalFlags
impl Octal for SignalFlags
source§impl Ord for SignalFlags
impl Ord for SignalFlags
source§fn cmp(&self, other: &SignalFlags) -> Ordering
fn cmp(&self, other: &SignalFlags) -> 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 SignalFlags
impl PartialEq for SignalFlags
source§fn eq(&self, other: &SignalFlags) -> bool
fn eq(&self, other: &SignalFlags) -> bool
self
and other
values to be equal, and is used
@@ -75,8 +75,8 @@ by ==
.source§impl PartialOrd for SignalFlags
impl PartialOrd for SignalFlags
source§fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>
fn partial_cmp(&self, other: &SignalFlags) -> 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 SignalFlags
impl Sub for SignalFlags
source§impl SubAssign for SignalFlags
impl SubAssign for SignalFlags
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 SignalFlags
impl UpperHex for SignalFlags
impl Copy for SignalFlags
impl Eq for SignalFlags
impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
impl Freeze for SignalFlags
impl RefUnwindSafe for SignalFlags
impl Send for SignalFlags
impl Sync for SignalFlags
impl Unpin for SignalFlags
impl UnwindSafe for SignalFlags
Blanket Implementations§
§type Output = SignalFlags
type Output = SignalFlags
-
operator.source§impl SubAssign for SignalFlags
impl SubAssign for SignalFlags
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 SignalFlags
impl UpperHex for SignalFlags
impl Copy for SignalFlags
impl Eq for SignalFlags
impl StructuralPartialEq for SignalFlags
Auto Trait Implementations§
impl Freeze for SignalFlags
impl RefUnwindSafe for SignalFlags
impl Send for SignalFlags
impl Sync for SignalFlags
impl Unpin for SignalFlags
impl UnwindSafe for SignalFlags
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/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html index da63024b..a958cc70 100644 --- a/ch8/os/task/struct.INITPROC.html +++ b/ch8/os/task/struct.INITPROC.html @@ -1,6 +1,6 @@pub struct INITPROC {
__private_field: (),
-}
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
type Target = Arc<ProcessControlBlock>
source§fn deref(&self) -> &Arc<ProcessControlBlock>
fn deref(&self) -> &Arc<ProcessControlBlock>
impl LazyStatic for INITPROC
Auto Trait Implementations§
impl Freeze for INITPROC
impl RefUnwindSafe for INITPROC
impl Send for INITPROC
impl Sync for INITPROC
impl Unpin for INITPROC
impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
impl<T> Any for Twhere
+}Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
The resulting type after dereferencing.source§fn deref(&self) -> &Arc<ProcessControlBlock>
Dereferences the value.source§impl LazyStatic for INITPROC
Auto Trait Implementations§
§impl Freeze for INITPROC
§impl RefUnwindSafe for INITPROC
§impl Send for INITPROC
§impl Sync for INITPROC
§impl Unpin for INITPROC
§impl UnwindSafe for INITPROC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html
index d95e5202..252da253 100644
--- a/ch8/os/timer/struct.TIMERS.html
+++ b/ch8/os/timer/struct.TIMERS.html
@@ -1,7 +1,7 @@
TIMERS in os::timer - Rust struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
The resulting type after dereferencing.source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
Dereferences the value.source§impl LazyStatic for TIMERS
Auto Trait Implementations§
§impl Freeze for TIMERS
§impl RefUnwindSafe for TIMERS
§impl Send for TIMERS
§impl Sync for TIMERS
§impl Unpin for TIMERS
§impl UnwindSafe for TIMERS
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresource§impl<T> From<T> for T
source§fn from(t: T) -> T
Returns the argument unchanged.
diff --git a/ch8/search-index.js b/ch8/search-index.js
index 1644a3d0..e4591dd2 100644
--- a/ch8/search-index.js
+++ b/ch8/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = new Map(JSON.parse('[\
-["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\
+["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html
index d5beef4d..be339cb6 100644
--- a/ch8/src/os/mm/memory_set.rs.html
+++ b/ch8/src/os/mm/memory_set.rs.html
@@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
index fcfe8fa5..dd9a77ea 100644
--- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js
+++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
+"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
Fields§
§__private_field: ()
Trait Implementations§
source§impl Deref for INITPROC
impl Deref for INITPROC
§type Target = Arc<ProcessControlBlock>
type Target = Arc<ProcessControlBlock>
source§fn deref(&self) -> &Arc<ProcessControlBlock>
fn deref(&self) -> &Arc<ProcessControlBlock>
impl LazyStatic for INITPROC
Auto Trait Implementations§
impl Freeze for INITPROC
impl RefUnwindSafe for INITPROC
impl Send for INITPROC
impl Sync for INITPROC
impl Unpin for INITPROC
impl UnwindSafe for INITPROC
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/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html index d95e5202..252da253 100644 --- a/ch8/os/timer/struct.TIMERS.html +++ b/ch8/os/timer/struct.TIMERS.html @@ -1,7 +1,7 @@struct TIMERS {
__private_field: (),
}
Fields§
§__private_field: ()
Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§
sourcepub fn exclusive_access(&self) -> RefMut<'_, T>
pub fn exclusive_access(&self) -> RefMut<'_, T>
Panic if the data has been borrowed.
-Trait Implementations§
source§impl Deref for TIMERS
impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
impl LazyStatic for TIMERS
Auto Trait Implementations§
impl Freeze for TIMERS
impl RefUnwindSafe for TIMERS
impl Send for TIMERS
impl Sync for TIMERS
impl Unpin for TIMERS
impl UnwindSafe for TIMERS
Blanket Implementations§
Trait Implementations§
source§impl Deref for TIMERS
impl Deref for TIMERS
§type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
type Target = UPSafeCell<BinaryHeap<TimerCondVar>>
source§fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
fn deref(&self) -> &UPSafeCell<BinaryHeap<TimerCondVar>>
impl LazyStatic for TIMERS
Auto Trait Implementations§
impl Freeze for TIMERS
impl RefUnwindSafe for TIMERS
impl Send for TIMERS
impl Sync for TIMERS
impl Unpin for TIMERS
impl UnwindSafe for TIMERS
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/ch8/search-index.js b/ch8/search-index.js index 1644a3d0..e4591dd2 100644 --- a/ch8/search-index.js +++ b/ch8/search-index.js @@ -1,5 +1,5 @@ var searchIndex = new Map(JSON.parse('[\ -["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}0{B`Ed}{EhEd}2{EjEf}{B`Ef}{B`Eh}{EdEh}6{B`Ej}{EfEj}88{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Debug-for-OpenFlags"],[143,"impl-LowerHex-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-Binary-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[364,"impl-From%3Cusize%3E-for-PhysAddr"],[365,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[367,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[368,"impl-From%3Cusize%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[370,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[373,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-LowerHex-for-MapPermission"],[540,"impl-Debug-for-MapPermission"],[541,"impl-Binary-for-MapPermission"],[542,"impl-UpperHex-for-MapPermission"],[543,"impl-Octal-for-MapPermission"],[671,"impl-Binary-for-PTEFlags"],[672,"impl-Octal-for-PTEFlags"],[673,"impl-Debug-for-PTEFlags"],[674,"impl-UpperHex-for-PTEFlags"],[675,"impl-LowerHex-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXQAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbQEBAHABAwB1AQEAeQEHAIcBQgDNAQEA0gEgAPQBAAD6AQAA/QEOAA8CAQASAgIAFgIKACYCAAArAgIAOQIDAD4CAgBDAgQASQICAE0CAgBTAgEAVgIQAGgCDwB+AgEAggIQAJUCAQCZAgwArgIAALACAAC5AgEAvQIGAMUCAgDJAgAAzgIBANECBQDYAg4A6AIBAO4CDwAAAwAAAwMTABoDAAAeAxsAPAMAAD8DCABJAwEAUAMuAIADDACOAxcAqAMAAKoDFgDCAwAAxAMnAPIDAAD6AzEALwQAADMEGgBPBAEAVAQEAFsEIAB+BAEAggQQAJkEAACcBAUApgQGALEEAQC6BAAAwAQAAMIEAgDGBBAA2gQEAOIEHwAEBQEACAUXACIFCQA="}]\ +["os",{"t":"CHCCCCCCQQHCCCCCCISSSESSEESSSSSFNNNNHNNNNEECFEOHNNNNNNNNCFSFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNONNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNONNNNNNONNNHNNNNNONOONNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEECECECHECCEEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOOMNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNNNNNNNOOMNNNOONHHHNNNNHNNNMNNOOONNNNNNNNNJJHHHPPFFFGFTTTTONNONNNNNONNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNONNNHNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNOTTTFFFTTFFTTTNNNNNNOONNNNNNNNNNNNOONNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNHHHHEEEEEECCCCFFNNNNNNONNNNNNNNNNNOKFFFNNNNNNNNNONNNMNNOONNNNNNNNNNNMNNOFFNNNNONNNONNNNNNNNNNOFNNNNONNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCHCHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHEHNNHCHEEEEEENHNCNECEECCEHEEECHCECNNNEFNNNNNOOONNNNSFFFFFFOONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNHONOOHNNNNNNNNNNNNNNNNNNNNNOHNFFFOONHNNNNNNNNNHNNNHNNNNHONHHNNNNNNNNNHFFNNNNNNOONNOONNNNNNONNNOOONOOOOOONNNNNNNFFONNNNNOHHHHHHNNNNONNNHHNHNNNNNNTTTTTFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNONNNNNNONNNNONOOOONONNNNNNNNNSSFFOHNNNNHNNNONNHHNNNHHONNNNNNECHHHHHHHFNNNNNNOOONOONNNO","n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MEMORY_END","MMIO","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","BLOCK_DEVICE","VirtIOBlock","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","try_from","try_into","type_id","virtio_blk","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","VirtioHal","__private_field","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","dma_alloc","dma_dealloc","from","from","from","into","into","into","new","phys_to_virt","read_block","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","virt_to_phys","write_block","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapPermission","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","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","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","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","writable","console_getchar","console_putchar","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPSafeCell","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","pid2process","pid_alloc","process","processor","remove_from_pid2process","remove_inactive_task","remove_task","run_tasks","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","wakeup_task","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","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","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove","remove_from_pid2process","remove_task","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","wakeup_task","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","remove_timer","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","TrapContext","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":[[0,"os"],[17,"os::board"],[21,"os::config"],[31,"os::console"],[41,"os::drivers"],[44,"os::drivers::block"],[57,"os::drivers::block::virtio_blk"],[91,"os::fs"],[105,"os::fs::inode"],[201,"os::fs::pipe"],[255,"os::fs::stdio"],[279,"os::lang_items"],[281,"os::mm"],[308,"os::mm::address"],[431,"os::mm::frame_allocator"],[480,"os::mm::heap_allocator"],[485,"os::mm::memory_set"],[618,"os::mm::page_table"],[745,"os::sbi"],[749,"os::sync"],[759,"os::sync::condvar"],[780,"os::sync::mutex"],[817,"os::sync::semaphore"],[839,"os::sync::up"],[850,"os::syscall"],[882,"os::syscall::fs"],[888,"os::syscall::process"],[896,"os::syscall::sync"],[906,"os::syscall::thread"],[909,"os::task"],[957,"os::task::context"],[970,"os::task::id"],[1050,"os::task::manager"],[1090,"os::task::process"],[1131,"os::task::processor"],[1164,"os::task::signal"],[1221,"os::task::switch"],[1222,"os::task::task"],[1266,"os::timer"],[1297,"os::trap"],[1306,"os::trap::context"],[1323,"core::fmt"],[1324,"core::result"],[1325,"core::any"],[1326,"easy_fs::block_dev"],[1327,"alloc::sync"],[1328,"alloc::vec"],[1329,"core::cmp"],[1330,"easy_fs::vfs"],[1331,"core::iter::traits::collect"],[1332,"core::option"],[1333,"core::hash"],[1334,"core::panic::panic_info"],[1335,"core::marker"],[1336,"core::clone"],[1337,"core::alloc::layout"],[1338,"alloc::string"],[1339,"core::cell"],[1340,"alloc::collections::btree::map"],[1341,"alloc::collections::binary_heap"]],"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,0,6,6,6,6,0,6,6,6,6,0,0,0,0,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,12,18,101,12,18,101,12,12,101,101,18,101,12,18,101,12,18,101,18,18,101,12,18,101,12,18,101,12,101,18,0,0,0,0,0,0,0,0,0,21,21,0,21,21,24,0,0,0,24,24,0,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,24,24,24,24,24,27,24,24,24,24,24,24,24,24,24,34,102,27,24,24,24,24,24,24,34,102,24,24,24,34,102,27,24,24,24,0,34,24,102,0,24,34,34,24,34,34,24,24,24,24,24,24,24,34,102,27,24,34,102,27,24,34,102,27,24,24,34,34,34,37,37,37,0,0,0,0,36,36,36,36,38,36,37,38,36,37,38,37,37,37,38,36,37,36,38,36,37,0,36,38,36,38,38,38,36,36,36,37,38,36,37,38,36,37,38,36,37,38,38,38,36,36,38,0,0,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,39,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,55,42,43,44,45,46,55,42,43,44,45,46,42,43,42,43,44,45,46,42,43,44,45,46,42,43,44,45,55,55,42,43,44,45,42,43,42,43,44,45,55,42,42,42,43,43,43,44,44,44,45,45,45,46,44,46,42,44,44,42,46,45,55,42,43,44,45,46,55,46,103,46,55,46,55,42,43,42,43,44,45,103,46,47,44,45,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,55,42,43,44,45,46,0,0,0,0,0,58,56,57,13,57,58,13,57,58,57,104,56,57,58,13,57,104,13,0,0,0,13,57,58,57,0,13,57,58,56,13,57,13,57,104,13,57,58,13,57,58,13,57,58,0,0,0,0,0,62,62,0,0,0,0,0,61,61,61,61,65,60,61,60,61,61,61,61,61,61,61,61,60,63,65,62,61,60,63,65,62,61,62,61,62,61,61,61,61,63,63,65,61,0,0,0,61,62,61,0,0,61,62,61,61,61,61,61,60,63,65,62,61,63,61,61,61,60,60,61,61,61,60,61,61,60,63,65,62,61,61,61,0,63,63,63,60,63,63,60,60,61,60,61,60,60,0,61,60,0,0,61,0,0,0,61,61,61,62,61,61,60,60,60,63,65,62,61,60,63,65,62,61,60,63,65,62,61,61,63,63,63,66,66,66,0,0,0,66,66,0,0,66,66,66,66,66,66,66,66,66,66,53,66,66,64,22,67,66,53,64,22,67,66,53,22,67,66,53,66,53,66,66,66,67,67,66,66,53,66,53,66,64,64,53,66,66,66,66,66,64,64,22,67,66,53,66,66,66,66,64,66,66,66,66,64,22,67,66,53,22,67,66,66,53,22,64,64,22,53,67,66,66,53,53,66,64,66,66,66,66,66,53,66,64,64,64,0,0,0,0,64,22,67,66,53,64,22,67,66,53,64,22,67,66,53,66,64,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,105,69,105,69,105,69,69,105,69,69,69,105,69,105,69,105,69,105,0,0,0,0,71,72,106,71,72,106,71,72,106,72,71,72,106,70,71,72,71,106,71,72,71,72,106,71,72,106,71,72,106,70,71,72,106,0,0,73,107,73,107,107,73,73,107,73,73,107,73,73,107,73,107,73,107,73,107,0,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,77,77,0,0,0,0,0,0,0,0,0,77,0,77,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,77,77,0,0,80,80,80,80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0,83,84,81,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,81,82,82,83,84,85,86,82,81,85,86,82,83,84,86,81,85,86,82,83,84,0,0,81,82,0,82,86,81,82,0,82,82,81,85,86,82,83,84,81,85,86,82,83,84,81,85,86,82,83,84,82,82,0,82,0,0,0,89,90,88,0,88,89,90,88,89,90,89,90,88,0,88,89,90,0,88,89,90,88,0,88,88,0,0,88,89,90,88,89,90,88,89,90,0,0,0,92,92,78,92,78,92,92,92,92,78,92,92,78,78,92,92,92,78,78,78,78,92,92,92,92,78,92,78,92,92,92,92,92,78,92,78,92,78,92,0,0,95,93,95,93,95,93,93,0,0,0,0,0,0,95,93,95,93,93,93,95,93,0,0,93,0,93,95,93,95,93,95,76,76,76,76,76,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,96,96,96,0,0,0,79,97,96,79,97,96,96,96,96,97,79,97,96,97,97,79,79,79,79,97,96,79,79,79,97,97,97,96,97,79,97,96,79,97,96,79,97,96,0,0,0,0,99,0,98,99,98,99,0,98,99,98,98,98,99,0,0,98,99,98,0,0,98,98,99,98,99,98,99,0,0,0,0,0,0,0,0,0,0,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94],"f":"`{{}b}````````{{}d}`````````````````````{ce{}{}}0{cc{}}1{fb}{c{{h{e}}}{}{}}0{cj{}}{{ln}A`}``````755{Ab{{Af{Ad}}}}56332``````666666{Ah{{An{{Al{Aj}}}}}}{B`B`}{{B`B`}Bb}888999{{}Bd}2{{BdB`{Bh{Bf}}}b}88888877730`````````{{BjBl}B`}{BjBn}`01``````````{{}C`}{{C`C`}C`}{{C`C`}b}10{C`Cb}`21{ce{}{}}0000000{C`C`}{{ce}b{}{}}{{C`C`}Cd}2{{C`C`}Bn}{Cf{{Af{Ch}}}}891{{C`c}b{{Cl{}{{Cj{C`}}}}}}{{C`Cn}A`}0000{cc{}}000{Cb{{D`{C`}}}}{CbC`}0{cC`{{Cl{}{{Cj{C`}}}}}}{{C`c}bDb}``>?8<<<<{C`Bn}0{{}b}{{BnBn{Af{Ch}}}Dd}>`{{nC`}{{D`{{Af{Dd}}}}}}{{C`C`}{{D`{Cd}}}}{{DdBl}B`}{Dd{{Al{Bf}}}}{C`{{Df{BnBn}}}}{DdBn}`{{C`C`}b}{{C`C`Bn}b}{{C`C`}C`}20{ce{}{}}3{c{{h{e}}}{}{}}0000000{cj{}}00036`9```````{DhBn}`{DhB`}0444444`{DjDj}{{ce}b{}{}}{{DjDj}Bn}{cc{}}00`888{{}{{Df{{Af{Dl}}{Af{Dl}}}}}}{{}Dh}{{DlBl}B`}{DhBf}{{{Af{{An{Dh}}}}}Dl}{DlBn}`{{Dh{Af{Dl}}}b}``?>>>>>>===1`4{{DhBf}b}`3``{ce{}{}}0009900{{DnBl}B`}{{E`Bl}B`}{DnBn}{E`Bn}{c{{h{e}}}{}{}}000{cj{}}03254{{}b}{Ebd}``````````````````1````````````````````{EdBn}{EfBn}::::::::::::{EdEh}{EfEj}{EdEd}{EfEf}{EhEh}{EjEj}{{{El{c}}}{{El{c}}}{EnF`FbFdFfFh}}{{ce}b{}{}}0000{{EdEd}Cd}{{EfEf}Cd}{{EhEh}Cd}{{EjEj}Cd}``{{EdEd}Bn}{{EfEf}Bn}{{EhEh}Bn}{{EjEj}Bn}?>{{EdCn}A`}{{EfCn}A`}{{EhCn}A`}{{EjCn}A`}{cc{}}{EhEd}1{B`Ed}2{B`Ef}{EjEf}{B`Eh}5{EdEh}{B`Ej}7{EfEj}8{Eh{{Bh{Bf}}}}{{{El{c}}}c{EnF`FbFdFf}}{Edc{}}{Ehc{}}{Eh{{Bh{Fj}}}}23{Ej{{Fl{B`}}}}{ce{}{}}000000{{{El{c}}}e{EnF`FbFdFf}{}}``{{cc}{{Fn{c}}}{EnF`FbFdFf}}{{cc}{{El{c}}}{EnF`FbFdFf}}{{{Fn{c}}}{{D`{e}}}{EnF`FbFdFf}{}}{EdB`}{EfB`}{{EdEd}{{D`{Cd}}}}{{EfEf}{{D`{Cd}}}}{{EhEh}{{D`{Cd}}}}{{EjEj}{{D`{Cd}}}}``{Enb}{Ehb}{Ejb}====={c{{h{e}}}{}{}}00000000000{cj{}}00000``````{G`{{D`{Eh}}}}{Gb{{D`{Eh}}}}{ce{}{}}00000``{{G`Eh}b}{{GbEh}b}{Gd{{An{Gb}}}}{Ajb}``{{AjCn}A`}{{}{{D`{Aj}}}}{{}b}={cc{}}00{{GbEhEh}b}2999{{}G`}{EhAj}{{}Gb}```{c{{h{e}}}{}{}}00000{cj{}}00``{Gfd}88````````````{Ghb}{{}Gj}`{{GjGj}Gj}{{GjGj}b}10{GjBf}`21{ce{}{}}000000000{GlGl}{GjGj}{{ce}b{}{}}0{{GjGj}Cd}2{{GjGj}Bn}{{GnH`{Bh{Bf}}}b}`{Hb{{Af{{An{Gh}}}}}}:```;{{GlGl}Bn}3``{{Gjc}b{{Cl{}{{Cj{Gj}}}}}}{{GlCn}A`}{{GjCn}A`}0000{cc{}}0000{GnGn}{Bf{{D`{Gj}}}}{BfGj}0{{{Bh{Bf}}}{{Df{GhB`B`}}}}{GhGh}{cGj{{Cl{}{{Cj{Gj}}}}}}{{Gjc}bDb}{{GjGj}b}{{GhEfEfGj}b}{{GjGj}Gj}{{GjGj}Bn}{ce{}{}}0000{GjBn}0{{}B`}{{GnH`}b}{{GnH`Ej}b}`{Ghb}`{{EfEfGlGj}Gn}{{}Gh}0{GjGj}`{{GjGj}{{D`{Cd}}}}{{GhGn{D`{{Bh{Bf}}}}}b}5{{}b}?{{GhEj}b}``{{GjGjBn}b}```?{{GjGj}b}{{GjGj}Gj}??1{GhB`}{{GhEj}{{D`{Fj}}}}{c{{h{e}}}{}{}}000000000{cj{}}00004{{GnH`}b}{{GnH`Ej}b}``````````````{{}Hd}{{HdHd}Hd}{{HdHd}b}10{HdBf}``21{ce{}{}}000000000``{HdHd}{FjFj}{{ce}b{}{}}0{{HdHd}Cd}3{{HdHd}Bn}``89{{}Fj}1{FjBn}{{Hdc}b{{Cl{}{{Cj{Hd}}}}}}{{H`Ej}{{D`{Fj}}}}0{FjHd}{{HdCn}A`}0000`{cc{}}0000{Bf{{D`{Hd}}}}{BfHd}0{cHd{{Cl{}{{Cj{Hd}}}}}}{B`H`}{{Hdc}bDb}{{HdHd}b}{{HdHd}Hd}>{ce{}{}}0000{Blc{}}1{HdBn}0?{BlB`}{{H`EjEhHd}b}{{}H`}{{{Al{{Bh{Bf}}}}}Bl}{{EhHd}Fj}{Hf{{D`{c}}}{}}{HdHd}{{HdHd}{{D`{Cd}}}}{FjEh}{FjBn}>`{{HdHdBn}b}>?>==?{H`B`}{{H`Ej}{{D`{Fj}}}}{{H`Ef}{{D`{Ed}}}}{{B`BfB`}{{Al{{Bh{Bf}}}}}}{B`c{}}0{{B`Bf}Hh}{c{{h{e}}}{}{}}000000000{cj{}}0000{{HdHd}Hd}{{H`Ej}b};{{}B`}{B`b}0{Bnd}````````````{ce{}{}}000{cc{}}0`11{{}Hj}{Hjb}::::99{{Hj{Af{Hl}}}b}`````444444333`444{Hlb}{Hnb}{I`b}``{{}Hn}{{}I`}{c{{h{e}}}{}{}}00000{cj{}}00654```;;;;`{Ibb};;`<<{B`Ib}3333221``=={{{An{c}}}{{Id{c}}}{}}=`>{c{{An{c}}}{}}554``````````````````````````````{{B`{Fl{B`}}}If}`{B`If}0{{BfCb}If}1{{B`BfB`}If}0{{BfB`}If}{Bbd}{{}If}00{{B`Cb}If}{{IfBb}If}227{{B`B`}If}{BnIf}99999941{B`Bb}`````````{{}b}`0{ce{}{}}0{{}{{D`{{Df{Bbn}}}}}}`{Ihb}``````{Ij{{Af{Il}}}}{Bbb}{cc{}}`5```````{{{Af{In}}}b}````7```{c{{h{e}}}{}{}}0{cj{}}``883{B`J`}9```221{{}J`}`````````{JbB`}{Jdb}0<<<<<<<<<<<<`{{JbB`}b}11{Jf{{An{Jb}}}}{Jh{{An{Jb}}}}{Jjb}{Jlb}5<<<<<<{JlB`}{ce{}{}}00000{B`{{Df{B`B`}}}}{{}Jl}{{}Jb}{{{Af{Il}}B`Bn}Jd}{{}Jj}`{{Jlc}{}Jn}``{B`B`}{JdEh}{JdB`}{c{{h{e}}}{}{}}00000000000{cj{}}000002`{{B`B`}B`}3`````{{K`{Af{In}}}b}{{{Af{In}}}b}>>>>>>{Kb{{An{K`}}}}{Kd{{An{{Kf{B`{Af{Il}}}}}}}}{K`{{D`{{Af{In}}}}}}{{}{{D`{{Af{In}}}}}}{cc{}}00{{B`{Af{Il}}}b}{ce{}{}}00{{}K`}{B`{{D`{{Af{Il}}}}}}`:{B`b}:>>>>>>===:``{KhB`}04444``{{KhB`}b}{{{Af{Il}}{Bh{Bf}}{Al{Hh}}}b}``{{{Af{Il}}}{{Af{Il}}}}99{{KhB`}{{Af{In}}}}4{IlB`}`{Il{{Id{Kh}}}}::```{{{Bh{Bf}}}{{Af{Il}}}}``````7{c{{h{e}}}{}{}}000{cj{}}0```===={Kj{{D`{{Af{In}}}}}}`{{}B`}{{}{{Af{Il}}}}{{}{{D`{{Af{In}}}}}}{{}Kl}33{Kn{{An{Kj}}}}{cc{}}0{KjJ`}`{ce{}{}}0{{}Kj}{{}b}{J`b};8====<<``````{{}Ih}{{IhIh}Ih}{{IhIh}b}10{IhCb}`2177{Ih{{D`{{Df{Bbn}}}}}}{IhIh}{{ce}b{}{}}{{IhIh}Cd}2{{IhIh}Bn}780{{Ihc}b{{Cl{}{{Cj{Ih}}}}}}{{IhCn}A`}0000{cc{}}{Cb{{D`{Ih}}}}{CbIh}0{cIh{{Cl{}{{Cj{Ih}}}}}}{{Ihc}bDb}=>7{ce{}{}}{IhBn}0<{{IhIh}{{D`{Cd}}}}{{IhIh}b}{{IhIhBn}b}{{IhIh}Ih}2052{c{{h{e}}}{}{}}0{cj{}}2```````777777{L`L`}{{ce}b{}{}}{{L`L`}Bn}`???{LbL`}{LbKl}{InB`}`{In{{Id{Lb}}}}>>>`{{{Af{Il}}B`Bn}In}````?`999999888`````{{B`{Af{In}}}b}{ce{}{}}000{{}b}{{LdLd}Cd}{Lf{{An{{Lh{Ld}}}}}}{{LdLd}Bn}`{cc{}}0{{}B`}066{{LdLd}{{D`{Cd}}}}{{{Af{In}}}b}7`{c{{h{e}}}{}{}}000{cj{}}0``9999{{}d}00`{{B`B`B`B`B`}Kl}<<{{KlCn}A`}8=```{{KlB`}b}``554`","D":"B@l","p":[[1,"unit"],[1,"never"],[5,"Arguments",1323],[6,"Result",1324],[5,"TypeId",1325],[5,"Stdout",31],[1,"str"],[8,"Result",1323],[5,"BLOCK_DEVICE",44],[10,"BlockDevice",1326],[5,"Arc",1327],[5,"QUEUE_FRAMES",57],[5,"FrameTracker",431],[5,"Vec",1328],[5,"UPSafeCell",839],[1,"usize"],[1,"i32"],[5,"VirtIOBlock",57],[1,"u8"],[1,"slice"],[10,"File",91],[5,"UserBuffer",618],[1,"bool"],[5,"OpenFlags",105],[1,"u32"],[6,"Ordering",1329],[5,"ROOT_INODE",105],[5,"Inode",1330],[17,"Item"],[10,"IntoIterator",1331],[5,"Formatter",1323],[6,"Option",1332],[10,"Hasher",1333],[5,"OSInode",105],[1,"tuple"],[5,"PipeRingBuffer",201],[6,"RingBufferStatus",201],[5,"Pipe",201],[5,"Stdin",255],[5,"Stdout",255],[5,"PanicInfo",1334],[5,"PhysAddr",308],[5,"VirtAddr",308],[5,"PhysPageNum",308],[5,"VirtPageNum",308],[5,"SimpleRange",308],[10,"StepByOne",308],[10,"Copy",1335],[10,"PartialEq",1329],[10,"PartialOrd",1329],[10,"Debug",1323],[10,"Clone",1336],[5,"PageTableEntry",618],[1,"array"],[5,"SimpleRangeIterator",308],[10,"FrameAllocator",431],[5,"StackFrameAllocator",431],[5,"FRAME_ALLOCATOR",431],[5,"Layout",1337],[5,"MemorySet",485],[5,"MapPermission",485],[6,"MapType",485],[5,"MapArea",485],[5,"PageTable",618],[5,"KERNEL_SPACE",485],[5,"PTEFlags",618],[5,"UserBufferIterator",618],[5,"String",1338],[5,"Condvar",759],[10,"Mutex",780],[5,"MutexSpin",780],[5,"MutexBlocking",780],[5,"Semaphore",817],[5,"RefMut",1339],[1,"isize"],[5,"SignalFlags",1164],[5,"INITPROC",909],[5,"ProcessControlBlock",1090],[5,"TaskControlBlock",1222],[5,"TaskContext",957],[5,"RecycleAllocator",970],[5,"TaskUserRes",970],[5,"PID_ALLOCATOR",970],[5,"KSTACK_ALLOCATOR",970],[5,"PidHandle",970],[5,"KernelStack",970],[10,"Sized",1335],[5,"TaskManager",1050],[5,"TASK_MANAGER",1050],[5,"PID2PCB",1050],[5,"BTreeMap",1340],[5,"ProcessControlBlockInner",1090],[5,"Processor",1131],[5,"TrapContext",1306],[5,"PROCESSOR",1131],[6,"TaskStatus",1222],[5,"TaskControlBlockInner",1222],[5,"TimerCondVar",1266],[5,"TIMERS",1266],[5,"BinaryHeap",1341],[5,"VirtioHal",57],[5,"OSInodeInner",105],[8,"VPNRange",308],[8,"FrameAllocatorImpl",431],[5,"CondvarInner",759],[5,"MutexBlockingInner",780],[5,"SemaphoreInner",817]],"r":[[21,17],[24,17],[25,17],[41,44],[42,44],[45,57],[92,105],[93,255],[94,255],[96,105],[97,201],[98,105],[281,431],[282,485],[283,485],[284,485],[285,485],[286,618],[287,618],[288,308],[289,308],[290,308],[291,618],[292,308],[293,308],[295,431],[297,431],[300,485],[303,485],[304,618],[305,618],[306,618],[307,618],[749,759],[750,780],[751,780],[752,780],[753,817],[754,839],[909,970],[911,970],[912,970],[913,1164],[914,957],[915,1222],[916,1222],[919,1050],[926,1131],[927,1131],[928,1131],[929,1131],[930,1131],[931,1131],[937,970],[939,1050],[940,970],[943,1050],[945,1050],[946,1131],[947,1131],[951,1131],[956,1050],[1297,1306]],"b":[[142,"impl-Binary-for-OpenFlags"],[143,"impl-Debug-for-OpenFlags"],[144,"impl-UpperHex-for-OpenFlags"],[145,"impl-LowerHex-for-OpenFlags"],[146,"impl-Octal-for-OpenFlags"],[363,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[365,"impl-From%3Cusize%3E-for-PhysAddr"],[367,"impl-From%3Cusize%3E-for-VirtAddr"],[368,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[369,"impl-From%3Cusize%3E-for-PhysPageNum"],[371,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[372,"impl-From%3Cusize%3E-for-VirtPageNum"],[374,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[539,"impl-UpperHex-for-MapPermission"],[540,"impl-Binary-for-MapPermission"],[541,"impl-Octal-for-MapPermission"],[542,"impl-Debug-for-MapPermission"],[543,"impl-LowerHex-for-MapPermission"],[671,"impl-UpperHex-for-PTEFlags"],[672,"impl-LowerHex-for-PTEFlags"],[673,"impl-Octal-for-PTEFlags"],[674,"impl-Binary-for-PTEFlags"],[675,"impl-Debug-for-PTEFlags"],[1191,"impl-Octal-for-SignalFlags"],[1192,"impl-UpperHex-for-SignalFlags"],[1193,"impl-Binary-for-SignalFlags"],[1194,"impl-Debug-for-SignalFlags"],[1195,"impl-LowerHex-for-SignalFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACUEXwAAACIAJQAOADYAEQBOACUAegAAAH0ACgCKAAAAjQAGAJsAAwCoAAEAqwAEALEAAQC4AAAAugALAMcAFwDiAAAA5wAeAAoBLAA4ATIAbAEAAG4BAABwAQIAdAEBAHcBAAB5AQcAhwFCAM0BAQDSASAA9AEAAPoBAAD9AQ4ADwIBABICAgAWAgoAJgIAACsCAgA5AgMAPgICAEMCBABJAgIATQICAFMCAQBWAhAAaAIPAH4CAQCCAhAAlQIBAJkCDACuAgAAsAIAALkCAQC9AgYAxQICAMkCAADOAgEA0QIFANgCDgDoAgEA7gIPAAADAAADAxMAGgMAAB4DGwA8AwAAPwMIAEkDAQBQAy4AgAMMAI4DFwCoAwAAqgMWAMIDAADEAycA8gMAAPoDMQAvBAAAMwQaAE8EAQBUBAQAWwQgAH4EAQCCBBAAmQQAAJwEBQCmBAYAsQQBALoEAADABAAAwgQCAMYEEADaBAQA4gQfAAQFAQAIBRcAIgUJAA=="}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html index d5beef4d..be339cb6 100644 --- a/ch8/src/os/mm/memory_set.rs.html +++ b/ch8/src/os/mm/memory_set.rs.html @@ -678,7 +678,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/ch8/trait.impl/lazy_static/trait.LazyStatic.js b/ch8/trait.impl/lazy_static/trait.LazyStatic.js index fcfe8fa5..dd9a77ea 100644 --- a/ch8/trait.impl/lazy_static/trait.LazyStatic.js +++ b/ch8/trait.impl/lazy_static/trait.LazyStatic.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]] +"os":[["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for INITPROC"],["impl LazyStatic for TIMERS"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file