diff --git a/ch8/os/drivers/block/struct.BLOCK_DEVICE.html b/ch8/os/drivers/block/struct.BLOCK_DEVICE.html index 9fe6e0d9..b2f695e2 100644 --- a/ch8/os/drivers/block/struct.BLOCK_DEVICE.html +++ b/ch8/os/drivers/block/struct.BLOCK_DEVICE.html @@ -1,6 +1,6 @@ BLOCK_DEVICE in os::drivers::block - Rust

Struct os::drivers::block::BLOCK_DEVICE

source ·
pub struct BLOCK_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for BLOCK_DEVICE

§

type Target = Arc<dyn BlockDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn BlockDevice>

Dereferences the value.
source§

impl LazyStatic for BLOCK_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for BLOCK_DEVICE

§

type Target = Arc<dyn BlockDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn BlockDevice>

Dereferences the value.
source§

impl LazyStatic for BLOCK_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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>>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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.

source§

impl OpenFlags

source

pub fn read_write(&self) -> (bool, bool)

Do not check validity for simplicity Return (readable, writable)

-

Trait Implementations§

source§

impl Binary for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for OpenFlags

source§

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

Returns the intersection between the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for OpenFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for OpenFlags

source§

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

Returns the intersection between the two sets of flags.

+
§

type Output = OpenFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for OpenFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for OpenFlags

source§

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

Returns the union of the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for OpenFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = OpenFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for OpenFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for OpenFlags

source§

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

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

§

type Output = OpenFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for OpenFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for OpenFlags

source§

fn clone(&self) -> OpenFlags

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for OpenFlags

source§

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

Formats the value using the given formatter. Read more
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 more
source§

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<OpenFlags> for OpenFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for OpenFlags

source§

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

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

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

source§

impl Clone for OpenFlags

source§

fn clone(&self) -> OpenFlags

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for OpenFlags

source§

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

Formats the value using the given formatter. Read more
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 more
source§

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<OpenFlags> for OpenFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for OpenFlags

source§

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

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

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

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

impl LowerHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for OpenFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = OpenFlags

The resulting type after applying the ! operator.
source§

impl Octal for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for OpenFlags

source§

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

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

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

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

impl LowerHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for OpenFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = OpenFlags

The resulting type after applying the ! operator.
source§

impl Octal for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for OpenFlags

source§

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

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

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

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

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

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

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

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

impl PartialEq for OpenFlags

source§

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

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

impl PartialOrd for OpenFlags

source§

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

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

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

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

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

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

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

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

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

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

impl Sub for OpenFlags

source§

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

Returns the set difference of the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the - operator.
source§

impl SubAssign for OpenFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for OpenFlags

source§

impl Eq for OpenFlags

source§

impl StructuralPartialEq for OpenFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = OpenFlags

The resulting type after applying the - operator.
source§

impl SubAssign for OpenFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for OpenFlags

source§

impl Eq for OpenFlags

source§

impl StructuralPartialEq for OpenFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

§

type Target = Arc<Inode>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<Inode>

Dereferences the value.
source§

impl LazyStatic for ROOT_INODE

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for ROOT_INODE

§

type Target = Arc<Inode>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<Inode>

Dereferences the value.
source§

impl LazyStatic for ROOT_INODE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

Struct os::mm::address::PhysAddr

source ·
#[repr(C)]
pub struct PhysAddr(pub usize);
Expand description

Definitions

-

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

source§

impl PhysAddr

source

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

source

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

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

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

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

source§

impl PhysAddr

source

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

source

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

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

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

-
source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysAddr

source§

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

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

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

fn from(v: usize) -> Self

Converts to this type from the input type.

source§

impl Ord for PhysAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/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

source

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

source

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

source

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

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

fn max(self, other: Self) -> Self
where +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

source

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

source

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

source

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

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for PhysPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/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

Struct os::mm::address::VirtAddr

