From 3e847a2ced25abc7c729615d618122e4428c7d61 Mon Sep 17 00:00:00 2001 From: chyyuu Date: Mon, 4 Apr 2022 03:31:56 +0000 Subject: [PATCH] deploy: 863e61edbc38dc0ca60e3be7356902d8f2a67d17 --- .../drivers/block/fn.block_device_test.html | 2 +- ch9-log/os/drivers/block/index.html | 2 +- .../os/drivers/block/struct.BLOCK_DEVICE.html | 8 +- .../block/virtio_blk/fn.virtio_dma_alloc.html | 2 +- .../virtio_blk/fn.virtio_dma_dealloc.html | 2 +- .../virtio_blk/fn.virtio_phys_to_virt.html | 2 +- .../virtio_blk/fn.virtio_virt_to_phys.html | 2 +- .../os/drivers/block/virtio_blk/index.html | 2 +- .../block/virtio_blk/struct.QUEUE_FRAMES.html | 10 +-- .../block/virtio_blk/struct.VirtIOBlock.html | 2 +- ch9-log/os/drivers/chardev/index.html | 2 +- ch9-log/os/drivers/chardev/struct.UART.html | 8 +- ch9-log/os/fn.rust_main.html | 2 +- .../block_cache/fn.block_cache_sync_all.html | 2 +- .../block_cache/fn.get_block_cache.html | 2 +- ch9-log/os/fs/easy_fs/block_cache/index.html | 2 +- .../struct.BLOCK_CACHE_MANAGER.html | 8 +- .../easy_fs/block_dev/trait.BlockDevice.html | 2 +- ch9-log/os/fs/inode/fn.list_apps.html | 2 +- ch9-log/os/fs/inode/fn.open_file.html | 2 +- ch9-log/os/fs/inode/index.html | 2 +- ch9-log/os/fs/inode/struct.OSInode.html | 2 +- ch9-log/os/fs/inode/struct.OpenFlags.html | 88 +++++++++---------- ch9-log/os/fs/inode/struct.ROOT_INODE.html | 8 +- ch9-log/os/fs/trait.File.html | 2 +- ch9-log/os/index.html | 2 +- .../os/mm/frame_allocator/fn.frame_alloc.html | 2 +- .../fn.frame_allocator_test.html | 2 +- .../mm/frame_allocator/fn.frame_dealloc.html | 2 +- .../fn.init_frame_allocator.html | 2 +- ch9-log/os/mm/frame_allocator/index.html | 2 +- .../struct.FRAME_ALLOCATOR.html | 10 +-- ch9-log/os/mm/memory_set/enum.MapType.html | 10 +-- ch9-log/os/mm/memory_set/fn.kernel_token.html | 2 +- ch9-log/os/mm/memory_set/fn.remap_test.html | 2 +- ch9-log/os/mm/memory_set/index.html | 2 +- .../os/mm/memory_set/struct.KERNEL_SPACE.html | 8 +- ch9-log/os/mm/memory_set/struct.MapArea.html | 4 +- .../mm/memory_set/struct.MapPermission.html | 86 +++++++++--------- .../os/mm/memory_set/struct.MemorySet.html | 12 +-- .../os/struct.DEV_NON_BLOCKING_ACCESS.html | 10 +-- ch9-log/os/sync/up/index.html | 2 +- .../os/sync/up/struct.INTR_MASKING_INFO.html | 8 +- .../os/sync/up/struct.IntrMaskingInfo.html | 2 +- ch9-log/os/sync/up/struct.UPIntrFreeCell.html | 6 +- ch9-log/os/sync/up/struct.UPIntrRefMut.html | 8 +- .../os/task/id/fn.kernel_stack_position.html | 2 +- ch9-log/os/task/id/fn.kstack_alloc.html | 2 +- ch9-log/os/task/id/fn.pid_alloc.html | 2 +- .../task/id/fn.trap_cx_bottom_from_tid.html | 2 +- .../os/task/id/fn.ustack_bottom_from_tid.html | 2 +- ch9-log/os/task/id/index.html | 2 +- .../os/task/id/struct.KSTACK_ALLOCATOR.html | 10 +-- ch9-log/os/task/id/struct.KernelStack.html | 2 +- ch9-log/os/task/id/struct.PID_ALLOCATOR.html | 4 +- ch9-log/os/task/id/struct.PidHandle.html | 2 +- ch9-log/os/task/id/struct.TaskUserRes.html | 4 +- ch9-log/os/task/manager/fn.add_task.html | 2 +- ch9-log/os/task/manager/fn.fetch_task.html | 2 +- .../manager/fn.insert_into_pid2process.html | 2 +- ch9-log/os/task/manager/fn.pid2process.html | 2 +- .../manager/fn.remove_from_pid2process.html | 2 +- ch9-log/os/task/manager/index.html | 2 +- ch9-log/os/task/manager/struct.PID2PCB.html | 10 +-- .../os/task/manager/struct.TASK_MANAGER.html | 4 +- ch9-log/os/task/process/index.html | 2 +- .../process/struct.ProcessControlBlock.html | 6 +- .../task/processor/fn.current_kstack_top.html | 2 +- .../os/task/processor/fn.current_process.html | 2 +- .../os/task/processor/fn.current_task.html | 2 +- .../os/task/processor/fn.current_trap_cx.html | 2 +- .../processor/fn.current_trap_cx_user_va.html | 2 +- .../task/processor/fn.current_user_token.html | 2 +- ch9-log/os/task/processor/fn.run_tasks.html | 2 +- ch9-log/os/task/processor/fn.schedule.html | 2 +- .../task/processor/fn.take_current_task.html | 2 +- ch9-log/os/task/processor/index.html | 2 +- .../os/task/processor/struct.PROCESSOR.html | 10 +-- ch9-log/os/timer/fn.add_timer.html | 2 +- ch9-log/os/timer/fn.check_timer.html | 2 +- ch9-log/os/timer/index.html | 2 +- ch9-log/os/timer/struct.TIMERS.html | 10 +-- ch9-log/src/os/drivers/block/mod.rs.html | 8 +- .../src/os/drivers/block/virtio_blk.rs.html | 8 +- ch9-log/src/os/drivers/chardev/mod.rs.html | 8 +- ch9-log/src/os/fs/easy_fs/block_cache.rs.html | 8 +- ch9-log/src/os/fs/easy_fs/vfs.rs.html | 4 +- ch9-log/src/os/fs/inode.rs.html | 14 ++- ch9-log/src/os/main.rs.html | 8 +- ch9-log/src/os/mm/frame_allocator.rs.html | 8 +- ch9-log/src/os/mm/memory_set.rs.html | 8 +- ch9-log/src/os/sync/up.rs.html | 2 + ch9-log/src/os/task/id.rs.html | 54 +++++++++++- ch9-log/src/os/task/manager.rs.html | 22 ++++- ch9-log/src/os/task/process.rs.html | 18 ++++ ch9-log/src/os/task/processor.rs.html | 8 +- ch9-log/src/os/timer.rs.html | 8 +- 97 files changed, 392 insertions(+), 260 deletions(-) diff --git a/ch9-log/os/drivers/block/fn.block_device_test.html b/ch9-log/os/drivers/block/fn.block_device_test.html index d5273e9f..f08cd112 100644 --- a/ch9-log/os/drivers/block/fn.block_device_test.html +++ b/ch9-log/os/drivers/block/fn.block_device_test.html @@ -2,5 +2,5 @@
pub fn block_device_test()
+

Function os::drivers::block::block_device_test

source · []
pub fn block_device_test()
\ No newline at end of file diff --git a/ch9-log/os/drivers/block/index.html b/ch9-log/os/drivers/block/index.html index 28752346..0a65b485 100644 --- a/ch9-log/os/drivers/block/index.html +++ b/ch9-log/os/drivers/block/index.html @@ -2,7 +2,7 @@

Re-exports

pub use virtio_blk::VirtIOBlock;

Modules

Structs

Functions

