diff --git a/ch9-gui-dev/implementors/core/clone/trait.Clone.js b/ch9-gui-dev/implementors/core/clone/trait.Clone.js
index cbe4f03e..c78f1ef4 100644
--- a/ch9-gui-dev/implementors/core/clone/trait.Clone.js
+++ b/ch9-gui-dev/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["os"] = [{"text":"impl Clone for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Clone for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Clone for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Clone for IntrTargetPriority","synthetic":false,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Clone for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Clone for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Clone for Graphics","synthetic":false,"types":["os::gui::graphic::Graphics"]},{"text":"impl Clone for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Clone for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Clone for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Clone for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T: Clone> Clone for SimpleRange<T> where T: StepByOne + Copy + PartialEq + PartialOrd + Debug, ","synthetic":false,"types":["os::mm::address::SimpleRange"]},{"text":"impl Clone for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl Clone for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Clone for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Clone for PageTableEntry","synthetic":false,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Clone for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Clone for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]}];
+implementors["os"] = [{"text":"impl Clone for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Clone for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Clone for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Clone for IntrTargetPriority","synthetic":false,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Clone for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Clone for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Clone for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Clone for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Clone for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Clone for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T: Clone> Clone for SimpleRange<T> where T: StepByOne + Copy + PartialEq + PartialOrd + Debug, ","synthetic":false,"types":["os::mm::address::SimpleRange"]},{"text":"impl Clone for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl Clone for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Clone for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Clone for PageTableEntry","synthetic":false,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Clone for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Clone for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch9-gui-dev/implementors/core/marker/trait.Freeze.js b/ch9-gui-dev/implementors/core/marker/trait.Freeze.js
index 187d65d0..f248f714 100644
--- a/ch9-gui-dev/implementors/core/marker/trait.Freeze.js
+++ b/ch9-gui-dev/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 !Freeze for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Freeze for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Freeze for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Freeze for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !Freeze for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !Freeze for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Freeze for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Freeze for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl Freeze for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl Freeze for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 !Freeze for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Freeze for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Freeze for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Freeze for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !Freeze for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !Freeze for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Freeze for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Freeze for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/core/marker/trait.Send.js b/ch9-gui-dev/implementors/core/marker/trait.Send.js
index edae312c..783456c4 100644
--- a/ch9-gui-dev/implementors/core/marker/trait.Send.js
+++ b/ch9-gui-dev/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 Send for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Send for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Send for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Send for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Send for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Send for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Send for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Send for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl Send for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl Send for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 Send for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Send for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Send for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Send for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Send for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Send for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Send for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Send for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/core/marker/trait.Sync.js b/ch9-gui-dev/implementors/core/marker/trait.Sync.js
index 17e79fa7..56eac2f2 100644
--- a/ch9-gui-dev/implementors/core/marker/trait.Sync.js
+++ b/ch9-gui-dev/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 Sync for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Sync for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Sync for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Sync for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Sync for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Sync for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Sync for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Sync for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl Sync for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl Sync for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 Sync for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Sync for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Sync for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Sync for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Sync for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Sync for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Sync for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Sync for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/core/marker/trait.Unpin.js b/ch9-gui-dev/implementors/core/marker/trait.Unpin.js
index 78597b51..9424d46c 100644
--- a/ch9-gui-dev/implementors/core/marker/trait.Unpin.js
+++ b/ch9-gui-dev/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 Unpin for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Unpin for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Unpin for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Unpin for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Unpin for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Unpin for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Unpin for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Unpin for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl Unpin for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl Unpin for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 Unpin for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Unpin for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Unpin for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Unpin for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Unpin for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl Unpin for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl Unpin for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Unpin for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/core/ops/deref/trait.Deref.js b/ch9-gui-dev/implementors/core/ops/deref/trait.Deref.js
index f5de2b03..9b788586 100644
--- a/ch9-gui-dev/implementors/core/ops/deref/trait.Deref.js
+++ b/ch9-gui-dev/implementors/core/ops/deref/trait.Deref.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["os"] = [{"text":"impl Deref for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Deref for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Deref for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl Deref for GPU_DEVICE","synthetic":false,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Deref for KEYBOARD_DEVICE","synthetic":false,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Deref for MOUSE_DEVICE","synthetic":false,"types":["os::drivers::input::MOUSE_DEVICE"]},{"text":"impl Deref for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Deref for DRAWING_BOARD","synthetic":false,"types":["os::gui::paint::DRAWING_BOARD"]},{"text":"impl Deref for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Deref for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Deref for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> Deref for UPIntrRefMut<'a, T>","synthetic":false,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Deref for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Deref for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Deref for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Deref for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl Deref for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Deref for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl Deref for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl Deref for DEV_NON_BLOCKING_ACCESS","synthetic":false,"types":["os::DEV_NON_BLOCKING_ACCESS"]}];
+implementors["os"] = [{"text":"impl Deref for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Deref for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl Deref for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl Deref for GPU_DEVICE","synthetic":false,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl Deref for KEYBOARD_DEVICE","synthetic":false,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl Deref for MOUSE_DEVICE","synthetic":false,"types":["os::drivers::input::MOUSE_DEVICE"]},{"text":"impl Deref for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Deref for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Deref for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Deref for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> Deref for UPIntrRefMut<'a, T>","synthetic":false,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Deref for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Deref for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Deref for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Deref for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl Deref for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Deref for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl Deref for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl Deref for DEV_NON_BLOCKING_ACCESS","synthetic":false,"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-gui-dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index f63d14c1..790bb928 100644
--- a/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 !RefUnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl RefUnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl RefUnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl RefUnwindSafe for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !RefUnwindSafe for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !RefUnwindSafe for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl RefUnwindSafe for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl RefUnwindSafe for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl !RefUnwindSafe for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl RefUnwindSafe for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 !RefUnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl RefUnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl RefUnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl RefUnwindSafe for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !RefUnwindSafe for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !RefUnwindSafe for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl RefUnwindSafe for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl RefUnwindSafe for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 7200426b..507a33e9 100644
--- a/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/ch9-gui-dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-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 !UnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl UnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl UnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl UnwindSafe for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !UnwindSafe for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !UnwindSafe for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl UnwindSafe for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl UnwindSafe for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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 Graphics","synthetic":true,"types":["os::gui::graphic::Graphics"]},{"text":"impl !UnwindSafe for DrawingBoard","synthetic":true,"types":["os::gui::paint::DrawingBoard"]},{"text":"impl UnwindSafe for DRAWING_BOARD","synthetic":true,"types":["os::gui::paint::DRAWING_BOARD"]},{"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 !UnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl UnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl UnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl UnwindSafe for VirtioHal","synthetic":true,"types":["os::drivers::bus::virtio::VirtioHal"]},{"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 GPU_DEVICE","synthetic":true,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl !UnwindSafe for VirtIOGpuWrapper","synthetic":true,"types":["os::drivers::gpu::VirtIOGpuWrapper"]},{"text":"impl !UnwindSafe for VirtIOInputWrapper","synthetic":true,"types":["os::drivers::input::VirtIOInputWrapper"]},{"text":"impl UnwindSafe for KEYBOARD_DEVICE","synthetic":true,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl UnwindSafe for MOUSE_DEVICE","synthetic":true,"types":["os::drivers::input::MOUSE_DEVICE"]},{"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-gui-dev/implementors/embedded_graphics_core/draw_target/trait.DrawTarget.js b/ch9-gui-dev/implementors/embedded_graphics_core/draw_target/trait.DrawTarget.js
deleted file mode 100644
index 26ad63b8..00000000
--- a/ch9-gui-dev/implementors/embedded_graphics_core/draw_target/trait.DrawTarget.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {};
-implementors["os"] = [{"text":"impl DrawTarget for Graphics","synthetic":false,"types":["os::gui::graphic::Graphics"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch9-gui-dev/implementors/embedded_graphics_core/geometry/trait.OriginDimensions.js b/ch9-gui-dev/implementors/embedded_graphics_core/geometry/trait.OriginDimensions.js
deleted file mode 100644
index d5ab3f1d..00000000
--- a/ch9-gui-dev/implementors/embedded_graphics_core/geometry/trait.OriginDimensions.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {var implementors = {};
-implementors["os"] = [{"text":"impl OriginDimensions for Graphics","synthetic":false,"types":["os::gui::graphic::Graphics"]}];
-if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/ch9-gui-dev/implementors/lazy_static/trait.LazyStatic.js b/ch9-gui-dev/implementors/lazy_static/trait.LazyStatic.js
index a87f9a36..c2bcb748 100644
--- a/ch9-gui-dev/implementors/lazy_static/trait.LazyStatic.js
+++ b/ch9-gui-dev/implementors/lazy_static/trait.LazyStatic.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["os"] = [{"text":"impl LazyStatic for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl LazyStatic for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl LazyStatic for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl LazyStatic for GPU_DEVICE","synthetic":false,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl LazyStatic for KEYBOARD_DEVICE","synthetic":false,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl LazyStatic for MOUSE_DEVICE","synthetic":false,"types":["os::drivers::input::MOUSE_DEVICE"]},{"text":"impl LazyStatic for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl LazyStatic for DRAWING_BOARD","synthetic":false,"types":["os::gui::paint::DRAWING_BOARD"]},{"text":"impl LazyStatic for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl LazyStatic for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl LazyStatic for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl LazyStatic for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl LazyStatic for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl LazyStatic for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl LazyStatic for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl LazyStatic for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl LazyStatic for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl LazyStatic for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl LazyStatic for DEV_NON_BLOCKING_ACCESS","synthetic":false,"types":["os::DEV_NON_BLOCKING_ACCESS"]}];
+implementors["os"] = [{"text":"impl LazyStatic for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl LazyStatic for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::bus::virtio::QUEUE_FRAMES"]},{"text":"impl LazyStatic for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl LazyStatic for GPU_DEVICE","synthetic":false,"types":["os::drivers::gpu::GPU_DEVICE"]},{"text":"impl LazyStatic for KEYBOARD_DEVICE","synthetic":false,"types":["os::drivers::input::KEYBOARD_DEVICE"]},{"text":"impl LazyStatic for MOUSE_DEVICE","synthetic":false,"types":["os::drivers::input::MOUSE_DEVICE"]},{"text":"impl LazyStatic for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl LazyStatic for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl LazyStatic for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl LazyStatic for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl LazyStatic for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl LazyStatic for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl LazyStatic for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl LazyStatic for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl LazyStatic for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl LazyStatic for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl LazyStatic for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl LazyStatic for DEV_NON_BLOCKING_ACCESS","synthetic":false,"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-gui-dev/os/all.html b/ch9-gui-dev/os/all.html
index b54aedb8..dd5ed763 100644
--- a/ch9-gui-dev/os/all.html
+++ b/ch9-gui-dev/os/all.html
@@ -1 +1 @@
-
\ No newline at end of file
diff --git a/ch9-gui-dev/os/drivers/input/constant.VIRTIO5.html b/ch9-gui-dev/os/drivers/input/constant.VIRTIO5.html
index 5e6f0335..e4d3e1b1 100644
--- a/ch9-gui-dev/os/drivers/input/constant.VIRTIO5.html
+++ b/ch9-gui-dev/os/drivers/input/constant.VIRTIO5.html
@@ -1 +1 @@
-VIRTIO5 in os::drivers::input - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/drivers/input/constant.VIRTIO6.html b/ch9-gui-dev/os/drivers/input/constant.VIRTIO6.html
index a15a779f..ba447526 100644
--- a/ch9-gui-dev/os/drivers/input/constant.VIRTIO6.html
+++ b/ch9-gui-dev/os/drivers/input/constant.VIRTIO6.html
@@ -1 +1 @@
-VIRTIO6 in os::drivers::input - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/drivers/input/index.html b/ch9-gui-dev/os/drivers/input/index.html
index af8e45b6..8ffbf7e3 100644
--- a/ch9-gui-dev/os/drivers/input/index.html
+++ b/ch9-gui-dev/os/drivers/input/index.html
@@ -1 +1 @@
-os::drivers::input - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/drivers/input/struct.KEYBOARD_DEVICE.html b/ch9-gui-dev/os/drivers/input/struct.KEYBOARD_DEVICE.html
index 0e87ec71..d1eaac9e 100644
--- a/ch9-gui-dev/os/drivers/input/struct.KEYBOARD_DEVICE.html
+++ b/ch9-gui-dev/os/drivers/input/struct.KEYBOARD_DEVICE.html
@@ -1,8 +1,8 @@
-KEYBOARD_DEVICE in os::drivers::input - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/fn.clear_bss.html b/ch9-gui-dev/os/fn.clear_bss.html
index 43d94d42..c7e75c28 100644
--- a/ch9-gui-dev/os/fn.clear_bss.html
+++ b/ch9-gui-dev/os/fn.clear_bss.html
@@ -1 +1 @@
-clear_bss in os - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/fn.rust_main.html b/ch9-gui-dev/os/fn.rust_main.html
index a7751ba0..3dc672ba 100644
--- a/ch9-gui-dev/os/fn.rust_main.html
+++ b/ch9-gui-dev/os/fn.rust_main.html
@@ -1,2 +1,2 @@
-rust_main in os - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/constant.INIT_X.html b/ch9-gui-dev/os/gui/paint/constant.INIT_X.html
deleted file mode 100644
index 8fc8ba60..00000000
--- a/ch9-gui-dev/os/gui/paint/constant.INIT_X.html
+++ /dev/null
@@ -1 +0,0 @@
-INIT_X in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/constant.INIT_Y.html b/ch9-gui-dev/os/gui/paint/constant.INIT_Y.html
deleted file mode 100644
index 8cd2722b..00000000
--- a/ch9-gui-dev/os/gui/paint/constant.INIT_Y.html
+++ /dev/null
@@ -1 +0,0 @@
-INIT_Y in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/constant.RECT_SIZE.html b/ch9-gui-dev/os/gui/paint/constant.RECT_SIZE.html
deleted file mode 100644
index 2d8d8724..00000000
--- a/ch9-gui-dev/os/gui/paint/constant.RECT_SIZE.html
+++ /dev/null
@@ -1 +0,0 @@
-RECT_SIZE in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/fn.init_paint.html b/ch9-gui-dev/os/gui/paint/fn.init_paint.html
deleted file mode 100644
index 00698a9c..00000000
--- a/ch9-gui-dev/os/gui/paint/fn.init_paint.html
+++ /dev/null
@@ -1 +0,0 @@
-init_paint in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/fn.move_rect.html b/ch9-gui-dev/os/gui/paint/fn.move_rect.html
deleted file mode 100644
index 23ea01ed..00000000
--- a/ch9-gui-dev/os/gui/paint/fn.move_rect.html
+++ /dev/null
@@ -1 +0,0 @@
-move_rect in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/fn.reset.html b/ch9-gui-dev/os/gui/paint/fn.reset.html
deleted file mode 100644
index 83708912..00000000
--- a/ch9-gui-dev/os/gui/paint/fn.reset.html
+++ /dev/null
@@ -1 +0,0 @@
-reset in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/gui/paint/struct.DrawingBoard.html b/ch9-gui-dev/os/gui/paint/struct.DrawingBoard.html
deleted file mode 100644
index 8f583ecd..00000000
--- a/ch9-gui-dev/os/gui/paint/struct.DrawingBoard.html
+++ /dev/null
@@ -1,27 +0,0 @@
-DrawingBoard in os::gui::paint - Rust
\ No newline at end of file
diff --git a/ch9-gui-dev/os/sidebar-items.js b/ch9-gui-dev/os/sidebar-items.js
index 983a33b0..5b116f08 100644
--- a/ch9-gui-dev/os/sidebar-items.js
+++ b/ch9-gui-dev/os/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"fn":[["clear_bss",""],["rust_main",""]],"macro":[["print",""],["println",""]],"mod":[["board",""],["config",""],["console",""],["drivers",""],["fs",""],["gui",""],["lang_items",""],["mm",""],["sbi",""],["sync",""],["syscall",""],["task",""],["timer",""],["trap",""]],"struct":[["DEV_NON_BLOCKING_ACCESS",""]]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"fn":[["clear_bss",""],["rust_main",""]],"macro":[["print",""],["println",""]],"mod":[["board",""],["config",""],["console",""],["drivers",""],["fs",""],["lang_items",""],["mm",""],["sbi",""],["sync",""],["syscall",""],["task",""],["timer",""],["trap",""]],"struct":[["DEV_NON_BLOCKING_ACCESS",""]]};
\ No newline at end of file
diff --git a/ch9-gui-dev/os/struct.DEV_NON_BLOCKING_ACCESS.html b/ch9-gui-dev/os/struct.DEV_NON_BLOCKING_ACCESS.html
index ddbe30a7..27bc0514 100644
--- a/ch9-gui-dev/os/struct.DEV_NON_BLOCKING_ACCESS.html
+++ b/ch9-gui-dev/os/struct.DEV_NON_BLOCKING_ACCESS.html
@@ -1,9 +1,9 @@
-DEV_NON_BLOCKING_ACCESS in os - Rust
diff --git a/ch9-gui-dev/search-index.js b/ch9-gui-dev/search-index.js
index b5cf766f..18256baa 100644
--- a/ch9-gui-dev/search-index.js
+++ b/ch9-gui-dev/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = JSON.parse('{\
-"os":{"doc":"","t":[3,12,11,0,11,11,11,11,11,5,0,0,11,0,11,0,0,11,0,0,11,11,14,14,5,11,11,0,0,0,0,0,0,11,11,11,11,11,11,11,6,17,6,17,17,17,17,17,8,17,3,17,17,17,17,17,12,11,11,11,11,11,11,5,10,11,5,10,11,10,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,2,17,17,17,2,17,17,17,17,17,3,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,2,2,2,2,0,0,0,0,0,0,3,2,12,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,17,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,2,3,12,11,11,11,11,11,11,11,11,10,10,11,0,11,11,10,11,11,11,11,11,11,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,11,11,11,11,11,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,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,7,3,8,17,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,10,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,12,8,3,3,17,17,3,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,3,13,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,8,2,2,2,2,2,2,2,0,2,2,2,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,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,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,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,12,11,13,13,13,3,3,17,4,11,12,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,12,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,12,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,2,2,0,2,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,3,3,17,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,11,12,5,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,0,5,2,0,0,2,2,2,2,2,12,12,12,12,17,6,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,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,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,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,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,11,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,11,11,11,11,11,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,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,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,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,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,11,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,18,18,18,3,3,3,18,18,3,3,18,18,18,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,12,12,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,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,12,11,11,11,11,11,11,11,11,11,11,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,11,11,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,2,2,2,2,2,2,2,0,0,0,0,3,3,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,12,11,11,11,11,11,8,3,3,3,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,10,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,10,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,12,11,11,11,11,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,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,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,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,17,17,0,0,0,0,5,0,5,5,5,5,5,5,17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,3,2,2,2,2,2,2,12,5,2,11,5,5,11,11,11,5,11,11,0,5,2,2,2,2,2,2,11,5,11,0,11,2,0,11,11,2,2,0,0,2,2,11,11,2,0,5,0,2,0,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,12,11,11,11,11,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,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,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,12,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,11,11,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,12,12,11,5,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,5,11,11,11,11,11,11,11,11,11,11,5,12,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,3,3,11,11,11,11,11,11,11,11,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,11,11,11,11,12,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,11,11,11,11,5,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,18,18,18,3,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,11,11,5,13,13,13,3,3,4,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,12,11,11,11,11,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,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,17,17,3,3,12,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,0,5,5,5,5,5,5,5,5,5,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,12],"n":["DEV_NON_BLOCKING_ACCESS","__private_field","az","board","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","clear_bss","config","console","deref","drivers","from","fs","gui","into","lang_items","mm","overflowing_as","overflowing_cast_from","print","println","rust_main","saturating_as","saturating_cast_from","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","EXIT_FAILURE","EXIT_FAILURE_FLAG","EXIT_RESET","EXIT_SUCCESS","MMIO","QEMUExit","QEMU_EXIT_HANDLE","RISCV64","VIRTGPU_XRES","VIRTGPU_YRES","VIRT_PLIC","VIRT_TEST","VIRT_UART","addr","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","device_init","exit","exit","exit_code_encode","exit_failure","exit_failure","exit_success","exit_success","from","into","irq_handler","new","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","into","overflowing_as","overflowing_cast_from","print","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write_str","BLOCK_DEVICE","BLOCK_DEVICE","UART","UART","block","bus","chardev","gpu","input","plic","BLOCK_DEVICE","VirtIOBlock","__private_field","az","block_device_test","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","into","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","VIRTIO0","VirtIOBlock","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","condvars","from","handle_irq","into","new","overflowing_as","overflowing_cast_from","read_block","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","write_block","virtio","QUEUE_FRAMES","VirtioHal","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","dma_alloc","dma_dealloc","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","phys_to_virt","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","virt_to_phys","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","CharDevice","NS16550a","UART","__private_field","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","handle_irq","init","into","ns16550a","overflowing_as","overflowing_cast_from","read","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","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","az","az","az","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_end","remove","remove","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","write","write","write_end","BMP_DATA","GPU_DEVICE","GpuDevice","VIRTIO7","VirtIOGpuWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","fb","flush","flush","from","from","get_framebuffer","get_framebuffer","gpu","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","update_cursor","update_cursor","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","0","InputDevice","KEYBOARD_DEVICE","MOUSE_DEVICE","VIRTIO5","VIRTIO6","VirtIOInputWrapper","__private_field","__private_field","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","from","from","from","handle_irq","handle_irq","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","IntrTargetPriority","Machine","PLIC","Supervisor","az","az","base_addr","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","priority_ptr","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","File","OSInode","OpenFlags","Pipe","ROOT_INODE","ROOT_INODE","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","read","read_all","read_write","readable","readable","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read","read_byte","read_end_with_buffer","readable","readable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","read","read","readable","readable","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write","graphic","init_paint","move_rect","paint","reset","Graphics","az","borrow","borrow_mut","bounding_box","cast_from","checked_as","checked_cast_from","clipped","clone","clone_into","color_converted","cropped","draw_iter","drv","from","get_framebuffer","into","new","overflowing_as","overflowing_cast_from","point","reset","saturating_as","saturating_cast_from","size","size","to_owned","translated","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","DRAWING_BOARD","DrawingBoard","INIT_X","INIT_Y","RECT_SIZE","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","from","from","graphics","init_paint","into","into","latest_pos","move_rect","move_rect","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","paint","reset","reset","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unpaint","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","PPNRange","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","UserBufferIterator","VPNRange","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","0","0","0","0","PA_WIDTH_SV39","PPNRange","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","ceil","ceil","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","draw","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","translated","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","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","new_nowrite","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","ppn","recycled","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","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","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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_noalloc","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_table","partial_cmp","push","push_noalloc","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","vpn_range","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","ppn","readable","remove","root_ppn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","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","MutexBlocking","MutexSpin","Semaphore","UPIntrFreeCell","UPIntrRefMut","condvar","mutex","semaphore","up","Condvar","CondvarInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","signal","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wait_no_sched","wait_queue","wait_with_mutex","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wait_queue","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","Semaphore","SemaphoreInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","count","down","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","up","wait_queue","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","0","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_FRAMEBUFFER","SYSCALL_FRAMEBUFFER_FLUSH","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","gui","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","FB_VADDR","sys_framebuffer","sys_framebuffer_flush","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","az","block_current_and_run_next","block_current_task","borrow","borrow_mut","cast_from","check_signals_of_current","checked_as","checked_cast_from","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","overflowing_as","overflowing_cast_from","pid2process","pid_alloc","process","processor","remove_from_pid2process","run_tasks","saturating_as","saturating_cast_from","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","TaskContext","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","goto_trap_return","into","overflowing_as","overflowing_cast_from","ra","s","saturating_as","saturating_cast_from","sp","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","zero_init","0","0","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid_alloc","process","push_on_top","recycled","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid2process","ready_queue","remove_from_pid2process","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","parent","pid","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","PROCESSOR","Processor","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","run_tasks","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","cast_from","check_error","checked_as","checked_cast_from","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","overflowing_as","overflowing_cast_from","partial_cmp","remove","saturating_as","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","process","res","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","check_timer","checked_as","checked_as","checked_cast_from","checked_cast_from","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","partial_cmp","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TrapContext","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","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","fmt","from","into","kernel_satp","kernel_sp","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","x"],"q":["os","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::board","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::config","","","","","","","","","","os::console","","","","","","","","","","","","","","","","","","","","","","os::drivers","","","","","","","","","","os::drivers::block","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::bus","os::drivers::bus::virtio","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev::ns16550a","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::gpu","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::input","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::plic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","","","","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::gui","","","","","os::gui::graphic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::gui::paint","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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::gui","","","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).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","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).","","","","","","","","","","","","","","","","","","","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 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 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).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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,2,2,0,2,2,2,2,2,0,0,0,2,0,2,0,0,2,0,0,2,2,0,0,0,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,0,116,8,0,116,8,116,8,8,8,0,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14,14,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,18,117,18,117,18,117,18,117,18,117,18,117,18,18,117,117,117,18,117,18,117,18,117,18,117,117,18,117,18,117,18,117,18,117,18,117,18,117,18,117,117,18,117,18,0,0,0,20,20,20,20,20,20,20,20,20,118,118,20,0,20,20,118,20,20,20,20,20,20,20,20,20,118,24,24,23,24,0,0,0,0,0,0,24,22,0,23,22,0,32,31,32,31,22,23,24,31,32,30,119,29,22,23,24,30,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,31,32,30,119,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,29,22,23,24,31,32,31,30,29,29,22,23,24,22,23,24,22,23,24,31,32,30,119,29,22,23,24,22,23,24,22,23,24,31,32,31,32,31,32,22,23,24,30,29,22,23,24,119,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,22,23,24,31,30,29,119,30,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,32,22,23,24,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,31,32,30,119,29,22,23,24,30,29,30,0,0,0,0,0,33,34,33,34,33,34,33,34,33,34,33,34,33,33,34,120,34,34,33,120,34,34,34,33,34,34,33,34,33,34,33,34,33,34,33,34,33,34,33,34,33,34,33,120,34,34,33,34,33,37,0,0,0,0,0,0,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,35,36,37,35,36,121,37,37,35,36,37,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,0,39,0,39,38,39,38,38,39,38,39,38,39,38,39,38,39,38,38,39,39,38,38,38,38,38,39,38,38,38,38,39,38,38,39,38,39,38,38,39,38,39,38,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,0,0,0,0,0,122,122,0,122,122,41,0,0,0,41,41,0,41,41,42,41,44,123,42,41,41,41,41,41,41,41,41,41,44,123,42,41,44,123,42,41,44,123,42,41,44,123,42,41,44,123,42,41,41,41,41,41,41,42,41,41,41,41,41,41,41,41,41,44,123,42,41,41,41,41,41,41,44,123,41,41,41,44,123,42,41,41,41,0,41,44,41,123,0,44,123,42,41,44,123,42,41,41,44,44,41,44,44,41,44,123,42,41,44,123,42,41,41,41,41,41,41,41,44,123,42,41,44,123,42,41,44,123,42,41,41,44,123,42,41,44,123,42,41,44,123,42,41,44,123,42,41,44,44,44,47,47,47,0,0,0,0,46,46,46,46,48,46,47,48,46,47,48,46,47,48,48,46,47,48,46,47,48,46,47,47,47,47,48,46,47,46,48,46,47,0,46,48,46,47,48,46,47,48,46,48,48,48,48,46,47,48,46,47,46,46,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,48,48,46,46,48,0,0,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,0,0,0,0,0,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,0,0,0,0,59,60,59,60,59,60,59,60,59,60,59,60,59,59,60,59,60,0,60,59,60,0,60,60,60,59,60,59,60,0,60,60,59,60,59,60,59,60,59,60,59,60,60,59,60,59,60,59,60,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,63,64,65,0,0,0,0,0,0,0,0,0,0,0,0,0,62,63,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,62,63,68,62,63,64,65,67,68,62,63,64,65,67,62,63,64,65,67,62,63,64,65,67,62,63,64,65,68,68,68,62,63,64,65,62,63,62,63,64,65,68,62,62,62,63,63,63,64,64,64,65,65,65,67,64,67,62,64,64,62,67,65,68,62,63,64,65,67,68,67,67,62,63,64,65,68,67,68,68,62,63,64,65,67,68,62,63,64,65,67,62,63,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,124,64,65,62,63,64,65,67,68,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,68,62,63,64,65,67,0,0,0,0,0,71,125,70,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,70,125,70,71,72,70,72,0,0,0,72,70,71,70,0,72,70,71,125,72,70,72,72,70,71,72,70,71,72,70,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,72,70,71,0,0,0,0,0,76,76,0,0,0,0,0,75,75,75,75,79,74,75,74,74,77,79,76,75,75,75,75,75,75,75,75,75,74,77,79,76,75,74,77,79,76,75,74,77,79,76,75,74,77,79,76,75,74,77,79,76,75,76,75,76,75,75,75,75,77,77,79,75,0,0,0,75,76,75,0,0,75,76,75,75,75,75,75,74,77,79,76,75,77,75,75,75,74,74,75,75,75,74,75,75,74,77,79,76,75,75,75,0,77,77,77,77,74,77,75,77,74,74,75,74,77,79,76,75,74,77,79,76,75,74,75,74,74,74,0,75,74,74,77,79,76,75,74,77,79,76,75,0,0,75,0,0,0,75,75,75,76,75,75,74,74,74,77,79,76,75,74,77,79,76,75,74,77,79,76,75,75,77,77,74,77,79,76,75,74,77,79,76,75,77,74,77,79,76,75,74,77,79,76,75,81,81,81,0,0,0,81,81,0,0,81,81,81,81,78,40,82,81,80,81,81,81,81,81,81,80,81,81,78,40,82,81,80,78,40,82,81,80,40,82,78,40,82,81,80,78,40,82,81,80,78,40,82,81,80,81,80,81,80,81,81,81,82,82,81,81,80,81,80,81,78,78,80,81,81,81,81,81,78,78,40,82,81,80,81,81,81,81,78,81,81,81,81,78,40,82,81,80,40,82,81,81,80,40,78,81,78,40,80,82,81,78,40,82,81,80,78,40,82,81,80,81,80,80,81,78,78,40,82,81,80,78,40,82,81,80,81,81,81,81,81,80,81,78,78,78,0,0,0,0,78,40,82,81,80,78,40,82,81,80,78,40,82,81,80,81,78,78,40,82,81,80,78,40,82,81,80,78,40,82,81,80,78,40,82,81,80,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,126,84,126,84,126,84,126,84,126,84,126,84,126,84,84,126,84,84,126,84,126,84,126,84,126,84,84,126,84,126,84,126,84,126,84,126,84,126,84,84,126,84,126,0,0,0,0,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,88,87,88,127,86,87,88,87,127,87,88,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,87,88,127,86,87,88,87,88,127,87,88,127,127,87,88,127,87,88,127,0,0,89,128,89,128,89,128,89,128,89,128,89,128,128,89,89,128,89,89,128,89,89,128,89,128,89,128,89,128,89,128,89,128,89,128,89,128,89,128,89,128,89,128,89,128,90,0,0,0,0,0,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,90,91,90,90,93,3,3,93,92,93,3,90,91,92,92,3,92,93,3,90,91,93,92,93,3,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,93,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,92,93,3,90,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,0,96,96,96,0,96,96,0,0,0,0,0,0,0,0,96,0,96,0,96,0,0,96,96,0,0,0,0,0,0,96,96,0,0,0,0,0,0,96,96,96,96,96,96,96,0,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,101,102,0,0,0,0,0,0,0,99,100,97,98,98,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,97,98,98,99,100,101,102,98,97,101,102,98,99,100,102,97,101,102,98,99,100,0,0,97,98,97,101,102,98,99,100,97,101,102,98,99,100,0,98,102,97,97,101,102,98,99,100,97,101,102,98,99,100,98,0,98,98,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,97,101,102,98,99,100,98,98,0,98,97,101,102,98,99,100,97,101,102,98,99,100,0,0,0,106,107,104,0,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,106,107,104,0,104,106,107,0,104,106,107,104,104,106,107,104,106,107,0,104,0,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,104,106,107,0,0,108,108,103,108,103,108,103,108,103,108,103,108,103,108,108,108,108,103,108,108,103,103,108,108,108,103,103,103,103,108,108,108,108,103,103,108,103,108,108,103,103,108,103,108,108,108,108,108,108,103,108,103,108,103,108,103,108,103,108,103,108,103,108,0,0,111,109,111,109,111,109,111,109,111,109,111,109,111,109,109,0,0,0,0,0,0,111,109,111,109,109,109,111,109,109,111,109,111,0,109,111,109,111,0,109,0,109,111,109,111,109,111,109,111,109,111,109,111,109,111,95,95,95,95,95,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,0,112,112,112,0,0,0,105,113,112,105,113,112,105,113,112,105,113,112,105,113,112,105,113,112,112,112,112,113,105,113,112,113,113,105,105,105,105,113,112,105,105,105,113,112,105,113,112,105,113,105,113,112,105,113,112,113,113,112,113,105,113,112,105,113,112,105,113,112,105,113,112,105,113,112,105,113,112,105,113,112,0,0,0,0,115,0,114,115,114,115,114,115,114,115,0,114,115,114,115,114,115,114,114,114,115,0,0,114,115,114,115,114,115,114,114,115,114,115,0,114,114,115,114,115,114,115,114,115,114,115,114,115,114,115,0,0,0,0,0,0,0,0,0,0,0,0,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110],"f":[0,0,[[]],0,[[]],[[]],[[]],[[],1],[[],1],[[]],0,0,[2,3],0,[[]],0,0,[[]],0,0,[[]],[[]],0,0,[[],4],[[]],[[]],0,0,0,0,0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[7,4],[[8,7],4],[7,7],[[],4],[8,4],[[],4],[8,4],[[]],[[]],[[]],[9,8],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[[]],[[]],[[]],[10],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[[11,12],13],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[14,15],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],0,[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],0,[[]],[16],[[]],[[],16],[[]],[[]],[[16,17]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],0,[[]],[[]],[[16,17]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[18,3],[17,17],[[17,17],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[17,17],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[17,17],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[20,15],[[]],[[]],[[]],[[]],0,[[]],[[]],[[],21],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[21],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],22],[[],23],[[],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[22,21],[23,21],[24,21],0,0,0,[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[22,22],[23,23],[24,24],[[]],[[]],[[]],[[22,22],25],[[23,23],25],[[24,24],25],[22,22],[23,23],[24,24],0,[[22,22],26],[[23,23],26],[[24,24],26],[[22,22],22],[[23,23],23],[[24,24],24],[[],22],[[],23],[[],24],[[22,22],26],[[23,23],26],[[24,24],26],[[22,27]],[[23,27]],[[24,27]],[[22,28],13],[[22,28],13],[[22,28],13],[[22,28],13],[[22,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[21,[[1,[22]]]],[21,[[1,[23]]]],[21,[[1,[24]]]],[21,22],[21,23],[21,24],[21,22],[21,23],[21,24],[27,22],[27,23],[27,24],[29],[22],[23],[24],0,0,0,[30],[29],0,[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22],26],[[23,23],26],[[24,24],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[22,26],[23,26],[24,26],[22,26],[23,26],[24,26],0,0,0,0,0,0,[[22,22],26],[[23,23],26],[[24,24],26],[17,30],[[],29],[22,22],[23,23],[24,24],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,22],[[1,[25]]]],[[23,23],[[1,[25]]]],[[24,24],[[1,[25]]]],0,[30,[[1,[21]]]],[29,21],0,[30,31],[[22,22]],[[23,23]],[[24,24]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,22,26]],[[23,23,26]],[[24,24,26]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],0,[[]],[[]],[[]],[[22,22]],[[23,23]],[[24,24]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[22,22],22],[[23,23],23],[[24,24],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[30,21]],[[29,21]],[30,32],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[33,15],0,[[]],[34],[[]],[[]],[[]],[34],0,[[]],[[]],[[],34],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[34],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[35,15],[36,15],[[]],[[]],[[]],[[]],[37],[[]],[[]],[[]],[17,37],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[38,17,39],7],[[38,17,39],7],[39,39],[[]],[[38,17,39,7]],[[38,17,39,17]],[[38,17,39,17]],[[38,17,39,17]],[[]],[[]],[[38,17],7],[[38,17,39],7],[[17,39],17],[[]],[[]],[17,38],[[]],[[]],[[]],[[]],[[38,17],7],[[]],[[]],[[]],[[]],[[38,17,7]],[[38,17,39,7]],[[],17],[[38,17,39],7],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[40,17],[[],26],0,[[],26],[40,17],0,0,0,0,0,0,0,0,0,0,[[],41],[[]],[[]],[[]],[[]],[[41,41],41],[[41,41]],[[41,41],41],[[41,41]],[41,7],0,[[41,41],41],[[41,41]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[41,41],[[]],[[41,41],25],[41,41],[[41,41],26],[42,15],[[41,41],41],[[],41],[[41,41],26],[[41,27]],[[41,28],13],[[41,28],13],[[41,28],13],[[41,28],13],[[41,28],13],[[]],[[]],[[]],[[]],[7,[[1,[41]]]],[7,41],[7,41],[27,41],[41],0,0,[[41,41]],[[41,41],41],[[41,41],26],[[]],[[]],[[]],[[]],[41,26],[41,26],[[]],[[41,41],26],[[26,26,[15,[43]]],44],[41,41],0,[[12,41],[[1,[[15,[44]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[41,41],[[1,[25]]]],[[44,40],17],[44,[[45,[21]]]],[41],[44,26],0,[[41,41]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[41,41,26]],[[41,41],41],[[41,41]],[[41,41],41],[[]],[[41,41]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[41,41],41],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[44,26],0,[[44,40],17],0,0,0,0,0,0,0,[46,26],0,[46,17],[46,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[47,47],[[]],[[47,47],26],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[],46],[[]],[[]],[[]],[[]],[[]],[[]],[[48,40],17],[46,21],[[[15,[[3,[46]]]]],48],[48,26],0,[[]],[[]],[[]],[[]],[[]],[[]],[[46,15]],0,0,[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[48,26],0,[[48,40],17],[[46,21]],0,[[[15,[[3,[46]]]]],48],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[49,40],17],[[50,40],17],[49,26],[50,26],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[49,26],[50,26],[[49,40],17],[[50,40],17],0,0,0,0,0,0,[[]],[[]],[[]],[[],51],[[]],[[],1],[[],1],[51,52],[53,53],[[]],[[],54],[51,55],[53,5],0,[[]],[53],[[]],[[56,57],53],[[]],[[]],0,[53],[[]],[[]],[53,56],0,[[]],[57,58],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[59,3],[[]],[[]],0,[[]],[[]],[[]],0,[[19,19]],[[60,19,19]],[[],60],[[]],[[]],[[]],[[]],[60],[[]],[60],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[60],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[61,4],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[62,26],[63,26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[62,64],[63,65],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[62,62],[63,63],[64,64],[65,65],[[[67,[66]]],[[67,[66]]]],[[]],[[]],[[]],[[]],[[]],[[62,62],25],[[63,63],25],[[64,64],25],[[65,65],25],0,[[],5],0,[[62,62],26],[[63,63],26],[[64,64],26],[[65,65],26],[62,64],[63,65],[[62,28],13],[[63,28],13],[[64,28],13],[[65,28],13],[[]],[17,62],[64,62],[[]],[[]],[65,63],[17,63],[[]],[62,64],[17,64],[17,65],[[]],[63,65],[[]],[64],[67],[62],[64],[64],[62],[67],[65],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[67],0,[[62,62],26],[[63,63],26],[[64,64],26],[[65,65],26],[[],68],[[],67],[68,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[62,17],[63,17],[[62,62],[[1,[25]]]],[[63,63],[[1,[25]]]],[[64,64],[[1,[25]]]],[[65,65],[[1,[25]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[64],[65],[[]],[[]],[[]],[[]],[[]],[57,69],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[],[[1,[64]]]],[70,[[1,[64]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],0,[64],[[70,64]],[71,3],[72],0,[[72,28],13],[[],[[1,[72]]]],[[]],[64],[[]],[[]],[[]],[[70,64,64]],[[]],[[]],[[]],[[]],[[]],[64,72],[[],70],[64,72],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[73,4],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,[74],[[],75],0,[[]],[[]],[[]],[[]],[[]],[[75,75],75],[[75,75]],[[75,75],75],[[75,75]],[75,21],0,[[75,75],75],[[75,75]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[76,76],[75,75],[[]],[[]],[[75,75],25],[75,75],[[75,75],26],[[77,78]],0,[79,15],[[75,75],75],0,0,0,[[],75],[[76,76],26],[[75,75],26],0,0,[[75,27]],[[76,28],13],[[75,28],13],[[75,28],13],[[75,28],13],[[75,28],13],[[75,28],13],[[]],[[]],[[]],[[]],[[]],[77,77],[21,[[1,[75]]]],[21,75],[21,75],[[]],[74,74],[27,75],[75],[[75,75]],[[74,63,63,75]],[[75,75],75],[[75,75],26],[[]],[[]],[[]],[[]],[[]],[75,26],[75,26],[[],17],[[77,78]],[[77,78,[67,[64]]]],[[77,78,65]],0,[74],0,[[75,75],26],[[63,63,76,75],77],[[],74],[[],74],[75,75],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[75,75],[[1,[25]]]],[[74,77,1]],[[74,77,[67,[64]]]],[74],[[]],[[75,75]],[[74,65]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[75,75,26]],0,0,0,[[75,75],75],[[75,75]],[[75,75],75],[[]],[[]],[[75,75]],[74,17],[[74,65],[[1,[80]]]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[75,75],75],[[77,78]],[[77,78,65]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[],81],[[]],[[]],[[]],[[]],[[]],[[81,81],81],[[81,81]],[[81,81],81],[[81,81]],[81,21],0,0,[[81,81],81],[[81,81]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[81,81],[80,80],[[]],[[]],[[81,81],25],[81,81],[[81,81],26],0,0,[[81,81],81],[[],81],[[],80],[[81,81],26],[80,26],[[81,27]],[[78,65],[[1,[80]]]],[[78,65],[[1,[80]]]],[80,81],[[81,28],13],[[81,28],13],[[81,28],13],[[81,28],13],[[81,28],13],0,[[]],[[]],[[]],[[]],[[]],[21,[[1,[81]]]],[21,81],[21,81],[27,81],[17,78],[81],[[81,81]],[[81,81],81],[[81,81],26],[[]],[[]],[[]],[[]],[[]],[40],[[]],[81,26],[81,26],[80,26],[40,17],[[78,65,64,81]],[[81,81],26],[[],78],[45,40],[[64,81],80],[82,1],[81,81],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[81,81],[[1,[25]]]],[80,64],[80,26],[[81,81]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[81,81,26]],[[81,81],81],[[81,81]],[[81,81],81],[[]],[[]],[[81,81]],[78,17],[[78,65],[[1,[80]]]],[[78,63],[[1,[62]]]],[[17,21,17],45],[17],[17],[[17,21],83],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[81,81],81],[[78,65]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[80,26],0,0,0,0,0,0,0,0,0,[[],17],[17],[[17,17,17,17],17],[17],[17,4],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[]],[[]],0,[[]],[[]],[[],84],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[84,85],0,[[84,[15,[86]]]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[87],[88],0,0,[[],87],[[],88],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[87],[88],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],0,[89],[[]],[[]],0,[[]],[[]],[17,89],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[89],0,[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[90],[91,92],[90],[90],[93],[3,90],[3],[93],[[]],[[]],[[]],[[]],[[]],[92],0,0,[[]],[[]],[[]],[[]],[[]],0,[[],92],[[],93],[[],3],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[17,94],0,[17,94],[17,94],[[21,7],94],[17,94],[[17,21,17],94],[[17,21,17],94],0,[[],94],[[],94],[[21,17],94],[19,4],[[],94],[[],94],[[],94],[[17,7],94],[[94,19],94],[[],94],[17,94],[17,94],[[17,17],94],[26,94],[17,94],[17,94],[17,94],[17,94],[17,94],[17,94],[[],94],[[17,17],94],[17,19],0,0,0,0,0,0,0,0,0,[[]],0,[[]],[[]],[[],85],[[]],[[]],[[]],[[],1],[[],1],[[],1],0,[95],0,0,0,0,0,0,[96,15],[19],[[]],0,[[]],0,0,[[]],[[]],0,0,0,0,0,0,[[]],[[]],0,0,[[]],0,0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[17,85],[[]],[[]],[[]],0,0,[[]],[[]],0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[[],85],0,0,0,0,0,0,0,0,0,0,0,[97,17],[98],[98],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],0,[[97,17]],[98],[98],[99,3],[100,3],[101],[102],[98],[[]],[[]],[[]],[[]],[[]],[[]],[102,17],[[]],[[]],[[]],[[]],[[]],[[]],[17],[[],102],[[],97],[[[15,[103]],17,26],98],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],101],0,[102],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[17,17],[98,64],[98,17],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[98,17],0,[[17,17],17],[98,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[104,[15,[105]]]],[[[15,[105]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[106,3],[107,3],[104,[[1,[[15,[105]]]]]],[[],[[1,[[15,[105]]]]]],[[]],[[]],[[]],[[17,[15,[103]]]],[[]],[[]],[[]],[[],104],[[]],[[]],[[]],[[]],[[]],[[]],[17,[[1,[[15,[103]]]]]],0,[17],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[108,17],[108,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],0,0,[[108,17]],[[15,[45,[83]]]],0,0,[15,[[15,[103]]]],[[]],[[]],[[108,17],[[15,[105]]]],[108,17],[103,17],0,[103,[[90,[108]]]],[[]],[[]],0,0,0,[[],[[15,[103]]]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],0,0,0,0,[108,17],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[109,[[1,[[15,[105]]]]]],0,[[],17],[[],[[15,[103]]]],[[],[[1,[[15,[105]]]]]],[[],110],[[],17],[[],17],[111,3],[[]],[[]],[109,85],0,[[]],[[]],[[],109],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[85],[109,[[1,[[15,[105]]]]]],[[],[[1,[[15,[105]]]]]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[],95],[[]],[[95,95],95],[[95,95]],[[95,95],95],[[95,95]],[95,7],0,[[95,95],95],[[95,95]],[[]],[[]],[[]],[95,1],[[],1],[[],1],[95,95],[[]],[[95,95],25],[95,95],[[95,95],26],[[95,95],95],[[],95],[[95,95],26],[[95,27]],[[95,28],13],[[95,28],13],[[95,28],13],[[95,28],13],[[95,28],13],[[]],[7,[[1,[95]]]],[7,95],[7,95],[27,95],[95],[[95,95]],[[95,95],95],[[95,95],26],[[]],[95,26],[95,26],[[95,95],26],[95,95],[[]],[[]],[[95,95],[[1,[25]]]],[[95,95]],[[]],[[]],[[95,95,26]],[[95,95],95],[[95,95]],[[95,95],95],[[]],[[95,95]],[[],5],[[],5],[[],6],[[95,95],95],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[112,112],[[]],[[112,112],26],0,[[]],[[]],[[]],[113,112],[113,110],[105,17],0,[105,[[90,[113]]]],[[]],[[]],[[]],0,[[[15,[103]],17,26],105],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],0,[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[17,[15,[105]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[114,114],25],[115,3],[[114,114],26],0,[[]],[[]],[[],17],[[],17],[[]],[[]],[[]],[[]],[[]],[[]],[[114,114],[[1,[25]]]],[[]],[[]],[[]],[[]],[[]],0,[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[110],[[],4],[[],4],0,[[17,17,17,17,17],110],[[]],[[]],[[]],[[]],[[],1],[[],1],[[110,28],13],[[]],[[]],0,0,[[]],[[]],[[]],[[]],0,[[110,17]],0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0],"p":[[4,"Option"],[3,"DEV_NON_BLOCKING_ACCESS"],[3,"UPIntrFreeCell"],[15,"never"],[4,"Result"],[3,"TypeId"],[15,"u32"],[3,"RISCV64"],[15,"u64"],[3,"Arguments"],[3,"Stdout"],[15,"str"],[6,"Result"],[3,"BLOCK_DEVICE"],[3,"Arc"],[3,"VirtIOBlock"],[15,"usize"],[3,"QUEUE_FRAMES"],[15,"i32"],[3,"UART"],[15,"u8"],[3,"IER"],[3,"LSR"],[3,"MCR"],[4,"Ordering"],[15,"bool"],[8,"IntoIterator"],[3,"Formatter"],[3,"NS16550a"],[3,"NS16550aRaw"],[3,"ReadWithoutDLAB"],[3,"WriteWithoutDLAB"],[3,"GPU_DEVICE"],[3,"VirtIOGpuWrapper"],[3,"KEYBOARD_DEVICE"],[3,"MOUSE_DEVICE"],[3,"VirtIOInputWrapper"],[3,"PLIC"],[4,"IntrTargetPriority"],[3,"UserBuffer"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"Inode"],[3,"OSInode"],[3,"Vec"],[3,"PipeRingBuffer"],[4,"RingBufferStatus"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"Rectangle"],[3,"Clipped"],[3,"Graphics"],[3,"ColorConverted"],[3,"Cropped"],[3,"Size"],[3,"Point"],[3,"Translated"],[3,"DRAWING_BOARD"],[3,"DrawingBoard"],[3,"PanicInfo"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[8,"Clone"],[3,"SimpleRange"],[3,"SimpleRangeIterator"],[3,"Translated"],[3,"StackFrameAllocator"],[3,"FRAME_ALLOCATOR"],[3,"FrameTracker"],[3,"Layout"],[3,"MemorySet"],[3,"MapPermission"],[4,"MapType"],[3,"MapArea"],[3,"PageTable"],[3,"KERNEL_SPACE"],[3,"PageTableEntry"],[3,"PTEFlags"],[3,"UserBufferIterator"],[3,"String"],[3,"Condvar"],[3,"TaskContext"],[8,"Mutex"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"Semaphore"],[3,"UPIntrRefMut"],[3,"INTR_MASKING_INFO"],[3,"UPSafeCellRaw"],[3,"IntrMaskingInfo"],[15,"isize"],[3,"SignalFlags"],[3,"INITPROC"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"PidHandle"],[3,"KernelStack"],[3,"ProcessControlBlock"],[3,"TaskManager"],[3,"TaskControlBlock"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"ProcessControlBlockInner"],[3,"Processor"],[3,"TrapContext"],[3,"PROCESSOR"],[4,"TaskStatus"],[3,"TaskControlBlockInner"],[3,"TimerCondVar"],[3,"TIMERS"],[8,"QEMUExit"],[3,"VirtioHal"],[8,"CharDevice"],[3,"NS16550aInner"],[8,"GpuDevice"],[8,"InputDevice"],[8,"File"],[3,"OSInodeInner"],[8,"StepByOne"],[8,"FrameAllocator"],[3,"CondvarInner"],[3,"MutexBlockingInner"],[3,"SemaphoreInner"]]}\
+"os":{"doc":"","t":[3,12,11,0,11,11,11,11,11,5,0,0,11,0,11,0,11,0,0,11,11,14,14,5,11,11,0,0,0,0,0,0,11,11,11,11,11,11,11,6,17,6,17,17,17,17,17,8,17,3,17,17,17,17,17,12,11,11,11,11,11,11,5,10,11,5,10,11,10,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,2,17,17,17,2,17,17,17,17,17,3,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,2,2,2,2,0,0,0,0,0,0,3,2,12,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,17,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,0,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,2,3,12,11,11,11,11,11,11,11,11,10,10,11,0,11,11,10,11,11,11,11,11,11,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,11,11,11,11,11,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,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,7,3,8,17,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,10,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,12,8,3,3,17,17,3,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,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,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,3,13,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,8,2,2,2,2,2,2,2,0,2,2,2,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,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,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,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,12,11,13,13,13,3,3,17,4,11,12,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,12,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,12,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,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,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,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,0,5,2,0,0,2,2,2,2,2,12,12,12,12,17,6,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,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,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,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,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,11,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,11,11,11,11,11,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,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,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,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,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,11,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,18,18,18,3,3,3,18,18,3,3,18,18,18,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,12,12,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,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,12,11,11,11,11,11,11,11,11,11,11,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,11,11,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,2,2,2,2,2,2,2,0,0,0,0,3,3,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,12,11,11,11,11,11,8,3,3,3,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,10,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,10,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,12,11,11,11,11,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,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,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,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,17,17,0,0,0,0,5,0,5,5,5,5,5,5,17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,3,2,2,2,2,2,2,12,5,2,11,5,5,11,11,11,5,11,11,0,5,2,2,2,2,2,2,11,5,11,0,11,2,0,11,11,2,2,0,0,2,2,11,11,2,0,5,0,2,0,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,12,11,11,11,11,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,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,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,12,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,11,11,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,12,12,11,5,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,5,11,11,11,11,11,11,11,11,11,11,5,12,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,3,3,11,11,11,11,11,11,11,11,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,11,11,11,11,12,12,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,11,11,11,11,5,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,18,18,18,3,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,11,11,5,13,13,13,3,3,4,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,12,11,11,11,11,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,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,17,17,3,3,12,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,0,5,5,5,5,5,5,5,5,5,3,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,12],"n":["DEV_NON_BLOCKING_ACCESS","__private_field","az","board","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","overflowing_as","overflowing_cast_from","print","println","rust_main","saturating_as","saturating_cast_from","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","EXIT_FAILURE","EXIT_FAILURE_FLAG","EXIT_RESET","EXIT_SUCCESS","MMIO","QEMUExit","QEMU_EXIT_HANDLE","RISCV64","VIRTGPU_XRES","VIRTGPU_YRES","VIRT_PLIC","VIRT_TEST","VIRT_UART","addr","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","device_init","exit","exit","exit_code_encode","exit_failure","exit_failure","exit_success","exit_success","from","into","irq_handler","new","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","into","overflowing_as","overflowing_cast_from","print","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write_str","BLOCK_DEVICE","BLOCK_DEVICE","UART","UART","block","bus","chardev","gpu","input","plic","BLOCK_DEVICE","VirtIOBlock","__private_field","az","block_device_test","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","into","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","VIRTIO0","VirtIOBlock","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","condvars","from","handle_irq","into","new","overflowing_as","overflowing_cast_from","read_block","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","write_block","virtio","QUEUE_FRAMES","VirtioHal","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","dma_alloc","dma_dealloc","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","phys_to_virt","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","virt_to_phys","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","CharDevice","NS16550a","UART","__private_field","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","handle_irq","init","into","ns16550a","overflowing_as","overflowing_cast_from","read","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","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","az","az","az","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_end","remove","remove","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","write","write","write_end","BMP_DATA","GPU_DEVICE","GpuDevice","VIRTIO7","VirtIOGpuWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","fb","flush","flush","from","from","get_framebuffer","get_framebuffer","gpu","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","update_cursor","update_cursor","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","0","InputDevice","KEYBOARD_DEVICE","MOUSE_DEVICE","VIRTIO5","VIRTIO6","VirtIOInputWrapper","__private_field","__private_field","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","from","from","from","handle_irq","handle_irq","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","IntrTargetPriority","Machine","PLIC","Supervisor","az","az","base_addr","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","priority_ptr","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","File","OSInode","OpenFlags","Pipe","ROOT_INODE","ROOT_INODE","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","read","read_all","read_write","readable","readable","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read","read_byte","read_end_with_buffer","readable","readable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","read","read","readable","readable","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","PPNRange","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","UserBufferIterator","VPNRange","VirtAddr","VirtPageNum","address","frame_alloc","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","0","0","0","0","PA_WIDTH_SV39","PPNRange","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","ceil","ceil","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","draw","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","translated","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","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","new_nowrite","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","ppn","recycled","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","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","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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_noalloc","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_table","partial_cmp","push","push_noalloc","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","vpn_range","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","az","az","az","az","az","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","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","ppn","readable","remove","root_ppn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","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","MutexBlocking","MutexSpin","Semaphore","UPIntrFreeCell","UPIntrRefMut","condvar","mutex","semaphore","up","Condvar","CondvarInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","signal","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wait_no_sched","wait_queue","wait_with_mutex","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wait_queue","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","Semaphore","SemaphoreInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","count","down","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","up","wait_queue","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","0","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_FRAMEBUFFER","SYSCALL_FRAMEBUFFER_FLUSH","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","gui","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","FB_VADDR","sys_framebuffer","sys_framebuffer_flush","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","az","block_current_and_run_next","block_current_task","borrow","borrow_mut","cast_from","check_signals_of_current","checked_as","checked_cast_from","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","overflowing_as","overflowing_cast_from","pid2process","pid_alloc","process","processor","remove_from_pid2process","run_tasks","saturating_as","saturating_cast_from","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","TaskContext","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","goto_trap_return","into","overflowing_as","overflowing_cast_from","ra","s","saturating_as","saturating_cast_from","sp","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","zero_init","0","0","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid_alloc","process","push_on_top","recycled","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid2process","ready_queue","remove_from_pid2process","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","parent","pid","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","PROCESSOR","Processor","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","run_tasks","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","cast_from","check_error","checked_as","checked_cast_from","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","overflowing_as","overflowing_cast_from","partial_cmp","remove","saturating_as","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","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","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","process","res","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","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","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","check_timer","checked_as","checked_as","checked_cast_from","checked_cast_from","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","partial_cmp","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TrapContext","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","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","fmt","from","into","kernel_satp","kernel_sp","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","x"],"q":["os","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::board","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::config","","","","","","","","","","os::console","","","","","","","","","","","","","","","","","","","","","","os::drivers","","","","","","","","","","os::drivers::block","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::bus","os::drivers::bus::virtio","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev::ns16550a","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::gpu","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::input","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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::gui","","","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).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","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).","","","","","","","","","","","","","","","","","","","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 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 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,2,2,0,2,2,2,2,2,0,0,0,2,0,2,0,2,0,0,2,2,0,0,0,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,0,107,8,0,107,8,107,8,8,8,0,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14,14,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,18,108,18,108,18,108,18,108,18,108,18,108,18,18,108,108,108,18,108,18,108,18,108,18,108,108,18,108,18,108,18,108,18,108,18,108,18,108,18,108,108,18,108,18,0,0,0,20,20,20,20,20,20,20,20,20,109,109,20,0,20,20,109,20,20,20,20,20,20,20,20,20,109,24,24,23,24,0,0,0,0,0,0,24,22,0,23,22,0,32,31,32,31,22,23,24,31,32,30,110,29,22,23,24,30,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,31,32,30,110,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,29,22,23,24,31,32,31,30,29,29,22,23,24,22,23,24,22,23,24,31,32,30,110,29,22,23,24,22,23,24,22,23,24,31,32,31,32,31,32,22,23,24,30,29,22,23,24,110,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,22,23,24,31,30,29,110,30,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,22,23,24,22,23,24,22,23,24,22,23,24,32,22,23,24,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,31,32,30,110,29,22,23,24,30,29,30,0,0,0,0,0,33,34,33,34,33,34,33,34,33,34,33,34,33,33,34,111,34,34,33,111,34,34,34,33,34,34,33,34,33,34,33,34,33,34,33,34,33,34,33,34,33,34,33,111,34,34,33,34,33,37,0,0,0,0,0,0,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,35,36,37,35,36,112,37,37,35,36,37,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,37,35,36,0,39,0,39,38,39,38,38,39,38,39,38,39,38,39,38,39,38,38,39,39,38,38,38,38,38,39,38,38,38,38,39,38,38,39,38,39,38,38,39,38,39,38,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,0,0,0,0,0,113,113,0,113,113,41,0,0,0,41,41,0,41,41,42,41,44,114,42,41,41,41,41,41,41,41,41,41,44,114,42,41,44,114,42,41,44,114,42,41,44,114,42,41,44,114,42,41,41,41,41,41,41,42,41,41,41,41,41,41,41,41,41,44,114,42,41,41,41,41,41,41,44,114,41,41,41,44,114,42,41,41,41,0,41,44,41,114,0,44,114,42,41,44,114,42,41,41,44,44,41,44,44,41,44,114,42,41,44,114,42,41,41,41,41,41,41,41,44,114,42,41,44,114,42,41,44,114,42,41,41,44,114,42,41,44,114,42,41,44,114,42,41,44,114,42,41,44,44,44,47,47,47,0,0,0,0,46,46,46,46,48,46,47,48,46,47,48,46,47,48,48,46,47,48,46,47,48,46,47,47,47,47,48,46,47,46,48,46,47,0,46,48,46,47,48,46,47,48,46,48,48,48,48,46,47,48,46,47,46,46,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,46,47,48,48,48,46,46,48,0,0,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,53,54,55,0,0,0,0,0,0,0,0,0,0,0,0,0,52,53,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,52,53,58,52,53,54,55,57,58,52,53,54,55,57,52,53,54,55,57,52,53,54,55,57,52,53,54,55,58,58,58,52,53,54,55,52,53,52,53,54,55,58,52,52,52,53,53,53,54,54,54,55,55,55,57,54,57,52,54,54,52,57,55,58,52,53,54,55,57,58,57,57,52,53,54,55,58,57,58,58,52,53,54,55,57,58,52,53,54,55,57,52,53,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,115,54,55,52,53,54,55,57,58,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,58,52,53,54,55,57,0,0,0,0,0,62,116,61,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,61,116,61,62,63,61,63,0,0,0,63,61,62,61,0,63,61,62,116,63,61,63,63,61,62,63,61,62,63,61,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,0,0,0,0,0,67,67,0,0,0,0,0,66,66,66,66,70,65,66,65,65,68,70,67,66,66,66,66,66,66,66,66,66,65,68,70,67,66,65,68,70,67,66,65,68,70,67,66,65,68,70,67,66,65,68,70,67,66,67,66,67,66,66,66,66,68,68,70,66,0,0,0,66,67,66,0,0,66,67,66,66,66,66,66,65,68,70,67,66,68,66,66,66,65,65,66,66,66,65,66,66,65,68,70,67,66,66,66,0,68,68,68,68,65,68,66,68,65,65,66,65,68,70,67,66,65,68,70,67,66,65,66,65,65,65,0,66,65,65,68,70,67,66,65,68,70,67,66,0,0,66,0,0,0,66,66,66,67,66,66,65,65,65,68,70,67,66,65,68,70,67,66,65,68,70,67,66,66,68,68,65,68,70,67,66,65,68,70,67,66,68,65,68,70,67,66,65,68,70,67,66,72,72,72,0,0,0,72,72,0,0,72,72,72,72,69,40,73,72,71,72,72,72,72,72,72,71,72,72,69,40,73,72,71,69,40,73,72,71,40,73,69,40,73,72,71,69,40,73,72,71,69,40,73,72,71,72,71,72,71,72,72,72,73,73,72,72,71,72,71,72,69,69,71,72,72,72,72,72,69,69,40,73,72,71,72,72,72,72,69,72,72,72,72,69,40,73,72,71,40,73,72,72,71,40,69,72,69,40,71,73,72,69,40,73,72,71,69,40,73,72,71,72,71,71,72,69,69,40,73,72,71,69,40,73,72,71,72,72,72,72,72,71,72,69,69,69,0,0,0,0,69,40,73,72,71,69,40,73,72,71,69,40,73,72,71,72,69,69,40,73,72,71,69,40,73,72,71,69,40,73,72,71,69,40,73,72,71,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,117,75,117,75,117,75,117,75,117,75,117,75,117,75,75,117,75,75,117,75,117,75,117,75,117,75,75,117,75,117,75,117,75,117,75,117,75,117,75,75,117,75,117,0,0,0,0,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,79,78,79,118,77,78,79,78,118,78,79,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,78,79,118,77,78,79,78,79,118,78,79,118,118,78,79,118,78,79,118,0,0,80,119,80,119,80,119,80,119,80,119,80,119,119,80,80,119,80,80,119,80,80,119,80,119,80,119,80,119,80,119,80,119,80,119,80,119,80,119,80,119,80,119,80,119,81,0,0,0,0,0,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,81,82,81,81,84,3,3,84,83,84,3,81,82,83,83,3,83,84,3,81,82,84,83,84,3,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,84,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,83,84,3,81,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,87,0,0,87,87,87,0,87,87,0,0,0,0,0,0,0,0,87,0,87,0,87,0,0,87,87,0,0,0,0,0,0,87,87,0,0,0,0,0,0,87,87,87,87,87,87,87,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,92,93,0,0,0,0,0,0,0,90,91,88,89,89,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,88,89,89,90,91,92,93,89,88,92,93,89,90,91,93,88,92,93,89,90,91,0,0,88,89,88,92,93,89,90,91,88,92,93,89,90,91,0,89,93,88,88,92,93,89,90,91,88,92,93,89,90,91,89,0,89,89,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,88,92,93,89,90,91,89,89,0,89,88,92,93,89,90,91,88,92,93,89,90,91,0,0,0,97,98,95,0,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,97,98,95,0,95,97,98,0,95,97,98,95,95,97,98,95,97,98,0,95,0,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,95,97,98,0,0,99,99,94,99,94,99,94,99,94,99,94,99,94,99,99,99,99,94,99,99,94,94,99,99,99,94,94,94,94,99,99,99,99,94,94,99,94,99,99,94,94,99,94,99,99,99,99,99,99,94,99,94,99,94,99,94,99,94,99,94,99,94,99,0,0,102,100,102,100,102,100,102,100,102,100,102,100,102,100,100,0,0,0,0,0,0,102,100,102,100,100,100,102,100,100,102,100,102,0,100,102,100,102,0,100,0,100,102,100,102,100,102,100,102,100,102,100,102,100,102,86,86,86,86,86,0,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,0,103,103,103,0,0,0,96,104,103,96,104,103,96,104,103,96,104,103,96,104,103,96,104,103,103,103,103,104,96,104,103,104,104,96,96,96,96,104,103,96,96,96,104,103,96,104,103,96,104,96,104,103,96,104,103,104,104,103,104,96,104,103,96,104,103,96,104,103,96,104,103,96,104,103,96,104,103,96,104,103,0,0,0,0,106,0,105,106,105,106,105,106,105,106,0,105,106,105,106,105,106,105,105,105,106,0,0,105,106,105,106,105,106,105,105,106,105,106,0,105,105,106,105,106,105,106,105,106,105,106,105,106,105,106,0,0,0,0,0,0,0,0,0,0,0,0,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101],"f":[0,0,[[]],0,[[]],[[]],[[]],[[],1],[[],1],[[]],0,0,[2,3],0,[[]],0,[[]],0,0,[[]],[[]],0,0,[[],4],[[]],[[]],0,0,0,0,0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[7,4],[[8,7],4],[7,7],[[],4],[8,4],[[],4],[8,4],[[]],[[]],[[]],[9,8],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[[]],[[]],[[]],[10],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[[11,12],13],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[14,15],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],0,[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],0,[[]],[16],[[]],[[],16],[[]],[[]],[[16,17]],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],0,[[]],[[]],[[16,17]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[18,3],[17,17],[[17,17],19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[17,17],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[17,17],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[],1],[[],1],[20,15],[[]],[[]],[[]],[[]],0,[[]],[[]],[[],21],[[]],[[]],[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[21],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],22],[[],23],[[],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[22,21],[23,21],[24,21],0,0,0,[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[22,22],[23,23],[24,24],[[]],[[]],[[]],[[22,22],25],[[23,23],25],[[24,24],25],[22,22],[23,23],[24,24],0,[[22,22],26],[[23,23],26],[[24,24],26],[[22,22],22],[[23,23],23],[[24,24],24],[[],22],[[],23],[[],24],[[22,22],26],[[23,23],26],[[24,24],26],[[22,27]],[[23,27]],[[24,27]],[[22,28],13],[[22,28],13],[[22,28],13],[[22,28],13],[[22,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[23,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[24,28],13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[21,[[1,[22]]]],[21,[[1,[23]]]],[21,[[1,[24]]]],[21,22],[21,23],[21,24],[21,22],[21,23],[21,24],[27,22],[27,23],[27,24],[29],[22],[23],[24],0,0,0,[30],[29],0,[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22],26],[[23,23],26],[[24,24],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[22,26],[23,26],[24,26],[22,26],[23,26],[24,26],0,0,0,0,0,0,[[22,22],26],[[23,23],26],[[24,24],26],[17,30],[[],29],[22,22],[23,23],[24,24],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,22],[[1,[25]]]],[[23,23],[[1,[25]]]],[[24,24],[[1,[25]]]],0,[30,[[1,[21]]]],[29,21],0,[30,31],[[22,22]],[[23,23]],[[24,24]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[22,22,26]],[[23,23,26]],[[24,24,26]],[[22,22],22],[[23,23],23],[[24,24],24],[[22,22]],[[23,23]],[[24,24]],[[22,22],22],[[23,23],23],[[24,24],24],0,[[]],[[]],[[]],[[22,22]],[[23,23]],[[24,24]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[22,22],22],[[23,23],23],[[24,24],24],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[30,21]],[[29,21]],[30,32],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[33,15],0,[[]],[34],[[]],[[]],[[]],[34],0,[[]],[[]],[[],34],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[34],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[35,15],[36,15],[[]],[[]],[[]],[[]],[37],[[]],[[]],[[]],[17,37],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[38,17,39],7],[[38,17,39],7],[39,39],[[]],[[38,17,39,7]],[[38,17,39,17]],[[38,17,39,17]],[[38,17,39,17]],[[]],[[]],[[38,17],7],[[38,17,39],7],[[17,39],17],[[]],[[]],[17,38],[[]],[[]],[[]],[[]],[[38,17],7],[[]],[[]],[[]],[[]],[[38,17,7]],[[38,17,39,7]],[[],17],[[38,17,39],7],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[40,17],[[],26],0,[[],26],[40,17],0,0,0,0,0,0,0,0,0,0,[[],41],[[]],[[]],[[]],[[]],[[41,41],41],[[41,41]],[[41,41],41],[[41,41]],[41,7],0,[[41,41],41],[[41,41]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[41,41],[[]],[[41,41],25],[41,41],[[41,41],26],[42,15],[[41,41],41],[[],41],[[41,41],26],[[41,27]],[[41,28],13],[[41,28],13],[[41,28],13],[[41,28],13],[[41,28],13],[[]],[[]],[[]],[[]],[7,[[1,[41]]]],[7,41],[7,41],[27,41],[41],0,0,[[41,41]],[[41,41],41],[[41,41],26],[[]],[[]],[[]],[[]],[41,26],[41,26],[[]],[[41,41],26],[[26,26,[15,[43]]],44],[41,41],0,[[12,41],[[1,[[15,[44]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[41,41],[[1,[25]]]],[[44,40],17],[44,[[45,[21]]]],[41],[44,26],0,[[41,41]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[41,41,26]],[[41,41],41],[[41,41]],[[41,41],41],[[]],[[41,41]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[41,41],41],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[44,26],0,[[44,40],17],0,0,0,0,0,0,0,[46,26],0,[46,17],[46,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[47,47],[[]],[[47,47],26],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[],46],[[]],[[]],[[]],[[]],[[]],[[]],[[48,40],17],[46,21],[[[15,[[3,[46]]]]],48],[48,26],0,[[]],[[]],[[]],[[]],[[]],[[]],[[46,15]],0,0,[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[48,26],0,[[48,40],17],[[46,21]],0,[[[15,[[3,[46]]]]],48],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[49,40],17],[[50,40],17],[49,26],[50,26],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[49,26],[50,26],[[49,40],17],[[50,40],17],[[]],[51,4],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[52,26],[53,26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[52,54],[53,55],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[52,52],[53,53],[54,54],[55,55],[[[57,[56]]],[[57,[56]]]],[[]],[[]],[[]],[[]],[[]],[[52,52],25],[[53,53],25],[[54,54],25],[[55,55],25],0,[[],5],0,[[52,52],26],[[53,53],26],[[54,54],26],[[55,55],26],[52,54],[53,55],[[52,28],13],[[53,28],13],[[54,28],13],[[55,28],13],[[]],[54,52],[[]],[17,52],[55,53],[[]],[17,53],[17,54],[52,54],[[]],[[]],[17,55],[53,55],[[]],[54],[57],[52],[54],[54],[52],[57],[55],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[57],0,[[52,52],26],[[53,53],26],[[54,54],26],[[55,55],26],[[],58],[[],57],[58,1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[52,17],[53,17],[[52,52],[[1,[25]]]],[[53,53],[[1,[25]]]],[[54,54],[[1,[25]]]],[[55,55],[[1,[25]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[54],[55],[[]],[[]],[[]],[[]],[[]],[59,60],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[],[[1,[54]]]],[61,[[1,[54]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],0,[54],[[61,54]],[62,3],[63],0,[[63,28],13],[[],[[1,[63]]]],[[]],[54],[[]],[[]],[[]],[[61,54,54]],[[]],[[]],[[]],[[]],[[]],[54,63],[[],61],[54,63],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[64,4],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,[65],[[],66],0,[[]],[[]],[[]],[[]],[[]],[[66,66],66],[[66,66]],[[66,66],66],[[66,66]],[66,21],0,[[66,66],66],[[66,66]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[67,67],[66,66],[[]],[[]],[[66,66],25],[66,66],[[66,66],26],[[68,69]],0,[70,15],[[66,66],66],0,0,0,[[],66],[[67,67],26],[[66,66],26],0,0,[[66,27]],[[67,28],13],[[66,28],13],[[66,28],13],[[66,28],13],[[66,28],13],[[66,28],13],[[]],[[]],[[]],[[]],[[]],[68,68],[21,[[1,[66]]]],[21,66],[21,66],[[]],[65,65],[27,66],[66],[[66,66]],[[65,53,53,66]],[[66,66],66],[[66,66],26],[[]],[[]],[[]],[[]],[[]],[66,26],[66,26],[[],17],[[68,69]],[[68,69,[57,[54]]]],[[68,69,55]],0,[65],0,[[66,66],26],[[53,53,67,66],68],[[],65],[[],65],[66,66],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[66,66],[[1,[25]]]],[[65,68,1]],[[65,68,[57,[54]]]],[65],[[]],[[66,66]],[[65,55]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[66,66,26]],0,0,0,[[66,66],66],[[66,66]],[[66,66],66],[[]],[[]],[[66,66]],[65,17],[[65,55],[[1,[71]]]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[66,66],66],[[68,69]],[[68,69,55]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[],72],[[]],[[]],[[]],[[]],[[]],[[72,72],72],[[72,72]],[[72,72],72],[[72,72]],[72,21],0,0,[[72,72],72],[[72,72]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[72,72],[71,71],[[]],[[]],[[72,72],25],[72,72],[[72,72],26],0,0,[[72,72],72],[[],72],[[],71],[[72,72],26],[71,26],[[72,27]],[[69,55],[[1,[71]]]],[[69,55],[[1,[71]]]],[71,72],[[72,28],13],[[72,28],13],[[72,28],13],[[72,28],13],[[72,28],13],0,[[]],[[]],[[]],[[]],[[]],[21,[[1,[72]]]],[21,72],[21,72],[27,72],[17,69],[72],[[72,72]],[[72,72],72],[[72,72],26],[[]],[[]],[[]],[[]],[[]],[40],[[]],[72,26],[72,26],[71,26],[40,17],[[69,55,54,72]],[[72,72],26],[[],69],[45,40],[[54,72],71],[73,1],[72,72],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[72,72],[[1,[25]]]],[71,54],[71,26],[[72,72]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[72,72,26]],[[72,72],72],[[72,72]],[[72,72],72],[[]],[[]],[[72,72]],[69,17],[[69,55],[[1,[71]]]],[[69,53],[[1,[52]]]],[[17,21,17],45],[17],[17],[[17,21],74],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[72,72],72],[[69,55]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[71,26],0,0,0,0,0,0,0,0,0,[[],17],[17],[[17,17,17,17],17],[17],[17,4],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[]],[[]],0,[[]],[[]],[[],75],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[75],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[75,76],0,[[75,[15,[77]]]],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[78],[79],0,0,[[],78],[[],79],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[78],[79],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],0,[80],[[]],[[]],0,[[]],[[]],[17,80],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[80],0,[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[81],[82,83],[81],[81],[84],[3,81],[3],[84],[[]],[[]],[[]],[[]],[[]],[83],0,0,[[]],[[]],[[]],[[]],[[]],0,[[],83],[[],84],[[],3],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[17,85],0,[17,85],[17,85],[[21,7],85],[17,85],[[17,21,17],85],[[17,21,17],85],0,[[],85],[[],85],[[21,17],85],[19,4],[[],85],[[],85],[[],85],[[17,7],85],[[85,19],85],[[],85],[17,85],[17,85],[[17,17],85],[26,85],[17,85],[17,85],[17,85],[17,85],[17,85],[17,85],[[],85],[[17,17],85],[17,19],0,0,0,0,0,0,0,0,0,[[]],0,[[]],[[]],[[],76],[[]],[[]],[[]],[[],1],[[],1],[[],1],0,[86],0,0,0,0,0,0,[87,15],[19],[[]],0,[[]],0,0,[[]],[[]],0,0,0,0,0,0,[[]],[[]],0,0,[[]],0,0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0,[[]],[[]],[[]],[[]],[[],1],[[],1],[[]],[17,76],[[]],[[]],[[]],0,0,[[]],[[]],0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],[[],76],0,0,0,0,0,0,0,0,0,0,0,[88,17],[89],[89],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],0,[[88,17]],[89],[89],[90,3],[91,3],[92],[93],[89],[[]],[[]],[[]],[[]],[[]],[[]],[93,17],[[]],[[]],[[]],[[]],[[]],[[]],[17],[[],93],[[],88],[[[15,[94]],17,26],89],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],92],0,[93],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[17,17],[89,54],[89,17],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[89,17],0,[[17,17],17],[89,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[95,[15,[96]]]],[[[15,[96]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[97,3],[98,3],[95,[[1,[[15,[96]]]]]],[[],[[1,[[15,[96]]]]]],[[]],[[]],[[]],[[17,[15,[94]]]],[[]],[[]],[[]],[[],95],[[]],[[]],[[]],[[]],[[]],[[]],[17,[[1,[[15,[94]]]]]],0,[17],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[99,17],[99,17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],0,0,[[99,17]],[[15,[45,[74]]]],0,0,[15,[[15,[94]]]],[[]],[[]],[[99,17],[[15,[96]]]],[99,17],[94,17],0,[94,[[81,[99]]]],[[]],[[]],0,0,0,[[],[[15,[94]]]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],0,0,0,0,[99,17],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[100,[[1,[[15,[96]]]]]],0,[[],17],[[],[[15,[94]]]],[[],[[1,[[15,[96]]]]]],[[],101],[[],17],[[],17],[102,3],[[]],[[]],[100,76],0,[[]],[[]],[[],100],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[76],[100,[[1,[[15,[96]]]]]],[[],[[1,[[15,[96]]]]]],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[],86],[[]],[[86,86],86],[[86,86]],[[86,86],86],[[86,86]],[86,7],0,[[86,86],86],[[86,86]],[[]],[[]],[[]],[86,1],[[],1],[[],1],[86,86],[[]],[[86,86],25],[86,86],[[86,86],26],[[86,86],86],[[],86],[[86,86],26],[[86,27]],[[86,28],13],[[86,28],13],[[86,28],13],[[86,28],13],[[86,28],13],[[]],[7,[[1,[86]]]],[7,86],[7,86],[27,86],[86],[[86,86]],[[86,86],86],[[86,86],26],[[]],[86,26],[86,26],[[86,86],26],[86,86],[[]],[[]],[[86,86],[[1,[25]]]],[[86,86]],[[]],[[]],[[86,86,26]],[[86,86],86],[[86,86]],[[86,86],86],[[]],[[86,86]],[[],5],[[],5],[[],6],[[86,86],86],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[],1],[[],1],[103,103],[[]],[[103,103],26],0,[[]],[[]],[[]],[104,103],[104,101],[96,17],0,[96,[[81,[104]]]],[[]],[[]],[[]],0,[[[15,[94]],17,26],96],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],0,[[],5],[[],5],[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[17,[15,[96]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],[[],1],[[],1],[[105,105],25],[106,3],[[105,105],26],0,[[]],[[]],[[],17],[[],17],[[]],[[]],[[]],[[]],[[]],[[]],[[105,105],[[1,[25]]]],[[]],[[]],[[]],[[]],[[]],0,[[],5],[[],5],[[],5],[[],5],[[],6],[[],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[101],[[],4],[[],4],0,[[17,17,17,17,17],101],[[]],[[]],[[]],[[]],[[],1],[[],1],[[101,28],13],[[]],[[]],0,0,[[]],[[]],[[]],[[]],0,[[101,17]],0,0,[[],5],[[],5],[[],6],[[]],[[]],[[]],[[]],0],"p":[[4,"Option"],[3,"DEV_NON_BLOCKING_ACCESS"],[3,"UPIntrFreeCell"],[15,"never"],[4,"Result"],[3,"TypeId"],[15,"u32"],[3,"RISCV64"],[15,"u64"],[3,"Arguments"],[3,"Stdout"],[15,"str"],[6,"Result"],[3,"BLOCK_DEVICE"],[3,"Arc"],[3,"VirtIOBlock"],[15,"usize"],[3,"QUEUE_FRAMES"],[15,"i32"],[3,"UART"],[15,"u8"],[3,"IER"],[3,"LSR"],[3,"MCR"],[4,"Ordering"],[15,"bool"],[8,"IntoIterator"],[3,"Formatter"],[3,"NS16550a"],[3,"NS16550aRaw"],[3,"ReadWithoutDLAB"],[3,"WriteWithoutDLAB"],[3,"GPU_DEVICE"],[3,"VirtIOGpuWrapper"],[3,"KEYBOARD_DEVICE"],[3,"MOUSE_DEVICE"],[3,"VirtIOInputWrapper"],[3,"PLIC"],[4,"IntrTargetPriority"],[3,"UserBuffer"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"Inode"],[3,"OSInode"],[3,"Vec"],[3,"PipeRingBuffer"],[4,"RingBufferStatus"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PanicInfo"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[8,"Clone"],[3,"SimpleRange"],[3,"SimpleRangeIterator"],[3,"Point"],[3,"Translated"],[3,"StackFrameAllocator"],[3,"FRAME_ALLOCATOR"],[3,"FrameTracker"],[3,"Layout"],[3,"MemorySet"],[3,"MapPermission"],[4,"MapType"],[3,"MapArea"],[3,"PageTable"],[3,"KERNEL_SPACE"],[3,"PageTableEntry"],[3,"PTEFlags"],[3,"UserBufferIterator"],[3,"String"],[3,"Condvar"],[3,"TaskContext"],[8,"Mutex"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"Semaphore"],[3,"UPIntrRefMut"],[3,"INTR_MASKING_INFO"],[3,"UPSafeCellRaw"],[3,"IntrMaskingInfo"],[15,"isize"],[3,"SignalFlags"],[3,"INITPROC"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"PidHandle"],[3,"KernelStack"],[3,"ProcessControlBlock"],[3,"TaskManager"],[3,"TaskControlBlock"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"ProcessControlBlockInner"],[3,"Processor"],[3,"TrapContext"],[3,"PROCESSOR"],[4,"TaskStatus"],[3,"TaskControlBlockInner"],[3,"TimerCondVar"],[3,"TIMERS"],[8,"QEMUExit"],[3,"VirtioHal"],[8,"CharDevice"],[3,"NS16550aInner"],[8,"GpuDevice"],[8,"InputDevice"],[8,"File"],[3,"OSInodeInner"],[8,"StepByOne"],[8,"FrameAllocator"],[3,"CondvarInner"],[3,"MutexBlockingInner"],[3,"SemaphoreInner"]]}\
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/ch9-gui-dev/source-files.js b/ch9-gui-dev/source-files.js
index d9c92132..49bf6abc 100644
--- a/ch9-gui-dev/source-files.js
+++ b/ch9-gui-dev/source-files.js
@@ -1,4 +1,4 @@
var sourcesIndex = JSON.parse('{\
-"os":["",[["boards",[],["qemu.rs"]],["drivers",[["block",[],["mod.rs","virtio_blk.rs"]],["bus",[],["mod.rs","virtio.rs"]],["chardev",[],["mod.rs","ns16550a.rs"]],["gpu",[],["mod.rs"]],["input",[],["mod.rs"]]],["mod.rs","plic.rs"]],["fs",[],["inode.rs","mod.rs","pipe.rs","stdio.rs"]],["gui",[],["graphic.rs","mod.rs","paint.rs"]],["mm",[],["address.rs","frame_allocator.rs","heap_allocator.rs","memory_set.rs","mod.rs","page_table.rs"]],["sync",[],["condvar.rs","mod.rs","mutex.rs","semaphore.rs","up.rs"]],["syscall",[],["fs.rs","gui.rs","mod.rs","process.rs","sync.rs","thread.rs"]],["task",[],["context.rs","id.rs","manager.rs","mod.rs","process.rs","processor.rs","signal.rs","switch.rs","task.rs"]],["trap",[],["context.rs","mod.rs"]]],["config.rs","console.rs","lang_items.rs","main.rs","sbi.rs","timer.rs"]]\
+"os":["",[["boards",[],["qemu.rs"]],["drivers",[["block",[],["mod.rs","virtio_blk.rs"]],["bus",[],["mod.rs","virtio.rs"]],["chardev",[],["mod.rs","ns16550a.rs"]],["gpu",[],["mod.rs"]],["input",[],["mod.rs"]]],["mod.rs","plic.rs"]],["fs",[],["inode.rs","mod.rs","pipe.rs","stdio.rs"]],["mm",[],["address.rs","frame_allocator.rs","heap_allocator.rs","memory_set.rs","mod.rs","page_table.rs"]],["sync",[],["condvar.rs","mod.rs","mutex.rs","semaphore.rs","up.rs"]],["syscall",[],["fs.rs","gui.rs","mod.rs","process.rs","sync.rs","thread.rs"]],["task",[],["context.rs","id.rs","manager.rs","mod.rs","process.rs","processor.rs","signal.rs","switch.rs","task.rs"]],["trap",[],["context.rs","mod.rs"]]],["config.rs","console.rs","lang_items.rs","main.rs","sbi.rs","timer.rs"]]\
}');
createSourceSidebar();
diff --git a/ch9-gui-dev/src/os/drivers/input/mod.rs.html b/ch9-gui-dev/src/os/drivers/input/mod.rs.html
index 0a1f6aa8..997077a8 100644
--- a/ch9-gui-dev/src/os/drivers/input/mod.rs.html
+++ b/ch9-gui-dev/src/os/drivers/input/mod.rs.html
@@ -55,29 +55,8 @@
555657
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
\ No newline at end of file
diff --git a/ch9-gui-dev/src/os/main.rs.html b/ch9-gui-dev/src/os/main.rs.html
index 357046ea..57981c40 100644
--- a/ch9-gui-dev/src/os/main.rs.html
+++ b/ch9-gui-dev/src/os/main.rs.html
@@ -75,7 +75,6 @@
757677
-78