source ·
#[repr(C)]
pub struct VirtAddr(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtAddr

source

pub fn floor(&self) -> VirtPageNum

source

pub fn ceil(&self) -> VirtPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

Trait Implementations§

source§

impl Clone for VirtAddr

source§

fn clone(&self) -> VirtAddr

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtAddr

Debugging

-
source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

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

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

Formats the value using the given formatter. Read more

source§

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtAddr

source§

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

This method tests for self and other values to be equal, and is used diff --git a/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§

source§

impl VirtPageNum

source

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

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

fn max(self, other: Self) -> Self
where +VirtPageNum in os::mm::address - Rust

Struct os::mm::address::VirtPageNum

source ·
#[repr(C)]
pub struct VirtPageNum(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

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

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

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

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

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

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

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

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

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

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

impl PartialEq for VirtPageNum

source§

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

This method tests for self and other values to be equal, and is used diff --git a/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>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Deref for FRAME_ALLOCATOR

§

type Target = UPSafeCell<StackFrameAllocator>

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl LazyStatic for FRAME_ALLOCATOR

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

§

type Target = Arc<UPSafeCell<MemorySet>>

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KERNEL_SPACE

§

type Target = Arc<UPSafeCell<MemorySet>>

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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 -) -> Self

source

pub fn from_another(another: &MapArea) -> Self

source

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

source

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

source

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

source

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

source

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

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

source

pub fn from_another(another: &MapArea) -> Self

source

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

source

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

source

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

source

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

source

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

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

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/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§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

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

Returns the intersection between the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

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

Returns the intersection between the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MapPermission

source§

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

Returns the union of the two sets of flags.

§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MapPermission

source§

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

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

-
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

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

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

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<MapPermission> for MapPermission

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

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

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

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

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

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

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

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

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

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

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

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

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

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

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

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

impl PartialEq for MapPermission

source§

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

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

impl PartialOrd for MapPermission

source§

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

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

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

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

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

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

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

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

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

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

impl Sub for MapPermission

source§

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

Returns the set difference of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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 Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for PTEFlags

source§

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

Returns the intersection between the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+

Trait Implementations§

source§

impl Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for PTEFlags

source§

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

Returns the intersection between the two sets of flags.

+
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for PTEFlags

source§

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

Returns the union of the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for PTEFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = PTEFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for PTEFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for PTEFlags

source§

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

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

-
§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for PTEFlags

source§

fn clone(&self) -> PTEFlags

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PTEFlags

source§

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

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

impl Extend<PTEFlags> for PTEFlags

source§

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

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

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<PTEFlags> for PTEFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for PTEFlags

source§

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

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

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

§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for PTEFlags

source§

fn clone(&self) -> PTEFlags

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for PTEFlags

source§

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

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

impl Extend<PTEFlags> for PTEFlags

source§

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

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

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<PTEFlags> for PTEFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for PTEFlags

source§

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

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

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

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

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

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

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

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

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

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

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

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

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

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

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

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

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

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

impl PartialEq for PTEFlags

source§

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

This method tests for self and other values to be equal, and is used 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>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

Struct os::task::manager::PID2PCB

source ·
pub struct PID2PCB {
     __private_field: (),
 }

Fields§

§__private_field: ()

Methods from Deref<Target = UPSafeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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>>§

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

Struct os::task::processor::PROCESSOR

source ·
pub struct PROCESSOR {
     __private_field: (),
 }

Fields§

§__private_field: ()

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

source

pub 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§

Blanket Implementations§

source§

impl<T> Any for T
where +

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

source

pub fn check_error(&self) -> Option<(i32, &'static str)>

Trait Implementations§

source§

impl Binary for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for SignalFlags

source§

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

Returns the intersection between the two sets of flags.

-
§

type Output = SignalFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for SignalFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl SignalFlags

source

pub fn check_error(&self) -> Option<(i32, &'static str)>

Trait Implementations§

source§

impl Binary for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for SignalFlags

source§

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

Returns the intersection between the two sets of flags.

+
§

type Output = SignalFlags

The resulting type after applying the & operator.
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§

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

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

-
§

type Output = SignalFlags

The resulting type after applying the ^ operator.
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 more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for SignalFlags

source§

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

Formats the value using the given formatter. Read more
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 more
source§

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<SignalFlags> for SignalFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for SignalFlags

source§

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

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

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

§

type Output = SignalFlags

The resulting type after applying the ^ operator.
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 more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for SignalFlags

source§

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

Formats the value using the given formatter. Read more
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 more
source§

fn extend_one(&mut self, item: A)

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

fn extend_reserve(&mut self, additional: usize)

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

impl FromIterator<SignalFlags> for SignalFlags

source§

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

Creates a value from an iterator. Read more
source§

impl Hash for SignalFlags

source§

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

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

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

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

impl LowerHex for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for SignalFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = SignalFlags

The resulting type after applying the ! operator.
source§

impl Octal for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for SignalFlags

source§

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

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

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

§

type Output = SignalFlags

The resulting type after applying the ! operator.
source§

impl Octal for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for SignalFlags

source§

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

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

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

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

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

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

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

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

impl PartialEq for 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>

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

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

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

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

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

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

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

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

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

impl Sub for SignalFlags

source§

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

Returns the set difference of the two sets of flags.

-
§

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§

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

Formats the value using the given formatter.
source§

impl Copy for SignalFlags

source§

impl Eq for SignalFlags

source§

impl StructuralPartialEq for SignalFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

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§

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

Formats the value using the given formatter.
source§

impl Copy for SignalFlags

source§

impl Eq for SignalFlags

source§

impl StructuralPartialEq for SignalFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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

Struct os::task::INITPROC

source ·
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§

Blanket Implementations§

source§

impl<T> Any for T
where +}

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§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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 os::timer::TIMERS

source ·
struct TIMERS {
     __private_field: (),
 }

Fields§

§__private_field: ()

Methods from Deref<Target = UPSafeCell<BinaryHeap<TimerCondVar>>>§

source

pub 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§

source§

impl<T> Any for T
where +

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/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