diff --git a/ch9-log/os/drivers/block/struct.BLOCK_DEVICE.html b/ch9-log/os/drivers/block/struct.BLOCK_DEVICE.html index 48bd3b6c..085edeae 100644 --- a/ch9-log/os/drivers/block/struct.BLOCK_DEVICE.html +++ b/ch9-log/os/drivers/block/struct.BLOCK_DEVICE.html @@ -2,11 +2,11 @@
pub struct BLOCK_DEVICE {
+    

Struct os::drivers::block::BLOCK_DEVICE

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

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html index 4ad011d5..cb45fece 100644 --- a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html +++ b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html @@ -2,6 +2,6 @@
#[no_mangle]
+    

Function os::drivers::block::virtio_blk::virtio_dma_alloc

source · []
#[no_mangle]
 pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr
\ No newline at end of file diff --git a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html index ce86101e..1a27dc6a 100644 --- a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html +++ b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html @@ -2,6 +2,6 @@
#[no_mangle]
+    

Function os::drivers::block::virtio_blk::virtio_dma_dealloc

source · []
#[no_mangle]
 pub extern "C" fn virtio_dma_dealloc(
    pa: PhysAddr,
    pages: usize
) -> i32
\ No newline at end of file diff --git a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html index 16a6b413..76c48305 100644 --- a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html +++ b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html @@ -2,6 +2,6 @@
#[no_mangle]
+    

Function os::drivers::block::virtio_blk::virtio_phys_to_virt

source · []
#[no_mangle]
 pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr
\ No newline at end of file diff --git a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html index c29876d6..f5dd40eb 100644 --- a/ch9-log/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html +++ b/ch9-log/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html @@ -2,6 +2,6 @@
#[no_mangle]
+    

Function os::drivers::block::virtio_blk::virtio_virt_to_phys

source · []
#[no_mangle]
 pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr
\ No newline at end of file diff --git a/ch9-log/os/drivers/block/virtio_blk/index.html b/ch9-log/os/drivers/block/virtio_blk/index.html index 9457b6c2..da14e0dd 100644 --- a/ch9-log/os/drivers/block/virtio_blk/index.html +++ b/ch9-log/os/drivers/block/virtio_blk/index.html @@ -2,7 +2,7 @@

Structs

Constants

Functions

diff --git a/ch9-log/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch9-log/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html index b9fe397d..1aa7544f 100644 --- a/ch9-log/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html +++ b/ch9-log/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html @@ -2,12 +2,12 @@
struct QUEUE_FRAMES {
+    

Struct os::drivers::block::virtio_blk::QUEUE_FRAMES

source · []
struct QUEUE_FRAMES {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<FrameTracker>>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<FrameTracker>>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/drivers/block/virtio_blk/struct.VirtIOBlock.html b/ch9-log/os/drivers/block/virtio_blk/struct.VirtIOBlock.html index e64c2e17..7b4c8ff8 100644 --- a/ch9-log/os/drivers/block/virtio_blk/struct.VirtIOBlock.html +++ b/ch9-log/os/drivers/block/virtio_blk/struct.VirtIOBlock.html @@ -5,7 +5,7 @@

Struct os::drivers::block::virtio_blk::VirtIOBlock

source · []
pub struct VirtIOBlock {
     virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>,
     condvars: BTreeMap<u16, Condvar>,
-}

Fields

virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>condvars: BTreeMap<u16, Condvar>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>condvars: BTreeMap<u16, Condvar>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/drivers/chardev/index.html b/ch9-log/os/drivers/chardev/index.html index 2ca36478..2ca6de46 100644 --- a/ch9-log/os/drivers/chardev/index.html +++ b/ch9-log/os/drivers/chardev/index.html @@ -2,7 +2,7 @@

Re-exports

pub use ns16550a::NS16550a;

Modules

Structs

Traits

diff --git a/ch9-log/os/drivers/chardev/struct.UART.html b/ch9-log/os/drivers/chardev/struct.UART.html index 1bb75419..8ff43c37 100644 --- a/ch9-log/os/drivers/chardev/struct.UART.html +++ b/ch9-log/os/drivers/chardev/struct.UART.html @@ -2,11 +2,11 @@
pub struct UART {
+    

Struct os::drivers::chardev::UART

source · []
pub struct UART {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/fn.rust_main.html b/ch9-log/os/fn.rust_main.html index 011f0cf9..05caa162 100644 --- a/ch9-log/os/fn.rust_main.html +++ b/ch9-log/os/fn.rust_main.html @@ -2,6 +2,6 @@
-

Function os::rust_main

source · []
#[no_mangle]
+    

Function os::rust_main

source · []
#[no_mangle]
 pub fn rust_main() -> !
\ No newline at end of file diff --git a/ch9-log/os/fs/easy_fs/block_cache/fn.block_cache_sync_all.html b/ch9-log/os/fs/easy_fs/block_cache/fn.block_cache_sync_all.html index ab5accf2..93fe80eb 100644 --- a/ch9-log/os/fs/easy_fs/block_cache/fn.block_cache_sync_all.html +++ b/ch9-log/os/fs/easy_fs/block_cache/fn.block_cache_sync_all.html @@ -2,5 +2,5 @@
pub fn block_cache_sync_all()
+

Function os::fs::easy_fs::block_cache::block_cache_sync_all

source · []
pub fn block_cache_sync_all()
\ No newline at end of file diff --git a/ch9-log/os/fs/easy_fs/block_cache/fn.get_block_cache.html b/ch9-log/os/fs/easy_fs/block_cache/fn.get_block_cache.html index e3b9b980..9b34b467 100644 --- a/ch9-log/os/fs/easy_fs/block_cache/fn.get_block_cache.html +++ b/ch9-log/os/fs/easy_fs/block_cache/fn.get_block_cache.html @@ -2,5 +2,5 @@
pub fn get_block_cache(
    block_id: usize,
    block_device: Arc<dyn BlockDevice>
) -> Arc<Mutex<BlockCache>>
+

Function os::fs::easy_fs::block_cache::get_block_cache

source · []
pub fn get_block_cache(
    block_id: usize,
    block_device: Arc<dyn BlockDevice>
) -> Arc<Mutex<BlockCache>>
\ No newline at end of file diff --git a/ch9-log/os/fs/easy_fs/block_cache/index.html b/ch9-log/os/fs/easy_fs/block_cache/index.html index c74c67f8..4f6b7b28 100644 --- a/ch9-log/os/fs/easy_fs/block_cache/index.html +++ b/ch9-log/os/fs/easy_fs/block_cache/index.html @@ -2,7 +2,7 @@

Structs

Constants

Functions

diff --git a/ch9-log/os/fs/easy_fs/block_cache/struct.BLOCK_CACHE_MANAGER.html b/ch9-log/os/fs/easy_fs/block_cache/struct.BLOCK_CACHE_MANAGER.html index 9631d82d..d0428123 100644 --- a/ch9-log/os/fs/easy_fs/block_cache/struct.BLOCK_CACHE_MANAGER.html +++ b/ch9-log/os/fs/easy_fs/block_cache/struct.BLOCK_CACHE_MANAGER.html @@ -2,7 +2,7 @@
pub struct BLOCK_CACHE_MANAGER {
+    

Struct os::fs::easy_fs::block_cache::BLOCK_CACHE_MANAGER

source · []
pub struct BLOCK_CACHE_MANAGER {
     __private_field: (),
 }

Fields

__private_field: ()

Methods from Deref<Target = Mutex<BlockCacheManager>>

Returns true if the lock is currently held.

Safety
@@ -34,9 +34,9 @@ lock to FFI that doesn’t know how to deal with RAII.

// `maybe_guard` is still held, so the second call fails let maybe_guard2 = lock.try_lock(); assert!(maybe_guard2.is_none());
-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/fs/easy_fs/block_dev/trait.BlockDevice.html b/ch9-log/os/fs/easy_fs/block_dev/trait.BlockDevice.html index 66faae42..8b0fa92b 100644 --- a/ch9-log/os/fs/easy_fs/block_dev/trait.BlockDevice.html +++ b/ch9-log/os/fs/easy_fs/block_dev/trait.BlockDevice.html @@ -6,5 +6,5 @@ fn read_block(&self, block_id: usize, buf: &mut [u8]);
fn write_block(&self, block_id: usize, buf: &[u8]);
fn handle_irq(&self); -}

Required methods

Implementors

+}

Required methods

Implementors

\ No newline at end of file diff --git a/ch9-log/os/fs/inode/fn.list_apps.html b/ch9-log/os/fs/inode/fn.list_apps.html index a461c96f..356f57c7 100644 --- a/ch9-log/os/fs/inode/fn.list_apps.html +++ b/ch9-log/os/fs/inode/fn.list_apps.html @@ -2,5 +2,5 @@
-

Function os::fs::inode::list_apps

source · []
pub fn list_apps()
+

Function os::fs::inode::list_apps

source · []
pub fn list_apps()
\ No newline at end of file diff --git a/ch9-log/os/fs/inode/fn.open_file.html b/ch9-log/os/fs/inode/fn.open_file.html index 14adceba..68f34b8f 100644 --- a/ch9-log/os/fs/inode/fn.open_file.html +++ b/ch9-log/os/fs/inode/fn.open_file.html @@ -2,5 +2,5 @@
-

Function os::fs::inode::open_file

source · []
pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
+

Function os::fs::inode::open_file

source · []
pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
\ No newline at end of file diff --git a/ch9-log/os/fs/inode/index.html b/ch9-log/os/fs/inode/index.html index e3125573..b75d2124 100644 --- a/ch9-log/os/fs/inode/index.html +++ b/ch9-log/os/fs/inode/index.html @@ -2,7 +2,7 @@
-

Module os::fs::inode

source · []

Structs

+

Module os::fs::inode

source · []

Structs

Functions

\ No newline at end of file diff --git a/ch9-log/os/fs/inode/struct.OSInode.html b/ch9-log/os/fs/inode/struct.OSInode.html index 6747c22b..2afde5de 100644 --- a/ch9-log/os/fs/inode/struct.OSInode.html +++ b/ch9-log/os/fs/inode/struct.OSInode.html @@ -6,7 +6,7 @@ readable: bool, writable: bool, inner: UPIntrFreeCell<OSInodeInner>, -}

Fields

readable: boolwritable: boolinner: UPIntrFreeCell<OSInodeInner>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

readable: boolwritable: boolinner: UPIntrFreeCell<OSInodeInner>

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/fs/inode/struct.OpenFlags.html b/ch9-log/os/fs/inode/struct.OpenFlags.html index 44a23a72..eb0d7778 100644 --- a/ch9-log/os/fs/inode/struct.OpenFlags.html +++ b/ch9-log/os/fs/inode/struct.OpenFlags.html @@ -2,16 +2,16 @@
-

Struct os::fs::inode::OpenFlags

source · []
pub struct OpenFlags {
+    

Struct os::fs::inode::OpenFlags

source · []
pub struct OpenFlags {
     bits: u32,
-}

Fields

bits: u32

Implementations

Returns an empty set of flags.

-

Returns the set containing all flags.

-

Returns the raw value of the flags currently stored.

-

Convert from underlying bit representation, unless that +}

Fields

bits: u32

Implementations

Returns an empty set of flags.

+

Returns the set containing all flags.

+

Returns the raw value of the flags currently stored.

+

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

-

Convert from underlying bit representation, dropping any bits +

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

-

Convert from underlying bit representation, preserving all +

Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).

Safety

The caller of the bitflags! macro can chose to allow or @@ -19,35 +19,35 @@ disallow extra bits for their bitflags type.

The caller of from_bits_unchecked() has to ensure that all bits correspond to a defined flag or that extra bits are valid for this bitflags type.

-

Returns true if no flags are currently stored.

-

Returns true if all flags are currently set.

-

Returns true if there are flags common to both self and other.

-

Returns true if all of the flags in other are contained within self.

-

Inserts the specified flags in-place.

-

Removes the specified flags in-place.

-

Toggles the specified flags in-place.

-

Inserts or removes the specified flags depending on the passed value.

-

Returns the intersection between the flags in self and +

Returns true if no flags are currently stored.

+

Returns true if all flags are currently set.

+

Returns true if there are flags common to both self and other.

+

Returns true if all of the flags in other are contained within self.

+

Inserts the specified flags in-place.

+

Removes the specified flags in-place.

+

Toggles the specified flags in-place.

+

Inserts or removes the specified flags depending on the passed value.

+

Returns the intersection between the flags in self and other.

Specifically, the returned set contains only the flags which are present in both self and other.

This is equivalent to using the & operator (e.g. ops::BitAnd), as in flags & other.

-

Returns the union of between the flags in self and other.

+

Returns the union of between the flags in self and other.

Specifically, the returned set contains all flags which are present in either self or other, including any which are present in both (see Self::symmetric_difference if that is undesirable).

This is equivalent to using the | operator (e.g. ops::BitOr), as in flags | other.

-

Returns the difference between the flags in self and other.

+

Returns the difference between the flags in self and other.

Specifically, the returned set contains all flags present in self, except for the ones present in other.

It is also conceptually equivalent to the “bit-clear” operation: flags & !other (and this syntax is also supported).

This is equivalent to using the - operator (e.g. ops::Sub), as in flags - other.

-

Returns the symmetric difference between the flags +

Returns the symmetric difference between the flags in self and other.

Specifically, the returned set contains the flags present which are present in self or other, but that are not present in @@ -55,57 +55,57 @@ both. Equivalently, it contains the flags present in exactly one of the sets self and other.

This is equivalent to using the ^ operator (e.g. ops::BitXor), as in flags ^ other.

-

Returns the complement of this set of flags.

+

Returns the complement of this set of flags.

Specifically, the returned set contains all the flags which are not set in self, but which are allowed for this type.

Alternatively, it can be thought of as the set difference between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Do not check validity for simplicity +

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

-

Trait Implementations

Formats the value using the given formatter.

-

Returns the intersection between the two sets of flags.

+

Trait Implementations

Formats the value using the given formatter.

+

Returns the intersection between the two sets of flags.

The resulting type after applying the & operator.

-

Disables all flags disabled in the set.

-

Returns the union of the two sets of flags.

+

Disables all flags disabled in the set.

+

Returns the union of the two sets of flags.

The resulting type after applying the | operator.

-

Adds the set of flags.

-

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

+

Adds the set of flags.

+

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

The resulting type after applying the ^ operator.

-

Toggles the set of flags.

-

Returns a copy of the value. Read more

+

Toggles the set of flags.

+

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

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

+

Formats the value using the given formatter. Read more

+

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

🔬 This is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

🔬 This is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements. Read more

-

Creates a value from an iterator. Read more

-

Feeds this value into the given Hasher. Read more

+

Creates a value from an iterator. Read more

+

Feeds this value into the given Hasher. Read more

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

-

Formats the value using the given formatter.

-

Returns the complement of this set of flags.

+

Formats the value using the given formatter.

+

Returns the complement of this set of flags.

The resulting type after applying the ! operator.

-

Formats the value using the given formatter.

-

This method returns an Ordering between self and other. Read more

+

Formats the value using the given formatter.

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

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

+

This method tests for !=.

+

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

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

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

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

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

-

Returns the set difference of the two sets of flags.

+

Returns the set difference of the two sets of flags.

The resulting type after applying the - operator.

-

Disables all flags enabled in the set.

-

Formats the value using the given formatter.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Disables all flags enabled in the set.

+

Formats the value using the given formatter.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/fs/inode/struct.ROOT_INODE.html b/ch9-log/os/fs/inode/struct.ROOT_INODE.html index 5a4037c6..aa9fd33a 100644 --- a/ch9-log/os/fs/inode/struct.ROOT_INODE.html +++ b/ch9-log/os/fs/inode/struct.ROOT_INODE.html @@ -2,11 +2,11 @@
-

Struct os::fs::inode::ROOT_INODE

source · []
pub struct ROOT_INODE {
+    

Struct os::fs::inode::ROOT_INODE

source · []
pub struct ROOT_INODE {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/fs/trait.File.html b/ch9-log/os/fs/trait.File.html index 1fa9b8bb..481efa1a 100644 --- a/ch9-log/os/fs/trait.File.html +++ b/ch9-log/os/fs/trait.File.html @@ -7,5 +7,5 @@
fn writable(&self) -> bool;
fn read(&self, buf: UserBuffer) -> usize;
fn write(&self, buf: UserBuffer) -> usize; -}

Required methods

Implementors

+}

Required methods

Implementors

\ No newline at end of file diff --git a/ch9-log/os/index.html b/ch9-log/os/index.html index 5ceb9828..217205c7 100644 --- a/ch9-log/os/index.html +++ b/ch9-log/os/index.html @@ -2,7 +2,7 @@
-

Crate os

source · []

Modules

+

Crate os

source · []

Modules

Macros

Structs

Functions

diff --git a/ch9-log/os/mm/frame_allocator/fn.frame_alloc.html b/ch9-log/os/mm/frame_allocator/fn.frame_alloc.html index d84c92e4..a8cd4c05 100644 --- a/ch9-log/os/mm/frame_allocator/fn.frame_alloc.html +++ b/ch9-log/os/mm/frame_allocator/fn.frame_alloc.html @@ -2,5 +2,5 @@
pub fn frame_alloc() -> Option<FrameTracker>
+

Function os::mm::frame_allocator::frame_alloc

source · []
pub fn frame_alloc() -> Option<FrameTracker>
\ No newline at end of file diff --git a/ch9-log/os/mm/frame_allocator/fn.frame_allocator_test.html b/ch9-log/os/mm/frame_allocator/fn.frame_allocator_test.html index 77f0086a..ac59e9c1 100644 --- a/ch9-log/os/mm/frame_allocator/fn.frame_allocator_test.html +++ b/ch9-log/os/mm/frame_allocator/fn.frame_allocator_test.html @@ -2,5 +2,5 @@
pub fn frame_allocator_test()
+

Function os::mm::frame_allocator::frame_allocator_test

source · []
pub fn frame_allocator_test()
\ No newline at end of file diff --git a/ch9-log/os/mm/frame_allocator/fn.frame_dealloc.html b/ch9-log/os/mm/frame_allocator/fn.frame_dealloc.html index c80bcc8c..7633ddf9 100644 --- a/ch9-log/os/mm/frame_allocator/fn.frame_dealloc.html +++ b/ch9-log/os/mm/frame_allocator/fn.frame_dealloc.html @@ -2,5 +2,5 @@
pub fn frame_dealloc(ppn: PhysPageNum)
+

Function os::mm::frame_allocator::frame_dealloc

source · []
pub fn frame_dealloc(ppn: PhysPageNum)
\ No newline at end of file diff --git a/ch9-log/os/mm/frame_allocator/fn.init_frame_allocator.html b/ch9-log/os/mm/frame_allocator/fn.init_frame_allocator.html index b72e6ac9..ba9a495d 100644 --- a/ch9-log/os/mm/frame_allocator/fn.init_frame_allocator.html +++ b/ch9-log/os/mm/frame_allocator/fn.init_frame_allocator.html @@ -2,5 +2,5 @@
pub fn init_frame_allocator()
+

Function os::mm::frame_allocator::init_frame_allocator

source · []
pub fn init_frame_allocator()
\ No newline at end of file diff --git a/ch9-log/os/mm/frame_allocator/index.html b/ch9-log/os/mm/frame_allocator/index.html index dd1d4e85..dcc683f2 100644 --- a/ch9-log/os/mm/frame_allocator/index.html +++ b/ch9-log/os/mm/frame_allocator/index.html @@ -2,7 +2,7 @@

Structs

Traits

Functions

Type Definitions

diff --git a/ch9-log/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch9-log/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html index a34a0b89..7f22badc 100644 --- a/ch9-log/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ b/ch9-log/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html @@ -2,12 +2,12 @@
pub struct FRAME_ALLOCATOR {
+    

Struct os::mm::frame_allocator::FRAME_ALLOCATOR

source · []
pub struct FRAME_ALLOCATOR {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<StackFrameAllocator>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<StackFrameAllocator>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/mm/memory_set/enum.MapType.html b/ch9-log/os/mm/memory_set/enum.MapType.html index 05f723ed..933b0dee 100644 --- a/ch9-log/os/mm/memory_set/enum.MapType.html +++ b/ch9-log/os/mm/memory_set/enum.MapType.html @@ -2,16 +2,16 @@
pub enum MapType {
+    

Enum os::mm::memory_set::MapType

source · []
pub enum MapType {
     Identical,
     Framed,
-}

Variants

Identical

Framed

Trait Implementations

Returns a copy of the value. Read more

+}

Variants

Identical

Framed

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

This method tests for self and other values to be equal, and is used +

Formats the value using the given formatter. Read more

+

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/mm/memory_set/fn.kernel_token.html b/ch9-log/os/mm/memory_set/fn.kernel_token.html index 91f879db..bab9694c 100644 --- a/ch9-log/os/mm/memory_set/fn.kernel_token.html +++ b/ch9-log/os/mm/memory_set/fn.kernel_token.html @@ -2,5 +2,5 @@
pub fn kernel_token() -> usize
+

Function os::mm::memory_set::kernel_token

source · []
pub fn kernel_token() -> usize
\ No newline at end of file diff --git a/ch9-log/os/mm/memory_set/fn.remap_test.html b/ch9-log/os/mm/memory_set/fn.remap_test.html index 689a0135..1eee4a09 100644 --- a/ch9-log/os/mm/memory_set/fn.remap_test.html +++ b/ch9-log/os/mm/memory_set/fn.remap_test.html @@ -2,5 +2,5 @@
pub fn remap_test()
+

Function os::mm::memory_set::remap_test

source · []
pub fn remap_test()
\ No newline at end of file diff --git a/ch9-log/os/mm/memory_set/index.html b/ch9-log/os/mm/memory_set/index.html index fe4a834d..e9d27406 100644 --- a/ch9-log/os/mm/memory_set/index.html +++ b/ch9-log/os/mm/memory_set/index.html @@ -2,7 +2,7 @@
-

Module os::mm::memory_set

source · []

Structs

+

Module os::mm::memory_set

source · []

Structs

Enums

Functions

diff --git a/ch9-log/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch9-log/os/mm/memory_set/struct.KERNEL_SPACE.html index 56304ff0..e8719d56 100644 --- a/ch9-log/os/mm/memory_set/struct.KERNEL_SPACE.html +++ b/ch9-log/os/mm/memory_set/struct.KERNEL_SPACE.html @@ -2,11 +2,11 @@
pub struct KERNEL_SPACE {
+    

Struct os::mm::memory_set::KERNEL_SPACE

source · []
pub struct KERNEL_SPACE {
     __private_field: (),
-}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/mm/memory_set/struct.MapArea.html b/ch9-log/os/mm/memory_set/struct.MapArea.html index 8db4a37e..efefd9a2 100644 --- a/ch9-log/os/mm/memory_set/struct.MapArea.html +++ b/ch9-log/os/mm/memory_set/struct.MapArea.html @@ -2,12 +2,12 @@
pub struct MapArea {
+    

Struct os::mm::memory_set::MapArea

source · []
pub struct MapArea {
     vpn_range: SimpleRange<VirtPageNum>,
     data_frames: BTreeMap<VirtPageNum, FrameTracker>,
     map_type: MapType,
     map_perm: MapPermission,
-}

Fields

vpn_range: SimpleRange<VirtPageNum>data_frames: BTreeMap<VirtPageNum, FrameTracker>map_type: MapTypemap_perm: MapPermission

Implementations

data: start-aligned but maybe with shorter length +}

Fields

vpn_range: SimpleRange<VirtPageNum>data_frames: BTreeMap<VirtPageNum, FrameTracker>map_type: MapTypemap_perm: MapPermission

Implementations

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

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/ch9-log/os/mm/memory_set/struct.MapPermission.html b/ch9-log/os/mm/memory_set/struct.MapPermission.html index 8bb63220..1491f893 100644 --- a/ch9-log/os/mm/memory_set/struct.MapPermission.html +++ b/ch9-log/os/mm/memory_set/struct.MapPermission.html @@ -2,16 +2,16 @@
pub struct MapPermission {
+    

Struct os::mm::memory_set::MapPermission

source · []
pub struct MapPermission {
     bits: u8,
-}

Fields

bits: u8

Implementations

Returns an empty set of flags.

-

Returns the set containing all flags.

-

Returns the raw value of the flags currently stored.

-

Convert from underlying bit representation, unless that +}

Fields

bits: u8

Implementations

Returns an empty set of flags.

+

Returns the set containing all flags.

+

Returns the raw value of the flags currently stored.

+

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

-

Convert from underlying bit representation, dropping any bits +

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

-

Convert from underlying bit representation, preserving all +

Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).

Safety

The caller of the bitflags! macro can chose to allow or @@ -19,35 +19,35 @@ disallow extra bits for their bitflags type.

The caller of from_bits_unchecked() has to ensure that all bits correspond to a defined flag or that extra bits are valid for this bitflags type.

-

Returns true if no flags are currently stored.

-

Returns true if all flags are currently set.

-

Returns true if there are flags common to both self and other.

-

Returns true if all of the flags in other are contained within self.

-

Inserts the specified flags in-place.

-

Removes the specified flags in-place.

-

Toggles the specified flags in-place.

-

Inserts or removes the specified flags depending on the passed value.

-

Returns the intersection between the flags in self and +

Returns true if no flags are currently stored.

+

Returns true if all flags are currently set.

+

Returns true if there are flags common to both self and other.

+

Returns true if all of the flags in other are contained within self.

+

Inserts the specified flags in-place.

+

Removes the specified flags in-place.

+

Toggles the specified flags in-place.

+

Inserts or removes the specified flags depending on the passed value.

+

Returns the intersection between the flags in self and other.

Specifically, the returned set contains only the flags which are present in both self and other.

This is equivalent to using the & operator (e.g. ops::BitAnd), as in flags & other.

-

Returns the union of between the flags in self and other.

+

Returns the union of between the flags in self and other.

Specifically, the returned set contains all flags which are present in either self or other, including any which are present in both (see Self::symmetric_difference if that is undesirable).

This is equivalent to using the | operator (e.g. ops::BitOr), as in flags | other.

-

Returns the difference between the flags in self and other.

+

Returns the difference between the flags in self and other.

Specifically, the returned set contains all flags present in self, except for the ones present in other.

It is also conceptually equivalent to the “bit-clear” operation: flags & !other (and this syntax is also supported).

This is equivalent to using the - operator (e.g. ops::Sub), as in flags - other.

-

Returns the symmetric difference between the flags +

Returns the symmetric difference between the flags in self and other.

Specifically, the returned set contains the flags present which are present in self or other, but that are not present in @@ -55,55 +55,55 @@ both. Equivalently, it contains the flags present in exactly one of the sets self and other.

This is equivalent to using the ^ operator (e.g. ops::BitXor), as in flags ^ other.

-

Returns the complement of this set of flags.

+

Returns the complement of this set of flags.

Specifically, the returned set contains all the flags which are not set in self, but which are allowed for this type.

Alternatively, it can be thought of as the set difference 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

Formats the value using the given formatter.

-

Returns the intersection between the two sets of flags.

+

Trait Implementations

Formats the value using the given formatter.

+

Returns the intersection between the two sets of flags.

The resulting type after applying the & operator.

-

Disables all flags disabled in the set.

-

Returns the union of the two sets of flags.

+

Disables all flags disabled in the set.

+

Returns the union of the two sets of flags.

The resulting type after applying the | operator.

-

Adds the set of flags.

-

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

+

Adds the set of flags.

+

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

The resulting type after applying the ^ operator.

-

Toggles the set of flags.

-

Returns a copy of the value. Read more

+

Toggles the set of flags.

+

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

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

+

Formats the value using the given formatter. Read more

+

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

🔬 This is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

🔬 This is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements. Read more

-

Creates a value from an iterator. Read more

-

Feeds this value into the given Hasher. Read more

+

Creates a value from an iterator. Read more

+

Feeds this value into the given Hasher. Read more

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

-

Formats the value using the given formatter.

-

Returns the complement of this set of flags.

+

Formats the value using the given formatter.

+

Returns the complement of this set of flags.

The resulting type after applying the ! operator.

-

Formats the value using the given formatter.

-

This method returns an Ordering between self and other. Read more

+

Formats the value using the given formatter.

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

-

This method tests for !=.

-

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

+

This method tests for !=.

+

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

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

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

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

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

-

Returns the set difference of the two sets of flags.

+

Returns the set difference of the two sets of flags.

The resulting type after applying the - operator.

-

Disables all flags enabled in the set.

-

Formats the value using the given formatter.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Disables all flags enabled in the set.

+

Formats the value using the given formatter.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/mm/memory_set/struct.MemorySet.html b/ch9-log/os/mm/memory_set/struct.MemorySet.html index 09e05344..8c039e74 100644 --- a/ch9-log/os/mm/memory_set/struct.MemorySet.html +++ b/ch9-log/os/mm/memory_set/struct.MemorySet.html @@ -2,15 +2,15 @@
pub struct MemorySet {
+    

Struct os::mm::memory_set::MemorySet

source · []
pub struct MemorySet {
     page_table: PageTable,
     areas: Vec<MapArea>,
-}

Fields

page_table: PageTableareas: Vec<MapArea>

Implementations

Assume that no conflicts.

-

Mention that trampoline is not collected by areas.

-

Without kernel stacks.

-

Include sections in elf and trampoline, +}

Fields

page_table: PageTableareas: Vec<MapArea>

Implementations

Assume that no conflicts.

+

Mention that trampoline is not collected by areas.

+

Without kernel stacks.

+

Include sections in elf and trampoline, also returns user_sp_base and entry point.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/struct.DEV_NON_BLOCKING_ACCESS.html b/ch9-log/os/struct.DEV_NON_BLOCKING_ACCESS.html index 2b55e7f8..9d123c39 100644 --- a/ch9-log/os/struct.DEV_NON_BLOCKING_ACCESS.html +++ b/ch9-log/os/struct.DEV_NON_BLOCKING_ACCESS.html @@ -2,12 +2,12 @@
pub struct DEV_NON_BLOCKING_ACCESS {
+    

Struct os::DEV_NON_BLOCKING_ACCESS

source · []
pub struct DEV_NON_BLOCKING_ACCESS {
     pub(crate) __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<bool>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<bool>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/sync/up/index.html b/ch9-log/os/sync/up/index.html index 6fbb0356..09fb0de6 100644 --- a/ch9-log/os/sync/up/index.html +++ b/ch9-log/os/sync/up/index.html @@ -2,6 +2,6 @@
-

Module os::sync::up

source · []

Structs

+

Module os::sync::up

source · []

Structs

\ No newline at end of file diff --git a/ch9-log/os/sync/up/struct.INTR_MASKING_INFO.html b/ch9-log/os/sync/up/struct.INTR_MASKING_INFO.html index 497d74f5..ca887d56 100644 --- a/ch9-log/os/sync/up/struct.INTR_MASKING_INFO.html +++ b/ch9-log/os/sync/up/struct.INTR_MASKING_INFO.html @@ -2,11 +2,11 @@
struct INTR_MASKING_INFO {
+    

Struct os::sync::up::INTR_MASKING_INFO

source · []
struct INTR_MASKING_INFO {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPSafeCellRaw<IntrMaskingInfo>>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPSafeCellRaw<IntrMaskingInfo>>

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/sync/up/struct.IntrMaskingInfo.html b/ch9-log/os/sync/up/struct.IntrMaskingInfo.html index 22e54718..20c9135b 100644 --- a/ch9-log/os/sync/up/struct.IntrMaskingInfo.html +++ b/ch9-log/os/sync/up/struct.IntrMaskingInfo.html @@ -5,7 +5,7 @@

Struct os::sync::up::IntrMaskingInfo

source · []
pub struct IntrMaskingInfo {
     nested_level: usize,
     sie_before_masking: bool,
-}

Fields

nested_level: usizesie_before_masking: bool

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

nested_level: usizesie_before_masking: bool

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/sync/up/struct.UPIntrFreeCell.html b/ch9-log/os/sync/up/struct.UPIntrFreeCell.html index 0e5ba3f1..6921be7c 100644 --- a/ch9-log/os/sync/up/struct.UPIntrFreeCell.html +++ b/ch9-log/os/sync/up/struct.UPIntrFreeCell.html @@ -2,11 +2,11 @@
pub struct UPIntrFreeCell<T> {
+    

Struct os::sync::up::UPIntrFreeCell

source · []
pub struct UPIntrFreeCell<T> {
     inner: RefCell<T>,
 }

Fields

inner: RefCell<T>

inner data

-

Implementations

Panic if the data has been borrowed.

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Implementations

Panic if the data has been borrowed.

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/sync/up/struct.UPIntrRefMut.html b/ch9-log/os/sync/up/struct.UPIntrRefMut.html index 42c933bb..a98a1dba 100644 --- a/ch9-log/os/sync/up/struct.UPIntrRefMut.html +++ b/ch9-log/os/sync/up/struct.UPIntrRefMut.html @@ -2,10 +2,10 @@
pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);

Tuple Fields

0: Option<RefMut<'a, T>>

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Mutably dereferences the value.

-

Executes the destructor for this type. Read more

+

Struct os::sync::up::UPIntrRefMut

source · []
pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);

Tuple Fields

0: Option<RefMut<'a, T>>

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Mutably dereferences the value.

+

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/id/fn.kernel_stack_position.html b/ch9-log/os/task/id/fn.kernel_stack_position.html index 4d746b7c..d1cccf2e 100644 --- a/ch9-log/os/task/id/fn.kernel_stack_position.html +++ b/ch9-log/os/task/id/fn.kernel_stack_position.html @@ -2,6 +2,6 @@
pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
Expand description

Return (bottom, top) of a kernel stack in kernel space.

+

Function os::task::id::kernel_stack_position

source · []
pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
Expand description

Return (bottom, top) of a kernel stack in kernel space.

\ No newline at end of file diff --git a/ch9-log/os/task/id/fn.kstack_alloc.html b/ch9-log/os/task/id/fn.kstack_alloc.html index ed362ad4..dce55a0a 100644 --- a/ch9-log/os/task/id/fn.kstack_alloc.html +++ b/ch9-log/os/task/id/fn.kstack_alloc.html @@ -2,5 +2,5 @@
-

Function os::task::id::kstack_alloc

source · []
pub fn kstack_alloc() -> KernelStack
+

Function os::task::id::kstack_alloc

source · []
pub fn kstack_alloc() -> KernelStack
\ No newline at end of file diff --git a/ch9-log/os/task/id/fn.pid_alloc.html b/ch9-log/os/task/id/fn.pid_alloc.html index 9e76e058..d758b823 100644 --- a/ch9-log/os/task/id/fn.pid_alloc.html +++ b/ch9-log/os/task/id/fn.pid_alloc.html @@ -2,5 +2,5 @@
-

Function os::task::id::pid_alloc

source · []
pub fn pid_alloc() -> PidHandle
+

Function os::task::id::pid_alloc

source · []
pub fn pid_alloc() -> PidHandle
\ No newline at end of file diff --git a/ch9-log/os/task/id/fn.trap_cx_bottom_from_tid.html b/ch9-log/os/task/id/fn.trap_cx_bottom_from_tid.html index 5e5d08cb..6dd4e16a 100644 --- a/ch9-log/os/task/id/fn.trap_cx_bottom_from_tid.html +++ b/ch9-log/os/task/id/fn.trap_cx_bottom_from_tid.html @@ -2,5 +2,5 @@
fn trap_cx_bottom_from_tid(tid: usize) -> usize
+

Function os::task::id::trap_cx_bottom_from_tid

source · []
fn trap_cx_bottom_from_tid(tid: usize) -> usize
\ No newline at end of file diff --git a/ch9-log/os/task/id/fn.ustack_bottom_from_tid.html b/ch9-log/os/task/id/fn.ustack_bottom_from_tid.html index 954d1cb8..51f9b842 100644 --- a/ch9-log/os/task/id/fn.ustack_bottom_from_tid.html +++ b/ch9-log/os/task/id/fn.ustack_bottom_from_tid.html @@ -2,5 +2,5 @@
fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
+

Function os::task::id::ustack_bottom_from_tid

source · []
fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
\ No newline at end of file diff --git a/ch9-log/os/task/id/index.html b/ch9-log/os/task/id/index.html index 8cb66035..dcb26f62 100644 --- a/ch9-log/os/task/id/index.html +++ b/ch9-log/os/task/id/index.html @@ -2,7 +2,7 @@
-

Module os::task::id

source · []

Structs

+

Module os::task::id

source · []

Structs

Functions

diff --git a/ch9-log/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch9-log/os/task/id/struct.KSTACK_ALLOCATOR.html index f75edfd9..ec9f74d1 100644 --- a/ch9-log/os/task/id/struct.KSTACK_ALLOCATOR.html +++ b/ch9-log/os/task/id/struct.KSTACK_ALLOCATOR.html @@ -2,12 +2,12 @@
struct KSTACK_ALLOCATOR {
+    

Struct os::task::id::KSTACK_ALLOCATOR

source · []
struct KSTACK_ALLOCATOR {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/task/id/struct.KernelStack.html b/ch9-log/os/task/id/struct.KernelStack.html index 2a4cf7f3..277ad428 100644 --- a/ch9-log/os/task/id/struct.KernelStack.html +++ b/ch9-log/os/task/id/struct.KernelStack.html @@ -2,7 +2,7 @@
-

Struct os::task::id::KernelStack

source · []
pub struct KernelStack(pub usize);

Tuple Fields

0: usize

Implementations

Trait Implementations

Executes the destructor for this type. Read more

+

Struct os::task::id::KernelStack

source · []
pub struct KernelStack(pub usize);

Tuple Fields

0: usize

Implementations

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/id/struct.PID_ALLOCATOR.html b/ch9-log/os/task/id/struct.PID_ALLOCATOR.html index 33653525..49491f0a 100644 --- a/ch9-log/os/task/id/struct.PID_ALLOCATOR.html +++ b/ch9-log/os/task/id/struct.PID_ALLOCATOR.html @@ -4,8 +4,8 @@
Change settings
struct PID_ALLOCATOR {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

Dereferences the value.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/id/struct.PidHandle.html b/ch9-log/os/task/id/struct.PidHandle.html index 9a28040a..d6b5e351 100644 --- a/ch9-log/os/task/id/struct.PidHandle.html +++ b/ch9-log/os/task/id/struct.PidHandle.html @@ -2,7 +2,7 @@
-

Struct os::task::id::PidHandle

source · []
pub struct PidHandle(pub usize);

Tuple Fields

0: usize

Trait Implementations

Executes the destructor for this type. Read more

+

Struct os::task::id::PidHandle

source · []
pub struct PidHandle(pub usize);

Tuple Fields

0: usize

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/id/struct.TaskUserRes.html b/ch9-log/os/task/id/struct.TaskUserRes.html index 4e56392e..04767589 100644 --- a/ch9-log/os/task/id/struct.TaskUserRes.html +++ b/ch9-log/os/task/id/struct.TaskUserRes.html @@ -2,11 +2,11 @@
-

Struct os::task::id::TaskUserRes

source · []
pub struct TaskUserRes {
+    

Struct os::task::id::TaskUserRes

source · []
pub struct TaskUserRes {
     pub tid: usize,
     pub ustack_base: usize,
     pub process: Weak<ProcessControlBlock>,
-}

Fields

tid: usizeustack_base: usizeprocess: Weak<ProcessControlBlock>

Implementations

Trait Implementations

Executes the destructor for this type. Read more

+}

Fields

tid: usizeustack_base: usizeprocess: Weak<ProcessControlBlock>

Implementations

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/manager/fn.add_task.html b/ch9-log/os/task/manager/fn.add_task.html index dafd317a..bbd685ef 100644 --- a/ch9-log/os/task/manager/fn.add_task.html +++ b/ch9-log/os/task/manager/fn.add_task.html @@ -2,5 +2,5 @@
-

Function os::task::manager::add_task

source · []
pub fn add_task(task: Arc<TaskControlBlock>)
+

Function os::task::manager::add_task

source · []
pub fn add_task(task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9-log/os/task/manager/fn.fetch_task.html b/ch9-log/os/task/manager/fn.fetch_task.html index 87474011..74d20120 100644 --- a/ch9-log/os/task/manager/fn.fetch_task.html +++ b/ch9-log/os/task/manager/fn.fetch_task.html @@ -2,5 +2,5 @@
pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
+

Function os::task::manager::fetch_task

source · []
pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9-log/os/task/manager/fn.insert_into_pid2process.html b/ch9-log/os/task/manager/fn.insert_into_pid2process.html index 54489173..de388b70 100644 --- a/ch9-log/os/task/manager/fn.insert_into_pid2process.html +++ b/ch9-log/os/task/manager/fn.insert_into_pid2process.html @@ -2,5 +2,5 @@
pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
+

Function os::task::manager::insert_into_pid2process

source · []
pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
\ No newline at end of file diff --git a/ch9-log/os/task/manager/fn.pid2process.html b/ch9-log/os/task/manager/fn.pid2process.html index 9bb72067..d995598f 100644 --- a/ch9-log/os/task/manager/fn.pid2process.html +++ b/ch9-log/os/task/manager/fn.pid2process.html @@ -2,5 +2,5 @@
pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
+

Function os::task::manager::pid2process

source · []
pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
\ No newline at end of file diff --git a/ch9-log/os/task/manager/fn.remove_from_pid2process.html b/ch9-log/os/task/manager/fn.remove_from_pid2process.html index 41d9ff35..3b5ca411 100644 --- a/ch9-log/os/task/manager/fn.remove_from_pid2process.html +++ b/ch9-log/os/task/manager/fn.remove_from_pid2process.html @@ -2,5 +2,5 @@
pub fn remove_from_pid2process(pid: usize)
+

Function os::task::manager::remove_from_pid2process

source · []
pub fn remove_from_pid2process(pid: usize)
\ No newline at end of file diff --git a/ch9-log/os/task/manager/index.html b/ch9-log/os/task/manager/index.html index 5f4eff61..2cbd1a5b 100644 --- a/ch9-log/os/task/manager/index.html +++ b/ch9-log/os/task/manager/index.html @@ -2,7 +2,7 @@
-

Module os::task::manager

source · []

Structs

+

Module os::task::manager

source · []

Structs

Functions

\ No newline at end of file diff --git a/ch9-log/os/task/manager/struct.PID2PCB.html b/ch9-log/os/task/manager/struct.PID2PCB.html index 6caba82d..ec757ad0 100644 --- a/ch9-log/os/task/manager/struct.PID2PCB.html +++ b/ch9-log/os/task/manager/struct.PID2PCB.html @@ -2,12 +2,12 @@
pub struct PID2PCB {
+    

Struct os::task::manager::PID2PCB

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

Fields

__private_field: ()

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

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

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

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/task/manager/struct.TASK_MANAGER.html b/ch9-log/os/task/manager/struct.TASK_MANAGER.html index fa546224..1954ffe3 100644 --- a/ch9-log/os/task/manager/struct.TASK_MANAGER.html +++ b/ch9-log/os/task/manager/struct.TASK_MANAGER.html @@ -4,8 +4,8 @@
Change settings
pub struct TASK_MANAGER {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<TaskManager>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<TaskManager>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

Dereferences the value.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/ch9-log/os/task/process/index.html b/ch9-log/os/task/process/index.html index e718743f..7a3b52bc 100644 --- a/ch9-log/os/task/process/index.html +++ b/ch9-log/os/task/process/index.html @@ -2,6 +2,6 @@
-

Module os::task::process

source · []

Structs

+

Module os::task::process

source · []

Structs

\ No newline at end of file diff --git a/ch9-log/os/task/process/struct.ProcessControlBlock.html b/ch9-log/os/task/process/struct.ProcessControlBlock.html index 4dea8528..5ed1c09c 100644 --- a/ch9-log/os/task/process/struct.ProcessControlBlock.html +++ b/ch9-log/os/task/process/struct.ProcessControlBlock.html @@ -5,9 +5,9 @@

Struct os::task::process::ProcessControlBlock

source · []
pub struct ProcessControlBlock {
     pub pid: PidHandle,
     inner: UPIntrFreeCell<ProcessControlBlockInner>,
-}

Fields

pid: PidHandleinner: UPIntrFreeCell<ProcessControlBlockInner>

Implementations

Only support processes with a single thread.

-

Only support processes with a single thread.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

pid: PidHandleinner: UPIntrFreeCell<ProcessControlBlockInner>

Implementations

Only support processes with a single thread.

+

Only support processes with a single thread.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/task/processor/fn.current_kstack_top.html b/ch9-log/os/task/processor/fn.current_kstack_top.html index 8dac726d..22c8157d 100644 --- a/ch9-log/os/task/processor/fn.current_kstack_top.html +++ b/ch9-log/os/task/processor/fn.current_kstack_top.html @@ -2,5 +2,5 @@
pub fn current_kstack_top() -> usize
+

Function os::task::processor::current_kstack_top

source · []
pub fn current_kstack_top() -> usize
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.current_process.html b/ch9-log/os/task/processor/fn.current_process.html index d5903bf0..eb429588 100644 --- a/ch9-log/os/task/processor/fn.current_process.html +++ b/ch9-log/os/task/processor/fn.current_process.html @@ -2,5 +2,5 @@
pub fn current_process() -> Arc<ProcessControlBlock>
+

Function os::task::processor::current_process

source · []
pub fn current_process() -> Arc<ProcessControlBlock>
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.current_task.html b/ch9-log/os/task/processor/fn.current_task.html index f6f6bccc..f7622796 100644 --- a/ch9-log/os/task/processor/fn.current_task.html +++ b/ch9-log/os/task/processor/fn.current_task.html @@ -2,5 +2,5 @@
pub fn current_task() -> Option<Arc<TaskControlBlock>>
+

Function os::task::processor::current_task

source · []
pub fn current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.current_trap_cx.html b/ch9-log/os/task/processor/fn.current_trap_cx.html index 79f846c8..5d7630b2 100644 --- a/ch9-log/os/task/processor/fn.current_trap_cx.html +++ b/ch9-log/os/task/processor/fn.current_trap_cx.html @@ -2,5 +2,5 @@
pub fn current_trap_cx() -> &'static mut TrapContext
+

Function os::task::processor::current_trap_cx

source · []
pub fn current_trap_cx() -> &'static mut TrapContext
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.current_trap_cx_user_va.html b/ch9-log/os/task/processor/fn.current_trap_cx_user_va.html index a42a3ccc..4c849b25 100644 --- a/ch9-log/os/task/processor/fn.current_trap_cx_user_va.html +++ b/ch9-log/os/task/processor/fn.current_trap_cx_user_va.html @@ -2,5 +2,5 @@
pub fn current_trap_cx_user_va() -> usize
+

Function os::task::processor::current_trap_cx_user_va

source · []
pub fn current_trap_cx_user_va() -> usize
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.current_user_token.html b/ch9-log/os/task/processor/fn.current_user_token.html index 6087a229..c204dfa5 100644 --- a/ch9-log/os/task/processor/fn.current_user_token.html +++ b/ch9-log/os/task/processor/fn.current_user_token.html @@ -2,5 +2,5 @@
pub fn current_user_token() -> usize
+

Function os::task::processor::current_user_token

source · []
pub fn current_user_token() -> usize
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.run_tasks.html b/ch9-log/os/task/processor/fn.run_tasks.html index d9451900..120b2d25 100644 --- a/ch9-log/os/task/processor/fn.run_tasks.html +++ b/ch9-log/os/task/processor/fn.run_tasks.html @@ -2,5 +2,5 @@
pub fn run_tasks()
+

Function os::task::processor::run_tasks

source · []
pub fn run_tasks()
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.schedule.html b/ch9-log/os/task/processor/fn.schedule.html index 3e7f480b..b07965e8 100644 --- a/ch9-log/os/task/processor/fn.schedule.html +++ b/ch9-log/os/task/processor/fn.schedule.html @@ -2,5 +2,5 @@
pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
+

Function os::task::processor::schedule

source · []
pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
\ No newline at end of file diff --git a/ch9-log/os/task/processor/fn.take_current_task.html b/ch9-log/os/task/processor/fn.take_current_task.html index 11abf37c..df1cc109 100644 --- a/ch9-log/os/task/processor/fn.take_current_task.html +++ b/ch9-log/os/task/processor/fn.take_current_task.html @@ -2,5 +2,5 @@
pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
+

Function os::task::processor::take_current_task

source · []
pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9-log/os/task/processor/index.html b/ch9-log/os/task/processor/index.html index a9bd2c70..e42b037e 100644 --- a/ch9-log/os/task/processor/index.html +++ b/ch9-log/os/task/processor/index.html @@ -2,7 +2,7 @@

Structs

Functions

\ No newline at end of file diff --git a/ch9-log/os/task/processor/struct.PROCESSOR.html b/ch9-log/os/task/processor/struct.PROCESSOR.html index 81cb91a9..0f1cb9c6 100644 --- a/ch9-log/os/task/processor/struct.PROCESSOR.html +++ b/ch9-log/os/task/processor/struct.PROCESSOR.html @@ -2,12 +2,12 @@
pub struct PROCESSOR {
+    

Struct os::task::processor::PROCESSOR

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

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Processor>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Processor>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/os/timer/fn.add_timer.html b/ch9-log/os/timer/fn.add_timer.html index 6dc21570..133c0a66 100644 --- a/ch9-log/os/timer/fn.add_timer.html +++ b/ch9-log/os/timer/fn.add_timer.html @@ -2,5 +2,5 @@
-

Function os::timer::add_timer

source · []
pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
+

Function os::timer::add_timer

source · []
pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9-log/os/timer/fn.check_timer.html b/ch9-log/os/timer/fn.check_timer.html index d587e176..81338d52 100644 --- a/ch9-log/os/timer/fn.check_timer.html +++ b/ch9-log/os/timer/fn.check_timer.html @@ -2,5 +2,5 @@
-

Function os::timer::check_timer

source · []
pub fn check_timer()
+

Function os::timer::check_timer

source · []
pub fn check_timer()
\ No newline at end of file diff --git a/ch9-log/os/timer/index.html b/ch9-log/os/timer/index.html index 7ead5b25..8a0c31fe 100644 --- a/ch9-log/os/timer/index.html +++ b/ch9-log/os/timer/index.html @@ -2,7 +2,7 @@
-

Module os::timer

source · []

Structs

+

Module os::timer

source · []

Structs

Constants

Functions

diff --git a/ch9-log/os/timer/struct.TIMERS.html b/ch9-log/os/timer/struct.TIMERS.html index 160c3fd8..5b2865df 100644 --- a/ch9-log/os/timer/struct.TIMERS.html +++ b/ch9-log/os/timer/struct.TIMERS.html @@ -2,12 +2,12 @@
-

Struct os::timer::TIMERS

source · []
struct TIMERS {
+    

Struct os::timer::TIMERS

source · []
struct TIMERS {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

-

Dereferences the value.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>>

Panic if the data has been borrowed.

+

Trait Implementations

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/ch9-log/src/os/drivers/block/mod.rs.html b/ch9-log/src/os/drivers/block/mod.rs.html index d198637d..b8a4c26d 100644 --- a/ch9-log/src/os/drivers/block/mod.rs.html +++ b/ch9-log/src/os/drivers/block/mod.rs.html @@ -31,6 +31,9 @@ 28 29 30 +31 +32 +33
// mod sdcard;
 mod virtio_blk;
 
@@ -43,7 +46,10 @@
 use lazy_static::*;
 
 lazy_static! {
-    pub static ref BLOCK_DEVICE: Arc<dyn BlockDevice> = Arc::new(BlockDeviceImpl::new());
+    pub static ref BLOCK_DEVICE: Arc<dyn BlockDevice> = {
+        kprintln!("[KERN] drivers::block::lazy_static!BLOCK_DEVICE begin");
+        Arc::new(BlockDeviceImpl::new())
+    };
 }
 
 #[allow(unused)]
diff --git a/ch9-log/src/os/drivers/block/virtio_blk.rs.html b/ch9-log/src/os/drivers/block/virtio_blk.rs.html
index 34bbbac8..f5b286f4 100644
--- a/ch9-log/src/os/drivers/block/virtio_blk.rs.html
+++ b/ch9-log/src/os/drivers/block/virtio_blk.rs.html
@@ -131,6 +131,9 @@
 128
 129
 130
+131
+132
+133
 
use super::BlockDevice;
 use crate::mm::{
     frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum,
@@ -153,7 +156,10 @@
 }
 
 lazy_static! {
-    static ref QUEUE_FRAMES: UPIntrFreeCell<Vec<FrameTracker>> = unsafe { UPIntrFreeCell::new(Vec::new()) };
+    static ref QUEUE_FRAMES: UPIntrFreeCell<Vec<FrameTracker>> = {
+        kprintln!("[KERN] drivers::block::virtio_blk::lazy_static!QUEUE_FRAMES begin");
+        unsafe { UPIntrFreeCell::new(Vec::new()) }
+    };
 }
 
 impl BlockDevice for VirtIOBlock {
diff --git a/ch9-log/src/os/drivers/chardev/mod.rs.html b/ch9-log/src/os/drivers/chardev/mod.rs.html
index b98696d2..5cba19bc 100644
--- a/ch9-log/src/os/drivers/chardev/mod.rs.html
+++ b/ch9-log/src/os/drivers/chardev/mod.rs.html
@@ -18,6 +18,9 @@
 15
 16
 17
+18
+19
+20
 
mod ns16550a;
 
 pub use ns16550a::NS16550a;
@@ -33,7 +36,10 @@
 }
 
 lazy_static! {
-    pub static ref UART: Arc<CharDeviceImpl> = Arc::new(CharDeviceImpl::new());
+    pub static ref UART: Arc<CharDeviceImpl> = {
+        kprintln!("[KERN] drivers::chardev::lazy_static!UART begin");
+        Arc::new(CharDeviceImpl::new())
+    };
 }
 
diff --git a/ch9-log/src/os/fs/easy_fs/block_cache.rs.html b/ch9-log/src/os/fs/easy_fs/block_cache.rs.html index 6b60ba57..75479104 100644 --- a/ch9-log/src/os/fs/easy_fs/block_cache.rs.html +++ b/ch9-log/src/os/fs/easy_fs/block_cache.rs.html @@ -145,6 +145,8 @@ 142 143 144 +145 +146
use super::{BlockDevice, BLOCK_SZ};
 use alloc::collections::VecDeque;
 use alloc::sync::Arc;
@@ -268,8 +270,10 @@
 }
 
 lazy_static! {
-    pub static ref BLOCK_CACHE_MANAGER: Mutex<BlockCacheManager> =
-        Mutex::new(BlockCacheManager::new());
+    pub static ref BLOCK_CACHE_MANAGER: Mutex<BlockCacheManager> = {
+        kprintln!("[KERN EASYFS] block_cache::lazy_static!BLOCK_CACHE_MANAGER begin");
+        Mutex::new(BlockCacheManager::new())
+    };
 }
 
 pub fn get_block_cache(
diff --git a/ch9-log/src/os/fs/easy_fs/vfs.rs.html b/ch9-log/src/os/fs/easy_fs/vfs.rs.html
index 1896f22f..f14054e4 100644
--- a/ch9-log/src/os/fs/easy_fs/vfs.rs.html
+++ b/ch9-log/src/os/fs/easy_fs/vfs.rs.html
@@ -233,7 +233,7 @@
     }
 
     fn read_disk_inode<V>(&self, f: impl FnOnce(&DiskInode) -> V) -> V {
-        //kprintln!("[KERN EASYFS] vfs::Inode::read_disk_inode() begin");
+        kprintln!("[KERN EASYFS] vfs::Inode::read_disk_inode() begin");
         get_block_cache(self.block_id, Arc::clone(&self.block_device))
             .lock()
             .read(self.block_offset, f)
@@ -367,7 +367,7 @@
     }
 
     pub fn read_at(&self, offset: usize, buf: &mut [u8]) -> usize {
-        //kprintln!("[KERN EASYFS] vfs::Inode::read_at() begin");
+        kprintln!("[KERN EASYFS] vfs::Inode::read_at() begin");
         let _fs = self.fs.lock();
         self.read_disk_inode(|disk_inode| disk_inode.read_at(offset, buf, &self.block_device))
     }
diff --git a/ch9-log/src/os/fs/inode.rs.html b/ch9-log/src/os/fs/inode.rs.html
index 88fce0dc..28f34e6b 100644
--- a/ch9-log/src/os/fs/inode.rs.html
+++ b/ch9-log/src/os/fs/inode.rs.html
@@ -145,6 +145,9 @@
 142
 143
 144
+145
+146
+147
 
use super::File;
 use crate::drivers::BLOCK_DEVICE;
 use crate::mm::UserBuffer;
@@ -168,6 +171,7 @@
 
 impl OSInode {
     pub fn new(readable: bool, writable: bool, inode: Arc<Inode>) -> Self {
+        kprintln!("[KERN] fs::inode::OSInode::new() begin");
         Self {
             readable,
             writable,
@@ -175,6 +179,7 @@
         }
     }
     pub fn read_all(&self) -> Vec<u8> {
+        kprintln!("[KERN] fs::inode::OSInode::read_all() begin");
         let mut inner = self.inner.exclusive_access();
         let mut buffer = [0u8; 512];
         let mut v: Vec<u8> = Vec::new();
@@ -192,6 +197,7 @@
 
 lazy_static! {
     pub static ref ROOT_INODE: Arc<Inode> = {
+        kprintln!("[KERN] fs::inode::lazy_static!ROOT_INODE begin");
         let efs = EasyFileSystem::open(BLOCK_DEVICE.clone());
         Arc::new(EasyFileSystem::root_inode(&efs))
     };
@@ -261,7 +267,7 @@
         self.writable
     }
     fn read(&self, mut buf: UserBuffer) -> usize {
-        kprintln!("[KERN] fs::inode::read() begin");
+        kprintln!("[KERN] fs::inode::OSInode<FIle>::read() begin");
         let mut inner = self.inner.exclusive_access();
         let mut total_read_size = 0usize;
         for slice in buf.buffers.iter_mut() {
@@ -272,11 +278,11 @@
             inner.offset += read_size;
             total_read_size += read_size;
         }
-        kprintln!("[KERN] fs::inode::read() end");
+        kprintln!("[KERN] fs::inode::OSInode<FIle>::read() end");
         total_read_size
     }
     fn write(&self, buf: UserBuffer) -> usize {
-        kprintln!("[KERN] fs::inode::write() begin");
+        kprintln!("[KERN] fs::inode::OSInode<FIle>::write() begin");
         let mut inner = self.inner.exclusive_access();
         let mut total_write_size = 0usize;
         for slice in buf.buffers.iter() {
@@ -285,7 +291,7 @@
             inner.offset += write_size;
             total_write_size += write_size;
         }
-        kprintln!("[KERN] fs::inode::write() end");
+        kprintln!("[KERN] fs::inode::OSInode<FIle>::write() end");
         total_write_size
     }
 }
diff --git a/ch9-log/src/os/main.rs.html b/ch9-log/src/os/main.rs.html
index 9d53e75b..3d2d18c2 100644
--- a/ch9-log/src/os/main.rs.html
+++ b/ch9-log/src/os/main.rs.html
@@ -71,6 +71,9 @@
 68
 69
 70
+71
+72
+73
 
#![no_std]
 #![no_main]
 #![feature(panic_info_message)]
@@ -123,7 +126,10 @@
 use sync::UPIntrFreeCell;
 
 lazy_static! {
-    pub static ref DEV_NON_BLOCKING_ACCESS: UPIntrFreeCell<bool> = unsafe { UPIntrFreeCell::new(false) };
+    pub static ref DEV_NON_BLOCKING_ACCESS: UPIntrFreeCell<bool> = {
+        kprintln!("[KERN] main::lazy_static!DEV_NON_BLOCKING_ACCESS begin");
+        unsafe { UPIntrFreeCell::new(false) }
+    };
 }
 
 #[no_mangle]
diff --git a/ch9-log/src/os/mm/frame_allocator.rs.html b/ch9-log/src/os/mm/frame_allocator.rs.html
index c075728d..a5d115e8 100644
--- a/ch9-log/src/os/mm/frame_allocator.rs.html
+++ b/ch9-log/src/os/mm/frame_allocator.rs.html
@@ -130,6 +130,8 @@
 127
 128
 129
+130
+131
 
use super::{PhysAddr, PhysPageNum};
 use crate::config::MEMORY_END;
 use crate::sync::UPIntrFreeCell;
@@ -215,8 +217,10 @@
 type FrameAllocatorImpl = StackFrameAllocator;
 
 lazy_static! {
-    pub static ref FRAME_ALLOCATOR: UPIntrFreeCell<FrameAllocatorImpl> =
-        unsafe { UPIntrFreeCell::new(FrameAllocatorImpl::new()) };
+    pub static ref FRAME_ALLOCATOR: UPIntrFreeCell<FrameAllocatorImpl> ={
+        kprintln!("[KERN] mm::frame_allocator::lazy_static!FRAME_ALLOCATOR begin");
+        unsafe { UPIntrFreeCell::new(FrameAllocatorImpl::new()) }
+    };
 }
 
 pub fn init_frame_allocator() {
diff --git a/ch9-log/src/os/mm/memory_set.rs.html b/ch9-log/src/os/mm/memory_set.rs.html
index 3122c554..899229de 100644
--- a/ch9-log/src/os/mm/memory_set.rs.html
+++ b/ch9-log/src/os/mm/memory_set.rs.html
@@ -387,6 +387,8 @@
 384
 385
 386
+387
+388
 
use super::{frame_alloc, FrameTracker};
 use super::{PTEFlags, PageTable, PageTableEntry};
 use super::{PhysAddr, PhysPageNum, VirtAddr, VirtPageNum};
@@ -414,8 +416,10 @@
 }
 
 lazy_static! {
-    pub static ref KERNEL_SPACE: Arc<UPIntrFreeCell<MemorySet>> =
-        Arc::new(unsafe { UPIntrFreeCell::new(MemorySet::new_kernel()) });
+    pub static ref KERNEL_SPACE: Arc<UPIntrFreeCell<MemorySet>> ={
+        kprintln!("[KERN] mm::memory_set::lazy_static!KERNEL_SPACE begin");
+        Arc::new(unsafe { UPIntrFreeCell::new(MemorySet::new_kernel()) })
+    };
 }
 
 pub fn kernel_token() -> usize {
diff --git a/ch9-log/src/os/sync/up.rs.html b/ch9-log/src/os/sync/up.rs.html
index 89047359..e97983be 100644
--- a/ch9-log/src/os/sync/up.rs.html
+++ b/ch9-log/src/os/sync/up.rs.html
@@ -135,6 +135,7 @@
 132
 133
 134
+135
 
use core::cell::{RefCell, RefMut, UnsafeCell};
 use core::ops::{Deref, DerefMut};
 use riscv::register::sstatus;
@@ -194,6 +195,7 @@ impl<T> UPSafeCell<T> {
 
 lazy_static! {
     static ref INTR_MASKING_INFO: UPSafeCellRaw<IntrMaskingInfo> = unsafe {
+        kprintln!("[KERN] sync::up::lazy_static!INTR_MASKING_INFO begin");
         UPSafeCellRaw::new(IntrMaskingInfo::new()) 
     };
 }
diff --git a/ch9-log/src/os/task/id.rs.html b/ch9-log/src/os/task/id.rs.html
index b35ce17c..f97edfcd 100644
--- a/ch9-log/src/os/task/id.rs.html
+++ b/ch9-log/src/os/task/id.rs.html
@@ -224,6 +224,29 @@
 221
 222
 223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
 
use super::ProcessControlBlock;
 use crate::config::{KERNEL_STACK_SIZE, PAGE_SIZE, TRAMPOLINE, TRAP_CONTEXT_BASE, USER_STACK_SIZE};
 use crate::mm::{MapPermission, PhysPageNum, VirtAddr, KERNEL_SPACE};
@@ -266,10 +289,17 @@
 }
 
 lazy_static! {
-    static ref PID_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> =
-        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) };
-    static ref KSTACK_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> =
-        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) };
+    static ref PID_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> = {
+        kprintln!("[KERN] task::id::lazy_static!PID_ALLOCATOR begin");
+        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) }
+    };
+}
+
+lazy_static! {
+    static ref KSTACK_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> ={
+        kprintln!("[KERN] task::id::lazy_static!KSTACK_ALLOCATOR begin");
+        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) }
+    };
 }
 
