From 91702d409695254d2696cb9f4731111b6512b6d8 Mon Sep 17 00:00:00 2001 From: chyyuu Date: Mon, 16 May 2022 00:25:41 +0000 Subject: [PATCH] deploy: d58ec147196ce0c8cfc6b0353ab4a648dfcca191 --- ch9/implementors/core/marker/trait.Freeze.js | 2 +- ch9/implementors/core/marker/trait.Send.js | 2 +- ch9/implementors/core/marker/trait.Sync.js | 2 +- ch9/implementors/core/marker/trait.Unpin.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- ch9/implementors/os/board/trait.QEMUExit.js | 3 + ch9/os/all.html | 2 +- ch9/os/board/constant.EXIT_FAILURE.html | 8 + ch9/os/board/constant.EXIT_FAILURE_FLAG.html | 8 + ch9/os/board/constant.EXIT_RESET.html | 8 + ch9/os/board/constant.EXIT_SUCCESS.html | 8 + ch9/os/board/constant.MMIO.html | 2 +- ch9/os/board/constant.QEMU_EXIT_HANDLE.html | 8 + ch9/os/board/constant.VIRT_PLIC.html | 2 +- ch9/os/board/constant.VIRT_TEST.html | 8 + ch9/os/board/constant.VIRT_UART.html | 2 +- ch9/os/board/fn.device_init.html | 2 +- ch9/os/board/fn.exit_code_encode.html | 9 + ch9/os/board/fn.irq_handler.html | 2 +- ch9/os/board/index.html | 12 +- ch9/os/board/sidebar-items.js | 2 +- ch9/os/board/struct.RISCV64.html | 27 +++ ch9/os/board/trait.QEMUExit.html | 17 ++ ch9/os/board/type.BlockDeviceImpl.html | 2 +- ch9/os/board/type.CharDeviceImpl.html | 2 +- .../block/sdcard/struct.PERIPHERALS.html | 4 +- .../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 +- ch9/os/drivers/block/virtio_blk/index.html | 2 +- .../block/virtio_blk/struct.QUEUE_FRAMES.html | 10 +- .../block/virtio_blk/struct.VirtIOBlock.html | 2 +- ch9/os/drivers/chardev/ns16550a/index.html | 2 +- .../drivers/chardev/ns16550a/struct.IER.html | 88 ++++----- .../drivers/chardev/ns16550a/struct.LSR.html | 86 ++++----- .../drivers/chardev/ns16550a/struct.MCR.html | 86 ++++----- .../chardev/ns16550a/struct.NS16550a.html | 4 +- .../ns16550a/struct.NS16550aInner.html | 2 +- .../chardev/ns16550a/struct.NS16550aRaw.html | 4 +- .../ns16550a/struct.ReadWithoutDLAB.html | 2 +- .../ns16550a/struct.WriteWithoutDLAB.html | 2 +- ch9/os/drivers/chardev/trait.CharDevice.html | 2 +- ch9/os/fn.rust_main.html | 2 +- ch9/os/index.html | 2 +- .../struct.FRAME_ALLOCATOR.html | 4 +- ch9/os/sbi/fn.shutdown.html | 2 +- ch9/os/sbi/index.html | 2 +- ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html | 10 +- ch9/os/sync/condvar/index.html | 2 +- ch9/os/sync/condvar/struct.Condvar.html | 4 +- ch9/os/sync/condvar/struct.CondvarInner.html | 2 +- ch9/os/sync/up/index.html | 2 +- ch9/os/sync/up/struct.INTR_MASKING_INFO.html | 8 +- ch9/os/sync/up/struct.IntrMaskingInfo.html | 2 +- ch9/os/sync/up/struct.UPIntrFreeCell.html | 6 +- ch9/os/sync/up/struct.UPIntrRefMut.html | 8 +- ch9/os/task/fn.add_initproc.html | 2 +- ch9/os/task/fn.check_signals_of_current.html | 2 +- ch9/os/task/fn.current_add_signal.html | 2 +- ch9/os/task/fn.exit_current_and_run_next.html | 2 +- ch9/os/task/id/constant.IDLE_PID.html | 8 + ch9/os/task/id/fn.kernel_stack_position.html | 2 +- ch9/os/task/id/fn.kstack_alloc.html | 2 +- ch9/os/task/id/fn.pid_alloc.html | 2 +- .../task/id/fn.trap_cx_bottom_from_tid.html | 2 +- ch9/os/task/id/fn.ustack_bottom_from_tid.html | 2 +- ch9/os/task/id/index.html | 7 +- ch9/os/task/id/sidebar-items.js | 2 +- ch9/os/task/id/struct.KSTACK_ALLOCATOR.html | 4 +- ch9/os/task/id/struct.KernelStack.html | 2 +- ch9/os/task/id/struct.PID_ALLOCATOR.html | 4 +- ch9/os/task/id/struct.PidHandle.html | 2 +- ch9/os/task/id/struct.TaskUserRes.html | 4 +- ch9/os/task/index.html | 4 +- ch9/os/task/manager/struct.PID2PCB.html | 4 +- ch9/os/task/manager/struct.TASK_MANAGER.html | 4 +- .../task/processor/fn.current_kstack_top.html | 2 +- ch9/os/task/processor/fn.current_process.html | 2 +- ch9/os/task/processor/fn.current_task.html | 2 +- ch9/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/os/task/processor/fn.run_tasks.html | 2 +- ch9/os/task/processor/fn.schedule.html | 2 +- .../task/processor/fn.take_current_task.html | 2 +- ch9/os/task/processor/struct.PROCESSOR.html | 10 +- ch9/os/task/struct.INITPROC.html | 8 +- ch9/os/task/task/enum.TaskStatus.html | 8 +- ch9/os/task/task/index.html | 2 +- ch9/os/task/task/struct.TaskControlBlock.html | 4 +- .../task/struct.TaskControlBlockInner.html | 4 +- ch9/os/timer/struct.TIMERS.html | 4 +- ch9/search-index.js | 2 +- ch9/src/os/boards/qemu.rs.html | 170 +++++++++++++++++- ch9/src/os/drivers/block/sdcard.rs.html | 6 +- ch9/src/os/drivers/block/virtio_blk.rs.html | 4 +- ch9/src/os/drivers/chardev/ns16550a.rs.html | 6 +- ch9/src/os/lang_items.rs.html | 2 +- ch9/src/os/main.rs.html | 4 +- ch9/src/os/sbi.rs.html | 10 +- ch9/src/os/sync/condvar.rs.html | 8 +- ch9/src/os/sync/up.rs.html | 28 ++- ch9/src/os/task/id.rs.html | 4 + ch9/src/os/task/mod.rs.html | 38 +++- ch9/src/os/task/processor.rs.html | 8 +- ch9/src/os/task/task.rs.html | 8 +- ch9/src/os/trap/mod.rs.html | 14 +- 109 files changed, 643 insertions(+), 296 deletions(-) create mode 100644 ch9/implementors/os/board/trait.QEMUExit.js create mode 100644 ch9/os/board/constant.EXIT_FAILURE.html create mode 100644 ch9/os/board/constant.EXIT_FAILURE_FLAG.html create mode 100644 ch9/os/board/constant.EXIT_RESET.html create mode 100644 ch9/os/board/constant.EXIT_SUCCESS.html create mode 100644 ch9/os/board/constant.QEMU_EXIT_HANDLE.html create mode 100644 ch9/os/board/constant.VIRT_TEST.html create mode 100644 ch9/os/board/fn.exit_code_encode.html create mode 100644 ch9/os/board/struct.RISCV64.html create mode 100644 ch9/os/board/trait.QEMUExit.html create mode 100644 ch9/os/task/id/constant.IDLE_PID.html diff --git a/ch9/implementors/core/marker/trait.Freeze.js b/ch9/implementors/core/marker/trait.Freeze.js index 57113701..e1f1de66 100644 --- a/ch9/implementors/core/marker/trait.Freeze.js +++ b/ch9/implementors/core/marker/trait.Freeze.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Freeze for SDCard<SPI> where
    SPI: Freeze
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Freeze for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Freeze for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Freeze for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Freeze for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Freeze for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Freeze for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !Freeze for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !Freeze for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Freeze for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Freeze for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Freeze for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Freeze for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Freeze for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Freeze for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Freeze for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Freeze for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Freeze for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !Freeze for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Freeze for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Freeze for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Freeze for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !Freeze for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Freeze for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Freeze for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Freeze for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Freeze for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Freeze for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Freeze for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Freeze for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Freeze for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Freeze for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Freeze for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Freeze for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Freeze for SimpleRange<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Freeze for SimpleRangeIterator<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Freeze for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Freeze for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Freeze for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Freeze for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Freeze for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Freeze for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Freeze for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Freeze for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Freeze for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Freeze for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Freeze for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Freeze for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Freeze for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !Freeze for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Freeze for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !Freeze for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !Freeze for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Freeze for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !Freeze for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Freeze for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !Freeze for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Freeze for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Freeze for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !Freeze for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Freeze for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Freeze for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Freeze for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Freeze for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Freeze for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Freeze for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Freeze for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Freeze for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Freeze for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Freeze for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Freeze for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !Freeze for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Freeze for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Freeze for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Freeze for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Freeze for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !Freeze for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Freeze for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Freeze for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Freeze for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Freeze for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Freeze for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Freeze for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Freeze for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; +implementors["os"] = [{"text":"impl Freeze for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Freeze for SDCard<SPI> where
    SPI: Freeze
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Freeze for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Freeze for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Freeze for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Freeze for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Freeze for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Freeze for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !Freeze for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !Freeze for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Freeze for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Freeze for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Freeze for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Freeze for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Freeze for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Freeze for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Freeze for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Freeze for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Freeze for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !Freeze for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Freeze for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Freeze for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Freeze for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !Freeze for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Freeze for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Freeze for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Freeze for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Freeze for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Freeze for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Freeze for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Freeze for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Freeze for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Freeze for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Freeze for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Freeze for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Freeze for SimpleRange<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Freeze for SimpleRangeIterator<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Freeze for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Freeze for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Freeze for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Freeze for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Freeze for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Freeze for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Freeze for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Freeze for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Freeze for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Freeze for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Freeze for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Freeze for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Freeze for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !Freeze for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Freeze for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !Freeze for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !Freeze for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Freeze for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !Freeze for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Freeze for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !Freeze for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Freeze for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Freeze for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !Freeze for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Freeze for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Freeze for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Freeze for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Freeze for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Freeze for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Freeze for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Freeze for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Freeze for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Freeze for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Freeze for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Freeze for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !Freeze for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Freeze for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Freeze for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Freeze for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Freeze for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !Freeze for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Freeze for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Freeze for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Freeze for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Freeze for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Freeze for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Freeze for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Freeze for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Send.js b/ch9/implementors/core/marker/trait.Send.js index 4b0cdb8f..3a29ef6b 100644 --- a/ch9/implementors/core/marker/trait.Send.js +++ b/ch9/implementors/core/marker/trait.Send.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl Send for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Send for SDCard<SPI> where
    SPI: Send
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Send for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Send for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Send for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Send for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Send for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Send for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Send for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Send for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Send for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Send for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Send for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Send for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Send for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Send for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Send for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Send for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Send for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Send for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Send for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Send for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Send for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Send for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Send for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Send for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Send for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Send for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Send for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Send for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Send for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Send for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Send for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Send for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Send for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Send for SimpleRange<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Send for SimpleRangeIterator<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Send for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Send for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Send for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Send for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Send for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Send for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Send for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Send for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Send for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Send for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Send for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Send for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Send for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Send for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Send for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Send for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Send for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Send for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Send for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Send for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Send for UPSafeCellRaw<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Send for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Send for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Send for UPIntrFreeCell<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !Send for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Send for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Send for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Send for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Send for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Send for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Send for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Send for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Send for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Send for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Send for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Send for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Send for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Send for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Send for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Send for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Send for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Send for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Send for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Send for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Send for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Send for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Send for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Send for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; +implementors["os"] = [{"text":"impl Send for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl Send for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Send for SDCard<SPI> where
    SPI: Send
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Send for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Send for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Send for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Send for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Send for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Send for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Send for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Send for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Send for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Send for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Send for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Send for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Send for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Send for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Send for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Send for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Send for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Send for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Send for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Send for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Send for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Send for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Send for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Send for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Send for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Send for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Send for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Send for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Send for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Send for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Send for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Send for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Send for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Send for SimpleRange<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Send for SimpleRangeIterator<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Send for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Send for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Send for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Send for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Send for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Send for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Send for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Send for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Send for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Send for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Send for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Send for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Send for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Send for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Send for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Send for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Send for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Send for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Send for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Send for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Send for UPSafeCellRaw<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Send for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Send for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Send for UPIntrFreeCell<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !Send for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Send for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Send for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Send for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Send for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Send for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Send for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Send for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Send for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Send for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Send for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Send for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Send for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Send for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Send for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Send for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Send for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Send for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Send for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Send for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Send for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Send for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Send for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Send for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Sync.js b/ch9/implementors/core/marker/trait.Sync.js index 8d6ee23b..b447e634 100644 --- a/ch9/implementors/core/marker/trait.Sync.js +++ b/ch9/implementors/core/marker/trait.Sync.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl Sync for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Sync for SDCard<SPI> where
    SPI: Sync
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Sync for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Sync for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Sync for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Sync for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Sync for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Sync for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Sync for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Sync for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Sync for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Sync for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Sync for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Sync for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Sync for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Sync for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Sync for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Sync for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Sync for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Sync for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Sync for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Sync for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Sync for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Sync for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Sync for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Sync for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Sync for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Sync for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Sync for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Sync for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Sync for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Sync for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Sync for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Sync for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Sync for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Sync for SimpleRange<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Sync for SimpleRangeIterator<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Sync for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Sync for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Sync for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Sync for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Sync for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Sync for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Sync for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Sync for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Sync for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Sync for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Sync for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Sync for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Sync for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Sync for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Sync for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Sync for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Sync for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Sync for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Sync for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Sync for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl Sync for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Sync for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> !Sync for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Sync for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Sync for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Sync for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Sync for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Sync for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Sync for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Sync for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Sync for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Sync for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Sync for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Sync for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Sync for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Sync for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Sync for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Sync for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Sync for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Sync for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Sync for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Sync for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Sync for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Sync for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Sync for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Sync for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]},{"text":"impl<T> Sync for UPSafeCellRaw<T>","synthetic":false,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl<T> Sync for UPIntrFreeCell<T>","synthetic":false,"types":["os::sync::up::UPIntrFreeCell"]}]; +implementors["os"] = [{"text":"impl Sync for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl Sync for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Sync for SDCard<SPI> where
    SPI: Sync
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Sync for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Sync for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Sync for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Sync for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Sync for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Sync for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Sync for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Sync for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Sync for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Sync for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Sync for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Sync for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Sync for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Sync for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Sync for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Sync for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Sync for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Sync for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Sync for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Sync for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Sync for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Sync for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Sync for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Sync for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Sync for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Sync for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Sync for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Sync for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Sync for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Sync for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Sync for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Sync for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Sync for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Sync for SimpleRange<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Sync for SimpleRangeIterator<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Sync for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Sync for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Sync for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Sync for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Sync for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Sync for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Sync for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Sync for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Sync for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Sync for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Sync for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Sync for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Sync for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Sync for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Sync for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Sync for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Sync for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Sync for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Sync for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Sync for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl Sync for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Sync for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> !Sync for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Sync for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Sync for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Sync for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Sync for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Sync for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Sync for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Sync for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Sync for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Sync for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Sync for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Sync for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Sync for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Sync for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Sync for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Sync for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Sync for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Sync for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Sync for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Sync for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Sync for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Sync for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Sync for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Sync for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]},{"text":"impl<T> Sync for UPSafeCellRaw<T>","synthetic":false,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl<T> Sync for UPIntrFreeCell<T>","synthetic":false,"types":["os::sync::up::UPIntrFreeCell"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Unpin.js b/ch9/implementors/core/marker/trait.Unpin.js index 1210d2bb..ec756033 100644 --- a/ch9/implementors/core/marker/trait.Unpin.js +++ b/ch9/implementors/core/marker/trait.Unpin.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Unpin for SDCard<SPI> where
    SPI: Unpin
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Unpin for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Unpin for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Unpin for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Unpin for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Unpin for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Unpin for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Unpin for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Unpin for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Unpin for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Unpin for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Unpin for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Unpin for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Unpin for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Unpin for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Unpin for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Unpin for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Unpin for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Unpin for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Unpin for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Unpin for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Unpin for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Unpin for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Unpin for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Unpin for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Unpin for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Unpin for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Unpin for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Unpin for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Unpin for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Unpin for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Unpin for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Unpin for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Unpin for SimpleRange<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Unpin for SimpleRangeIterator<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Unpin for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Unpin for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Unpin for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Unpin for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Unpin for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Unpin for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Unpin for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Unpin for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Unpin for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Unpin for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Unpin for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Unpin for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Unpin for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Unpin for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Unpin for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Unpin for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Unpin for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Unpin for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Unpin for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Unpin for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Unpin for UPSafeCellRaw<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Unpin for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Unpin for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Unpin for UPIntrFreeCell<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Unpin for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Unpin for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Unpin for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Unpin for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Unpin for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Unpin for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Unpin for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Unpin for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Unpin for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Unpin for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Unpin for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Unpin for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Unpin for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Unpin for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Unpin for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Unpin for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Unpin for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Unpin for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Unpin for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Unpin for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Unpin for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Unpin for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Unpin for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Unpin for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; +implementors["os"] = [{"text":"impl Unpin for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Unpin for SDCard<SPI> where
    SPI: Unpin
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Unpin for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Unpin for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Unpin for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Unpin for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Unpin for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Unpin for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Unpin for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Unpin for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Unpin for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Unpin for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Unpin for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Unpin for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Unpin for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Unpin for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Unpin for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Unpin for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Unpin for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Unpin for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Unpin for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Unpin for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Unpin for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Unpin for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Unpin for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Unpin for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Unpin for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Unpin for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Unpin for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Unpin for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Unpin for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Unpin for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Unpin for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Unpin for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Unpin for SimpleRange<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Unpin for SimpleRangeIterator<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Unpin for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Unpin for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Unpin for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Unpin for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Unpin for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Unpin for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Unpin for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Unpin for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Unpin for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Unpin for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Unpin for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Unpin for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Unpin for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Unpin for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Unpin for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Unpin for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Unpin for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Unpin for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Unpin for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Unpin for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Unpin for UPSafeCellRaw<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Unpin for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Unpin for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Unpin for UPIntrFreeCell<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Unpin for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Unpin for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Unpin for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Unpin for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Unpin for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Unpin for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Unpin for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Unpin for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Unpin for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Unpin for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Unpin for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Unpin for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Unpin for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Unpin for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Unpin for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Unpin for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Unpin for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Unpin for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Unpin for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Unpin for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Unpin for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Unpin for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Unpin for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Unpin for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index 7024f29f..3916d190 100644 --- a/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> RefUnwindSafe for SDCard<SPI> where
    SPI: RefUnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl RefUnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl RefUnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl RefUnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl RefUnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl RefUnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl RefUnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !RefUnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !RefUnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl RefUnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl RefUnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl RefUnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl RefUnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl RefUnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl RefUnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl RefUnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl RefUnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl RefUnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl RefUnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl RefUnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl RefUnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !RefUnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !RefUnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl RefUnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl RefUnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !RefUnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl RefUnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !RefUnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl RefUnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl RefUnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl RefUnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl RefUnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl RefUnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> RefUnwindSafe for SimpleRange<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> RefUnwindSafe for SimpleRangeIterator<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl RefUnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl RefUnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl RefUnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl RefUnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl RefUnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl RefUnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl RefUnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl RefUnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl RefUnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl RefUnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl RefUnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl RefUnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !RefUnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !RefUnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !RefUnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !RefUnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !RefUnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !RefUnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !RefUnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !RefUnwindSafe for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl RefUnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl RefUnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !RefUnwindSafe for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl RefUnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl RefUnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl RefUnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl RefUnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl RefUnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !RefUnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !RefUnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl RefUnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl RefUnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !RefUnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !RefUnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !RefUnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl RefUnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl RefUnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !RefUnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !RefUnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl RefUnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl RefUnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !RefUnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl RefUnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl RefUnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl RefUnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; +implementors["os"] = [{"text":"impl RefUnwindSafe for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> RefUnwindSafe for SDCard<SPI> where
    SPI: RefUnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl RefUnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl RefUnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl RefUnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl RefUnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl RefUnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl RefUnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !RefUnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !RefUnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl RefUnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl RefUnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl RefUnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl RefUnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl RefUnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl RefUnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl RefUnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl RefUnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl RefUnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl RefUnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl RefUnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl RefUnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !RefUnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !RefUnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl RefUnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl RefUnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !RefUnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl RefUnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !RefUnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl RefUnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl RefUnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl RefUnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl RefUnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl RefUnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> RefUnwindSafe for SimpleRange<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> RefUnwindSafe for SimpleRangeIterator<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl RefUnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl RefUnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl RefUnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl RefUnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl RefUnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl RefUnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl RefUnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl RefUnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl RefUnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl RefUnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl RefUnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl RefUnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !RefUnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !RefUnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !RefUnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !RefUnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !RefUnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !RefUnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !RefUnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !RefUnwindSafe for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl RefUnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl RefUnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !RefUnwindSafe for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl RefUnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl RefUnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl RefUnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl RefUnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl RefUnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !RefUnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !RefUnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl RefUnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl RefUnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !RefUnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !RefUnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !RefUnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl RefUnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl RefUnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !RefUnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !RefUnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl RefUnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl RefUnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !RefUnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl RefUnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl RefUnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl RefUnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index f7764e2b..8cbd6173 100644 --- a/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = {}; -implementors["os"] = [{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> UnwindSafe for SDCard<SPI> where
    SPI: UnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl UnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl UnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl UnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl UnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl UnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl UnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl UnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !UnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl UnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl UnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl UnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl UnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl UnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl UnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl UnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl UnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl UnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl UnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl UnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl UnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !UnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !UnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl UnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl UnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !UnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl UnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !UnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl UnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl UnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl UnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl UnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl UnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> UnwindSafe for SimpleRange<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> UnwindSafe for SimpleRangeIterator<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl UnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl UnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl UnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl UnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl UnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl UnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl UnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl UnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl UnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl UnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl UnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl !UnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl !UnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !UnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !UnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl UnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !UnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !UnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !UnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !UnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> UnwindSafe for UPSafeCellRaw<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl UnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl UnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> UnwindSafe for UPIntrFreeCell<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl UnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl UnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl UnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl UnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl UnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl UnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !UnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !UnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl UnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl UnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !UnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !UnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !UnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl UnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl UnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !UnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !UnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl UnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl UnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !UnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl UnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl UnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl UnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; +implementors["os"] = [{"text":"impl UnwindSafe for RISCV64","synthetic":true,"types":["os::board::RISCV64"]},{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> UnwindSafe for SDCard<SPI> where
    SPI: UnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl UnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl UnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl UnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl UnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl UnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl UnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl UnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !UnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl UnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl UnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl UnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl UnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl UnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl UnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl UnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl UnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl UnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl UnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl UnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl UnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !UnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !UnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl UnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl UnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !UnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl UnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !UnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl UnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl UnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl UnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl UnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl UnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> UnwindSafe for SimpleRange<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> UnwindSafe for SimpleRangeIterator<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl UnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl UnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl UnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl UnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl UnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl UnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl UnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl UnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl UnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl UnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl UnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl !UnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl !UnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !UnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !UnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl UnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !UnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !UnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !UnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !UnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> UnwindSafe for UPSafeCellRaw<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl UnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl UnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> UnwindSafe for UPIntrFreeCell<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl UnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl UnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl UnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl UnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl UnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl UnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !UnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !UnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl UnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl UnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !UnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !UnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !UnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl UnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl UnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !UnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !UnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl UnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl UnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !UnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl UnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl UnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl UnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/os/board/trait.QEMUExit.js b/ch9/implementors/os/board/trait.QEMUExit.js new file mode 100644 index 00000000..34fffcbd --- /dev/null +++ b/ch9/implementors/os/board/trait.QEMUExit.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["os"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/os/all.html b/ch9/os/all.html index 0888f550..f9d1a9d1 100644 --- a/ch9/os/all.html +++ b/ch9/os/all.html @@ -3,5 +3,5 @@

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

+

Crate os

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

\ No newline at end of file diff --git a/ch9/os/board/constant.EXIT_FAILURE.html b/ch9/os/board/constant.EXIT_FAILURE.html new file mode 100644 index 00000000..78ff1f8f --- /dev/null +++ b/ch9/os/board/constant.EXIT_FAILURE.html @@ -0,0 +1,8 @@ +EXIT_FAILURE in os::board - Rust + +
+

Constant os::board::EXIT_FAILURE

source · []
const EXIT_FAILURE: u32 = exit_code_encode(1); // 78_643u32
+ \ No newline at end of file diff --git a/ch9/os/board/constant.EXIT_FAILURE_FLAG.html b/ch9/os/board/constant.EXIT_FAILURE_FLAG.html new file mode 100644 index 00000000..06388c99 --- /dev/null +++ b/ch9/os/board/constant.EXIT_FAILURE_FLAG.html @@ -0,0 +1,8 @@ +EXIT_FAILURE_FLAG in os::board - Rust + +
const EXIT_FAILURE_FLAG: u32 = 0x3333;
+ \ No newline at end of file diff --git a/ch9/os/board/constant.EXIT_RESET.html b/ch9/os/board/constant.EXIT_RESET.html new file mode 100644 index 00000000..bad4b40a --- /dev/null +++ b/ch9/os/board/constant.EXIT_RESET.html @@ -0,0 +1,8 @@ +EXIT_RESET in os::board - Rust + +
+

Constant os::board::EXIT_RESET

source · []
const EXIT_RESET: u32 = 0x7777;
+ \ No newline at end of file diff --git a/ch9/os/board/constant.EXIT_SUCCESS.html b/ch9/os/board/constant.EXIT_SUCCESS.html new file mode 100644 index 00000000..60ade879 --- /dev/null +++ b/ch9/os/board/constant.EXIT_SUCCESS.html @@ -0,0 +1,8 @@ +EXIT_SUCCESS in os::board - Rust + +
+

Constant os::board::EXIT_SUCCESS

source · []
const EXIT_SUCCESS: u32 = 0x5555;
+ \ No newline at end of file diff --git a/ch9/os/board/constant.MMIO.html b/ch9/os/board/constant.MMIO.html index b377eda9..b91d314c 100644 --- a/ch9/os/board/constant.MMIO.html +++ b/ch9/os/board/constant.MMIO.html @@ -4,5 +4,5 @@
-

Constant os::board::MMIO

source · []
pub const MMIO: &[(usize, usize)];
+

Constant os::board::MMIO

source · []
pub const MMIO: &[(usize, usize)];
\ No newline at end of file diff --git a/ch9/os/board/constant.QEMU_EXIT_HANDLE.html b/ch9/os/board/constant.QEMU_EXIT_HANDLE.html new file mode 100644 index 00000000..9d17c5b8 --- /dev/null +++ b/ch9/os/board/constant.QEMU_EXIT_HANDLE.html @@ -0,0 +1,8 @@ +QEMU_EXIT_HANDLE in os::board - Rust + +
pub const QEMU_EXIT_HANDLE: RISCV64;
+ \ No newline at end of file diff --git a/ch9/os/board/constant.VIRT_PLIC.html b/ch9/os/board/constant.VIRT_PLIC.html index 913f83f4..91d0c75d 100644 --- a/ch9/os/board/constant.VIRT_PLIC.html +++ b/ch9/os/board/constant.VIRT_PLIC.html @@ -4,5 +4,5 @@
-

Constant os::board::VIRT_PLIC

source · []
pub const VIRT_PLIC: usize = 0xC00_0000;
+

Constant os::board::VIRT_PLIC

source · []
pub const VIRT_PLIC: usize = 0xC00_0000;
\ No newline at end of file diff --git a/ch9/os/board/constant.VIRT_TEST.html b/ch9/os/board/constant.VIRT_TEST.html new file mode 100644 index 00000000..13b8f2bb --- /dev/null +++ b/ch9/os/board/constant.VIRT_TEST.html @@ -0,0 +1,8 @@ +VIRT_TEST in os::board - Rust + +
+

Constant os::board::VIRT_TEST

source · []
const VIRT_TEST: u64 = 0x100000;
+ \ No newline at end of file diff --git a/ch9/os/board/constant.VIRT_UART.html b/ch9/os/board/constant.VIRT_UART.html index 2a77d0d2..4abb3d6f 100644 --- a/ch9/os/board/constant.VIRT_UART.html +++ b/ch9/os/board/constant.VIRT_UART.html @@ -4,5 +4,5 @@
-

Constant os::board::VIRT_UART

source · []
pub const VIRT_UART: usize = 0x1000_0000;
+

Constant os::board::VIRT_UART

source · []
pub const VIRT_UART: usize = 0x1000_0000;
\ No newline at end of file diff --git a/ch9/os/board/fn.device_init.html b/ch9/os/board/fn.device_init.html index f69950d8..28859a0a 100644 --- a/ch9/os/board/fn.device_init.html +++ b/ch9/os/board/fn.device_init.html @@ -4,5 +4,5 @@
-

Function os::board::device_init

source · []
pub fn device_init()
+

Function os::board::device_init

source · []
pub fn device_init()
\ No newline at end of file diff --git a/ch9/os/board/fn.exit_code_encode.html b/ch9/os/board/fn.exit_code_encode.html new file mode 100644 index 00000000..a75a2983 --- /dev/null +++ b/ch9/os/board/fn.exit_code_encode.html @@ -0,0 +1,9 @@ +exit_code_encode in os::board - Rust + +
const fn exit_code_encode(code: u32) -> u32
Expand description

Encode the exit code using EXIT_FAILURE_FLAG.

+
+ \ No newline at end of file diff --git a/ch9/os/board/fn.irq_handler.html b/ch9/os/board/fn.irq_handler.html index e81d76e5..3dd88298 100644 --- a/ch9/os/board/fn.irq_handler.html +++ b/ch9/os/board/fn.irq_handler.html @@ -4,5 +4,5 @@
-

Function os::board::irq_handler

source · []
pub fn irq_handler()
+

Function os::board::irq_handler

source · []
pub fn irq_handler()
\ No newline at end of file diff --git a/ch9/os/board/index.html b/ch9/os/board/index.html index 53f5d2af..78f67b22 100644 --- a/ch9/os/board/index.html +++ b/ch9/os/board/index.html @@ -3,9 +3,13 @@

-

Module os::board

source · []

Constants

-

Functions

-

Type Definitions

+

Module board

\ No newline at end of file diff --git a/ch9/os/board/sidebar-items.js b/ch9/os/board/sidebar-items.js index 72111b17..b89e82a8 100644 --- a/ch9/os/board/sidebar-items.js +++ b/ch9/os/board/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"constant":[["CLOCK_FREQ",""],["MMIO",""],["VIRT_PLIC",""],["VIRT_UART",""]],"fn":[["device_init",""],["irq_handler",""]],"type":[["BlockDeviceImpl",""],["CharDeviceImpl",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["CLOCK_FREQ",""],["EXIT_FAILURE",""],["EXIT_FAILURE_FLAG",""],["EXIT_RESET",""],["EXIT_SUCCESS",""],["MMIO",""],["QEMU_EXIT_HANDLE",""],["VIRT_PLIC",""],["VIRT_TEST",""],["VIRT_UART",""]],"fn":[["device_init",""],["exit_code_encode","Encode the exit code using EXIT_FAILURE_FLAG."],["irq_handler",""]],"struct":[["RISCV64","RISCV64 configuration"]],"trait":[["QEMUExit",""]],"type":[["BlockDeviceImpl",""],["CharDeviceImpl",""]]}); \ No newline at end of file diff --git a/ch9/os/board/struct.RISCV64.html b/ch9/os/board/struct.RISCV64.html new file mode 100644 index 00000000..fd8bcd04 --- /dev/null +++ b/ch9/os/board/struct.RISCV64.html @@ -0,0 +1,27 @@ +RISCV64 in os::board - Rust + +
+

Struct os::board::RISCV64

source · []
pub struct RISCV64 {
+    addr: u64,
+}
Expand description

RISCV64 configuration

+

Fields

addr: u64

Address of the sifive_test mapped device.

+

Implementations

Create an instance.

+

Trait Implementations

Exit qemu with specified exit code.

+

Exit QEMU using EXIT_SUCCESS, aka 0, if possible. Read more

+

Exit QEMU using EXIT_FAILURE, aka 1.

+

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

+

Returns the argument unchanged.

+

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ \ No newline at end of file diff --git a/ch9/os/board/trait.QEMUExit.html b/ch9/os/board/trait.QEMUExit.html new file mode 100644 index 00000000..d6cc6fe2 --- /dev/null +++ b/ch9/os/board/trait.QEMUExit.html @@ -0,0 +1,17 @@ +QEMUExit in os::board - Rust + +
pub trait QEMUExit {
+    fn exit(&self, code: u32) -> !;
+    fn exit_success(&self) -> !;
+    fn exit_failure(&self) -> !;
+}

Required methods

Exit with specified return code.

+

Note: For X86, code is binary-OR’ed with 0x1 inside QEMU.

+

Exit QEMU using EXIT_SUCCESS, aka 0, if possible.

+

Note: Not possible for X86.

+

Exit QEMU using EXIT_FAILURE, aka 1.

+

Implementors

+ \ No newline at end of file diff --git a/ch9/os/board/type.BlockDeviceImpl.html b/ch9/os/board/type.BlockDeviceImpl.html index bad2166f..f18f7b97 100644 --- a/ch9/os/board/type.BlockDeviceImpl.html +++ b/ch9/os/board/type.BlockDeviceImpl.html @@ -4,5 +4,5 @@
-

Type Definition os::board::BlockDeviceImpl

source · []
pub type BlockDeviceImpl = VirtIOBlock;
+

Type Definition os::board::BlockDeviceImpl

source · []
pub type BlockDeviceImpl = VirtIOBlock;
\ No newline at end of file diff --git a/ch9/os/board/type.CharDeviceImpl.html b/ch9/os/board/type.CharDeviceImpl.html index 50740a0e..fabf9366 100644 --- a/ch9/os/board/type.CharDeviceImpl.html +++ b/ch9/os/board/type.CharDeviceImpl.html @@ -4,5 +4,5 @@
-

Type Definition os::board::CharDeviceImpl

source · []
pub type CharDeviceImpl = NS16550a<VIRT_UART>;
+

Type Definition os::board::CharDeviceImpl

source · []
pub type CharDeviceImpl = NS16550a<VIRT_UART>;
\ No newline at end of file diff --git a/ch9/os/drivers/block/sdcard/struct.PERIPHERALS.html b/ch9/os/drivers/block/sdcard/struct.PERIPHERALS.html index 15d13479..4974adc1 100644 --- a/ch9/os/drivers/block/sdcard/struct.PERIPHERALS.html +++ b/ch9/os/drivers/block/sdcard/struct.PERIPHERALS.html @@ -6,8 +6,8 @@

PERIPHERALS

struct PERIPHERALS {
     __private_field: (),
-}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Peripherals>>

Panic if the data has been borrowed.

-

Trait Implementations

The resulting type after dereferencing.

+}

Fields

__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Peripherals>>

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/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html b/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html index 80cc83e1..785a6e27 100644 --- a/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html +++ b/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html @@ -4,6 +4,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/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html b/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html index 2db5445b..7f979ce2 100644 --- a/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html +++ b/ch9/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html @@ -4,6 +4,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/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html b/ch9/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html index fad49dd9..69f65364 100644 --- a/ch9/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html +++ b/ch9/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html @@ -4,6 +4,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/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html b/ch9/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html index ac9484ed..19bb894c 100644 --- a/ch9/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html +++ b/ch9/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html @@ -4,6 +4,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/os/drivers/block/virtio_blk/index.html b/ch9/os/drivers/block/virtio_blk/index.html index d1521808..3c65e571 100644 --- a/ch9/os/drivers/block/virtio_blk/index.html +++ b/ch9/os/drivers/block/virtio_blk/index.html @@ -4,7 +4,7 @@

Structs

Constants

VIRTIO0 🔒

Functions

diff --git a/ch9/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch9/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html index a9a4dcaa..b5643800 100644 --- a/ch9/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html +++ b/ch9/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html @@ -4,12 +4,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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html b/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html index e0987bed..9aa14d48 100644 --- a/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html +++ b/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html @@ -7,7 +7,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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/index.html b/ch9/os/drivers/chardev/ns16550a/index.html index 16ea4fb7..a85427b7 100644 --- a/ch9/os/drivers/chardev/ns16550a/index.html +++ b/ch9/os/drivers/chardev/ns16550a/index.html @@ -4,7 +4,7 @@

Structs

InterruptEnableRegister

LineStatusRegister

Model Control Register

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.IER.html b/ch9/os/drivers/chardev/ns16550a/struct.IER.html index 0408cdc2..2c711499 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.IER.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.IER.html @@ -3,18 +3,18 @@

pub struct IER {
+        

IER

pub struct IER {
     bits: u8,
 }
Expand description

InterruptEnableRegister

-

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 @@ -22,35 +22,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 @@ -58,55 +58,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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.LSR.html b/ch9/os/drivers/chardev/ns16550a/struct.LSR.html index c1e04892..2b9d5de0 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.LSR.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.LSR.html @@ -4,17 +4,17 @@
pub struct LSR {
+    

Struct os::drivers::chardev::ns16550a::LSR

source · []
pub struct LSR {
     bits: u8,
 }
Expand description

LineStatusRegister

-

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 @@ -22,35 +22,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 @@ -58,55 +58,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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.MCR.html b/ch9/os/drivers/chardev/ns16550a/struct.MCR.html index b581c5d8..d3ec7f5a 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.MCR.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.MCR.html @@ -4,17 +4,17 @@
pub struct MCR {
+    

Struct os::drivers::chardev::ns16550a::MCR

source · []
pub struct MCR {
     bits: u8,
 }
Expand description

Model Control Register

-

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 @@ -22,35 +22,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 @@ -58,55 +58,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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html index 63042978..3a8b9285 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html @@ -4,10 +4,10 @@
pub struct NS16550a<const BASE_ADDR: usize> {
+    

Struct os::drivers::chardev::ns16550a::NS16550a

source · []
pub struct NS16550a<const BASE_ADDR: usize> {
     inner: UPIntrFreeCell<NS16550aInner>,
     condvar: Condvar,
-}

Fields

inner: UPIntrFreeCell<NS16550aInner>condvar: Condvar

Implementations

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

inner: UPIntrFreeCell<NS16550aInner>condvar: 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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html index 97e96b7d..9180237b 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html @@ -4,7 +4,7 @@
struct NS16550aInner {
+    

Struct os::drivers::chardev::ns16550a::NS16550aInner

source · []
struct NS16550aInner {
     ns16550a: NS16550aRaw,
     read_buffer: VecDeque<u8>,
 }

Fields

ns16550a: NS16550aRawread_buffer: VecDeque<u8>

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html index 9bde42be..6edd6e3d 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html @@ -4,9 +4,9 @@
pub struct NS16550aRaw {
+    

Struct os::drivers::chardev::ns16550a::NS16550aRaw

source · []
pub struct NS16550aRaw {
     base_addr: usize,
-}

Fields

base_addr: usize

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

base_addr: usize

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

Returns the argument unchanged.

diff --git a/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html b/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html index 84d27912..3d9a3d79 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html @@ -4,7 +4,7 @@
#[repr(C)]
struct ReadWithoutDLAB { +

Struct os::drivers::chardev::ns16550a::ReadWithoutDLAB

source · []
#[repr(C)]
struct ReadWithoutDLAB { pub rbr: ReadOnly<u8>, pub ier: Volatile<IER>, pub iir: ReadOnly<u8>, diff --git a/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html b/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html index b98deab7..ef771402 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html @@ -4,7 +4,7 @@
#[repr(C)]
struct WriteWithoutDLAB { +

Struct os::drivers::chardev::ns16550a::WriteWithoutDLAB

source · []
#[repr(C)]
struct WriteWithoutDLAB { pub thr: WriteOnly<u8>, pub ier: Volatile<IER>, _padding0: ReadOnly<u8>, diff --git a/ch9/os/drivers/chardev/trait.CharDevice.html b/ch9/os/drivers/chardev/trait.CharDevice.html index 7be7388e..b7872958 100644 --- a/ch9/os/drivers/chardev/trait.CharDevice.html +++ b/ch9/os/drivers/chardev/trait.CharDevice.html @@ -8,5 +8,5 @@ fn read(&self) -> u8; fn write(&self, ch: u8); fn handle_irq(&self); -}

Required methods

Implementors

+}

Required methods

Implementors

\ No newline at end of file diff --git a/ch9/os/fn.rust_main.html b/ch9/os/fn.rust_main.html index 294d8d61..77129182 100644 --- a/ch9/os/fn.rust_main.html +++ b/ch9/os/fn.rust_main.html @@ -4,6 +4,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/os/index.html b/ch9/os/index.html index 7dc1594a..7c64f878 100644 --- a/ch9/os/index.html +++ b/ch9/os/index.html @@ -4,7 +4,7 @@
-

Crate os

source · []

Modules

+

Crate os

source · []

Modules

board 🔒
config 🔒
console 🔒
drivers 🔒
fs 🔒
lang_items 🔒
mm 🔒
sbi 🔒
sync 🔒
syscall 🔒
task 🔒
timer 🔒
trap 🔒

Macros

Structs

Functions

diff --git a/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html index 220549ff..4611a9dc 100644 --- a/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ b/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html @@ -6,8 +6,8 @@

FRAME_ALLOCATOR

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.

+}

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

diff --git a/ch9/os/sbi/fn.shutdown.html b/ch9/os/sbi/fn.shutdown.html index 67e910eb..dc79155f 100644 --- a/ch9/os/sbi/fn.shutdown.html +++ b/ch9/os/sbi/fn.shutdown.html @@ -4,5 +4,5 @@
-

Function os::sbi::shutdown

source · []
pub fn shutdown() -> !
+

Function os::sbi::shutdown

source · []
pub fn shutdown(exit_code: usize) -> !
\ No newline at end of file diff --git a/ch9/os/sbi/index.html b/ch9/os/sbi/index.html index a6c08362..19d7a303 100644 --- a/ch9/os/sbi/index.html +++ b/ch9/os/sbi/index.html @@ -4,7 +4,7 @@
-

Module os::sbi

source · []

Constants

+

Module os::sbi

source · []

Constants

Functions

\ No newline at end of file diff --git a/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html b/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html index d4a44d05..6957969a 100644 --- a/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html +++ b/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html @@ -4,12 +4,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

Returns the argument unchanged.

diff --git a/ch9/os/sync/condvar/index.html b/ch9/os/sync/condvar/index.html index 6e659d7f..97a47761 100644 --- a/ch9/os/sync/condvar/index.html +++ b/ch9/os/sync/condvar/index.html @@ -4,6 +4,6 @@
-

Module os::sync::condvar

source · []

Structs

+

Module os::sync::condvar

source · []

Structs

\ No newline at end of file diff --git a/ch9/os/sync/condvar/struct.Condvar.html b/ch9/os/sync/condvar/struct.Condvar.html index 46abc535..c576eabd 100644 --- a/ch9/os/sync/condvar/struct.Condvar.html +++ b/ch9/os/sync/condvar/struct.Condvar.html @@ -4,9 +4,9 @@
pub struct Condvar {
+    

Struct os::sync::condvar::Condvar

source · []
pub struct Condvar {
     pub inner: UPIntrFreeCell<CondvarInner>,
-}

Fields

inner: UPIntrFreeCell<CondvarInner>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

inner: UPIntrFreeCell<CondvarInner>

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

Returns the argument unchanged.

diff --git a/ch9/os/sync/condvar/struct.CondvarInner.html b/ch9/os/sync/condvar/struct.CondvarInner.html index d9f44671..e2766b9c 100644 --- a/ch9/os/sync/condvar/struct.CondvarInner.html +++ b/ch9/os/sync/condvar/struct.CondvarInner.html @@ -4,7 +4,7 @@
pub struct CondvarInner {
+    

Struct os::sync::condvar::CondvarInner

source · []
pub struct CondvarInner {
     pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
 }

Fields

wait_queue: VecDeque<Arc<TaskControlBlock>>

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/ch9/os/sync/up/index.html b/ch9/os/sync/up/index.html index f44396d7..c834f927 100644 --- a/ch9/os/sync/up/index.html +++ b/ch9/os/sync/up/index.html @@ -4,6 +4,6 @@
-

Module os::sync::up

source · []

Structs

+

Module os::sync::up

source · []

Structs

\ No newline at end of file diff --git a/ch9/os/sync/up/struct.INTR_MASKING_INFO.html b/ch9/os/sync/up/struct.INTR_MASKING_INFO.html index ffa9847c..27ce0064 100644 --- a/ch9/os/sync/up/struct.INTR_MASKING_INFO.html +++ b/ch9/os/sync/up/struct.INTR_MASKING_INFO.html @@ -4,11 +4,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

Returns the argument unchanged.

diff --git a/ch9/os/sync/up/struct.IntrMaskingInfo.html b/ch9/os/sync/up/struct.IntrMaskingInfo.html index 393609ae..476c8ffd 100644 --- a/ch9/os/sync/up/struct.IntrMaskingInfo.html +++ b/ch9/os/sync/up/struct.IntrMaskingInfo.html @@ -7,7 +7,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

Returns the argument unchanged.

diff --git a/ch9/os/sync/up/struct.UPIntrFreeCell.html b/ch9/os/sync/up/struct.UPIntrFreeCell.html index bcc9a3d7..8f1e6d4b 100644 --- a/ch9/os/sync/up/struct.UPIntrFreeCell.html +++ b/ch9/os/sync/up/struct.UPIntrFreeCell.html @@ -4,11 +4,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

Returns the argument unchanged.

diff --git a/ch9/os/sync/up/struct.UPIntrRefMut.html b/ch9/os/sync/up/struct.UPIntrRefMut.html index 7bf33140..3ffeb865 100644 --- a/ch9/os/sync/up/struct.UPIntrRefMut.html +++ b/ch9/os/sync/up/struct.UPIntrRefMut.html @@ -4,10 +4,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/os/task/fn.add_initproc.html b/ch9/os/task/fn.add_initproc.html index 6f1623e4..9dd2c371 100644 --- a/ch9/os/task/fn.add_initproc.html +++ b/ch9/os/task/fn.add_initproc.html @@ -4,5 +4,5 @@
-

Function os::task::add_initproc

source · []
pub fn add_initproc()
+

Function os::task::add_initproc

source · []
pub fn add_initproc()
\ No newline at end of file diff --git a/ch9/os/task/fn.check_signals_of_current.html b/ch9/os/task/fn.check_signals_of_current.html index fd45fe2f..a6ffeb93 100644 --- a/ch9/os/task/fn.check_signals_of_current.html +++ b/ch9/os/task/fn.check_signals_of_current.html @@ -4,5 +4,5 @@
pub fn check_signals_of_current() -> Option<(i32, &'static str)>
+

Function os::task::check_signals_of_current

source · []
pub fn check_signals_of_current() -> Option<(i32, &'static str)>
\ No newline at end of file diff --git a/ch9/os/task/fn.current_add_signal.html b/ch9/os/task/fn.current_add_signal.html index 9b9d856e..f0d2e166 100644 --- a/ch9/os/task/fn.current_add_signal.html +++ b/ch9/os/task/fn.current_add_signal.html @@ -4,5 +4,5 @@
pub fn current_add_signal(signal: SignalFlags)
+

Function os::task::current_add_signal

source · []
pub fn current_add_signal(signal: SignalFlags)
\ No newline at end of file diff --git a/ch9/os/task/fn.exit_current_and_run_next.html b/ch9/os/task/fn.exit_current_and_run_next.html index b6a60e59..42c2f6d8 100644 --- a/ch9/os/task/fn.exit_current_and_run_next.html +++ b/ch9/os/task/fn.exit_current_and_run_next.html @@ -4,5 +4,5 @@
pub fn exit_current_and_run_next(exit_code: i32)
+

Function os::task::exit_current_and_run_next

source · []
pub fn exit_current_and_run_next(exit_code: i32)
\ No newline at end of file diff --git a/ch9/os/task/id/constant.IDLE_PID.html b/ch9/os/task/id/constant.IDLE_PID.html new file mode 100644 index 00000000..996482b5 --- /dev/null +++ b/ch9/os/task/id/constant.IDLE_PID.html @@ -0,0 +1,8 @@ +IDLE_PID in os::task::id - Rust + +
+

Constant os::task::id::IDLE_PID

source · []
pub const IDLE_PID: usize = 0;
+ \ No newline at end of file diff --git a/ch9/os/task/id/fn.kernel_stack_position.html b/ch9/os/task/id/fn.kernel_stack_position.html index d5f5895f..8281e565 100644 --- a/ch9/os/task/id/fn.kernel_stack_position.html +++ b/ch9/os/task/id/fn.kernel_stack_position.html @@ -4,6 +4,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/os/task/id/fn.kstack_alloc.html b/ch9/os/task/id/fn.kstack_alloc.html index 6358f391..db3e7490 100644 --- a/ch9/os/task/id/fn.kstack_alloc.html +++ b/ch9/os/task/id/fn.kstack_alloc.html @@ -4,5 +4,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/os/task/id/fn.pid_alloc.html b/ch9/os/task/id/fn.pid_alloc.html index 3e975810..6a8d8f2b 100644 --- a/ch9/os/task/id/fn.pid_alloc.html +++ b/ch9/os/task/id/fn.pid_alloc.html @@ -4,5 +4,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/os/task/id/fn.trap_cx_bottom_from_tid.html b/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html index cf4bbce1..f3af5048 100644 --- a/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html +++ b/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html @@ -4,5 +4,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/os/task/id/fn.ustack_bottom_from_tid.html b/ch9/os/task/id/fn.ustack_bottom_from_tid.html index 5a8977b7..f8ced263 100644 --- a/ch9/os/task/id/fn.ustack_bottom_from_tid.html +++ b/ch9/os/task/id/fn.ustack_bottom_from_tid.html @@ -4,5 +4,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/os/task/id/index.html b/ch9/os/task/id/index.html index 2b27e6cb..1ebc8120 100644 --- a/ch9/os/task/id/index.html +++ b/ch9/os/task/id/index.html @@ -3,9 +3,10 @@

-

Module os::task::id

source · []

Structs

-

Functions

+

Module id

\ No newline at end of file diff --git a/ch9/os/task/id/sidebar-items.js b/ch9/os/task/id/sidebar-items.js index 693c0c6e..87951670 100644 --- a/ch9/os/task/id/sidebar-items.js +++ b/ch9/os/task/id/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"fn":[["kernel_stack_position","Return (bottom, top) of a kernel stack in kernel space."],["kstack_alloc",""],["pid_alloc",""],["trap_cx_bottom_from_tid",""],["ustack_bottom_from_tid",""]],"struct":[["KSTACK_ALLOCATOR",""],["KernelStack",""],["PID_ALLOCATOR",""],["PidHandle",""],["RecycleAllocator",""],["TaskUserRes",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["IDLE_PID",""]],"fn":[["kernel_stack_position","Return (bottom, top) of a kernel stack in kernel space."],["kstack_alloc",""],["pid_alloc",""],["trap_cx_bottom_from_tid",""],["ustack_bottom_from_tid",""]],"struct":[["KSTACK_ALLOCATOR",""],["KernelStack",""],["PID_ALLOCATOR",""],["PidHandle",""],["RecycleAllocator",""],["TaskUserRes",""]]}); \ No newline at end of file diff --git a/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html index 664a0598..15c28b78 100644 --- a/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html +++ b/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html @@ -6,8 +6,8 @@

KSTACK_ALLOCATOR

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.

+}

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/os/task/id/struct.KernelStack.html b/ch9/os/task/id/struct.KernelStack.html index 730c4e8f..422fd0d2 100644 --- a/ch9/os/task/id/struct.KernelStack.html +++ b/ch9/os/task/id/struct.KernelStack.html @@ -4,7 +4,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/os/task/id/struct.PID_ALLOCATOR.html b/ch9/os/task/id/struct.PID_ALLOCATOR.html index fa33b77e..3cae143f 100644 --- a/ch9/os/task/id/struct.PID_ALLOCATOR.html +++ b/ch9/os/task/id/struct.PID_ALLOCATOR.html @@ -6,8 +6,8 @@

PID_ALLOCATOR

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/os/task/id/struct.PidHandle.html b/ch9/os/task/id/struct.PidHandle.html index a4431f41..3e6b2c26 100644 --- a/ch9/os/task/id/struct.PidHandle.html +++ b/ch9/os/task/id/struct.PidHandle.html @@ -4,7 +4,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/os/task/id/struct.TaskUserRes.html b/ch9/os/task/id/struct.TaskUserRes.html index 28430208..db120cf6 100644 --- a/ch9/os/task/id/struct.TaskUserRes.html +++ b/ch9/os/task/id/struct.TaskUserRes.html @@ -4,11 +4,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/os/task/index.html b/ch9/os/task/index.html index 5a6126ed..259e4c95 100644 --- a/ch9/os/task/index.html +++ b/ch9/os/task/index.html @@ -4,8 +4,8 @@
-

Module os::task

source · []

Re-exports

-
pub use context::TaskContext;
pub use id::kstack_alloc;
pub use id::pid_alloc;
pub use id::KernelStack;
pub use id::PidHandle;
pub use manager::add_task;
pub use manager::pid2process;
pub use manager::remove_from_pid2process;
pub use processor::current_kstack_top;
pub use processor::current_process;
pub use processor::current_task;
pub use processor::current_trap_cx;
pub use processor::current_trap_cx_user_va;
pub use processor::current_user_token;
pub use processor::run_tasks;
pub use processor::schedule;
pub use processor::take_current_task;
pub use signal::SignalFlags;
pub use task::TaskControlBlock;
pub use task::TaskStatus;

Modules

+

Module os::task

source · []

Re-exports

+
pub use context::TaskContext;
pub use id::kstack_alloc;
pub use id::pid_alloc;
pub use id::KernelStack;
pub use id::PidHandle;
pub use id::IDLE_PID;
pub use manager::add_task;
pub use manager::pid2process;
pub use manager::remove_from_pid2process;
pub use processor::current_kstack_top;
pub use processor::current_process;
pub use processor::current_task;
pub use processor::current_trap_cx;
pub use processor::current_trap_cx_user_va;
pub use processor::current_user_token;
pub use processor::run_tasks;
pub use processor::schedule;
pub use processor::take_current_task;
pub use signal::SignalFlags;
pub use task::TaskControlBlock;
pub use task::TaskStatus;

Modules

context 🔒
id 🔒
manager 🔒
process 🔒
processor 🔒
signal 🔒
switch 🔒
task 🔒

Structs

Functions

This function must be followed by a schedule

diff --git a/ch9/os/task/manager/struct.PID2PCB.html b/ch9/os/task/manager/struct.PID2PCB.html index ddc1768e..5ea4b7cd 100644 --- a/ch9/os/task/manager/struct.PID2PCB.html +++ b/ch9/os/task/manager/struct.PID2PCB.html @@ -6,8 +6,8 @@

PID2PCB

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.

+}

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

diff --git a/ch9/os/task/manager/struct.TASK_MANAGER.html b/ch9/os/task/manager/struct.TASK_MANAGER.html index d79d6bb7..51e5e3a4 100644 --- a/ch9/os/task/manager/struct.TASK_MANAGER.html +++ b/ch9/os/task/manager/struct.TASK_MANAGER.html @@ -6,8 +6,8 @@

TASK_MANAGER

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/os/task/processor/fn.current_kstack_top.html b/ch9/os/task/processor/fn.current_kstack_top.html index a8311038..64b5b3d0 100644 --- a/ch9/os/task/processor/fn.current_kstack_top.html +++ b/ch9/os/task/processor/fn.current_kstack_top.html @@ -4,5 +4,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/os/task/processor/fn.current_process.html b/ch9/os/task/processor/fn.current_process.html index 8a611bbf..bc4fd217 100644 --- a/ch9/os/task/processor/fn.current_process.html +++ b/ch9/os/task/processor/fn.current_process.html @@ -4,5 +4,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/os/task/processor/fn.current_task.html b/ch9/os/task/processor/fn.current_task.html index 77698381..ab638a6e 100644 --- a/ch9/os/task/processor/fn.current_task.html +++ b/ch9/os/task/processor/fn.current_task.html @@ -4,5 +4,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/os/task/processor/fn.current_trap_cx.html b/ch9/os/task/processor/fn.current_trap_cx.html index 4d225fb2..1a718a17 100644 --- a/ch9/os/task/processor/fn.current_trap_cx.html +++ b/ch9/os/task/processor/fn.current_trap_cx.html @@ -4,5 +4,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/os/task/processor/fn.current_trap_cx_user_va.html b/ch9/os/task/processor/fn.current_trap_cx_user_va.html index 66c0e49b..27324e8e 100644 --- a/ch9/os/task/processor/fn.current_trap_cx_user_va.html +++ b/ch9/os/task/processor/fn.current_trap_cx_user_va.html @@ -4,5 +4,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/os/task/processor/fn.current_user_token.html b/ch9/os/task/processor/fn.current_user_token.html index 2bd10fc4..1b0a3b9b 100644 --- a/ch9/os/task/processor/fn.current_user_token.html +++ b/ch9/os/task/processor/fn.current_user_token.html @@ -4,5 +4,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/os/task/processor/fn.run_tasks.html b/ch9/os/task/processor/fn.run_tasks.html index 66fae337..8c8212d5 100644 --- a/ch9/os/task/processor/fn.run_tasks.html +++ b/ch9/os/task/processor/fn.run_tasks.html @@ -4,5 +4,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/os/task/processor/fn.schedule.html b/ch9/os/task/processor/fn.schedule.html index 757ba6d9..6a06be98 100644 --- a/ch9/os/task/processor/fn.schedule.html +++ b/ch9/os/task/processor/fn.schedule.html @@ -4,5 +4,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/os/task/processor/fn.take_current_task.html b/ch9/os/task/processor/fn.take_current_task.html index 4bd10924..5393a0d8 100644 --- a/ch9/os/task/processor/fn.take_current_task.html +++ b/ch9/os/task/processor/fn.take_current_task.html @@ -4,5 +4,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/os/task/processor/struct.PROCESSOR.html b/ch9/os/task/processor/struct.PROCESSOR.html index 9f641f4b..444b295d 100644 --- a/ch9/os/task/processor/struct.PROCESSOR.html +++ b/ch9/os/task/processor/struct.PROCESSOR.html @@ -4,12 +4,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

Returns the argument unchanged.

diff --git a/ch9/os/task/struct.INITPROC.html b/ch9/os/task/struct.INITPROC.html index 44bf6146..1ef46821 100644 --- a/ch9/os/task/struct.INITPROC.html +++ b/ch9/os/task/struct.INITPROC.html @@ -4,11 +4,11 @@
-

Struct os::task::INITPROC

source · []
pub struct INITPROC {
+    

Struct os::task::INITPROC

source · []
pub struct INITPROC {
     __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

Returns the argument unchanged.

diff --git a/ch9/os/task/task/enum.TaskStatus.html b/ch9/os/task/task/enum.TaskStatus.html index c1b018e2..8a62581e 100644 --- a/ch9/os/task/task/enum.TaskStatus.html +++ b/ch9/os/task/task/enum.TaskStatus.html @@ -4,16 +4,16 @@
pub enum TaskStatus {
+    

Enum os::task::task::TaskStatus

source · []
pub enum TaskStatus {
     Ready,
     Running,
     Blocking,
-}

Variants

Ready

Running

Blocking

Trait Implementations

Returns a copy of the value. Read more

+}

Variants

Ready

Running

Blocking

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. 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 !=.

-

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

Returns the argument unchanged.

diff --git a/ch9/os/task/task/index.html b/ch9/os/task/task/index.html index b79fb126..10045566 100644 --- a/ch9/os/task/task/index.html +++ b/ch9/os/task/task/index.html @@ -4,7 +4,7 @@
-

Module os::task::task

source · []

Structs

+

Module os::task::task

source · []

Structs

Enums

\ No newline at end of file diff --git a/ch9/os/task/task/struct.TaskControlBlock.html b/ch9/os/task/task/struct.TaskControlBlock.html index ee92603c..f7a39243 100644 --- a/ch9/os/task/task/struct.TaskControlBlock.html +++ b/ch9/os/task/task/struct.TaskControlBlock.html @@ -4,11 +4,11 @@
pub struct TaskControlBlock {
+    

Struct os::task::task::TaskControlBlock

source · []
pub struct TaskControlBlock {
     pub process: Weak<ProcessControlBlock>,
     pub kstack: KernelStack,
     pub inner: UPIntrFreeCell<TaskControlBlockInner>,
-}

Fields

process: Weak<ProcessControlBlock>kstack: KernelStackinner: UPIntrFreeCell<TaskControlBlockInner>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

process: Weak<ProcessControlBlock>kstack: KernelStackinner: UPIntrFreeCell<TaskControlBlockInner>

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

Returns the argument unchanged.

diff --git a/ch9/os/task/task/struct.TaskControlBlockInner.html b/ch9/os/task/task/struct.TaskControlBlockInner.html index 8655a9fe..f8b7f86d 100644 --- a/ch9/os/task/task/struct.TaskControlBlockInner.html +++ b/ch9/os/task/task/struct.TaskControlBlockInner.html @@ -4,13 +4,13 @@
pub struct TaskControlBlockInner {
+    

Struct os::task::task::TaskControlBlockInner

source · []
pub struct TaskControlBlockInner {
     pub res: Option<TaskUserRes>,
     pub trap_cx_ppn: PhysPageNum,
     pub task_cx: TaskContext,
     pub task_status: TaskStatus,
     pub exit_code: Option<i32>,
-}

Fields

res: Option<TaskUserRes>trap_cx_ppn: PhysPageNumtask_cx: TaskContexttask_status: TaskStatusexit_code: Option<i32>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Fields

res: Option<TaskUserRes>trap_cx_ppn: PhysPageNumtask_cx: TaskContexttask_status: TaskStatusexit_code: Option<i32>

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

Returns the argument unchanged.

diff --git a/ch9/os/timer/struct.TIMERS.html b/ch9/os/timer/struct.TIMERS.html index ee318e25..d6da243e 100644 --- a/ch9/os/timer/struct.TIMERS.html +++ b/ch9/os/timer/struct.TIMERS.html @@ -6,8 +6,8 @@

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.

+}

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

diff --git a/ch9/search-index.js b/ch9/search-index.js index 82aa7bb4..8fcadea7 100644 --- a/ch9/search-index.js +++ b/ch9/search-index.js @@ -1,4 +1,4 @@ var searchIndex = JSON.parse('{\ -"os":{"doc":"","t":[3,12,0,11,11,5,0,0,11,0,11,0,11,0,0,14,14,5,0,0,0,0,0,0,11,11,11,6,17,6,17,17,17,5,5,17,17,17,17,17,17,17,17,3,11,11,11,11,5,11,11,11,11,0,0,0,3,12,5,11,11,11,11,11,0,11,11,11,0,12,13,13,12,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,11,11,13,12,12,13,12,12,12,12,12,12,12,12,12,12,11,4,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,17,17,17,17,17,17,12,12,17,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,3,17,3,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,5,5,5,11,8,3,12,11,11,11,11,10,11,0,10,11,11,11,10,18,18,18,18,3,3,3,3,3,3,18,18,3,18,18,3,12,12,12,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,3,13,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,0,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,13,13,13,3,3,17,4,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,5,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,5,0,0,12,12,12,12,17,17,3,3,3,3,8,17,6,17,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,8,6,3,3,12,10,11,11,11,11,11,11,11,12,10,11,11,11,12,11,5,5,5,11,11,11,11,5,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,7,7,5,5,5,13,13,3,3,3,4,3,18,18,18,18,12,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,12,11,12,11,11,11,11,11,12,11,11,11,5,11,11,5,5,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,18,18,18,3,3,3,18,18,3,3,18,18,18,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,5,5,5,5,5,0,0,0,0,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,11,8,3,3,3,11,11,11,11,11,11,11,11,11,12,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,3,3,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,12,3,3,3,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,12,5,5,5,11,11,5,0,5,11,5,11,0,11,0,0,0,0,5,0,0,11,11,11,3,11,11,11,11,11,12,12,12,11,11,11,11,12,12,3,3,3,3,3,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,12,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,3,3,3,12,12,11,5,11,11,11,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,5,12,5,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,5,5,11,5,11,11,11,11,11,11,18,18,18,18,18,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,13,13,13,3,3,4,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,17,17,3,3,12,5,11,11,11,11,5,11,11,11,12,11,11,5,5,11,11,11,5,12,11,11,11,11,11,11,0,5,5,5,5,5,5,5,5,5,3,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,12],"n":["DEV_NON_BLOCKING_ACCESS","__private_field","board","borrow","borrow_mut","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","MMIO","VIRT_PLIC","VIRT_UART","device_init","irq_handler","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","block","chardev","plic","BLOCK_DEVICE","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","sdcard","try_from","try_into","type_id","virtio_blk","0","ACMD23","ACMD41","CID_CRC","CMD","CMD0","CMD10","CMD12","CMD16","CMD17","CMD18","CMD24","CMD25","CMD55","CMD58","CMD59","CMD8","CMD9","CMDFailed","CSDStruct","CSD_CRC","CS_HIGH","CS_LOW","CannotGetCardInfo","CardBlockSize","CardCapacity","CardCapacityStatusNotSet","CardComdClasses","ContentProtectAppli","CopyFlag","DSRImpl","DeviceSize","ECC","EraseGrMul","EraseGrSize","FileFormat","FileFormatGroup","HIGH_SPEED_ENABLE","InitError","ManDeflECC","ManufactDate","ManufacturerID","MaxBusClkFrec","MaxWrBlockLen","NSAC","OEM_AppliID","PERIPHERALS","PartBlockRead","PermWrProtect","ProdName1","ProdName2","ProdRev","ProdSN","RdBlockLen","RdBlockMisalign","Reserved1","Reserved1","Reserved2","Reserved2","Reserved3","Reserved4","SDCard","SDCardCID","SDCardCSD","SDCardInfo","SDCardWrapper","SD_CS","SD_CS_GPIONUM","SD_START_DATA_MULTIPLE_BLOCK_READ","SD_START_DATA_MULTIPLE_BLOCK_WRITE","SD_START_DATA_SINGLE_BLOCK_READ","SD_START_DATA_SINGLE_BLOCK_WRITE","SD_cid","SD_csd","SEC_LEN","SysSpecVersion","TAAC","TempWrProtect","WrBlockMisalign","WrProtectGrEnable","WrProtectGrSize","WrSpeedFact","WriteBlockPaPartial","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cs_gpionum","deref","end_cmd","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_cardinfo","get_cidregister","get_csdregister","get_dataresponse","get_response","handle_irq","init","init_sdcard","into","into","into","into","into","into","into","into","io_init","lowlevel_init","new","new","read_block","read_data","read_sector","send_cmd","spi","spi_cs","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","write_block","write_data","write_sector","0","0","1","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","__private_field","borrow","borrow","borrow_mut","borrow_mut","condvars","deref","from","from","handle_irq","into","into","new","read_block","try_from","try_from","try_into","try_into","type_id","type_id","virtio_blk","virtio_dma_alloc","virtio_dma_dealloc","virtio_phys_to_virt","virtio_virt_to_phys","write_block","CharDevice","UART","__private_field","borrow","borrow_mut","deref","from","handle_irq","into","ns16550a","read","try_from","try_into","type_id","write","AUX_OUTPUT1","AUX_OUTPUT2","DATA_AVAILABLE","DATA_TERMINAL_READY","IER","LSR","MCR","NS16550a","NS16550aInner","NS16550aRaw","REQUEST_TO_SEND","RX_AVALIABLE","ReadWithoutDLAB","THR_EMPTY","TX_EMPTY","WriteWithoutDLAB","_padding0","_padding1","_padding1","_padding2","all","all","all","base_addr","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","complement","complement","complement","condvar","contains","contains","contains","difference","difference","difference","empty","empty","empty","eq","eq","eq","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_iter","handle_irq","hash","hash","hash","ier","ier","iir","init","inner","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_empty","is_empty","is_empty","lcr","lcr","lsr","lsr","mcr","mcr","ne","ne","ne","new","new","not","not","not","ns16550a","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_end","remove","remove","remove","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","thr","to_owned","to_owned","to_owned","toggle","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","write","write","write_end","IntrTargetPriority","Machine","PLIC","Supervisor","base_addr","borrow","borrow","borrow_mut","borrow_mut","claim","claim_comp_ptr_of_hart_with_priority","clone","clone_into","complete","disable","enable","enable_ptr","from","from","get_priority","get_threshold","hart_id_with_priority","into","into","new","priority_ptr","set_priority","set_threshold","supported_number","threshold_ptr_of_hart_with_priority","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","File","inode","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","ne","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","address","frame_allocator","heap_allocator","init","memory_set","page_table","0","0","0","0","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","ne","ne","ne","ne","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc","deref","drop","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","ne","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","writable","SBI_CLEAR_IPI","SBI_CONSOLE_GETCHAR","SBI_CONSOLE_PUTCHAR","SBI_REMOTE_FENCE_I","SBI_REMOTE_SFENCE_VMA","SBI_REMOTE_SFENCE_VMA_ASID","SBI_SEND_IPI","SBI_SET_TIMER","SBI_SHUTDOWN","console_getchar","console_putchar","sbi_call","set_timer","shutdown","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait_no_sched","wait_queue","wait_with_mutex","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","0","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref_mut","drop","enter","exclusive_access","exclusive_session","exit","from","from","from","from","from","get_mut","inner","inner","into","into","into","into","into","nested_level","new","new","new","sie_before_masking","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","INITPROC","__private_field","add_initproc","block_current_and_run_next","block_current_task","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","deref","exit_current_and_run_next","from","id","into","manager","process","processor","signal","suspend_current_and_run_next","switch","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","0","0","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove_from_pid2process","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","ne","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","context","disable_supervisor_interrupt","enable_supervisor_interrupt","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":["os","","","","","","","","","","","","","","","","","","","","","","","","","","","os::board","","","","","","","","os::config","","","","","","","","os::console","","","","","","","","","","os::drivers","","","os::drivers::block","","","","","","","","","","","","","os::drivers::block::sdcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::sdcard::InitError","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev","","","","","","","","","","","","","","","os::drivers::chardev::ns16550a","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::plic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","os::lang_items","","os::mm","","","","","","os::mm::address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::frame_allocator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::heap_allocator","","","","","os::mm::memory_set","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::page_table","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sbi","","","","","","","","","","","","","","os::sync","","","","os::sync::condvar","","","","","","","","","","","","","","","","","","","","","","os::sync::mutex","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sync::semaphore","","","","","","","","","","","","","","","","","","","","","","os::sync::up","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall::fs","","","","","","os::syscall::process","","","","","","","","os::syscall::sync","","","","","","","","","","os::syscall::thread","","","os::task","","","","","","","","","","","","","","","","","","","","","","","","","os::task::context","","","","","","","","","","","","","os::task::id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::processor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::signal","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::switch","os::task::task","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::timer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::trap","","","","","","","","","","os::trap::context","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Number of blocks to erase (SDC) ","Initiate initialization process (SDC) ","","SD commands ","Software reset ","Read CID register ","Stop to read data ","Change R/W block size ","Read block ","Read multiple blocks ","Write a block ","Write multiple blocks ","Leading command for ACMD* ","Read OCR ","Enable/disable CRC check ","Check voltage range (SDC V2) ","Read CSD register ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Card Identification Data: CID Register","Card Specific Data: CSD Register","Card information","","CS value passed to SPI controller, this is a dummy value …","GPIOHS GPIO number to use for controlling the SD card CS …","Data token start byte, Start Multiple Block Read ","Data token start byte, Start Multiple Block Write ","Data token start byte, Start Single Block Read ","Data token start byte, Start Single Block Write ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Connect pins to internal functions ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","InterruptEnableRegister","LineStatusRegister","Model Control Register","","","","","","","","","","ignore FCR","ignore MSR","ignore other registers","ignore SCR","Returns the set containing all flags.","Returns the set containing all flags.","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Adds the set of flags.","Adds the set of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","","","","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Toggles the set of flags.","Toggles the set of flags.","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns an empty set of flags.","Returns an empty set of flags.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","","","","","","interrupt enable register","interrupt enable register","interrupt identification register","","","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","line control register","line control register","line status register","line status register","model control register","modem control register","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","","","","receiver buffer register","","","","","Removes the specified flags in-place.","Removes the specified flags in-place.","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","transmitter holding register","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","Returns the complement of this set of flags.","","","","","","Do not check validity for simplicity Return (readable, …","","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline, also returns …","","","","Inserts the specified flags in-place.","Assume that no conflicts.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","Mention that trampoline is not collected by areas.","","","","","Without kernel stacks.","Returns the complement of this set of flags.","","","","","","Removes the specified flags in-place.","","","","Inserts or removes the specified flags depending on the …","","","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","Temporarily used to get arguments from user space.","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","","","","","Returns the complement of this set of flags.","","","","Removes the specified flags in-place.","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","Load a string from other address spaces into kernel space …","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Panic if the data has been borrowed.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","inner data","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","This function must be followed by a schedule","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","Returns the complement of this set of flags.","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","",""],"i":[0,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,2,2,2,0,0,0,0,3,0,3,3,3,3,3,0,3,3,3,0,4,5,5,6,0,5,5,5,5,5,5,5,5,5,5,5,5,5,7,8,8,9,9,7,10,10,7,8,8,8,8,8,8,8,8,8,8,9,0,8,6,6,8,8,8,6,0,8,8,6,6,6,6,8,8,8,6,8,6,8,8,0,0,0,0,0,0,0,0,0,0,0,10,10,0,8,8,8,8,8,8,8,8,11,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,5,7,8,6,10,5,7,8,6,10,9,11,9,5,5,7,8,6,10,9,4,5,7,8,6,10,11,9,9,9,9,9,4,9,0,9,4,5,7,8,6,10,11,0,9,9,4,4,9,9,9,9,9,5,7,8,6,10,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,4,9,9,12,13,12,0,0,0,14,15,14,15,14,15,14,15,14,15,15,14,15,15,15,14,15,14,15,14,15,0,0,0,0,15,0,0,16,16,16,16,16,17,16,0,17,16,16,16,17,18,18,19,18,0,0,0,0,0,0,18,20,0,19,20,0,21,22,21,22,20,19,18,23,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,20,20,20,20,19,19,19,19,19,18,18,18,18,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,25,20,19,18,22,21,22,23,25,20,19,18,20,19,18,20,19,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,22,21,22,21,22,21,20,19,18,23,25,20,19,18,24,20,19,18,22,23,25,24,23,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,21,20,19,18,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,20,19,18,23,25,23,0,26,0,26,27,27,26,27,26,27,27,26,26,27,27,27,27,27,26,27,27,27,27,26,27,27,27,27,26,27,26,27,26,27,26,27,26,0,0,0,28,28,0,28,28,29,0,0,0,29,29,0,29,29,30,29,29,29,29,29,29,29,29,29,31,32,30,29,31,32,30,29,29,29,29,29,29,30,29,29,29,29,29,29,29,29,29,31,32,30,29,29,29,29,29,29,31,32,29,29,29,31,32,30,29,29,29,0,29,31,29,32,0,29,31,31,29,31,31,29,29,29,29,29,29,29,31,32,30,29,31,32,30,29,31,32,30,29,29,31,31,31,33,33,33,0,0,0,0,34,34,34,34,35,34,33,35,34,33,35,33,33,33,35,34,33,34,35,34,33,0,34,35,34,35,35,35,34,34,34,33,35,34,33,35,34,33,35,34,33,35,35,35,34,34,35,0,0,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,0,0,0,0,0,0,0,0,38,39,40,41,0,0,0,0,0,0,0,0,0,0,0,0,38,39,42,38,39,40,41,43,42,38,39,40,41,43,38,39,38,39,40,41,43,38,39,40,41,43,38,39,40,41,42,42,38,39,40,41,38,39,38,39,40,41,42,38,38,38,39,39,39,40,40,40,41,41,41,43,40,43,38,40,40,38,43,41,42,38,39,40,41,43,42,43,43,38,39,40,41,42,43,42,38,39,38,39,40,41,43,44,40,41,38,39,40,41,43,42,38,39,40,41,43,42,38,39,40,41,43,42,38,39,40,41,43,0,0,0,0,0,45,46,47,48,47,45,48,47,45,47,46,47,45,48,47,48,0,0,0,48,47,45,47,0,48,47,45,46,48,47,48,47,48,47,45,48,47,45,48,47,45,0,0,0,0,0,49,49,0,0,0,0,0,50,50,50,50,51,52,50,52,50,50,50,50,50,50,50,50,52,53,51,49,50,52,53,51,49,50,49,50,49,50,50,50,50,53,53,51,50,0,0,0,50,49,50,0,0,50,49,50,50,50,50,50,52,53,51,49,50,53,50,50,50,52,52,50,50,50,52,50,50,52,53,51,49,50,50,50,0,53,53,53,52,53,50,53,52,52,50,52,50,52,52,0,50,52,0,0,50,0,0,0,50,50,50,49,50,50,52,52,52,53,51,49,50,52,53,51,49,50,52,53,51,49,50,50,53,53,53,54,54,54,0,0,0,54,54,0,0,54,54,54,54,54,54,54,54,54,54,55,54,54,56,57,58,54,55,56,57,58,54,55,57,58,54,55,54,55,54,54,54,58,58,54,54,55,54,55,54,56,56,55,54,54,54,54,54,56,56,57,58,54,55,54,54,54,54,56,54,54,54,54,56,57,58,54,55,57,58,54,54,55,57,56,54,56,57,55,58,54,54,55,55,54,56,54,54,54,54,54,55,54,56,56,56,0,0,0,0,56,57,58,54,55,56,57,58,54,55,56,57,58,54,55,54,56,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,60,59,60,59,60,59,59,60,59,59,59,60,59,60,59,60,59,60,59,0,0,0,0,61,62,63,61,62,63,61,62,63,62,61,62,63,64,61,62,61,63,61,62,61,62,63,61,62,63,61,62,63,64,61,62,63,0,0,65,66,65,66,66,65,65,66,65,65,66,65,65,66,65,66,65,66,65,66,67,0,0,0,0,0,68,69,70,71,67,68,69,70,71,67,68,67,68,67,67,70,71,71,70,69,70,71,67,68,69,69,71,69,70,71,67,68,70,69,70,71,70,69,70,71,67,68,69,70,71,67,68,69,70,71,67,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,72,72,0,0,0,72,0,72,0,72,0,0,0,0,0,0,0,72,72,72,0,73,73,73,73,73,73,73,73,73,73,73,73,74,75,0,0,0,0,0,0,76,77,78,79,79,78,74,75,79,76,77,78,74,75,79,76,77,78,78,79,79,76,77,74,75,79,78,74,75,79,76,77,75,78,74,75,79,76,77,0,0,78,79,0,79,75,78,79,0,79,79,78,74,75,79,76,77,78,74,75,79,76,77,78,74,75,79,76,77,79,79,0,79,0,0,0,80,81,82,0,82,80,81,82,80,81,80,81,82,0,82,80,81,0,82,80,81,82,0,82,0,82,80,81,82,80,81,82,80,81,0,0,83,83,84,83,84,83,83,83,83,84,83,83,84,84,83,83,83,84,84,84,84,83,83,83,83,84,83,84,83,83,83,83,83,84,83,84,83,84,83,0,0,85,86,85,86,85,86,86,0,0,0,0,0,0,85,86,85,86,86,86,85,86,0,0,86,0,86,85,86,85,86,85,87,87,87,87,87,0,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,88,88,88,0,0,0,89,90,88,89,90,88,88,88,88,90,89,90,88,90,90,89,89,89,89,90,88,89,89,89,90,90,90,88,90,89,90,88,89,90,88,89,90,88,0,0,0,0,91,0,92,91,92,91,0,92,91,92,92,92,91,0,0,92,91,92,0,92,92,91,92,91,92,91,0,0,0,0,0,0,0,0,0,0,0,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93],"f":[null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,null,[[["",0]],["upintrfreecell",3]],null,[[]],null,[[]],null,null,null,null,[[],["never",0]],null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[["arguments",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0],["str",0]],["result",6]],null,null,null,null,null,[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["arc",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["cmd",4]],[[["",0]],["initerror",4]],[[["",0]],["sdcardcsd",3]],[[["",0]],["sdcardcid",3]],[[["",0]],["sdcardinfo",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,[[["",0]],["upintrfreecell",3]],[[["",0]]],[[["",0],["cmd",4]],["bool",0]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["result",4,[["sdcardinfo",3]]]],[[["",0]],["result",4,[["sdcardcid",3]]]],[[["",0]],["result",4,[["sdcardcsd",3]]]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],[[["",0]]],[[["",0]],["result",4,[["sdcardinfo",3],["initerror",4]]]],[[],["sdcard",3,[["spiimpl",3,[["spi0",3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]]],[[["u32",0],["u8",0]]],[[]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],[[["",0],["cmd",4],["u32",0],["u8",0]]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["upintrfreecell",3]],[[]],[[]],[[["",0]]],[[]],[[]],[[]],[[["",0],["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[["usize",0]],["physaddr",3]],[[["physaddr",3],["usize",0]],["i32",0]],[[["physaddr",3]],["virtaddr",3]],[[["virtaddr",3]],["physaddr",3]],[[["",0],["usize",0]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["arc",3]],[[]],[[["",0]]],[[]],null,[[["",0]],["u8",0]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0],["u8",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["ier",3]]],[[["lsr",3]]],[[["mcr",3]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],null,null,null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["ier",3]],[[["",0]],["lsr",3]],[[["",0]],["mcr",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["ier",3]],["ordering",4]],[[["",0],["lsr",3]],["ordering",4]],[[["",0],["mcr",3]],["ordering",4]],[[]],[[]],[[]],null,[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0],["ier",3]],["bool",0]],[[["",0],["lsr",3]],["bool",0]],[[["",0],["mcr",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["intoiterator",8]]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u8",0]],["option",4]],[[["u8",0]],["option",4]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,[[["",0]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],null,null,null,null,null,null,[[["",0],["ier",3]],["bool",0]],[[["",0],["lsr",3]],["bool",0]],[[["",0],["mcr",3]],["bool",0]],[[["usize",0]]],[[]],[[]],[[]],[[]],null,[[["",0],["ier",3]],["option",4,[["ordering",4]]]],[[["",0],["lsr",3]],["option",4,[["ordering",4]]]],[[["",0],["mcr",3]],["option",4,[["ordering",4]]]],null,[[["",0]],["option",4,[["u8",0]]]],[[["",0]],["u8",0]],null,[[["",0]],["readwithoutdlab",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0],["bool",0]]],[[["",0],["bool",0]]],[[["",0],["bool",0]]],[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[["",0],["u8",0]]],[[["",0],["u8",0]]],[[["",0]],["writewithoutdlab",3]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0],["usize",0],["intrtargetpriority",4]],["u32",0]],[[["",0],["usize",0],["intrtargetpriority",4]]],[[["",0]],["intrtargetpriority",4]],[[["",0],["",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["u32",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[]],[[]],[[["",0],["usize",0]],["u32",0]],[[["",0],["usize",0],["intrtargetpriority",4]],["u32",0]],[[["usize",0],["intrtargetpriority",4]],["usize",0]],[[]],[[]],[[["usize",0]]],[[["",0],["usize",0]]],[[["",0],["usize",0],["u32",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["u32",0]]],[[],["usize",0]],[[["",0],["usize",0],["intrtargetpriority",4]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],null,[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["openflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["openflags",3]],[[["",0],["",0]]],[[["",0],["openflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0]],["arc",3]],[[]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],null,null,[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["bool",0],["bool",0],["arc",3,[["inode",3]]]]],[[]],null,[[["str",0],["openflags",3]],["option",4,[["arc",3,[["osinode",3]]]]]],[[["",0],["openflags",3]],["option",4,[["ordering",4]]]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["vec",3,[["u8",0]]]],[[["",0]]],[[["",0]],["bool",0]],null,[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,[[["",0]],["bool",0]],null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["ringbufferstatus",4]],[[["",0],["",0]]],[[["",0],["ringbufferstatus",4]],["bool",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["u8",0]],[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],[[["",0]],["bool",0]],null,[[["",0],["arc",3]]],null,null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["u8",0]]],null,[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[]],[[["panicinfo",3]],["never",0]],null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["physaddr",3]],[[["",0]],["virtaddr",3]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["simplerange",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["physaddr",3]],["ordering",4]],[[["",0],["virtaddr",3]],["ordering",4]],[[["",0],["physpagenum",3]],["ordering",4]],[[["",0],["virtpagenum",3]],["ordering",4]],null,null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["usize",0]]],[[]],[[["physpagenum",3]]],[[["usize",0]]],[[["virtpagenum",3]]],[[]],[[]],[[["physaddr",3]]],[[["usize",0]]],[[["virtaddr",3]]],[[["usize",0]]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]],["",0]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[]],[[]],[[["",0]],["option",4]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0],["physaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["virtaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["physpagenum",3]],["option",4,[["ordering",4]]]],[[["",0],["virtpagenum",3]],["option",4,[["ordering",4]]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["physpagenum",3]]],[[["",0],["physpagenum",3]]],[[["",0]],["upintrfreecell",3]],[[["",0]]],null,[[["",0],["formatter",3]],["result",6]],[[],["option",4,[["frametracker",3]]]],[[]],[[["physpagenum",3]]],[[]],[[]],[[]],[[["",0],["physpagenum",3],["physpagenum",3]]],[[]],[[]],[[]],[[]],[[]],[[["physpagenum",3]]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["layout",3]],["never",0]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[]],null,[[]],[[["",0]]],[[["mappermission",3]]],[[["",0]]],[[["",0]],["u8",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["maptype",4]],[[["",0]],["mappermission",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["mappermission",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0],["pagetable",3]]],null,[[["",0]],["arc",3]],[[]],null,null,null,[[]],[[["",0],["maptype",4]],["bool",0]],[[["",0],["mappermission",3]],["bool",0]],null,null,[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["maparea",3]]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[]],[[["memoryset",3]],["memoryset",3]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[["",0],["virtaddr",3],["virtaddr",3],["mappermission",3]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["usize",0]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,[[["",0]]],null,[[["",0],["mappermission",3]],["bool",0]],[[["virtaddr",3],["virtaddr",3],["maptype",4],["mappermission",3]]],[[]],[[]],[[]],null,[[["",0],["mappermission",3]],["option",4,[["ordering",4]]]],[[["",0],["maparea",3],["option",4]]],[[["",0]]],[[]],[[["",0]]],[[["",0],["virtpagenum",3]]],null,null,[[["",0],["bool",0]]],null,null,null,[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["pteflags",3]]],[[["",0]]],[[["",0]],["u8",0]],null,null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0]],["pteflags",3]],[[["",0]],["pagetableentry",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["pteflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],null,null,[[]],[[]],[[]],[[["",0],["pteflags",3]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0]],["pteflags",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[["intoiterator",8]]],[[["usize",0]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3],["physpagenum",3],["pteflags",3]]],[[["",0],["pteflags",3]],["bool",0]],[[]],[[["vec",3]]],[[["physpagenum",3],["pteflags",3]]],[[["",0]],["option",4]],[[]],[[["",0],["pteflags",3]],["option",4,[["ordering",4]]]],[[["",0]],["physpagenum",3]],[[["",0]],["bool",0]],[[["",0]]],null,[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtaddr",3]],["option",4,[["physaddr",3]]]],[[["usize",0],["usize",0]],["vec",3]],[[["usize",0]],["",0]],[[["usize",0]],["",0]],[[["usize",0]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["virtpagenum",3]]],[[["",0]],["bool",0]],null,null,null,null,null,null,null,null,null,[[],["usize",0]],[[["usize",0]]],[[["usize",0],["usize",0],["usize",0],["usize",0]],["usize",0]],[[["usize",0]]],[[],["never",0]],null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],null,[[["",0],["arc",3,[["mutex",8]]]]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]]],[[]],[[]],null,[[]],[[]],[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]],["upsafecellraw",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["upintrrefmut",3]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["",0]],null,null,[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["usize",0]],["isize",0]],null,[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["u32",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[],["isize",0]],[[["i32",0]],["never",0]],[[],["isize",0]],[[],["isize",0]],[[],["isize",0]],[[["usize",0],["u32",0]],["isize",0]],[[["isize",0]],["isize",0]],[[],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["bool",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0]],["i32",0]],null,null,[[]],[[]],[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["option",4]],null,[[["signalflags",3]]],[[["",0]],["arc",3]],[[["i32",0]]],[[]],null,[[]],null,null,null,null,[[]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["usize",0]]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,[[["",0]],["usize",0]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["usize",0]]],[[["",0]]],[[["",0]]],[[["",0]],["upintrfreecell",3]],[[["",0]],["upintrfreecell",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["usize",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",0]]],[[],["kernelstack",3]],[[]],[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],[[],["pidhandle",3]],null,[[["",0]]],null,null,[[["usize",0]],["usize",0]],[[["",0]],["physpagenum",3]],[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["usize",0]],null,[[["usize",0],["usize",0]],["usize",0]],[[["",0]],["usize",0]],null,null,null,null,null,[[["",0],["arc",3,[["taskcontrolblock",3]]]]],[[["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["upintrfreecell",3]],[[["",0]],["upintrfreecell",3]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[]],[[]],[[]],[[["usize",0],["arc",3,[["processcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[["usize",0]],["option",4,[["arc",3,[["processcontrolblock",3]]]]]],null,[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0],["usize",0]]],[[["arc",3],["vec",3,[["string",3]]]]],null,null,[[["arc",3]],["arc",3]],[[]],[[]],[[["",0],["usize",0]],["arc",3,[["taskcontrolblock",3]]]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],null,[[["",0]],["upintrrefmut",3,[["processcontrolblockinner",3]]]],[[]],[[]],null,null,null,[[],["arc",3]],null,null,null,null,null,null,[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],null,[[],["usize",0]],[[],["arc",3,[["processcontrolblock",3]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["trapcontext",3]],[[],["usize",0]],[[],["usize",0]],[[["",0]],["upintrfreecell",3]],[[]],[[]],[[["",0]]],null,[[]],[[]],[[]],[[]],[[]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["signalflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4]],[[["",0]],["signalflags",3]],[[["",0],["",0]]],[[["",0],["signalflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[["",0],["signalflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["signalflags",3]],["bool",0]],[[]],[[["",0],["signalflags",3]],["option",4,[["ordering",4]]]],[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["taskstatus",4]],[[["",0],["",0]]],[[["",0],["taskstatus",4]],["bool",0]],null,[[]],[[]],[[]],[[["",0]],["taskstatus",4]],[[["",0]],["trapcontext",3]],[[["",0]],["usize",0]],null,[[["",0]],["upintrrefmut",3,[["taskcontrolblockinner",3]]]],[[]],[[]],[[]],null,[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],null,null,null,null,[[["",0]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,[[["usize",0],["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["",0]],["ordering",4]],[[["",0]],["upintrfreecell",3]],[[["",0],["",0]],["bool",0]],null,[[]],[[]],[[],["usize",0]],[[],["usize",0]],[[]],[[]],[[["",0],["",0]],["option",4,[["ordering",4]]]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["trapcontext",3]]],[[],["never",0]],[[],["never",0]],null,[[["usize",0],["usize",0],["usize",0],["usize",0],["usize",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],null,null,null,[[["",0],["usize",0]]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null],"p":[[3,"DEV_NON_BLOCKING_ACCESS"],[3,"Stdout"],[3,"BLOCK_DEVICE"],[3,"SDCardWrapper"],[4,"CMD"],[3,"SDCardCID"],[4,"InitError"],[3,"SDCardCSD"],[3,"SDCard"],[3,"SDCardInfo"],[3,"PERIPHERALS"],[13,"CMDFailed"],[13,"CardCapacityStatusNotSet"],[3,"QUEUE_FRAMES"],[3,"VirtIOBlock"],[3,"UART"],[8,"CharDevice"],[3,"MCR"],[3,"LSR"],[3,"IER"],[3,"WriteWithoutDLAB"],[3,"ReadWithoutDLAB"],[3,"NS16550aRaw"],[3,"NS16550aInner"],[3,"NS16550a"],[4,"IntrTargetPriority"],[3,"PLIC"],[8,"File"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"OSInode"],[3,"OSInodeInner"],[4,"RingBufferStatus"],[3,"PipeRingBuffer"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[3,"SimpleRangeIterator"],[3,"SimpleRange"],[8,"StepByOne"],[3,"FRAME_ALLOCATOR"],[8,"FrameAllocator"],[3,"StackFrameAllocator"],[3,"FrameTracker"],[4,"MapType"],[3,"MapPermission"],[3,"KERNEL_SPACE"],[3,"MemorySet"],[3,"MapArea"],[3,"PTEFlags"],[3,"PageTableEntry"],[3,"PageTable"],[3,"UserBuffer"],[3,"UserBufferIterator"],[3,"Condvar"],[3,"CondvarInner"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"MutexBlockingInner"],[8,"Mutex"],[3,"Semaphore"],[3,"SemaphoreInner"],[3,"UPIntrRefMut"],[3,"INTR_MASKING_INFO"],[3,"UPSafeCellRaw"],[3,"IntrMaskingInfo"],[3,"UPIntrFreeCell"],[3,"INITPROC"],[3,"TaskContext"],[3,"PidHandle"],[3,"KernelStack"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"TaskManager"],[3,"ProcessControlBlockInner"],[3,"ProcessControlBlock"],[3,"PROCESSOR"],[3,"Processor"],[3,"SignalFlags"],[4,"TaskStatus"],[3,"TaskControlBlock"],[3,"TaskControlBlockInner"],[3,"TIMERS"],[3,"TimerCondVar"],[3,"TrapContext"]]}\ +"os":{"doc":"","t":[3,12,0,11,11,5,0,0,11,0,11,0,11,0,0,14,14,5,0,0,0,0,0,0,11,11,11,6,17,6,17,17,17,17,17,8,17,3,17,17,17,12,11,11,5,10,11,5,10,11,10,11,11,11,5,11,11,11,11,17,17,17,17,17,17,17,17,3,11,11,11,11,5,11,11,11,11,0,0,0,3,12,5,11,11,11,11,11,0,11,11,11,0,12,13,13,12,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,11,11,13,12,12,13,12,12,12,12,12,12,12,12,12,12,11,4,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,17,17,17,17,17,17,12,12,17,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,3,17,3,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,5,5,5,11,8,3,12,11,11,11,11,10,11,0,10,11,11,11,10,18,18,18,18,3,3,3,3,3,3,18,18,3,18,18,3,12,12,12,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,3,13,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,0,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,13,13,13,3,3,17,4,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,5,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,5,0,0,12,12,12,12,17,17,3,3,3,3,8,17,6,17,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,8,6,3,3,12,10,11,11,11,11,11,11,11,12,10,11,11,11,12,11,5,5,5,11,11,11,11,5,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,7,7,5,5,5,13,13,3,3,3,4,3,18,18,18,18,12,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,12,11,12,11,11,11,11,11,12,11,11,11,5,11,11,5,5,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,18,18,18,3,3,3,18,18,3,3,18,18,18,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,5,5,5,5,5,0,0,0,0,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,11,8,3,3,3,11,11,11,11,11,11,11,11,11,12,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,3,3,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,12,3,3,3,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,12,5,5,5,11,11,5,0,5,11,5,11,0,11,0,0,0,0,5,0,0,11,11,11,3,11,11,11,11,11,12,12,12,11,11,11,11,12,12,17,3,3,3,3,3,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,12,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,3,3,3,12,12,11,5,11,11,11,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,5,12,5,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,5,5,11,5,11,11,11,11,11,11,18,18,18,18,18,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,13,13,13,3,3,4,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,17,17,3,3,12,5,11,11,11,11,5,11,11,11,12,11,11,5,5,11,11,11,5,12,11,11,11,11,11,11,0,5,5,5,5,5,5,5,5,5,3,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,12],"n":["DEV_NON_BLOCKING_ACCESS","__private_field","board","borrow","borrow_mut","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","EXIT_FAILURE","EXIT_FAILURE_FLAG","EXIT_RESET","EXIT_SUCCESS","MMIO","QEMUExit","QEMU_EXIT_HANDLE","RISCV64","VIRT_PLIC","VIRT_TEST","VIRT_UART","addr","borrow","borrow_mut","device_init","exit","exit","exit_code_encode","exit_failure","exit_failure","exit_success","exit_success","from","into","irq_handler","new","try_from","try_into","type_id","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","block","chardev","plic","BLOCK_DEVICE","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","sdcard","try_from","try_into","type_id","virtio_blk","0","ACMD23","ACMD41","CID_CRC","CMD","CMD0","CMD10","CMD12","CMD16","CMD17","CMD18","CMD24","CMD25","CMD55","CMD58","CMD59","CMD8","CMD9","CMDFailed","CSDStruct","CSD_CRC","CS_HIGH","CS_LOW","CannotGetCardInfo","CardBlockSize","CardCapacity","CardCapacityStatusNotSet","CardComdClasses","ContentProtectAppli","CopyFlag","DSRImpl","DeviceSize","ECC","EraseGrMul","EraseGrSize","FileFormat","FileFormatGroup","HIGH_SPEED_ENABLE","InitError","ManDeflECC","ManufactDate","ManufacturerID","MaxBusClkFrec","MaxWrBlockLen","NSAC","OEM_AppliID","PERIPHERALS","PartBlockRead","PermWrProtect","ProdName1","ProdName2","ProdRev","ProdSN","RdBlockLen","RdBlockMisalign","Reserved1","Reserved1","Reserved2","Reserved2","Reserved3","Reserved4","SDCard","SDCardCID","SDCardCSD","SDCardInfo","SDCardWrapper","SD_CS","SD_CS_GPIONUM","SD_START_DATA_MULTIPLE_BLOCK_READ","SD_START_DATA_MULTIPLE_BLOCK_WRITE","SD_START_DATA_SINGLE_BLOCK_READ","SD_START_DATA_SINGLE_BLOCK_WRITE","SD_cid","SD_csd","SEC_LEN","SysSpecVersion","TAAC","TempWrProtect","WrBlockMisalign","WrProtectGrEnable","WrProtectGrSize","WrSpeedFact","WriteBlockPaPartial","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cs_gpionum","deref","end_cmd","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_cardinfo","get_cidregister","get_csdregister","get_dataresponse","get_response","handle_irq","init","init_sdcard","into","into","into","into","into","into","into","into","io_init","lowlevel_init","new","new","read_block","read_data","read_sector","send_cmd","spi","spi_cs","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","write_block","write_data","write_sector","0","0","1","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","__private_field","borrow","borrow","borrow_mut","borrow_mut","condvars","deref","from","from","handle_irq","into","into","new","read_block","try_from","try_from","try_into","try_into","type_id","type_id","virtio_blk","virtio_dma_alloc","virtio_dma_dealloc","virtio_phys_to_virt","virtio_virt_to_phys","write_block","CharDevice","UART","__private_field","borrow","borrow_mut","deref","from","handle_irq","into","ns16550a","read","try_from","try_into","type_id","write","AUX_OUTPUT1","AUX_OUTPUT2","DATA_AVAILABLE","DATA_TERMINAL_READY","IER","LSR","MCR","NS16550a","NS16550aInner","NS16550aRaw","REQUEST_TO_SEND","RX_AVAILABLE","ReadWithoutDLAB","THR_EMPTY","TX_EMPTY","WriteWithoutDLAB","_padding0","_padding1","_padding1","_padding2","all","all","all","base_addr","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","complement","complement","complement","condvar","contains","contains","contains","difference","difference","difference","empty","empty","empty","eq","eq","eq","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_iter","handle_irq","hash","hash","hash","ier","ier","iir","init","inner","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_empty","is_empty","is_empty","lcr","lcr","lsr","lsr","mcr","mcr","ne","ne","ne","new","new","not","not","not","ns16550a","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_end","remove","remove","remove","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","thr","to_owned","to_owned","to_owned","toggle","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","write","write","write_end","IntrTargetPriority","Machine","PLIC","Supervisor","base_addr","borrow","borrow","borrow_mut","borrow_mut","claim","claim_comp_ptr_of_hart_with_priority","clone","clone_into","complete","disable","enable","enable_ptr","from","from","get_priority","get_threshold","hart_id_with_priority","into","into","new","priority_ptr","set_priority","set_threshold","supported_number","threshold_ptr_of_hart_with_priority","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","File","inode","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","ne","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","address","frame_allocator","heap_allocator","init","memory_set","page_table","0","0","0","0","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","ne","ne","ne","ne","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc","deref","drop","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","ne","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","writable","SBI_CLEAR_IPI","SBI_CONSOLE_GETCHAR","SBI_CONSOLE_PUTCHAR","SBI_REMOTE_FENCE_I","SBI_REMOTE_SFENCE_VMA","SBI_REMOTE_SFENCE_VMA_ASID","SBI_SEND_IPI","SBI_SET_TIMER","SBI_SHUTDOWN","console_getchar","console_putchar","sbi_call","set_timer","shutdown","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait_no_sched","wait_queue","wait_with_mutex","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","0","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref_mut","drop","enter","exclusive_access","exclusive_session","exit","from","from","from","from","from","get_mut","inner","inner","into","into","into","into","into","nested_level","new","new","new","sie_before_masking","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","INITPROC","__private_field","add_initproc","block_current_and_run_next","block_current_task","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","deref","exit_current_and_run_next","from","id","into","manager","process","processor","signal","suspend_current_and_run_next","switch","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","0","0","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove_from_pid2process","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","ne","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","context","disable_supervisor_interrupt","enable_supervisor_interrupt","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":["os","","","","","","","","","","","","","","","","","","","","","","","","","","","os::board","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::config","","","","","","","","os::console","","","","","","","","","","os::drivers","","","os::drivers::block","","","","","","","","","","","","","os::drivers::block::sdcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::sdcard::InitError","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev","","","","","","","","","","","","","","","os::drivers::chardev::ns16550a","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::plic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","os::lang_items","","os::mm","","","","","","os::mm::address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::frame_allocator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::heap_allocator","","","","","os::mm::memory_set","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::page_table","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sbi","","","","","","","","","","","","","","os::sync","","","","os::sync::condvar","","","","","","","","","","","","","","","","","","","","","","os::sync::mutex","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sync::semaphore","","","","","","","","","","","","","","","","","","","","","","os::sync::up","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall::fs","","","","","","os::syscall::process","","","","","","","","os::syscall::sync","","","","","","","","","","os::syscall::thread","","","os::task","","","","","","","","","","","","","","","","","","","","","","","","","os::task::context","","","","","","","","","","","","","os::task::id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::processor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::signal","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::switch","os::task::task","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::timer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::trap","","","","","","","","","","os::trap::context","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","RISCV64 configuration","","","","Address of the sifive_test mapped device.","","","","Exit with specified return code.","Exit qemu with specified exit code.","Encode the exit code using EXIT_FAILURE_FLAG.","Exit QEMU using EXIT_FAILURE, aka 1.","","Exit QEMU using EXIT_SUCCESS, aka 0, if possible.","","Returns the argument unchanged.","Calls U::from(self).","","Create an instance.","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Number of blocks to erase (SDC) ","Initiate initialization process (SDC) ","","SD commands ","Software reset ","Read CID register ","Stop to read data ","Change R/W block size ","Read block ","Read multiple blocks ","Write a block ","Write multiple blocks ","Leading command for ACMD* ","Read OCR ","Enable/disable CRC check ","Check voltage range (SDC V2) ","Read CSD register ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Card Identification Data: CID Register","Card Specific Data: CSD Register","Card information","","CS value passed to SPI controller, this is a dummy value …","GPIOHS GPIO number to use for controlling the SD card CS …","Data token start byte, Start Multiple Block Read ","Data token start byte, Start Multiple Block Write ","Data token start byte, Start Single Block Read ","Data token start byte, Start Single Block Write ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Connect pins to internal functions ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","InterruptEnableRegister","LineStatusRegister","Model Control Register","","","","","","","","","","ignore FCR","ignore MSR","ignore other registers","ignore SCR","Returns the set containing all flags.","Returns the set containing all flags.","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Adds the set of flags.","Adds the set of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","","","","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Toggles the set of flags.","Toggles the set of flags.","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns an empty set of flags.","Returns an empty set of flags.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","","","","","","interrupt enable register","interrupt enable register","interrupt identification register","","","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","line control register","line control register","line status register","line status register","model control register","modem control register","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","","","","receiver buffer register","","","","","Removes the specified flags in-place.","Removes the specified flags in-place.","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","transmitter holding register","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","Returns the complement of this set of flags.","","","","","","Do not check validity for simplicity Return (readable, …","","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline, also returns …","","","","Inserts the specified flags in-place.","Assume that no conflicts.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","Mention that trampoline is not collected by areas.","","","","","Without kernel stacks.","Returns the complement of this set of flags.","","","","","","Removes the specified flags in-place.","","","","Inserts or removes the specified flags depending on the …","","","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","Temporarily used to get arguments from user space.","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","","","","","Returns the complement of this set of flags.","","","","Removes the specified flags in-place.","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","Load a string from other address spaces into kernel space …","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Panic if the data has been borrowed.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","inner data","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","This function must be followed by a schedule","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","Returns the complement of this set of flags.","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","",""],"i":[0,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,3,2,0,3,2,3,2,2,2,0,2,2,2,2,0,0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4,4,0,0,0,0,5,0,5,5,5,5,5,0,5,5,5,0,6,7,7,8,0,7,7,7,7,7,7,7,7,7,7,7,7,7,9,10,10,11,11,9,12,12,9,10,10,10,10,10,10,10,10,10,10,11,0,10,8,8,10,10,10,8,0,10,10,8,8,8,8,10,10,10,8,10,8,10,10,0,0,0,0,0,0,0,0,0,0,0,12,12,0,10,10,10,10,10,10,10,10,13,11,6,7,9,10,8,12,13,11,6,7,9,10,8,12,13,7,9,10,8,12,7,9,10,8,12,11,13,11,7,7,9,10,8,12,11,6,7,9,10,8,12,13,11,11,11,11,11,6,11,0,11,6,7,9,10,8,12,13,0,11,11,6,6,11,11,11,11,11,7,9,10,8,12,11,6,7,9,10,8,12,13,11,6,7,9,10,8,12,13,11,6,7,9,10,8,12,13,6,11,11,14,15,14,0,0,0,16,17,16,17,16,17,16,17,16,17,17,16,17,17,17,16,17,16,17,16,17,0,0,0,0,17,0,0,18,18,18,18,18,19,18,0,19,18,18,18,19,20,20,21,20,0,0,0,0,0,0,20,22,0,21,22,0,23,24,23,24,22,21,20,25,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,24,23,25,26,27,22,21,20,24,23,25,26,27,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,27,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,22,22,22,22,22,21,21,21,21,21,20,20,20,20,20,24,23,25,26,27,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,27,22,21,20,24,23,24,25,27,22,21,20,22,21,20,22,21,20,24,23,25,26,27,22,21,20,22,21,20,22,21,20,24,23,24,23,24,23,22,21,20,25,27,22,21,20,26,22,21,20,24,25,27,26,25,22,21,20,22,21,20,22,21,20,22,21,20,22,21,20,23,22,21,20,22,21,20,24,23,25,26,27,22,21,20,24,23,25,26,27,22,21,20,24,23,25,26,27,22,21,20,22,21,20,25,27,25,0,28,0,28,29,29,28,29,28,29,29,28,28,29,29,29,29,29,28,29,29,29,29,28,29,29,29,29,28,29,28,29,28,29,28,29,28,0,0,0,30,30,0,30,30,31,0,0,0,31,31,0,31,31,32,31,31,31,31,31,31,31,31,31,33,34,32,31,33,34,32,31,31,31,31,31,31,32,31,31,31,31,31,31,31,31,31,33,34,32,31,31,31,31,31,31,33,34,31,31,31,33,34,32,31,31,31,0,31,33,31,34,0,31,33,33,31,33,33,31,31,31,31,31,31,31,33,34,32,31,33,34,32,31,33,34,32,31,31,33,33,33,35,35,35,0,0,0,0,36,36,36,36,37,36,35,37,36,35,37,35,35,35,37,36,35,36,37,36,35,0,36,37,36,37,37,37,36,36,36,35,37,36,35,37,36,35,37,36,35,37,37,37,36,36,37,0,0,38,39,38,39,38,39,38,39,38,39,38,39,38,39,38,39,38,39,38,39,38,39,0,0,0,0,0,0,0,0,40,41,42,43,0,0,0,0,0,0,0,0,0,0,0,0,40,41,44,40,41,42,43,45,44,40,41,42,43,45,40,41,40,41,42,43,45,40,41,42,43,45,40,41,42,43,44,44,40,41,42,43,40,41,40,41,42,43,44,40,40,40,41,41,41,42,42,42,43,43,43,45,42,45,40,42,42,40,45,43,44,40,41,42,43,45,44,45,45,40,41,42,43,44,45,44,40,41,40,41,42,43,45,46,42,43,40,41,42,43,45,44,40,41,42,43,45,44,40,41,42,43,45,44,40,41,42,43,45,0,0,0,0,0,47,48,49,50,49,47,50,49,47,49,48,49,47,50,49,50,0,0,0,50,49,47,49,0,50,49,47,48,50,49,50,49,50,49,47,50,49,47,50,49,47,0,0,0,0,0,51,51,0,0,0,0,0,52,52,52,52,53,54,52,54,52,52,52,52,52,52,52,52,54,55,53,51,52,54,55,53,51,52,51,52,51,52,52,52,52,55,55,53,52,0,0,0,52,51,52,0,0,52,51,52,52,52,52,52,54,55,53,51,52,55,52,52,52,54,54,52,52,52,54,52,52,54,55,53,51,52,52,52,0,55,55,55,54,55,52,55,54,54,52,54,52,54,54,0,52,54,0,0,52,0,0,0,52,52,52,51,52,52,54,54,54,55,53,51,52,54,55,53,51,52,54,55,53,51,52,52,55,55,55,56,56,56,0,0,0,56,56,0,0,56,56,56,56,56,56,56,56,56,56,57,56,56,58,59,60,56,57,58,59,60,56,57,59,60,56,57,56,57,56,56,56,60,60,56,56,57,56,57,56,58,58,57,56,56,56,56,56,58,58,59,60,56,57,56,56,56,56,58,56,56,56,56,58,59,60,56,57,59,60,56,56,57,59,58,56,58,59,57,60,56,56,57,57,56,58,56,56,56,56,56,57,56,58,58,58,0,0,0,0,58,59,60,56,57,58,59,60,56,57,58,59,60,56,57,56,58,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,62,61,62,61,62,61,61,62,61,61,61,62,61,62,61,62,61,62,61,0,0,0,0,63,64,65,63,64,65,63,64,65,64,63,64,65,66,63,64,63,65,63,64,63,64,65,63,64,65,63,64,65,66,63,64,65,0,0,67,68,67,68,68,67,67,68,67,67,68,67,67,68,67,68,67,68,67,68,69,0,0,0,0,0,70,71,72,73,69,70,71,72,73,69,70,69,70,69,69,72,73,73,72,71,72,73,69,70,71,71,73,71,72,73,69,70,72,71,72,73,72,71,72,73,69,70,71,72,73,69,70,71,72,73,69,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,74,74,0,0,0,74,0,74,0,74,0,0,0,0,0,0,0,74,74,74,0,75,75,75,75,75,75,75,75,75,75,75,75,76,77,0,0,0,0,0,0,0,78,79,80,81,81,80,76,77,81,78,79,80,76,77,81,78,79,80,80,81,81,78,79,76,77,81,80,76,77,81,78,79,77,80,76,77,81,78,79,0,0,80,81,0,81,77,80,81,0,81,81,80,76,77,81,78,79,80,76,77,81,78,79,80,76,77,81,78,79,81,81,0,81,0,0,0,82,83,84,0,84,82,83,84,82,83,82,83,84,0,84,82,83,0,84,82,83,84,0,84,0,84,82,83,84,82,83,84,82,83,0,0,85,85,86,85,86,85,85,85,85,86,85,85,86,86,85,85,85,86,86,86,86,85,85,85,85,86,85,86,85,85,85,85,85,86,85,86,85,86,85,0,0,87,88,87,88,87,88,88,0,0,0,0,0,0,87,88,87,88,88,88,87,88,0,0,88,0,88,87,88,87,88,87,89,89,89,89,89,0,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,0,90,90,90,0,0,0,91,92,90,91,92,90,90,90,90,92,91,92,90,92,92,91,91,91,91,92,90,91,91,91,92,92,92,90,92,91,92,90,91,92,90,91,92,90,0,0,0,0,93,0,94,93,94,93,0,94,93,94,94,94,93,0,0,94,93,94,0,94,94,93,94,93,94,93,0,0,0,0,0,0,0,0,0,0,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95],"f":[null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],null,null,[[["",0]],["upintrfreecell",3]],null,[[]],null,[[]],null,null,null,null,[[],["never",0]],null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["u32",0]],["never",0]],[[["",0],["u32",0]],["never",0]],[[["u32",0]],["u32",0]],[[["",0]],["never",0]],[[["",0]],["never",0]],[[["",0]],["never",0]],[[["",0]],["never",0]],[[]],[[]],[[]],[[["u64",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[["arguments",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0],["str",0]],["result",6]],null,null,null,null,null,[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["arc",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["cmd",4]],[[["",0]],["initerror",4]],[[["",0]],["sdcardcsd",3]],[[["",0]],["sdcardcid",3]],[[["",0]],["sdcardinfo",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,[[["",0]],["upintrfreecell",3]],[[["",0]]],[[["",0],["cmd",4]],["bool",0]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["result",4,[["sdcardinfo",3]]]],[[["",0]],["result",4,[["sdcardcid",3]]]],[[["",0]],["result",4,[["sdcardcsd",3]]]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],[[["",0]]],[[["",0]],["result",4,[["sdcardinfo",3],["initerror",4]]]],[[],["sdcard",3,[["spiimpl",3,[["spi0",3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]]],[[["u32",0],["u8",0]]],[[]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],[[["",0],["cmd",4],["u32",0],["u8",0]]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["upintrfreecell",3]],[[]],[[]],[[["",0]]],[[]],[[]],[[]],[[["",0],["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[["usize",0]],["physaddr",3]],[[["physaddr",3],["usize",0]],["i32",0]],[[["physaddr",3]],["virtaddr",3]],[[["virtaddr",3]],["physaddr",3]],[[["",0],["usize",0]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["arc",3]],[[]],[[["",0]]],[[]],null,[[["",0]],["u8",0]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0],["u8",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["ier",3]]],[[["lsr",3]]],[[["mcr",3]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],null,null,null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["ier",3]],[[["",0]],["lsr",3]],[[["",0]],["mcr",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["ier",3]],["ordering",4]],[[["",0],["lsr",3]],["ordering",4]],[[["",0],["mcr",3]],["ordering",4]],[[]],[[]],[[]],null,[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0],["ier",3]],["bool",0]],[[["",0],["lsr",3]],["bool",0]],[[["",0],["mcr",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["intoiterator",8]]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u8",0]],["option",4]],[[["u8",0]],["option",4]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["u8",0]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,null,null,[[["",0]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],null,null,null,null,null,null,[[["",0],["ier",3]],["bool",0]],[[["",0],["lsr",3]],["bool",0]],[[["",0],["mcr",3]],["bool",0]],[[["usize",0]]],[[]],[[]],[[]],[[]],null,[[["",0],["ier",3]],["option",4,[["ordering",4]]]],[[["",0],["lsr",3]],["option",4,[["ordering",4]]]],[[["",0],["mcr",3]],["option",4,[["ordering",4]]]],null,[[["",0]],["option",4,[["u8",0]]]],[[["",0]],["u8",0]],null,[[["",0]],["readwithoutdlab",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0],["bool",0]]],[[["",0],["bool",0]]],[[["",0],["bool",0]]],[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[]],[[]],[[["",0],["u8",0]]],[[["",0],["u8",0]]],[[["",0]],["writewithoutdlab",3]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0],["usize",0],["intrtargetpriority",4]],["u32",0]],[[["",0],["usize",0],["intrtargetpriority",4]]],[[["",0]],["intrtargetpriority",4]],[[["",0],["",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["u32",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["usize",0]]],[[]],[[]],[[["",0],["usize",0]],["u32",0]],[[["",0],["usize",0],["intrtargetpriority",4]],["u32",0]],[[["usize",0],["intrtargetpriority",4]],["usize",0]],[[]],[[]],[[["usize",0]]],[[["",0],["usize",0]]],[[["",0],["usize",0],["u32",0]]],[[["",0],["usize",0],["intrtargetpriority",4],["u32",0]]],[[],["usize",0]],[[["",0],["usize",0],["intrtargetpriority",4]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],null,[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["openflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["openflags",3]],[[["",0],["",0]]],[[["",0],["openflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0]],["arc",3]],[[]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],null,null,[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["bool",0],["bool",0],["arc",3,[["inode",3]]]]],[[]],null,[[["str",0],["openflags",3]],["option",4,[["arc",3,[["osinode",3]]]]]],[[["",0],["openflags",3]],["option",4,[["ordering",4]]]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["vec",3,[["u8",0]]]],[[["",0]]],[[["",0]],["bool",0]],null,[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,[[["",0]],["bool",0]],null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["ringbufferstatus",4]],[[["",0],["",0]]],[[["",0],["ringbufferstatus",4]],["bool",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["u8",0]],[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],[[["",0]],["bool",0]],null,[[["",0],["arc",3]]],null,null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["u8",0]]],null,[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[]],[[["panicinfo",3]],["never",0]],null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["physaddr",3]],[[["",0]],["virtaddr",3]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["simplerange",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["physaddr",3]],["ordering",4]],[[["",0],["virtaddr",3]],["ordering",4]],[[["",0],["physpagenum",3]],["ordering",4]],[[["",0],["virtpagenum",3]],["ordering",4]],null,null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["usize",0]]],[[]],[[["physpagenum",3]]],[[["usize",0]]],[[["virtpagenum",3]]],[[]],[[["usize",0]]],[[["physaddr",3]]],[[]],[[["virtaddr",3]]],[[]],[[["usize",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]],["",0]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[]],[[]],[[["",0]],["option",4]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0],["physaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["virtaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["physpagenum",3]],["option",4,[["ordering",4]]]],[[["",0],["virtpagenum",3]],["option",4,[["ordering",4]]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["physpagenum",3]]],[[["",0],["physpagenum",3]]],[[["",0]],["upintrfreecell",3]],[[["",0]]],null,[[["",0],["formatter",3]],["result",6]],[[],["option",4,[["frametracker",3]]]],[[]],[[["physpagenum",3]]],[[]],[[]],[[]],[[["",0],["physpagenum",3],["physpagenum",3]]],[[]],[[]],[[]],[[]],[[]],[[["physpagenum",3]]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["layout",3]],["never",0]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[]],null,[[]],[[["",0]]],[[["mappermission",3]]],[[["",0]]],[[["",0]],["u8",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["maptype",4]],[[["",0]],["mappermission",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["mappermission",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0],["pagetable",3]]],null,[[["",0]],["arc",3]],[[]],null,null,null,[[]],[[["",0],["maptype",4]],["bool",0]],[[["",0],["mappermission",3]],["bool",0]],null,null,[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["maparea",3]]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[]],[[["memoryset",3]],["memoryset",3]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[["",0],["virtaddr",3],["virtaddr",3],["mappermission",3]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["usize",0]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,[[["",0]]],null,[[["",0],["mappermission",3]],["bool",0]],[[["virtaddr",3],["virtaddr",3],["maptype",4],["mappermission",3]]],[[]],[[]],[[]],null,[[["",0],["mappermission",3]],["option",4,[["ordering",4]]]],[[["",0],["maparea",3],["option",4]]],[[["",0]]],[[]],[[["",0]]],[[["",0],["virtpagenum",3]]],null,null,[[["",0],["bool",0]]],null,null,null,[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["pteflags",3]]],[[["",0]]],[[["",0]],["u8",0]],null,null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0]],["pteflags",3]],[[["",0]],["pagetableentry",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["pteflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],null,null,[[]],[[]],[[]],[[["",0],["pteflags",3]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0]],["pteflags",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[["intoiterator",8]]],[[["usize",0]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3],["physpagenum",3],["pteflags",3]]],[[["",0],["pteflags",3]],["bool",0]],[[]],[[["vec",3]]],[[["physpagenum",3],["pteflags",3]]],[[["",0]],["option",4]],[[]],[[["",0],["pteflags",3]],["option",4,[["ordering",4]]]],[[["",0]],["physpagenum",3]],[[["",0]],["bool",0]],[[["",0]]],null,[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtaddr",3]],["option",4,[["physaddr",3]]]],[[["usize",0],["usize",0]],["vec",3]],[[["usize",0]],["",0]],[[["usize",0]],["",0]],[[["usize",0]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["virtpagenum",3]]],[[["",0]],["bool",0]],null,null,null,null,null,null,null,null,null,[[],["usize",0]],[[["usize",0]]],[[["usize",0],["usize",0],["usize",0],["usize",0]],["usize",0]],[[["usize",0]]],[[["usize",0]],["never",0]],null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],null,[[["",0],["arc",3,[["mutex",8]]]]],null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]]],[[]],[[]],null,[[]],[[]],[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]],["upsafecellraw",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["upintrrefmut",3]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["",0]],null,null,[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["usize",0]],["isize",0]],null,[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["u32",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[],["isize",0]],[[["i32",0]],["never",0]],[[],["isize",0]],[[],["isize",0]],[[],["isize",0]],[[["usize",0],["u32",0]],["isize",0]],[[["isize",0]],["isize",0]],[[],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["bool",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0]],["i32",0]],null,null,[[]],[[]],[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["option",4]],null,[[["signalflags",3]]],[[["",0]],["arc",3]],[[["i32",0]]],[[]],null,[[]],null,null,null,null,[[]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["usize",0]]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["usize",0]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["usize",0]]],[[["",0]]],[[["",0]]],[[["",0]],["upintrfreecell",3]],[[["",0]],["upintrfreecell",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["usize",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",0]]],[[],["kernelstack",3]],[[]],[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],[[],["pidhandle",3]],null,[[["",0]]],null,null,[[["usize",0]],["usize",0]],[[["",0]],["physpagenum",3]],[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["usize",0]],null,[[["usize",0],["usize",0]],["usize",0]],[[["",0]],["usize",0]],null,null,null,null,null,[[["",0],["arc",3,[["taskcontrolblock",3]]]]],[[["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["upintrfreecell",3]],[[["",0]],["upintrfreecell",3]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[]],[[]],[[]],[[["usize",0],["arc",3,[["processcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[["usize",0]],["option",4,[["arc",3,[["processcontrolblock",3]]]]]],null,[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0],["usize",0]]],[[["arc",3],["vec",3,[["string",3]]]]],null,null,[[["arc",3]],["arc",3]],[[]],[[]],[[["",0],["usize",0]],["arc",3,[["taskcontrolblock",3]]]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],null,[[["",0]],["upintrrefmut",3,[["processcontrolblockinner",3]]]],[[]],[[]],null,null,null,[[],["arc",3]],null,null,null,null,null,null,[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],null,[[],["usize",0]],[[],["arc",3,[["processcontrolblock",3]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["trapcontext",3]],[[],["usize",0]],[[],["usize",0]],[[["",0]],["upintrfreecell",3]],[[]],[[]],[[["",0]]],null,[[]],[[]],[[]],[[]],[[]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["signalflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4]],[[["",0]],["signalflags",3]],[[["",0],["",0]]],[[["",0],["signalflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[["",0],["signalflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["signalflags",3]],["bool",0]],[[]],[[["",0],["signalflags",3]],["option",4,[["ordering",4]]]],[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["taskstatus",4]],[[["",0],["",0]]],[[["",0],["taskstatus",4]],["bool",0]],null,[[]],[[]],[[]],[[["",0]],["taskstatus",4]],[[["",0]],["trapcontext",3]],[[["",0]],["usize",0]],null,[[["",0]],["upintrrefmut",3,[["taskcontrolblockinner",3]]]],[[]],[[]],[[]],null,[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],null,null,null,null,[[["",0]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,[[["usize",0],["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["",0]],["ordering",4]],[[["",0]],["upintrfreecell",3]],[[["",0],["",0]],["bool",0]],null,[[]],[[]],[[],["usize",0]],[[],["usize",0]],[[]],[[]],[[["",0],["",0]],["option",4,[["ordering",4]]]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["trapcontext",3]]],[[],["never",0]],[[],["never",0]],null,[[["usize",0],["usize",0],["usize",0],["usize",0],["usize",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],null,null,null,[[["",0],["usize",0]]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null],"p":[[3,"DEV_NON_BLOCKING_ACCESS"],[3,"RISCV64"],[8,"QEMUExit"],[3,"Stdout"],[3,"BLOCK_DEVICE"],[3,"SDCardWrapper"],[4,"CMD"],[3,"SDCardCID"],[4,"InitError"],[3,"SDCardCSD"],[3,"SDCard"],[3,"SDCardInfo"],[3,"PERIPHERALS"],[13,"CMDFailed"],[13,"CardCapacityStatusNotSet"],[3,"QUEUE_FRAMES"],[3,"VirtIOBlock"],[3,"UART"],[8,"CharDevice"],[3,"MCR"],[3,"LSR"],[3,"IER"],[3,"WriteWithoutDLAB"],[3,"ReadWithoutDLAB"],[3,"NS16550aRaw"],[3,"NS16550aInner"],[3,"NS16550a"],[4,"IntrTargetPriority"],[3,"PLIC"],[8,"File"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"OSInode"],[3,"OSInodeInner"],[4,"RingBufferStatus"],[3,"PipeRingBuffer"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[3,"SimpleRangeIterator"],[3,"SimpleRange"],[8,"StepByOne"],[3,"FRAME_ALLOCATOR"],[8,"FrameAllocator"],[3,"StackFrameAllocator"],[3,"FrameTracker"],[4,"MapType"],[3,"MapPermission"],[3,"KERNEL_SPACE"],[3,"MemorySet"],[3,"MapArea"],[3,"PTEFlags"],[3,"PageTableEntry"],[3,"PageTable"],[3,"UserBuffer"],[3,"UserBufferIterator"],[3,"Condvar"],[3,"CondvarInner"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"MutexBlockingInner"],[8,"Mutex"],[3,"Semaphore"],[3,"SemaphoreInner"],[3,"UPIntrRefMut"],[3,"INTR_MASKING_INFO"],[3,"UPSafeCellRaw"],[3,"IntrMaskingInfo"],[3,"UPIntrFreeCell"],[3,"INITPROC"],[3,"TaskContext"],[3,"PidHandle"],[3,"KernelStack"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"TaskManager"],[3,"ProcessControlBlockInner"],[3,"ProcessControlBlock"],[3,"PROCESSOR"],[3,"Processor"],[3,"SignalFlags"],[4,"TaskStatus"],[3,"TaskControlBlock"],[3,"TaskControlBlockInner"],[3,"TIMERS"],[3,"TimerCondVar"],[3,"TrapContext"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/ch9/src/os/boards/qemu.rs.html b/ch9/src/os/boards/qemu.rs.html index d2f296da..2627b5b3 100644 --- a/ch9/src/os/boards/qemu.rs.html +++ b/ch9/src/os/boards/qemu.rs.html @@ -48,12 +48,95 @@ 43 44 45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127
pub const CLOCK_FREQ: usize = 12500000;
 
 pub const MMIO: &[(usize, usize)] = &[
-    (0x1000_0000, 0x1000),
-    (0x1000_1000, 0x1000),
-    (0xC00_0000, 0x40_0000),
+    (0x1000_0000, 0x1000),        // VIRT_UART0 in virt machine
+    (0x1000_1000, 0x1000),        // VIRT_VIRTIO in virt machine 
+    (0x0C00_0000, 0x40_0000),  // VIRT_PLIC in virt machine
+    (0x0010_0000, 0x00_2000),  // VIRT_TEST/RTC  in virt machine
 ];
 
 pub type BlockDeviceImpl = crate::drivers::block::VirtIOBlock;
@@ -93,6 +176,87 @@
     }
     plic.complete(0, IntrTargetPriority::Supervisor, intr_src_id);
 }
+
+//ref:: https://github.com/andre-richter/qemu-exit
+use core::arch::asm;
+
+const EXIT_SUCCESS: u32 = 0x5555; // Equals `exit(0)`. qemu successful exit
+
+const EXIT_FAILURE_FLAG: u32 = 0x3333;
+const EXIT_FAILURE: u32 = exit_code_encode(1); // Equals `exit(1)`. qemu failed exit 
+const EXIT_RESET: u32 = 0x7777;       // qemu reset
+
+pub trait QEMUExit {
+    /// Exit with specified return code.
+    ///
+    /// Note: For `X86`, code is binary-OR'ed with `0x1` inside QEMU.
+    fn exit(&self, code: u32) -> !;
+
+    /// Exit QEMU using `EXIT_SUCCESS`, aka `0`, if possible.
+    ///
+    /// Note: Not possible for `X86`.
+    fn exit_success(&self) -> !;
+
+    /// Exit QEMU using `EXIT_FAILURE`, aka `1`.
+    fn exit_failure(&self) -> !;
+}
+
+
+/// RISCV64 configuration
+pub struct RISCV64 {
+    /// Address of the sifive_test mapped device.
+    addr: u64,
+}
+
+/// Encode the exit code using EXIT_FAILURE_FLAG.
+const fn exit_code_encode(code: u32) -> u32 {
+    (code << 16) | EXIT_FAILURE_FLAG
+}
+
+impl RISCV64 {
+    /// Create an instance.
+    pub const fn new(addr: u64) -> Self {
+        RISCV64 { addr }
+    }
+}
+
+impl QEMUExit for RISCV64 {
+    /// Exit qemu with specified exit code.
+    fn exit(&self, code: u32) -> ! {
+        // If code is not a special value, we need to encode it with EXIT_FAILURE_FLAG.
+        let code_new = match code {
+            EXIT_SUCCESS | EXIT_FAILURE | EXIT_RESET => code,
+            _ => exit_code_encode(code),
+        };
+
+        unsafe {
+            asm!(
+                "sw {0}, 0({1})",
+                in(reg)code_new, in(reg)self.addr
+            );
+
+            // For the case that the QEMU exit attempt did not work, transition into an infinite
+            // loop. Calling `panic!()` here is unfeasible, since there is a good chance
+            // this function here is the last expression in the `panic!()` handler
+            // itself. This prevents a possible infinite loop.
+            loop {
+                asm!("wfi", options(nomem, nostack));
+            }
+        }
+    }
+
+    fn exit_success(&self) -> ! {
+        self.exit(EXIT_SUCCESS);
+    }
+
+    fn exit_failure(&self) -> ! {
+        self.exit(EXIT_FAILURE);
+    }
+}
+
+const VIRT_TEST: u64 =0x100000;
+
+pub const QEMU_EXIT_HANDLE: RISCV64 = RISCV64::new(VIRT_TEST); 
 
\ No newline at end of file diff --git a/ch9/src/os/drivers/block/sdcard.rs.html b/ch9/src/os/drivers/block/sdcard.rs.html index 6a621358..9508a214 100644 --- a/ch9/src/os/drivers/block/sdcard.rs.html +++ b/ch9/src/os/drivers/block/sdcard.rs.html @@ -1093,14 +1093,14 @@ * Get SD card data response. * @param None * @retval The SD status: Read data response xxx0<status>1 - * - status 010: Data accecpted + * - status 010: Data accepted * - status 101: Data rejected due to a crc error * - status 110: Data rejected due to a Write error. * - status 111: Data rejected due to other error. */ fn get_dataresponse(&self) -> u8 { let response = &mut [0u8]; - /* Read resonse */ + /* Read response */ self.read_data(response); /* Mask unused bits */ response[0] &= 0x1F; @@ -1195,7 +1195,7 @@ /* Byte 15 */ CSD_CRC: (csd_tab[15] & 0xFE) >> 1, Reserved4: 1, - /* Return the reponse */ + /* Return the response */ }) } diff --git a/ch9/src/os/drivers/block/virtio_blk.rs.html b/ch9/src/os/drivers/block/virtio_blk.rs.html index d71c857a..f497fe00 100644 --- a/ch9/src/os/drivers/block/virtio_blk.rs.html +++ b/ch9/src/os/drivers/block/virtio_blk.rs.html @@ -133,6 +133,7 @@ 128 129 130 +131
use super::BlockDevice;
 use crate::mm::{
     frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum,
@@ -155,7 +156,8 @@
 }
 
 lazy_static! {
-    static ref QUEUE_FRAMES: UPIntrFreeCell<Vec<FrameTracker>> = unsafe { UPIntrFreeCell::new(Vec::new()) };
+    static ref QUEUE_FRAMES: UPIntrFreeCell<Vec<FrameTracker>> =
+        unsafe { UPIntrFreeCell::new(Vec::new()) };
 }
 
 impl BlockDevice for VirtIOBlock {
diff --git a/ch9/src/os/drivers/chardev/ns16550a.rs.html b/ch9/src/os/drivers/chardev/ns16550a.rs.html
index 81a555b4..10178f76 100644
--- a/ch9/src/os/drivers/chardev/ns16550a.rs.html
+++ b/ch9/src/os/drivers/chardev/ns16550a.rs.html
@@ -178,11 +178,9 @@
 173
 174
 175
-176
 
///! Ref: https://www.lammertbies.nl/comm/info/serial-uart
 ///! Ref: ns16550a datasheet: https://datasheetspdf.com/pdf-file/605590/NationalSemiconductor/NS16550A/1
 ///! Ref: ns16450 datasheet: https://datasheetspdf.com/pdf-file/1311818/NationalSemiconductor/NS16450/1
-
 use super::CharDevice;
 use crate::sync::{Condvar, UPIntrFreeCell};
 use crate::task::schedule;
@@ -193,7 +191,7 @@
 bitflags! {
     /// InterruptEnableRegister
     pub struct IER: u8 {
-        const RX_AVALIABLE = 1 << 0;
+        const RX_AVAILABLE = 1 << 0;
         const TX_EMPTY = 1 << 1;
     }
 
@@ -276,7 +274,7 @@
         mcr |= MCR::REQUEST_TO_SEND;
         mcr |= MCR::AUX_OUTPUT2;
         read_end.mcr.write(mcr);
-        let ier = IER::RX_AVALIABLE;
+        let ier = IER::RX_AVAILABLE;
         read_end.ier.write(ier);
     }
 
diff --git a/ch9/src/os/lang_items.rs.html b/ch9/src/os/lang_items.rs.html
index 830f4be0..f559c0d2 100644
--- a/ch9/src/os/lang_items.rs.html
+++ b/ch9/src/os/lang_items.rs.html
@@ -60,7 +60,7 @@
     unsafe {
         backtrace();
     }
-    shutdown()
+    shutdown(255)
 }
 
 unsafe fn backtrace() {
diff --git a/ch9/src/os/main.rs.html b/ch9/src/os/main.rs.html
index c4e383a5..c8df5227 100644
--- a/ch9/src/os/main.rs.html
+++ b/ch9/src/os/main.rs.html
@@ -68,6 +68,7 @@
 63
 64
 65
+66
 
#![no_std]
 #![no_main]
 #![feature(panic_info_message)]
@@ -116,7 +117,8 @@
 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> =
+        unsafe { UPIntrFreeCell::new(false) };
 }
 
 #[no_mangle]
diff --git a/ch9/src/os/sbi.rs.html b/ch9/src/os/sbi.rs.html
index f39290ab..e0fbafc5 100644
--- a/ch9/src/os/sbi.rs.html
+++ b/ch9/src/os/sbi.rs.html
@@ -48,6 +48,8 @@
 43
 44
 45
+46
+47
 
#![allow(unused)]
 
 use core::arch::asm;
@@ -66,7 +68,7 @@
 fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize {
     let mut ret;
     unsafe {
-        asm!(
+        core::arch::asm!(
             "ecall",
             inlateout("x10") arg0 => ret,
             in("x11") arg1,
@@ -89,8 +91,10 @@
     sbi_call(SBI_CONSOLE_GETCHAR, 0, 0, 0)
 }
 
-pub fn shutdown() -> ! {
-    sbi_call(SBI_SHUTDOWN, 0, 0, 0);
+use crate::board::QEMUExit;
+pub fn shutdown(exit_code: usize) -> ! {
+    //sbi_call(SBI_SHUTDOWN, exit_code, 0, 0);
+    crate::board::QEMU_EXIT_HANDLE.exit_failure();
     panic!("It should shutdown!");
 }
 
diff --git a/ch9/src/os/sync/condvar.rs.html b/ch9/src/os/sync/condvar.rs.html index 7a5e42b2..50482e57 100644 --- a/ch9/src/os/sync/condvar.rs.html +++ b/ch9/src/os/sync/condvar.rs.html @@ -58,8 +58,14 @@ 53 54 55 +56 +57 +58
use crate::sync::{Mutex, UPIntrFreeCell};
-use crate::task::{add_task, block_current_task, block_current_and_run_next, current_task, TaskControlBlock, TaskContext};
+use crate::task::{
+    add_task, block_current_and_run_next, block_current_task, current_task, TaskContext,
+    TaskControlBlock,
+};
 use alloc::{collections::VecDeque, sync::Arc};
 
 pub struct Condvar {
diff --git a/ch9/src/os/sync/up.rs.html b/ch9/src/os/sync/up.rs.html
index 422457bf..2d55fd25 100644
--- a/ch9/src/os/sync/up.rs.html
+++ b/ch9/src/os/sync/up.rs.html
@@ -137,10 +137,16 @@
 132
 133
 134
+135
+136
+137
+138
+139
+140
 
use core::cell::{RefCell, RefMut, UnsafeCell};
 use core::ops::{Deref, DerefMut};
-use riscv::register::sstatus;
 use lazy_static::*;
+use riscv::register::sstatus;
 
 /*
 /// Wrap a static data structure inside it so that we are
@@ -195,9 +201,8 @@ impl<T> UPSafeCell<T> {
 }
 
 lazy_static! {
-    static ref INTR_MASKING_INFO: UPSafeCellRaw<IntrMaskingInfo> = unsafe {
-        UPSafeCellRaw::new(IntrMaskingInfo::new()) 
-    };
+    static ref INTR_MASKING_INFO: UPSafeCellRaw<IntrMaskingInfo> =
+        unsafe { UPSafeCellRaw::new(IntrMaskingInfo::new()) };
 }
 
 impl IntrMaskingInfo {
@@ -210,7 +215,9 @@ impl<T> UPSafeCell<T> {
 
     pub fn enter(&mut self) {
         let sie = sstatus::read().sie();
-        unsafe { sstatus::clear_sie(); }
+        unsafe {
+            sstatus::clear_sie();
+        }
         if self.nested_level == 0 {
             self.sie_before_masking = sie;
         }
@@ -220,7 +227,9 @@ impl<T> UPSafeCell<T> {
     pub fn exit(&mut self) {
         self.nested_level -= 1;
         if self.nested_level == 0 && self.sie_before_masking {
-            unsafe { sstatus::set_sie(); }            
+            unsafe {
+                sstatus::set_sie();
+            }
         }
     }
 }
@@ -240,13 +249,17 @@ impl<T> UPSafeCell<T> {
             inner: RefCell::new(value),
         }
     }
+
     /// Panic if the data has been borrowed.
     pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T> {
         INTR_MASKING_INFO.get_mut().enter();
         UPIntrRefMut(Some(self.inner.borrow_mut()))
     }
 
-    pub fn exclusive_session<F, V>(&self, f: F) -> V where F: FnOnce(&mut T) -> V {
+    pub fn exclusive_session<F, V>(&self, f: F) -> V
+    where
+        F: FnOnce(&mut T) -> V,
+    {
         let mut inner = self.exclusive_access();
         f(inner.deref_mut())
     }
@@ -270,7 +283,6 @@ impl<T> UPSafeCell<T> {
         self.0.as_mut().unwrap().deref_mut()
     }
 }
-
 
\ No newline at end of file diff --git a/ch9/src/os/task/id.rs.html b/ch9/src/os/task/id.rs.html index ad72bcd4..c26504d7 100644 --- a/ch9/src/os/task/id.rs.html +++ b/ch9/src/os/task/id.rs.html @@ -226,6 +226,8 @@ 221 222 223 +224 +225
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};
@@ -274,6 +276,8 @@
         unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) };
 }
 
+pub const IDLE_PID: usize = 0;
+
 pub struct PidHandle(pub usize);
 
 pub fn pid_alloc() -> PidHandle {
diff --git a/ch9/src/os/task/mod.rs.html b/ch9/src/os/task/mod.rs.html
index 00d18831..8b6a79c4 100644
--- a/ch9/src/os/task/mod.rs.html
+++ b/ch9/src/os/task/mod.rs.html
@@ -146,6 +146,22 @@
 141
 142
 143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
 
mod context;
 mod id;
 mod manager;
@@ -165,7 +181,7 @@
 use switch::__switch;
 
 pub use context::TaskContext;
-pub use id::{kstack_alloc, pid_alloc, KernelStack, PidHandle};
+pub use id::{kstack_alloc, pid_alloc, KernelStack, PidHandle, IDLE_PID};
 pub use manager::{add_task, pid2process, remove_from_pid2process};
 pub use processor::{
     current_kstack_top, current_process, current_task, current_trap_cx, current_trap_cx_user_va,
@@ -201,10 +217,12 @@
 }
 
 pub fn block_current_and_run_next() {
-    let task_cx_ptr = block_current_task(); 
+    let task_cx_ptr = block_current_task();
     schedule(task_cx_ptr);
 }
 
+use crate::board::QEMUExit;
+
 pub fn exit_current_and_run_next(exit_code: i32) {
     let task = take_current_task().unwrap();
     let mut task_inner = task.inner_exclusive_access();
@@ -220,7 +238,21 @@
     // however, if this is the main thread of current process
     // the process should terminate at once
     if tid == 0 {
-        remove_from_pid2process(process.getpid());
+        let pid = process.getpid();
+        if pid == IDLE_PID {
+            println!(
+                "[kernel] Idle process exit with exit_code {} ...",
+                exit_code
+            );
+            if exit_code != 0 {
+                //crate::sbi::shutdown(255); //255 == -1 for err hint
+                crate::board::QEMU_EXIT_HANDLE.exit_failure();
+            } else {
+                //crate::sbi::shutdown(0); //0 for success hint
+                crate::board::QEMU_EXIT_HANDLE.exit_success();
+            }
+        }
+        remove_from_pid2process(pid);
         let mut process_inner = process.inner_exclusive_access();
         // mark this process as a zombie process
         process_inner.is_zombie = true;
diff --git a/ch9/src/os/task/processor.rs.html b/ch9/src/os/task/processor.rs.html
index 9a6a180b..e2a174c3 100644
--- a/ch9/src/os/task/processor.rs.html
+++ b/ch9/src/os/task/processor.rs.html
@@ -138,7 +138,8 @@
 }
 
 lazy_static! {
-    pub static ref PROCESSOR: UPIntrFreeCell<Processor> = unsafe { UPIntrFreeCell::new(Processor::new()) };
+    pub static ref PROCESSOR: UPIntrFreeCell<Processor> =
+        unsafe { UPIntrFreeCell::new(Processor::new()) };
 }
 
 pub fn run_tasks() {
@@ -202,9 +203,8 @@
 }
 
 pub fn schedule(switched_task_cx_ptr: *mut TaskContext) {
-    let idle_task_cx_ptr = PROCESSOR.exclusive_session(|processor| {
-        processor.get_idle_task_cx_ptr()
-    });
+    let idle_task_cx_ptr =
+        PROCESSOR.exclusive_session(|processor| processor.get_idle_task_cx_ptr());
     unsafe {
         __switch(switched_task_cx_ptr, idle_task_cx_ptr);
     }
diff --git a/ch9/src/os/task/task.rs.html b/ch9/src/os/task/task.rs.html
index 4556f7bb..40e345cf 100644
--- a/ch9/src/os/task/task.rs.html
+++ b/ch9/src/os/task/task.rs.html
@@ -80,10 +80,16 @@
 75
 76
 77
+78
+79
+80
 
use super::id::TaskUserRes;
 use super::{kstack_alloc, KernelStack, ProcessControlBlock, TaskContext};
 use crate::trap::TrapContext;
-use crate::{mm::PhysPageNum, sync::{UPIntrFreeCell, UPIntrRefMut}};
+use crate::{
+    mm::PhysPageNum,
+    sync::{UPIntrFreeCell, UPIntrRefMut},
+};
 use alloc::sync::{Arc, Weak};
 
 pub struct TaskControlBlock {
diff --git a/ch9/src/os/trap/mod.rs.html b/ch9/src/os/trap/mod.rs.html
index cddd0ab6..d29ebdb7 100644
--- a/ch9/src/os/trap/mod.rs.html
+++ b/ch9/src/os/trap/mod.rs.html
@@ -185,7 +185,7 @@
 use riscv::register::{
     mtvec::TrapMode,
     scause::{self, Exception, Interrupt, Trap},
-    sie, stval, stvec, sstatus, sscratch,
+    sie, sscratch, sstatus, stval, stvec,
 };
 
 global_asm!(include_str!("trap.S"));
@@ -197,7 +197,7 @@
 fn set_kernel_trap_entry() {
     extern "C" {
         fn __alltraps();
-        fn __alltraps_k(); 
+        fn __alltraps_k();
     }
     let __alltraps_k_va = __alltraps_k as usize - __alltraps as usize + TRAMPOLINE;
     unsafe {
@@ -226,7 +226,7 @@
 
 fn disable_supervisor_interrupt() {
     unsafe {
-        sstatus::clear_sie(); 
+        sstatus::clear_sie();
     }
 }
 
@@ -241,7 +241,7 @@
             // jump to next instruction anyway
             let mut cx = current_trap_cx();
             cx.sepc += 4;
-            
+
             enable_supervisor_interrupt();
 
             // get system call return value
@@ -324,19 +324,19 @@
     match scause.cause() {
         Trap::Interrupt(Interrupt::SupervisorExternal) => {
             crate::board::irq_handler();
-        },
+        }
         Trap::Interrupt(Interrupt::SupervisorTimer) => {
             set_next_trigger();
             check_timer();
             // do not schedule now
-        },
+        }
         _ => {
             panic!(
                 "Unsupported trap from kernel: {:?}, stval = {:#x}!",
                 scause.cause(),
                 stval
             );
-        },
+        }
     }
 }