 pub struct PidHandle(pub usize);
@@ -286,14 +316,17 @@
 
 /// Return (bottom, top) of a kernel stack in kernel space.
 pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize) {
+    kprintln!("[KERN] task::id::kernel_stack_position() begin");
     let top = TRAMPOLINE - kstack_id * (KERNEL_STACK_SIZE + PAGE_SIZE);
     let bottom = top - KERNEL_STACK_SIZE;
+    kprintln!("[KERN] task::id::kernel_stack_position() end");
     (bottom, top)
 }
 
 pub struct KernelStack(pub usize);
 
 pub fn kstack_alloc() -> KernelStack {
+    kprintln!("[KERN] task::id::kstack_alloc() begin");
     let kstack_id = KSTACK_ALLOCATOR.exclusive_access().alloc();
     let (kstack_bottom, kstack_top) = kernel_stack_position(kstack_id);
     KERNEL_SPACE.exclusive_access().insert_framed_area(
@@ -301,6 +334,7 @@
         kstack_top.into(),
         MapPermission::R | MapPermission::W,
     );
+    kprintln!("[KERN] task::id::kstack_alloc() end");
     KernelStack(kstack_id)
 }
 
@@ -353,6 +387,7 @@
         ustack_base: usize,
         alloc_user_res: bool,
     ) -> Self {
+        kprintln!("[KERN] task::id::TaskUserRes::new() begin");
         let tid = process.inner_exclusive_access().alloc_tid();
         let task_user_res = Self {
             tid,
@@ -362,13 +397,16 @@
         if alloc_user_res {
             task_user_res.alloc_user_res();
         }
+        kprintln!("[KERN] task::id::TaskUserRes::new() end");
         task_user_res
     }
 
     pub fn alloc_user_res(&self) {
+        kprintln!("[KERN] task::id::TaskUserRes::alloc_user_res() begin");
         let process = self.process.upgrade().unwrap();
         let mut process_inner = process.inner_exclusive_access();
         // alloc user stack
+        kprintln!("[KERN] task::id::TaskUserRes::alloc_user_res(): alloc user stack");
         let ustack_bottom = ustack_bottom_from_tid(self.ustack_base, self.tid);
         let ustack_top = ustack_bottom + USER_STACK_SIZE;
         process_inner.memory_set.insert_framed_area(
@@ -377,6 +415,7 @@
             MapPermission::R | MapPermission::W | MapPermission::U,
         );
         // alloc trap_cx
+        kprintln!("[KERN] task::id::TaskUserRes::alloc_user_res(): alloc trap_cx");
         let trap_cx_bottom = trap_cx_bottom_from_tid(self.tid);
         let trap_cx_top = trap_cx_bottom + PAGE_SIZE;
         process_inner.memory_set.insert_framed_area(
@@ -384,22 +423,29 @@
             trap_cx_top.into(),
             MapPermission::R | MapPermission::W,
         );
+        kprintln!("[KERN] task::id::TaskUserRes::alloc_user_res() end");
     }
 
     fn dealloc_user_res(&self) {
+        kprintln!("[KERN] task::id::TaskUserRes::dealloc_user_res() begin");
         // dealloc tid
+        kprintln!("[KERN] task::id::TaskUserRes::dealloc_user_res():  dealloc tid");
         let process = self.process.upgrade().unwrap();
         let mut process_inner = process.inner_exclusive_access();
         // dealloc ustack manually
+        kprintln!("[KERN] task::id::TaskUserRes::dealloc_user_res():  dealloc ustack manually");
         let ustack_bottom_va: VirtAddr = ustack_bottom_from_tid(self.ustack_base, self.tid).into();
         process_inner
             .memory_set
             .remove_area_with_start_vpn(ustack_bottom_va.into());
         // dealloc trap_cx manually
+        kprintln!("[KERN] task::id::TaskUserRes::dealloc_user_res():  dealloc trap_cx  manually");
         let trap_cx_bottom_va: VirtAddr = trap_cx_bottom_from_tid(self.tid).into();
         process_inner
             .memory_set
             .remove_area_with_start_vpn(trap_cx_bottom_va.into());
+        
+        kprintln!("[KERN] task::id::TaskUserRes::dealloc_user_res() end");    
     }
 
     #[allow(unused)]
diff --git a/ch9-log/src/os/task/manager.rs.html b/ch9-log/src/os/task/manager.rs.html
index 865d186c..a2242882 100644
--- a/ch9-log/src/os/task/manager.rs.html
+++ b/ch9-log/src/os/task/manager.rs.html
@@ -59,6 +59,13 @@
 56
 57
 58
+59
+60
+61
+62
+63
+64
+65
 
use super::{ProcessControlBlock, TaskControlBlock};
 use crate::sync::UPIntrFreeCell;
 use alloc::collections::{BTreeMap, VecDeque};
@@ -85,10 +92,17 @@
 }
 
 lazy_static! {
-    pub static ref TASK_MANAGER: UPIntrFreeCell<TaskManager> =
-        unsafe { UPIntrFreeCell::new(TaskManager::new()) };
-    pub static ref PID2PCB: UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>> =
-        unsafe { UPIntrFreeCell::new(BTreeMap::new()) };
+    pub static ref TASK_MANAGER: UPIntrFreeCell<TaskManager> ={
+        kprintln!("[KERN] task::manager::lazy_static!TASK_MANAGER begin");
+        unsafe { UPIntrFreeCell::new(TaskManager::new()) }
+    };
+}
+
+lazy_static! {
+    pub static ref PID2PCB: UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>> ={
+        kprintln!("[KERN] task::manager::lazy_static!PID2PCB begin");
+        unsafe { UPIntrFreeCell::new(BTreeMap::new()) }
+    };
 }
 
 pub fn add_task(task: Arc<TaskControlBlock>) {
diff --git a/ch9-log/src/os/task/process.rs.html b/ch9-log/src/os/task/process.rs.html
index b49380a2..a7fa9719 100644
--- a/ch9-log/src/os/task/process.rs.html
+++ b/ch9-log/src/os/task/process.rs.html
@@ -265,6 +265,15 @@
 262
 263
 264
+265
+266
+267
+268
+269
+270
+271
+272
+273
 
use super::id::RecycleAllocator;
 use super::manager::insert_into_pid2process;
 use super::TaskControlBlock;
@@ -341,9 +350,12 @@
     pub fn new(elf_data: &[u8]) -> Arc<Self> {
         // memory_set with elf program headers/trampoline/trap context/user stack
         kprintln!("[KERN] task::process::new() begin");
+        kprintln!("[KERN] task::process::new(): build MemorySet, set user_stack_base, set entry_point");
         let (memory_set, ustack_base, entry_point) = MemorySet::from_elf(elf_data);
         // allocate a pid
+        kprintln!("[KERN] task::process::new(): allocate a pid");
         let pid_handle = pid_alloc();
+        kprintln!("[KERN] task::process::new(): new ProcessControlBlockInner");
         let process = Arc::new(Self {
             pid: pid_handle,
             inner: unsafe {
@@ -371,12 +383,15 @@
             },
         });
         // create a main thread, we should allocate ustack and trap_cx here
+        kprintln!("[KERN] task::process::new(): create a main thread begin");
+        kprintln!("[KERN] task::process::new(): create a main thread: new TCB(alloc kstack, utack & trap_cx...) ");
         let task = Arc::new(TaskControlBlock::new(
             Arc::clone(&process),
             ustack_base,
             true,
         ));
         // prepare trap_cx of main thread
+        kprintln!("[KERN] task::process::new(): create a main thread: set trap_cx(entry_point, ustack_top, k_satp, k_sp, trap_handler) ");
         let task_inner = task.inner_exclusive_access();
         let trap_cx = task_inner.get_trap_cx();
         let ustack_top = task_inner.res.as_ref().unwrap().ustack_top();
@@ -389,12 +404,15 @@
             kstack_top,
             trap_handler as usize,
         );
+        kprintln!("[KERN] task::process::new(): create a main thread end");
         // add main thread to the process
+        kprintln!("[KERN] task::process::new(): add main thread to the process");
         let mut process_inner = process.inner_exclusive_access();
         process_inner.tasks.push(Some(Arc::clone(&task)));
         drop(process_inner);
         insert_into_pid2process(process.getpid(), Arc::clone(&process));
         // add main thread to scheduler
+        kprintln!("[KERN] task::process::new(): add_task(task): add main thread to tscheduler");
         add_task(task);
         kprintln!("[KERN] task::process::new() end");
         process
diff --git a/ch9-log/src/os/task/processor.rs.html b/ch9-log/src/os/task/processor.rs.html
index 65716c49..1961f29a 100644
--- a/ch9-log/src/os/task/processor.rs.html
+++ b/ch9-log/src/os/task/processor.rs.html
@@ -105,6 +105,9 @@
 102
 103
 104
+105
+106
+107
 
use super::__switch;
 use super::{fetch_task, TaskStatus};
 use super::{ProcessControlBlock, TaskContext, TaskControlBlock};
@@ -137,7 +140,10 @@
 }
 
 lazy_static! {
-    pub static ref PROCESSOR: UPIntrFreeCell<Processor> = unsafe { UPIntrFreeCell::new(Processor::new()) };
+    pub static ref PROCESSOR: UPIntrFreeCell<Processor> = {
+        kprintln!("[KERN] task::processor::lazy_static!PROCESSOR begin");
+        unsafe { UPIntrFreeCell::new(Processor::new()) }
+    };
 }
 
 pub fn run_tasks() {
diff --git a/ch9-log/src/os/timer.rs.html b/ch9-log/src/os/timer.rs.html
index b77c4880..4576c2d2 100644
--- a/ch9-log/src/os/timer.rs.html
+++ b/ch9-log/src/os/timer.rs.html
@@ -76,6 +76,8 @@
 73
 74
 75
+76
+77
 
use core::cmp::Ordering;
 
 use crate::config::CLOCK_FREQ;
@@ -130,8 +132,10 @@
 }
 
 lazy_static! {
-    static ref TIMERS: UPIntrFreeCell<BinaryHeap<TimerCondVar>> =
-        unsafe { UPIntrFreeCell::new(BinaryHeap::<TimerCondVar>::new()) };
+    static ref TIMERS: UPIntrFreeCell<BinaryHeap<TimerCondVar>> ={
+        kprintln!("[KERN] timer::lazy_static!TIMERS begin");
+        unsafe { UPIntrFreeCell::new(BinaryHeap::<TimerCondVar>::new()) }
+    };
 }
 
 pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>) {