From 4e5b3e87b97636ea38638ccc67a182b80d2d8de7 Mon Sep 17 00:00:00 2001 From: wyfcyx Date: Sat, 16 Apr 2022 22:58:03 +0000 Subject: [PATCH] deploy: cc1e55c95886fbeb8801f1b857d1143a8d56cfb7 --- ch8/ayu.css | 2 +- ch8/dark.css | 2 +- ch8/light.css | 2 +- ch8/main.js | 2 +- ch8/os/all.html | 8 +- ch8/os/board/constant.CLOCK_FREQ.html | 10 +- ch8/os/board/constant.MMIO.html | 10 +- ch8/os/board/index.html | 12 +- ch8/os/board/type.BlockDeviceImpl.html | 10 +- ch8/os/config/constant.KERNEL_HEAP_SIZE.html | 10 +- ch8/os/config/constant.KERNEL_STACK_SIZE.html | 10 +- ch8/os/config/constant.MEMORY_END.html | 10 +- ch8/os/config/constant.PAGE_SIZE.html | 10 +- ch8/os/config/constant.PAGE_SIZE_BITS.html | 10 +- ch8/os/config/constant.TRAMPOLINE.html | 10 +- ch8/os/config/constant.TRAP_CONTEXT_BASE.html | 10 +- ch8/os/config/constant.USER_STACK_SIZE.html | 10 +- ch8/os/config/index.html | 12 +- ch8/os/console/fn.print.html | 10 +- ch8/os/console/index.html | 14 +- ch8/os/console/struct.Stdout.html | 36 +-- .../drivers/block/fn.block_device_test.html | 10 +- ch8/os/drivers/block/index.html | 14 +- .../drivers/block/sdcard/constant.SD_CS.html | 18 +- .../block/sdcard/constant.SD_CS_GPIONUM.html | 12 +- ...ant.SD_START_DATA_MULTIPLE_BLOCK_READ.html | 12 +- ...nt.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html | 12 +- ...stant.SD_START_DATA_SINGLE_BLOCK_READ.html | 12 +- ...tant.SD_START_DATA_SINGLE_BLOCK_WRITE.html | 12 +- .../block/sdcard/constant.SEC_LEN.html | 10 +- ch8/os/drivers/block/sdcard/enum.CMD.html | 48 ++-- .../drivers/block/sdcard/enum.InitError.html | 44 ++-- .../drivers/block/sdcard/fn.init_sdcard.html | 10 +- ch8/os/drivers/block/sdcard/fn.io_init.html | 12 +- ch8/os/drivers/block/sdcard/index.html | 31 ++- ch8/os/drivers/block/sdcard/sidebar-items.js | 2 +- .../block/sdcard/struct.PERIPHERALS.html | 38 ++-- .../drivers/block/sdcard/struct.SDCard.html | 32 +-- .../block/sdcard/struct.SDCardCID.html | 48 ++-- .../block/sdcard/struct.SDCardCSD.html | 48 ++-- .../block/sdcard/struct.SDCardInfo.html | 48 ++-- .../block/sdcard/struct.SDCardWrapper.html | 30 +-- ch8/os/drivers/block/struct.BLOCK_DEVICE.html | 36 +-- .../block/virtio_blk/constant.VIRTIO0.html | 10 +- .../block/virtio_blk/fn.virtio_dma_alloc.html | 12 +- .../virtio_blk/fn.virtio_dma_dealloc.html | 12 +- .../virtio_blk/fn.virtio_phys_to_virt.html | 12 +- .../virtio_blk/fn.virtio_virt_to_phys.html | 12 +- ch8/os/drivers/block/virtio_blk/index.html | 16 +- .../block/virtio_blk/struct.QUEUE_FRAMES.html | 38 ++-- .../block/virtio_blk/struct.VirtIOBlock.html | 30 +-- ch8/os/drivers/index.html | 12 +- ch8/os/fn.clear_bss.html | 10 +- ch8/os/fn.rust_main.html | 12 +- ch8/os/fs/index.html | 14 +- ch8/os/fs/inode/fn.list_apps.html | 10 +- ch8/os/fs/inode/fn.open_file.html | 10 +- ch8/os/fs/inode/index.html | 12 +- ch8/os/fs/inode/struct.OSInode.html | 32 +-- ch8/os/fs/inode/struct.OSInodeInner.html | 32 +-- ch8/os/fs/inode/struct.OpenFlags.html | 156 ++++++------- ch8/os/fs/inode/struct.ROOT_INODE.html | 36 +-- ch8/os/fs/pipe/constant.RING_BUFFER_SIZE.html | 10 +- ch8/os/fs/pipe/enum.RingBufferStatus.html | 46 ++-- ch8/os/fs/pipe/fn.make_pipe.html | 12 +- ch8/os/fs/pipe/index.html | 16 +- ch8/os/fs/pipe/struct.Pipe.html | 32 +-- ch8/os/fs/pipe/struct.PipeRingBuffer.html | 32 +-- ch8/os/fs/stdio/index.html | 12 +- ch8/os/fs/stdio/struct.Stdin.html | 30 +-- ch8/os/fs/stdio/struct.Stdout.html | 30 +-- ch8/os/fs/trait.File.html | 18 +- ch8/os/index.html | 14 +- ch8/os/lang_items/fn.backtrace.html | 10 +- ch8/os/lang_items/fn.panic.html | 10 +- ch8/os/lang_items/index.html | 12 +- ch8/os/macro.print.html | 12 +- ch8/os/macro.println.html | 12 +- ch8/os/mm/address/constant.PA_WIDTH_SV39.html | 10 +- .../mm/address/constant.PPN_WIDTH_SV39.html | 10 +- ch8/os/mm/address/constant.VA_WIDTH_SV39.html | 10 +- .../mm/address/constant.VPN_WIDTH_SV39.html | 10 +- ch8/os/mm/address/index.html | 14 +- ch8/os/mm/address/struct.PhysAddr.html | 76 ++++--- ch8/os/mm/address/struct.PhysPageNum.html | 72 +++--- ch8/os/mm/address/struct.SimpleRange.html | 48 ++-- .../address/struct.SimpleRangeIterator.html | 185 ++++++++-------- ch8/os/mm/address/struct.VirtAddr.html | 74 ++++--- ch8/os/mm/address/struct.VirtPageNum.html | 72 +++--- ch8/os/mm/address/trait.StepByOne.html | 12 +- ch8/os/mm/address/type.VPNRange.html | 10 +- ch8/os/mm/fn.init.html | 10 +- ch8/os/mm/frame_allocator/fn.frame_alloc.html | 10 +- .../fn.frame_allocator_test.html | 10 +- .../mm/frame_allocator/fn.frame_dealloc.html | 10 +- .../fn.init_frame_allocator.html | 10 +- ch8/os/mm/frame_allocator/index.html | 14 +- .../struct.FRAME_ALLOCATOR.html | 38 ++-- .../frame_allocator/struct.FrameTracker.html | 36 +-- .../struct.StackFrameAllocator.html | 32 +-- .../frame_allocator/trait.FrameAllocator.html | 16 +- .../type.FrameAllocatorImpl.html | 10 +- .../heap_allocator/fn.handle_alloc_error.html | 10 +- ch8/os/mm/heap_allocator/fn.heap_test.html | 10 +- ch8/os/mm/heap_allocator/fn.init_heap.html | 10 +- ch8/os/mm/heap_allocator/index.html | 14 +- .../heap_allocator/static.HEAP_ALLOCATOR.html | 10 +- .../mm/heap_allocator/static.HEAP_SPACE.html | 10 +- ch8/os/mm/index.html | 14 +- ch8/os/mm/memory_set/enum.MapType.html | 48 ++-- ch8/os/mm/memory_set/fn.ebss.html | 10 +- ch8/os/mm/memory_set/fn.edata.html | 10 +- ch8/os/mm/memory_set/fn.ekernel.html | 10 +- ch8/os/mm/memory_set/fn.erodata.html | 10 +- ch8/os/mm/memory_set/fn.etext.html | 10 +- ch8/os/mm/memory_set/fn.kernel_token.html | 10 +- ch8/os/mm/memory_set/fn.remap_test.html | 10 +- ch8/os/mm/memory_set/fn.sbss_with_stack.html | 10 +- ch8/os/mm/memory_set/fn.sdata.html | 10 +- ch8/os/mm/memory_set/fn.srodata.html | 10 +- ch8/os/mm/memory_set/fn.stext.html | 10 +- ch8/os/mm/memory_set/fn.strampoline.html | 10 +- ch8/os/mm/memory_set/index.html | 12 +- ch8/os/mm/memory_set/struct.KERNEL_SPACE.html | 36 +-- ch8/os/mm/memory_set/struct.MapArea.html | 34 +-- .../mm/memory_set/struct.MapPermission.html | 154 ++++++------- ch8/os/mm/memory_set/struct.MemorySet.html | 40 ++-- .../page_table/fn.translated_byte_buffer.html | 10 +- ch8/os/mm/page_table/fn.translated_ref.html | 10 +- .../mm/page_table/fn.translated_refmut.html | 10 +- ch8/os/mm/page_table/fn.translated_str.html | 12 +- ch8/os/mm/page_table/index.html | 12 +- ch8/os/mm/page_table/struct.PTEFlags.html | 154 ++++++------- ch8/os/mm/page_table/struct.PageTable.html | 36 +-- .../mm/page_table/struct.PageTableEntry.html | 42 ++-- ch8/os/mm/page_table/struct.UserBuffer.html | 38 ++-- .../page_table/struct.UserBufferIterator.html | 185 ++++++++-------- ch8/os/sbi/constant.SBI_CLEAR_IPI.html | 10 +- ch8/os/sbi/constant.SBI_CONSOLE_GETCHAR.html | 10 +- ch8/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html | 10 +- ch8/os/sbi/constant.SBI_REMOTE_FENCE_I.html | 10 +- .../sbi/constant.SBI_REMOTE_SFENCE_VMA.html | 10 +- .../constant.SBI_REMOTE_SFENCE_VMA_ASID.html | 10 +- ch8/os/sbi/constant.SBI_SEND_IPI.html | 10 +- ch8/os/sbi/constant.SBI_SET_TIMER.html | 10 +- ch8/os/sbi/constant.SBI_SHUTDOWN.html | 10 +- ch8/os/sbi/fn.console_getchar.html | 10 +- ch8/os/sbi/fn.console_putchar.html | 10 +- ch8/os/sbi/fn.sbi_call.html | 10 +- ch8/os/sbi/fn.set_timer.html | 10 +- ch8/os/sbi/fn.shutdown.html | 10 +- ch8/os/sbi/index.html | 14 +- ch8/os/sync/condvar/index.html | 12 +- ch8/os/sync/condvar/struct.Condvar.html | 32 +-- ch8/os/sync/condvar/struct.CondvarInner.html | 32 +-- ch8/os/sync/index.html | 12 +- ch8/os/sync/mutex/index.html | 12 +- ch8/os/sync/mutex/struct.MutexBlocking.html | 32 +-- .../sync/mutex/struct.MutexBlockingInner.html | 32 +-- ch8/os/sync/mutex/struct.MutexSpin.html | 32 +-- ch8/os/sync/mutex/trait.Mutex.html | 14 +- ch8/os/sync/semaphore/index.html | 12 +- ch8/os/sync/semaphore/struct.Semaphore.html | 32 +-- .../sync/semaphore/struct.SemaphoreInner.html | 32 +-- ch8/os/sync/up/index.html | 12 +- ch8/os/sync/up/struct.UPSafeCell.html | 36 +-- ch8/os/syscall/constant.SYSCALL_CLOSE.html | 10 +- .../constant.SYSCALL_CONDVAR_CREATE.html | 10 +- .../constant.SYSCALL_CONDVAR_SIGNAL.html | 10 +- .../constant.SYSCALL_CONDVAR_WAIT.html | 10 +- ch8/os/syscall/constant.SYSCALL_DUP.html | 10 +- ch8/os/syscall/constant.SYSCALL_EXEC.html | 10 +- ch8/os/syscall/constant.SYSCALL_EXIT.html | 10 +- ch8/os/syscall/constant.SYSCALL_FORK.html | 10 +- ch8/os/syscall/constant.SYSCALL_GETPID.html | 10 +- ch8/os/syscall/constant.SYSCALL_GETTID.html | 10 +- ch8/os/syscall/constant.SYSCALL_GET_TIME.html | 10 +- ch8/os/syscall/constant.SYSCALL_KILL.html | 10 +- .../constant.SYSCALL_MUTEX_CREATE.html | 10 +- .../syscall/constant.SYSCALL_MUTEX_LOCK.html | 10 +- .../constant.SYSCALL_MUTEX_UNLOCK.html | 10 +- ch8/os/syscall/constant.SYSCALL_OPEN.html | 10 +- ch8/os/syscall/constant.SYSCALL_PIPE.html | 10 +- ch8/os/syscall/constant.SYSCALL_READ.html | 10 +- .../constant.SYSCALL_SEMAPHORE_CREATE.html | 10 +- .../constant.SYSCALL_SEMAPHORE_DOWN.html | 10 +- .../constant.SYSCALL_SEMAPHORE_UP.html | 10 +- ch8/os/syscall/constant.SYSCALL_SLEEP.html | 10 +- .../constant.SYSCALL_THREAD_CREATE.html | 10 +- ch8/os/syscall/constant.SYSCALL_WAITPID.html | 10 +- ch8/os/syscall/constant.SYSCALL_WAITTID.html | 10 +- ch8/os/syscall/constant.SYSCALL_WRITE.html | 10 +- ch8/os/syscall/constant.SYSCALL_YIELD.html | 10 +- ch8/os/syscall/fn.syscall.html | 10 +- ch8/os/syscall/fs/fn.sys_close.html | 10 +- ch8/os/syscall/fs/fn.sys_dup.html | 10 +- ch8/os/syscall/fs/fn.sys_open.html | 10 +- ch8/os/syscall/fs/fn.sys_pipe.html | 10 +- ch8/os/syscall/fs/fn.sys_read.html | 10 +- ch8/os/syscall/fs/fn.sys_write.html | 10 +- ch8/os/syscall/fs/index.html | 12 +- ch8/os/syscall/index.html | 16 +- ch8/os/syscall/process/fn.sys_exec.html | 10 +- ch8/os/syscall/process/fn.sys_exit.html | 10 +- ch8/os/syscall/process/fn.sys_fork.html | 10 +- ch8/os/syscall/process/fn.sys_get_time.html | 10 +- ch8/os/syscall/process/fn.sys_getpid.html | 10 +- ch8/os/syscall/process/fn.sys_kill.html | 10 +- ch8/os/syscall/process/fn.sys_waitpid.html | 12 +- ch8/os/syscall/process/fn.sys_yield.html | 10 +- ch8/os/syscall/process/index.html | 12 +- .../syscall/sync/fn.sys_condvar_create.html | 10 +- .../syscall/sync/fn.sys_condvar_signal.html | 10 +- ch8/os/syscall/sync/fn.sys_condvar_wait.html | 10 +- ch8/os/syscall/sync/fn.sys_mutex_create.html | 10 +- ch8/os/syscall/sync/fn.sys_mutex_lock.html | 10 +- ch8/os/syscall/sync/fn.sys_mutex_unlock.html | 10 +- .../syscall/sync/fn.sys_semaphore_create.html | 10 +- .../syscall/sync/fn.sys_semaphore_down.html | 10 +- ch8/os/syscall/sync/fn.sys_semaphore_up.html | 10 +- ch8/os/syscall/sync/fn.sys_sleep.html | 10 +- ch8/os/syscall/sync/index.html | 12 +- ch8/os/syscall/thread/fn.sys_gettid.html | 10 +- .../syscall/thread/fn.sys_thread_create.html | 10 +- ch8/os/syscall/thread/fn.sys_waittid.html | 12 +- ch8/os/syscall/thread/index.html | 12 +- ch8/os/task/context/index.html | 12 +- ch8/os/task/context/struct.TaskContext.html | 32 +-- ch8/os/task/fn.add_initproc.html | 10 +- .../task/fn.block_current_and_run_next.html | 10 +- ch8/os/task/fn.check_signals_of_current.html | 10 +- ch8/os/task/fn.current_add_signal.html | 10 +- ch8/os/task/fn.exit_current_and_run_next.html | 10 +- .../task/fn.suspend_current_and_run_next.html | 10 +- ch8/os/task/id/fn.kernel_stack_position.html | 12 +- ch8/os/task/id/fn.kstack_alloc.html | 10 +- ch8/os/task/id/fn.pid_alloc.html | 10 +- .../task/id/fn.trap_cx_bottom_from_tid.html | 10 +- ch8/os/task/id/fn.ustack_bottom_from_tid.html | 10 +- ch8/os/task/id/index.html | 14 +- ch8/os/task/id/struct.KSTACK_ALLOCATOR.html | 38 ++-- ch8/os/task/id/struct.KernelStack.html | 32 +-- ch8/os/task/id/struct.PID_ALLOCATOR.html | 38 ++-- ch8/os/task/id/struct.PidHandle.html | 32 +-- ch8/os/task/id/struct.RecycleAllocator.html | 32 +-- ch8/os/task/id/struct.TaskUserRes.html | 34 +-- ch8/os/task/index.html | 14 +- ch8/os/task/manager/fn.add_task.html | 10 +- ch8/os/task/manager/fn.fetch_task.html | 10 +- .../manager/fn.insert_into_pid2process.html | 10 +- ch8/os/task/manager/fn.pid2process.html | 10 +- .../manager/fn.remove_from_pid2process.html | 10 +- ch8/os/task/manager/index.html | 12 +- ch8/os/task/manager/struct.PID2PCB.html | 38 ++-- ch8/os/task/manager/struct.TASK_MANAGER.html | 38 ++-- ch8/os/task/manager/struct.TaskManager.html | 34 +-- ch8/os/task/process/index.html | 12 +- .../process/struct.ProcessControlBlock.html | 36 +-- .../struct.ProcessControlBlockInner.html | 32 +-- .../task/processor/fn.current_kstack_top.html | 10 +- ch8/os/task/processor/fn.current_process.html | 10 +- ch8/os/task/processor/fn.current_task.html | 10 +- ch8/os/task/processor/fn.current_trap_cx.html | 10 +- .../processor/fn.current_trap_cx_user_va.html | 10 +- .../task/processor/fn.current_user_token.html | 10 +- ch8/os/task/processor/fn.run_tasks.html | 10 +- ch8/os/task/processor/fn.schedule.html | 10 +- .../task/processor/fn.take_current_task.html | 10 +- ch8/os/task/processor/index.html | 12 +- ch8/os/task/processor/struct.PROCESSOR.html | 38 ++-- ch8/os/task/processor/struct.Processor.html | 32 +-- ch8/os/task/signal/index.html | 12 +- ch8/os/task/signal/struct.SignalFlags.html | 154 ++++++------- ch8/os/task/struct.INITPROC.html | 36 +-- ch8/os/task/switch/fn.__switch.html | 10 +- ch8/os/task/switch/index.html | 12 +- ch8/os/task/task/enum.TaskStatus.html | 46 ++-- ch8/os/task/task/index.html | 12 +- ch8/os/task/task/struct.TaskControlBlock.html | 32 +-- .../task/struct.TaskControlBlockInner.html | 32 +-- ch8/os/timer/constant.MSEC_PER_SEC.html | 10 +- ch8/os/timer/constant.TICKS_PER_SEC.html | 10 +- ch8/os/timer/fn.add_timer.html | 10 +- ch8/os/timer/fn.check_timer.html | 10 +- ch8/os/timer/fn.get_time.html | 10 +- ch8/os/timer/fn.get_time_ms.html | 10 +- ch8/os/timer/fn.set_next_trigger.html | 10 +- ch8/os/timer/index.html | 16 +- ch8/os/timer/struct.TIMERS.html | 38 ++-- ch8/os/timer/struct.TimerCondVar.html | 54 ++--- ch8/os/trap/context/index.html | 12 +- ch8/os/trap/context/struct.TrapContext.html | 34 +-- ch8/os/trap/fn.enable_timer_interrupt.html | 10 +- ch8/os/trap/fn.init.html | 10 +- ch8/os/trap/fn.set_kernel_trap_entry.html | 10 +- ch8/os/trap/fn.set_user_trap_entry.html | 10 +- ch8/os/trap/fn.trap_from_kernel.html | 12 +- ch8/os/trap/fn.trap_handler.html | 12 +- ch8/os/trap/fn.trap_return.html | 12 +- ch8/os/trap/index.html | 14 +- ch8/rustdoc.css | 2 +- ch8/search-index.js | 2 +- ch8/search.js | 4 +- ch8/settings.css | 2 +- ch8/settings.html | 19 +- ch8/settings.js | 2 +- ch8/source-script.js | 2 +- ch8/src/os/boards/qemu.rs.html | 10 +- ch8/src/os/config.rs.html | 26 ++- ch8/src/os/console.rs.html | 26 ++- ch8/src/os/drivers/block/mod.rs.html | 26 ++- ch8/src/os/drivers/block/sdcard.rs.html | 206 +++++++++--------- ch8/src/os/drivers/block/virtio_blk.rs.html | 26 ++- ch8/src/os/drivers/mod.rs.html | 10 +- ch8/src/os/fs/inode.rs.html | 206 +++++++++--------- ch8/src/os/fs/mod.rs.html | 26 ++- ch8/src/os/fs/pipe.rs.html | 206 +++++++++--------- ch8/src/os/fs/stdio.rs.html | 26 ++- ch8/src/os/lang_items.rs.html | 26 ++- ch8/src/os/main.rs.html | 26 ++- ch8/src/os/mm/address.rs.html | 206 +++++++++--------- ch8/src/os/mm/frame_allocator.rs.html | 206 +++++++++--------- ch8/src/os/mm/heap_allocator.rs.html | 26 ++- ch8/src/os/mm/memory_set.rs.html | 206 +++++++++--------- ch8/src/os/mm/mod.rs.html | 26 ++- ch8/src/os/mm/page_table.rs.html | 206 +++++++++--------- ch8/src/os/sbi.rs.html | 26 ++- ch8/src/os/sync/condvar.rs.html | 26 ++- ch8/src/os/sync/mod.rs.html | 10 +- ch8/src/os/sync/mutex.rs.html | 26 ++- ch8/src/os/sync/semaphore.rs.html | 26 ++- ch8/src/os/sync/up.rs.html | 26 ++- ch8/src/os/syscall/fs.rs.html | 26 ++- ch8/src/os/syscall/mod.rs.html | 26 ++- ch8/src/os/syscall/process.rs.html | 206 +++++++++--------- ch8/src/os/syscall/sync.rs.html | 206 +++++++++--------- ch8/src/os/syscall/thread.rs.html | 26 ++- ch8/src/os/task/context.rs.html | 26 ++- ch8/src/os/task/id.rs.html | 206 +++++++++--------- ch8/src/os/task/manager.rs.html | 26 ++- ch8/src/os/task/mod.rs.html | 206 +++++++++--------- ch8/src/os/task/process.rs.html | 206 +++++++++--------- ch8/src/os/task/processor.rs.html | 206 +++++++++--------- ch8/src/os/task/signal.rs.html | 26 ++- ch8/src/os/task/switch.rs.html | 10 +- ch8/src/os/task/task.rs.html | 26 ++- ch8/src/os/timer.rs.html | 26 ++- ch8/src/os/trap/context.rs.html | 26 ++- ch8/src/os/trap/mod.rs.html | 206 +++++++++--------- ch8/storage.js | 2 +- 350 files changed, 5173 insertions(+), 4355 deletions(-) diff --git a/ch8/ayu.css b/ch8/ayu.css index dea87bf1..50d893e2 100644 --- a/ch8/ayu.css +++ b/ch8/ayu.css @@ -1 +1 @@ - body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 #24292f;}.sidebar{scrollbar-color:#5c6773 #24292f;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#14191f;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ffa0a5;}.content span.union,.content a.union{color:#ffa0a5;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#39AFD7;}.content span.primitive,.content a.primitive{color:#ffa0a5;}.content span.traitalias,.content a.traitalias{color:#39AFD7;}.content span.keyword,.content a.keyword{color:#39AFD7;}.content span.externcrate,.content span.mod,.content a.mod{color:#39AFD7;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#ffa0a5;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#39AFD7;}.content span.type,.content a.type,.block a.current.type{color:#39AFD7;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#39AFD7;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#39AFD7;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#c5c5c5;}.search-results a{color:#0096cf;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.typedef,.content a.typedef,.block a.current.typedef{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-associatedtype:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;} \ No newline at end of file + body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#14191f;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 #24292f;}.sidebar{scrollbar-color:#5c6773 #24292f;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current,.sidebar a:hover{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#14191f;}.sidebar-elems .location{color:#ff7733;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ffa0a5;}.content span.union,.content a.union{color:#ffa0a5;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#39AFD7;}.content span.primitive,.content a.primitive{color:#ffa0a5;}.content span.traitalias,.content a.traitalias{color:#39AFD7;}.content span.keyword,.content a.keyword{color:#39AFD7;}.content span.externcrate,.content span.mod,.content a.mod{color:#39AFD7;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#ffa0a5;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#39AFD7;}.content span.type,.content a.type,.block a.current.type{color:#39AFD7;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#39AFD7;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}.sidebar a{color:#53b1db;}.sidebar a.current.type{color:#53b1db;}.sidebar a.current.associatedtype{color:#53b1db;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#39AFD7;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#c5c5c5;}.sidebar h2 a,.sidebar h3 a{color:white;}.search-results a{color:#0096cf;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{background-color:#141920;border-color:#424c57;color:#c5c5c5;}.search-input{color:#ffffff;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.typedef,.content a.typedef,.block a.current.typedef{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-associatedtype:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}.sidebar a.current.enum{}.sidebar a.current.struct{}.sidebar a.current.foreigntype{}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{}.sidebar a.current.union{}.sidebar a.current.constant .sidebar a.current.static{}.sidebar a.current.primitive{}.sidebar a.current.externcrate .sidebar a.current.mod{}.sidebar a.current.trait{}.sidebar a.current.traitalias{}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{}.sidebar a.current.keyword{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow:inset 0 -1px 0 #5c6773;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:#898989;} \ No newline at end of file diff --git a/ch8/dark.css b/ch8/dark.css index 5b8e0f75..a31f453f 100644 --- a/ch8/dark.css +++ b/ch8/dark.css @@ -1 +1 @@ -body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) #5a5a5a;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#565656;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#884719;}a.result-enum:focus{background-color:#194e9f;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#194e9f;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#194e9f;}a.result-associatedtype:focus{background-color:#884719;}a.result-foreigntype:focus{background-color:#194e9f;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#884719;}a.result-primitive:focus{background-color:#194e9f;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#2dbfb8;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#2dbfb8;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#D2991D;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#2dbfb8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#2dbfb8;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#D2991D;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2dbfb8;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#D2991D;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b78cf2;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#D2991D;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#D2991D;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#ddd;}.search-results a{color:#ddd;}a.test-arrow{color:#dedede;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;} \ No newline at end of file +body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#505050;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) #5a5a5a;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current,.sidebar a:hover{background:#444;}.source .sidebar{background-color:#565656;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#884719;}a.result-enum:focus{background-color:#194e9f;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#194e9f;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#194e9f;}a.result-associatedtype:focus{background-color:#884719;}a.result-foreigntype:focus{background-color:#194e9f;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#884719;}a.result-primitive:focus{background-color:#194e9f;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#2dbfb8;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#2dbfb8;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#D2991D;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#2dbfb8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#2dbfb8;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#D2991D;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2dbfb8;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#D2991D;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b78cf2;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#D2991D;}.sidebar a{color:#fdbf35;}.sidebar a.current.enum{color:#12ece2;}.sidebar a.current.struct{color:#12ece2;}.sidebar a.current.type{color:#12ece2;}.sidebar a.current.associatedtype{color:#fdbf35;}.sidebar a.current.foreigntype{color:#12ece2;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#0be900;}.sidebar a.current.union{color:#12ece2;}.sidebar a.current.constant .sidebar a.current.static{color:#fdbf35;}.sidebar a.current.primitive{color:#12ece2;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#fdbf35;}.sidebar a.current.trait{color:#cca7ff;}.sidebar a.current.traitalias{color:#cca7ff;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#32d479;}.sidebar a.current.keyword{color:#fdbf35;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#D2991D;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#ddd;}.search-results a{color:#ddd;}a.test-arrow{color:#dedede;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search,.search-input{color:#111;background-color:#f0f0f0;border-color:#000;}.search-input{border-color:#e0e0e0;}.search-input:focus{border-color:#008dfd;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow:inset 0 -1px 0 #c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:#898989;} \ No newline at end of file diff --git a/ch8/light.css b/ch8/light.css index e8cf0741..289f10cf 100644 --- a/ch8/light.css +++ b/ch8/light.css @@ -1 +1 @@ - body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#DDDDDD;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar{background-color:#F5F5F5;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.rust-logo{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#f1f1f1;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#FDFFD3 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#e7b1a0;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#e7b1a0;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#e7b1a0;}a.result-associatedtype:focus{background-color:#afc6e4;}a.result-foreigntype:focus{background-color:#e7b1a0;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#afc6e4;}a.result-primitive:focus{background-color:#e7b1a0;}a.result-keyword:focus{background-color:#afc6e4;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#AD378A;}.content span.struct,.content a.struct,.block a.current.struct{color:#AD378A;}.content span.type,.content a.type,.block a.current.type{color:#AD378A;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#3873AD;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#3873AD;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#AD378A;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#3873AD;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#AD378A;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#3873AD;}.content span.trait,.content a.trait,.block a.current.trait{color:#6E4FC9;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#5137AD;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#AD7C37;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#3873AD;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#3873AD;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#000;}.search-results a{color:initial;}a.test-arrow{color:#f5f5f5;}body.source .example-wrap pre.rust a{background:#eee;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgb(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background:#FDFFD3;border-right:3px solid #AD7C37;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#3873AD;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F5F5F5;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F5F5F5;border-right-color:#000;}#sidebar-filler{background-color:#F5F5F5;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F5F5F5;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F5F5F5;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file + body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#DDDDDD;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:#F5F5F5;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.rust-logo{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current,.sidebar a:hover{background-color:#fff;}.source .sidebar{background-color:#f1f1f1;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#FDFFD3 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#e7b1a0;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#e7b1a0;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#e7b1a0;}a.result-associatedtype:focus{background-color:#afc6e4;}a.result-foreigntype:focus{background-color:#e7b1a0;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#afc6e4;}a.result-primitive:focus{background-color:#e7b1a0;}a.result-keyword:focus{background-color:#afc6e4;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#AD378A;}.content span.struct,.content a.struct,.block a.current.struct{color:#AD378A;}.content span.type,.content a.type,.block a.current.type{color:#AD378A;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#3873AD;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#3873AD;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#AD378A;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#3873AD;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#AD378A;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#3873AD;}.content span.trait,.content a.trait,.block a.current.trait{color:#6E4FC9;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#5137AD;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#AD7C37;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#3873AD;}.sidebar a{color:#356da4;}.sidebar a.current.enum{color:#a63283;}.sidebar a.current.struct{color:#a63283;}.sidebar a.current.type{color:#a63283;}.sidebar a.current.associatedtype{color:#356da4;}.sidebar a.current.foreigntype{color:#356da4;}.sidebar a.current.attr,.sidebar a.current.derive,.sidebar a.current.macro{color:#067901;}.sidebar a.current.union{color:#a63283;}.sidebar a.current.constant .sidebar a.current.static{color:#356da4;}.sidebar a.current.primitive{color:#a63283;}.sidebar a.current.externcrate .sidebar a.current.mod{color:#356da4;}.sidebar a.current.trait{color:#6849c3;}.sidebar a.current.traitalias{color:#4b349e;}.sidebar a.current.fn,.sidebar a.current.method,.sidebar a.current.tymethod{color:#a67736;}.sidebar a.current.keyword{color:#356da4;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#3873AD;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,.in-band a{color:#000;}.search-results a{color:initial;}a.test-arrow{color:#f5f5f5;}body.source .example-wrap pre.rust a{background:#eee;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search,.search-input{color:#555;background-color:white;border-color:#e0e0e0;}.search-input:focus{border-color:#66afe9;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgb(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background:#FDFFD3;border-right:3px solid #AD7C37;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#3873AD;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F5F5F5;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F5F5F5;border-right-color:#000;}#sidebar-filler{background-color:#F5F5F5;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow:inset 0 -1px 0 #c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F5F5F5;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F5F5F5;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file diff --git a/ch8/main.js b/ch8/main.js index 3a235b2a..5c0ce8ad 100644 --- a/ch8/main.js +++ b/ch8/main.js @@ -1,4 +1,4 @@ -if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}function getVar(name){var el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}(function(){window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");window.searchJS=resourcePath("search",".js");window.searchIndexJS=resourcePath("search-index",".js");var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";var MAIN_ID="main-content";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){if(!document.location.href.startsWith("file:///")){return}var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=getVar("themes").split(",");removeClass(themeChoices.parentElement,"hidden");function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});if(search_input.value!=''){loadSearch()}var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},};function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById(MAIN_ID);var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i summary:not(.hideme)"),function(el){el.addEventListener("click",function(e){if(e.target.tagName!="SUMMARY"&&e.target.tagName!="A"){e.preventDefault()}})});onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});var sidebar_menu=document.getElementsByClassName("sidebar-menu")[0];if(sidebar_menu){sidebar_menu.onclick=function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(hasClass(sidebar,"mobile")){hideSidebar()}else{showSidebar()}}}var buildHelperPopup=function(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";popup.addEventListener("click",function(ev){if(ev.target===popup){displayHelp(false,ev)}});var book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ +if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}function getVar(name){var el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}(function(){window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");window.searchJS=resourcePath("search",".js");window.searchIndexJS=resourcePath("search-index",".js");var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,};var mobileLocationTitle=document.querySelector(".mobile-topbar h2.location");var locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";var MAIN_ID="main-content";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){if(!document.location.href.startsWith("file:///")){return}var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=getVar("themes").split(",");removeClass(themeChoices.parentElement,"hidden");function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!=''){loadSearch()}var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},};function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById(MAIN_ID);var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown");handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i${longty}`;div.appendChild(h3);var ul=document.createElement("ul");for(var i=0,len=filtered.length;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i summary:not(.hideme)"),function(el){el.addEventListener("click",function(e){if(e.target.tagName!="SUMMARY"&&e.target.tagName!="A"){e.preventDefault()}})});onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});var sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){addClass(sidebar,"shown")}else{removeClass(sidebar,"shown")}})}var buildHelperPopup=function(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";popup.addEventListener("click",function(ev){if(ev.target===popup){displayHelp(false,ev)}});var book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ the rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"
"+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+"
"+x[1]+"
"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ enum, trait, type, macro, \ diff --git a/ch8/os/all.html b/ch8/os/all.html index 2098908e..c2e60e96 100644 --- a/ch8/os/all.html +++ b/ch8/os/all.html @@ -1,5 +1,7 @@ List of all items in this crate -

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

+ +

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

\ No newline at end of file diff --git a/ch8/os/board/constant.CLOCK_FREQ.html b/ch8/os/board/constant.CLOCK_FREQ.html index 21b6c272..146b54a9 100644 --- a/ch8/os/board/constant.CLOCK_FREQ.html +++ b/ch8/os/board/constant.CLOCK_FREQ.html @@ -1,6 +1,8 @@ CLOCK_FREQ in os::board - Rust -
-

Constant os::board::CLOCK_FREQ

source · []
pub const CLOCK_FREQ: usize = 12500000;
+ +
+

Constant os::board::CLOCK_FREQ

source · []
pub const CLOCK_FREQ: usize = 12500000;
\ No newline at end of file diff --git a/ch8/os/board/constant.MMIO.html b/ch8/os/board/constant.MMIO.html index 9c9406c0..fdfc1078 100644 --- a/ch8/os/board/constant.MMIO.html +++ b/ch8/os/board/constant.MMIO.html @@ -1,6 +1,8 @@ MMIO in os::board - Rust -
-

Constant os::board::MMIO

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

Constant os::board::MMIO

source · []
pub const MMIO: &[(usize, usize)];
\ No newline at end of file diff --git a/ch8/os/board/index.html b/ch8/os/board/index.html index c2fc09a7..da7e3dfd 100644 --- a/ch8/os/board/index.html +++ b/ch8/os/board/index.html @@ -1,8 +1,10 @@ os::board - Rust -
\ No newline at end of file diff --git a/ch8/os/board/type.BlockDeviceImpl.html b/ch8/os/board/type.BlockDeviceImpl.html index 7a46b4cd..65d401c3 100644 --- a/ch8/os/board/type.BlockDeviceImpl.html +++ b/ch8/os/board/type.BlockDeviceImpl.html @@ -1,6 +1,8 @@ BlockDeviceImpl in os::board - Rust -
-

Type Definition os::board::BlockDeviceImpl

source · []
pub type BlockDeviceImpl = VirtIOBlock;
+ +
+

Type Definition os::board::BlockDeviceImpl

source · []
pub type BlockDeviceImpl = VirtIOBlock;
\ No newline at end of file diff --git a/ch8/os/config/constant.KERNEL_HEAP_SIZE.html b/ch8/os/config/constant.KERNEL_HEAP_SIZE.html index 37fbf1ef..c5fc811a 100644 --- a/ch8/os/config/constant.KERNEL_HEAP_SIZE.html +++ b/ch8/os/config/constant.KERNEL_HEAP_SIZE.html @@ -1,6 +1,8 @@ KERNEL_HEAP_SIZE in os::config - Rust -
pub const KERNEL_HEAP_SIZE: usize = 0x20_0000;
+ +
pub const KERNEL_HEAP_SIZE: usize = 0x20_0000;
\ No newline at end of file diff --git a/ch8/os/config/constant.KERNEL_STACK_SIZE.html b/ch8/os/config/constant.KERNEL_STACK_SIZE.html index 0870895a..1e547346 100644 --- a/ch8/os/config/constant.KERNEL_STACK_SIZE.html +++ b/ch8/os/config/constant.KERNEL_STACK_SIZE.html @@ -1,6 +1,8 @@ KERNEL_STACK_SIZE in os::config - Rust -
pub const KERNEL_STACK_SIZE: usize = 4096 * 2; // 0x0000_0000_0000_2000usize
+ +
pub const KERNEL_STACK_SIZE: usize = 4096 * 2; // 8_192usize
\ No newline at end of file diff --git a/ch8/os/config/constant.MEMORY_END.html b/ch8/os/config/constant.MEMORY_END.html index 50a51128..5ab07242 100644 --- a/ch8/os/config/constant.MEMORY_END.html +++ b/ch8/os/config/constant.MEMORY_END.html @@ -1,6 +1,8 @@ MEMORY_END in os::config - Rust -
-

Constant os::config::MEMORY_END

source · []
pub const MEMORY_END: usize = 0x80800000;
+ +
+

Constant os::config::MEMORY_END

source · []
pub const MEMORY_END: usize = 0x80800000;
\ No newline at end of file diff --git a/ch8/os/config/constant.PAGE_SIZE.html b/ch8/os/config/constant.PAGE_SIZE.html index 6a65de1f..91a51506 100644 --- a/ch8/os/config/constant.PAGE_SIZE.html +++ b/ch8/os/config/constant.PAGE_SIZE.html @@ -1,6 +1,8 @@ PAGE_SIZE in os::config - Rust -
-

Constant os::config::PAGE_SIZE

source · []
pub const PAGE_SIZE: usize = 0x1000;
+ +
+

Constant os::config::PAGE_SIZE

source · []
pub const PAGE_SIZE: usize = 0x1000;
\ No newline at end of file diff --git a/ch8/os/config/constant.PAGE_SIZE_BITS.html b/ch8/os/config/constant.PAGE_SIZE_BITS.html index 5356ad2d..0a0d83fd 100644 --- a/ch8/os/config/constant.PAGE_SIZE_BITS.html +++ b/ch8/os/config/constant.PAGE_SIZE_BITS.html @@ -1,6 +1,8 @@ PAGE_SIZE_BITS in os::config - Rust -
pub const PAGE_SIZE_BITS: usize = 0xc;
+ +
pub const PAGE_SIZE_BITS: usize = 0xc;
\ No newline at end of file diff --git a/ch8/os/config/constant.TRAMPOLINE.html b/ch8/os/config/constant.TRAMPOLINE.html index 306d3252..420fd50c 100644 --- a/ch8/os/config/constant.TRAMPOLINE.html +++ b/ch8/os/config/constant.TRAMPOLINE.html @@ -1,6 +1,8 @@ TRAMPOLINE in os::config - Rust -
-

Constant os::config::TRAMPOLINE

source · []
pub const TRAMPOLINE: usize = usize::MAX - PAGE_SIZE + 1; // 0xffff_ffff_ffff_f000usize
+ +
+

Constant os::config::TRAMPOLINE

source · []
pub const TRAMPOLINE: usize = usize::MAX - PAGE_SIZE + 1; // 18_446_744_073_709_547_520usize
\ No newline at end of file diff --git a/ch8/os/config/constant.TRAP_CONTEXT_BASE.html b/ch8/os/config/constant.TRAP_CONTEXT_BASE.html index a7375a83..9b319503 100644 --- a/ch8/os/config/constant.TRAP_CONTEXT_BASE.html +++ b/ch8/os/config/constant.TRAP_CONTEXT_BASE.html @@ -1,6 +1,8 @@ TRAP_CONTEXT_BASE in os::config - Rust -
pub const TRAP_CONTEXT_BASE: usize = TRAMPOLINE - PAGE_SIZE; // 0xffff_ffff_ffff_e000usize
+ +
pub const TRAP_CONTEXT_BASE: usize = TRAMPOLINE - PAGE_SIZE; // 18_446_744_073_709_543_424usize
\ No newline at end of file diff --git a/ch8/os/config/constant.USER_STACK_SIZE.html b/ch8/os/config/constant.USER_STACK_SIZE.html index 7b13b4aa..2c8a959e 100644 --- a/ch8/os/config/constant.USER_STACK_SIZE.html +++ b/ch8/os/config/constant.USER_STACK_SIZE.html @@ -1,6 +1,8 @@ USER_STACK_SIZE in os::config - Rust -
pub const USER_STACK_SIZE: usize = 4096 * 2; // 0x0000_0000_0000_2000usize
+ +
pub const USER_STACK_SIZE: usize = 4096 * 2; // 8_192usize
\ No newline at end of file diff --git a/ch8/os/config/index.html b/ch8/os/config/index.html index d16899fd..b29e1783 100644 --- a/ch8/os/config/index.html +++ b/ch8/os/config/index.html @@ -1,8 +1,10 @@ os::config - Rust -
\ No newline at end of file diff --git a/ch8/os/console/fn.print.html b/ch8/os/console/fn.print.html index 11eb46a6..f8119bcb 100644 --- a/ch8/os/console/fn.print.html +++ b/ch8/os/console/fn.print.html @@ -1,6 +1,8 @@ print in os::console - Rust -
-

Function os::console::print

source · []
pub fn print(args: Arguments<'_>)
+ +
+

Function os::console::print

source · []
pub fn print(args: Arguments<'_>)
\ No newline at end of file diff --git a/ch8/os/console/index.html b/ch8/os/console/index.html index 20aa4929..cb323cd3 100644 --- a/ch8/os/console/index.html +++ b/ch8/os/console/index.html @@ -1,8 +1,10 @@ os::console - Rust -
+ +
\ No newline at end of file diff --git a/ch8/os/console/struct.Stdout.html b/ch8/os/console/struct.Stdout.html index aacab1d0..1f956495 100644 --- a/ch8/os/console/struct.Stdout.html +++ b/ch8/os/console/struct.Stdout.html @@ -1,19 +1,23 @@ Stdout in os::console - Rust -
-

Struct os::console::Stdout

source · []
struct Stdout;

Trait Implementations

Writes a string slice into this writer, returning whether the write +

+
+

Struct os::console::Stdout

source · []
struct Stdout;

Trait Implementations

Writes a string slice into this writer, returning whether the write succeeded. Read more

-

Writes a char into this writer, returning whether the write succeeded. Read more

-

Glue for usage of the write! macro with implementors of this trait. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
+

Writes a char into this writer, returning whether the write succeeded. Read more

+

Glue for usage of the write! macro with implementors of this trait. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

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

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/fn.block_device_test.html b/ch8/os/drivers/block/fn.block_device_test.html index d5273e9f..0e374a0e 100644 --- a/ch8/os/drivers/block/fn.block_device_test.html +++ b/ch8/os/drivers/block/fn.block_device_test.html @@ -1,6 +1,8 @@ block_device_test in os::drivers::block - Rust -
pub fn block_device_test()
+ +
pub fn block_device_test()
\ No newline at end of file diff --git a/ch8/os/drivers/block/index.html b/ch8/os/drivers/block/index.html index 33f0c100..246f4994 100644 --- a/ch8/os/drivers/block/index.html +++ b/ch8/os/drivers/block/index.html @@ -1,10 +1,12 @@ os::drivers::block - Rust -
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_CS.html b/ch8/os/drivers/block/sdcard/constant.SD_CS.html index 7745c03f..55b18129 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_CS.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_CS.html @@ -1,10 +1,10 @@ -SD_CS in os::drivers::block::sdcard - Rust -
-

Constant os::drivers::block::sdcard::SD_CS

source · []
const SD_CS: u32 = 3;
Expand description

CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything

-
    -
  • in the FPIOA
  • -
-
+SD_CS in os::drivers::block::sdcard - Rust + +
+

Constant os::drivers::block::sdcard::SD_CS

source · []
const SD_CS: u32 = 3;
Expand description

CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything +in the FPIOA

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html b/ch8/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html index cb3d07b6..20e23ef7 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html @@ -1,7 +1,9 @@ SD_CS_GPIONUM in os::drivers::block::sdcard - Rust -
const SD_CS_GPIONUM: u8 = 7;
Expand description

GPIOHS GPIO number to use for controlling the SD card CS pin

-
+ +
const SD_CS_GPIONUM: u8 = 7;
Expand description

GPIOHS GPIO number to use for controlling the SD card CS pin

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html index 2a05a15e..661bff1f 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html @@ -1,7 +1,9 @@ SD_START_DATA_MULTIPLE_BLOCK_READ in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_MULTIPLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Multiple Block Read

-
+ +
pub const SD_START_DATA_MULTIPLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Multiple Block Read

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html index 3b76b968..190cac5a 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html @@ -1,7 +1,9 @@ SD_START_DATA_MULTIPLE_BLOCK_WRITE in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_MULTIPLE_BLOCK_WRITE: u8 = 0xFC;
Expand description

Data token start byte, Start Multiple Block Write

-
+ +
pub const SD_START_DATA_MULTIPLE_BLOCK_WRITE: u8 = 0xFC;
Expand description

Data token start byte, Start Multiple Block Write

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html index 3ebef1e6..8b50884e 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html @@ -1,7 +1,9 @@ SD_START_DATA_SINGLE_BLOCK_READ in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_SINGLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Read

-
+ +
pub const SD_START_DATA_SINGLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Read

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html index a760dd29..4d70d58b 100644 --- a/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html +++ b/ch8/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html @@ -1,7 +1,9 @@ SD_START_DATA_SINGLE_BLOCK_WRITE in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_SINGLE_BLOCK_WRITE: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Write

-
+ +
pub const SD_START_DATA_SINGLE_BLOCK_WRITE: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Write

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/constant.SEC_LEN.html b/ch8/os/drivers/block/sdcard/constant.SEC_LEN.html index 8afb9c1d..c15a12a2 100644 --- a/ch8/os/drivers/block/sdcard/constant.SEC_LEN.html +++ b/ch8/os/drivers/block/sdcard/constant.SEC_LEN.html @@ -1,6 +1,8 @@ SEC_LEN in os::drivers::block::sdcard - Rust -
pub const SEC_LEN: usize = 512;
+ +
pub const SEC_LEN: usize = 512;
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/enum.CMD.html b/ch8/os/drivers/block/sdcard/enum.CMD.html index 192ad23c..9b31e561 100644 --- a/ch8/os/drivers/block/sdcard/enum.CMD.html +++ b/ch8/os/drivers/block/sdcard/enum.CMD.html @@ -1,8 +1,10 @@ CMD in os::drivers::block::sdcard - Rust -
#[repr(u8)]
+    
+    
#[repr(u8)]
 pub enum CMD {
 
Show 15 variants CMD0, CMD8, @@ -35,23 +37,25 @@ pub enum CMD {

CMD55

Leading command for ACMD*

CMD58

Read OCR

CMD59

Enable/disable CRC check

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

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

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

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

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

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

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

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

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

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

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/enum.InitError.html b/ch8/os/drivers/block/sdcard/enum.InitError.html index fb02d6df..595bda38 100644 --- a/ch8/os/drivers/block/sdcard/enum.InitError.html +++ b/ch8/os/drivers/block/sdcard/enum.InitError.html @@ -1,25 +1,29 @@ InitError in os::drivers::block::sdcard - Rust -
pub enum InitError {
+    
+    
pub enum InitError {
     CMDFailed(CMDu8),
     CardCapacityStatusNotSet([u8; 4]),
     CannotGetCardInfo,
-}

Variants

CMDFailed(CMDu8)

CardCapacityStatusNotSet([u8; 4])

CannotGetCardInfo

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

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

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
+}

Variants

CMDFailed(CMDu8)

CardCapacityStatusNotSet([u8; 4])

CannotGetCardInfo

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Returns the argument unchanged.

+

Calls U::from(self).

+

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

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

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

Uses borrowed data to replace owned data, usually by cloning. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/fn.init_sdcard.html b/ch8/os/drivers/block/sdcard/fn.init_sdcard.html index e2370784..01baf5c5 100644 --- a/ch8/os/drivers/block/sdcard/fn.init_sdcard.html +++ b/ch8/os/drivers/block/sdcard/fn.init_sdcard.html @@ -1,6 +1,8 @@ init_sdcard in os::drivers::block::sdcard - Rust -
fn init_sdcard() -> SDCard<SPIImpl<SPI0>>
+ +
fn init_sdcard() -> SDCard<SPIImpl<SPI0>>
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/fn.io_init.html b/ch8/os/drivers/block/sdcard/fn.io_init.html index 90bf0d50..de329858 100644 --- a/ch8/os/drivers/block/sdcard/fn.io_init.html +++ b/ch8/os/drivers/block/sdcard/fn.io_init.html @@ -1,7 +1,9 @@ io_init in os::drivers::block::sdcard - Rust -
fn io_init()
Expand description

Connect pins to internal functions

-
+ +
fn io_init()
Expand description

Connect pins to internal functions

+
\ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/index.html b/ch8/os/drivers/block/sdcard/index.html index 75d62437..ddd32c17 100644 --- a/ch8/os/drivers/block/sdcard/index.html +++ b/ch8/os/drivers/block/sdcard/index.html @@ -1,27 +1,24 @@ os::drivers::block::sdcard - Rust -

Structs

-

-

  • Card Identification Data: CID Register
  • -

    -

    -

  • Card Specific Data: CSD Register
  • -

    -

    -

  • Card information
  • -

    + +

    Structs

    +

    Card Identification Data: CID Register

    +

    Card Specific Data: CSD Register

    +

    Card information

    Enums

    SD commands

    Constants

    -

    CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything

    -

    GPIOHS GPIO number to use for controlling the SD card CS pin

    +
    SD_CS 🔒

    CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything +in the FPIOA

    +

    GPIOHS GPIO number to use for controlling the SD card CS pin

    Data token start byte, Start Multiple Block Read

    Data token start byte, Start Multiple Block Write

    Data token start byte, Start Single Block Read

    Data token start byte, Start Single Block Write

    Functions

    -

    Connect pins to internal functions

    -
    +
    io_init 🔒

    Connect pins to internal functions

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/sidebar-items.js b/ch8/os/drivers/block/sdcard/sidebar-items.js index 793a4709..e5a624de 100644 --- a/ch8/os/drivers/block/sdcard/sidebar-items.js +++ b/ch8/os/drivers/block/sdcard/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"constant":[["SD_CS","CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything"],["SD_CS_GPIONUM","GPIOHS GPIO number to use for controlling the SD card CS pin "],["SD_START_DATA_MULTIPLE_BLOCK_READ","Data token start byte, Start Multiple Block Read "],["SD_START_DATA_MULTIPLE_BLOCK_WRITE","Data token start byte, Start Multiple Block Write "],["SD_START_DATA_SINGLE_BLOCK_READ","Data token start byte, Start Single Block Read "],["SD_START_DATA_SINGLE_BLOCK_WRITE","Data token start byte, Start Single Block Write "],["SEC_LEN",""]],"enum":[["CMD","SD commands "],["InitError",""]],"fn":[["init_sdcard",""],["io_init","Connect pins to internal functions "]],"struct":[["PERIPHERALS",""],["SDCard",""],["SDCardCID","Card Identification Data: CID Register"],["SDCardCSD","Card Specific Data: CSD Register"],["SDCardInfo","Card information"],["SDCardWrapper",""]]}); \ No newline at end of file +initSidebarItems({"constant":[["SD_CS","CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything in the FPIOA "],["SD_CS_GPIONUM","GPIOHS GPIO number to use for controlling the SD card CS pin "],["SD_START_DATA_MULTIPLE_BLOCK_READ","Data token start byte, Start Multiple Block Read "],["SD_START_DATA_MULTIPLE_BLOCK_WRITE","Data token start byte, Start Multiple Block Write "],["SD_START_DATA_SINGLE_BLOCK_READ","Data token start byte, Start Single Block Read "],["SD_START_DATA_SINGLE_BLOCK_WRITE","Data token start byte, Start Single Block Write "],["SEC_LEN",""]],"enum":[["CMD","SD commands "],["InitError",""]],"fn":[["init_sdcard",""],["io_init","Connect pins to internal functions "]],"struct":[["PERIPHERALS",""],["SDCard",""],["SDCardCID","Card Identification Data: CID Register"],["SDCardCSD","Card Specific Data: CSD Register"],["SDCardInfo","Card information"],["SDCardWrapper",""]]}); \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.PERIPHERALS.html b/ch8/os/drivers/block/sdcard/struct.PERIPHERALS.html index 3518da6a..759ea5eb 100644 --- a/ch8/os/drivers/block/sdcard/struct.PERIPHERALS.html +++ b/ch8/os/drivers/block/sdcard/struct.PERIPHERALS.html @@ -1,20 +1,24 @@ PERIPHERALS in os::drivers::block::sdcard - Rust -
    struct PERIPHERALS {
    +    
    +    
    struct PERIPHERALS {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<Peripherals>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<Peripherals>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.SDCard.html b/ch8/os/drivers/block/sdcard/struct.SDCard.html index 53415fce..a5c7926f 100644 --- a/ch8/os/drivers/block/sdcard/struct.SDCard.html +++ b/ch8/os/drivers/block/sdcard/struct.SDCard.html @@ -1,19 +1,23 @@ SDCard in os::drivers::block::sdcard - Rust -
    pub struct SDCard<SPI> {
    +    
    +    
    pub struct SDCard<SPI> {
         spi: SPI,
         spi_cs: u32,
         cs_gpionum: u8,
    -}

    Fields

    spi: SPIspi_cs: u32cs_gpionum: u8

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    spi: SPIspi_cs: u32cs_gpionum: u8

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.SDCardCID.html b/ch8/os/drivers/block/sdcard/struct.SDCardCID.html index 2db6395b..c8bb5e6c 100644 --- a/ch8/os/drivers/block/sdcard/struct.SDCardCID.html +++ b/ch8/os/drivers/block/sdcard/struct.SDCardCID.html @@ -1,8 +1,10 @@ SDCardCID in os::drivers::block::sdcard - Rust -
    pub struct SDCardCID {
    +    
    +    
    pub struct SDCardCID {
         pub ManufacturerID: u8,
         pub OEM_AppliID: u16,
         pub ProdName1: u32,
    @@ -13,23 +15,23 @@
         pub ManufactDate: u16,
         pub CID_CRC: u8,
         pub Reserved2: u8,
    -}
    Expand description
      -
    • Card Identification Data: CID Register
    • -
    -

    Fields

    ManufacturerID: u8OEM_AppliID: u16ProdName1: u32ProdName2: u8ProdRev: u8ProdSN: u32Reserved1: u8ManufactDate: u16CID_CRC: u8Reserved2: u8

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}
    Expand description

    Card Identification Data: CID Register

    +

    Fields

    ManufacturerID: u8OEM_AppliID: u16ProdName1: u32ProdName2: u8ProdRev: u8ProdSN: u32Reserved1: u8ManufactDate: u16CID_CRC: u8Reserved2: u8

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.SDCardCSD.html b/ch8/os/drivers/block/sdcard/struct.SDCardCSD.html index 36d14247..0989ce3b 100644 --- a/ch8/os/drivers/block/sdcard/struct.SDCardCSD.html +++ b/ch8/os/drivers/block/sdcard/struct.SDCardCSD.html @@ -1,8 +1,10 @@ SDCardCSD in os::drivers::block::sdcard - Rust -
    pub struct SDCardCSD {
    Show 32 fields + +
    pub struct SDCardCSD {
    Show 32 fields pub CSDStruct: u8, pub SysSpecVersion: u8, pub Reserved1: u8, @@ -35,23 +37,23 @@ pub ECC: u8, pub CSD_CRC: u8, pub Reserved4: u8, -
    }
    Expand description
      -
    • Card Specific Data: CSD Register
    • -
    -

    Fields

    CSDStruct: u8SysSpecVersion: u8Reserved1: u8TAAC: u8NSAC: u8MaxBusClkFrec: u8CardComdClasses: u16RdBlockLen: u8PartBlockRead: u8WrBlockMisalign: u8RdBlockMisalign: u8DSRImpl: u8Reserved2: u8DeviceSize: u32EraseGrSize: u8EraseGrMul: u8WrProtectGrSize: u8WrProtectGrEnable: u8ManDeflECC: u8WrSpeedFact: u8MaxWrBlockLen: u8WriteBlockPaPartial: u8Reserved3: u8ContentProtectAppli: u8FileFormatGroup: u8CopyFlag: u8PermWrProtect: u8TempWrProtect: u8FileFormat: u8ECC: u8CSD_CRC: u8Reserved4: u8

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +
    }
    Expand description

    Card Specific Data: CSD Register

    +

    Fields

    CSDStruct: u8SysSpecVersion: u8Reserved1: u8TAAC: u8NSAC: u8MaxBusClkFrec: u8CardComdClasses: u16RdBlockLen: u8PartBlockRead: u8WrBlockMisalign: u8RdBlockMisalign: u8DSRImpl: u8Reserved2: u8DeviceSize: u32EraseGrSize: u8EraseGrMul: u8WrProtectGrSize: u8WrProtectGrEnable: u8ManDeflECC: u8WrSpeedFact: u8MaxWrBlockLen: u8WriteBlockPaPartial: u8Reserved3: u8ContentProtectAppli: u8FileFormatGroup: u8CopyFlag: u8PermWrProtect: u8TempWrProtect: u8FileFormat: u8ECC: u8CSD_CRC: u8Reserved4: u8

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.SDCardInfo.html b/ch8/os/drivers/block/sdcard/struct.SDCardInfo.html index c6004a71..b8df7a02 100644 --- a/ch8/os/drivers/block/sdcard/struct.SDCardInfo.html +++ b/ch8/os/drivers/block/sdcard/struct.SDCardInfo.html @@ -1,29 +1,31 @@ SDCardInfo in os::drivers::block::sdcard - Rust -
    pub struct SDCardInfo {
    +    
    +    
    pub struct SDCardInfo {
         pub SD_csd: SDCardCSD,
         pub SD_cid: SDCardCID,
         pub CardCapacity: u64,
         pub CardBlockSize: u64,
    -}
    Expand description
      -
    • Card information
    • -
    -

    Fields

    SD_csd: SDCardCSDSD_cid: SDCardCIDCardCapacity: u64CardBlockSize: u64

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}
    Expand description

    Card information

    +

    Fields

    SD_csd: SDCardCSDSD_cid: SDCardCIDCardCapacity: u64CardBlockSize: u64

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/sdcard/struct.SDCardWrapper.html b/ch8/os/drivers/block/sdcard/struct.SDCardWrapper.html index ba739d02..94f63800 100644 --- a/ch8/os/drivers/block/sdcard/struct.SDCardWrapper.html +++ b/ch8/os/drivers/block/sdcard/struct.SDCardWrapper.html @@ -1,15 +1,19 @@ SDCardWrapper in os::drivers::block::sdcard - Rust -
    pub struct SDCardWrapper(UPSafeCell<SDCard<SPIImpl<SPI0>>>);

    Tuple Fields

    0: UPSafeCell<SDCard<SPIImpl<SPI0>>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    pub struct SDCardWrapper(UPSafeCell<SDCard<SPIImpl<SPI0>>>);

    Tuple Fields

    0: UPSafeCell<SDCard<SPIImpl<SPI0>>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/struct.BLOCK_DEVICE.html b/ch8/os/drivers/block/struct.BLOCK_DEVICE.html index 14fce12c..c56b5de3 100644 --- a/ch8/os/drivers/block/struct.BLOCK_DEVICE.html +++ b/ch8/os/drivers/block/struct.BLOCK_DEVICE.html @@ -1,19 +1,23 @@ BLOCK_DEVICE in os::drivers::block - Rust -
    pub struct BLOCK_DEVICE {
    +    
    +    
    pub struct BLOCK_DEVICE {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/constant.VIRTIO0.html b/ch8/os/drivers/block/virtio_blk/constant.VIRTIO0.html index ceead833..6cd46f6e 100644 --- a/ch8/os/drivers/block/virtio_blk/constant.VIRTIO0.html +++ b/ch8/os/drivers/block/virtio_blk/constant.VIRTIO0.html @@ -1,6 +1,8 @@ VIRTIO0 in os::drivers::block::virtio_blk - Rust -
    const VIRTIO0: usize = 0x10001000;
    + +
    const VIRTIO0: usize = 0x10001000;
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html b/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html index 7b7df50b..304546b4 100644 --- a/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html +++ b/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html @@ -1,7 +1,9 @@ virtio_dma_alloc in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr
    + +
    #[no_mangle]
    +pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html b/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html index 4236fcd4..292c54bc 100644 --- a/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html +++ b/ch8/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html @@ -1,7 +1,9 @@ virtio_dma_dealloc in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_dma_dealloc(
        pa: PhysAddr,
        pages: usize
    ) -> i32
    + +
    #[no_mangle]
    +pub extern "C" fn virtio_dma_dealloc(
        pa: PhysAddr,
        pages: usize
    ) -> i32
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html b/ch8/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html index 6ace07c8..7d23a8dd 100644 --- a/ch8/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html +++ b/ch8/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html @@ -1,7 +1,9 @@ virtio_phys_to_virt in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr
    + +
    #[no_mangle]
    +pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html b/ch8/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html index 155b2eba..199c4b17 100644 --- a/ch8/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html +++ b/ch8/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html @@ -1,7 +1,9 @@ virtio_virt_to_phys in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr
    + +
    #[no_mangle]
    +pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/index.html b/ch8/os/drivers/block/virtio_blk/index.html index e4b7423f..7cde2000 100644 --- a/ch8/os/drivers/block/virtio_blk/index.html +++ b/ch8/os/drivers/block/virtio_blk/index.html @@ -1,9 +1,11 @@ os::drivers::block::virtio_blk - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html index 16844a32..98827067 100644 --- a/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html +++ b/ch8/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html @@ -1,20 +1,24 @@ QUEUE_FRAMES in os::drivers::block::virtio_blk - Rust -
    struct QUEUE_FRAMES {
    +    
    +    
    struct QUEUE_FRAMES {
         __private_field: (),
    -}

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/block/virtio_blk/struct.VirtIOBlock.html b/ch8/os/drivers/block/virtio_blk/struct.VirtIOBlock.html index 50969a66..26a60e87 100644 --- a/ch8/os/drivers/block/virtio_blk/struct.VirtIOBlock.html +++ b/ch8/os/drivers/block/virtio_blk/struct.VirtIOBlock.html @@ -1,15 +1,19 @@ VirtIOBlock in os::drivers::block::virtio_blk - Rust -
    pub struct VirtIOBlock(UPSafeCell<VirtIOBlk<'static>>);

    Tuple Fields

    0: UPSafeCell<VirtIOBlk<'static>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    pub struct VirtIOBlock(UPSafeCell<VirtIOBlk<'static>>);

    Tuple Fields

    0: UPSafeCell<VirtIOBlk<'static>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/drivers/index.html b/ch8/os/drivers/index.html index 5da6cf0b..45ff82c3 100644 --- a/ch8/os/drivers/index.html +++ b/ch8/os/drivers/index.html @@ -1,8 +1,10 @@ os::drivers - Rust -
    -

    Module os::drivers

    source · []

    Re-exports

    + +
    +

    Module os::drivers

    source · []

    Re-exports

    pub use block::BLOCK_DEVICE;
    pub use block::BLOCK_DEVICE;

    Modules

    -
    +
    \ No newline at end of file diff --git a/ch8/os/fn.clear_bss.html b/ch8/os/fn.clear_bss.html index 7f6b047a..c2be7826 100644 --- a/ch8/os/fn.clear_bss.html +++ b/ch8/os/fn.clear_bss.html @@ -1,6 +1,8 @@ clear_bss in os - Rust -
    -

    Function os::clear_bss

    source · []
    pub(crate) fn clear_bss()
    + +
    +

    Function os::clear_bss

    source · []
    pub(crate) fn clear_bss()
    \ No newline at end of file diff --git a/ch8/os/fn.rust_main.html b/ch8/os/fn.rust_main.html index d912d8eb..c3e31425 100644 --- a/ch8/os/fn.rust_main.html +++ b/ch8/os/fn.rust_main.html @@ -1,7 +1,9 @@ rust_main in os - Rust -
    -

    Function os::rust_main

    source · []
    #[no_mangle]
    -pub fn rust_main() -> !
    + +
    +

    Function os::rust_main

    source · []
    #[no_mangle]
    +pub fn rust_main() -> !
    \ No newline at end of file diff --git a/ch8/os/fs/index.html b/ch8/os/fs/index.html index 8fb7e062..814190a3 100644 --- a/ch8/os/fs/index.html +++ b/ch8/os/fs/index.html @@ -1,9 +1,11 @@ os::fs - Rust -
    -

    Module os::fs

    source · []

    Re-exports

    + +
    +

    Module os::fs

    source · []

    Re-exports

    pub use inode::list_apps;
    pub use inode::open_file;
    pub use inode::OSInode;
    pub use inode::OpenFlags;
    pub use pipe::make_pipe;
    pub use pipe::Pipe;
    pub use stdio::Stdin;
    pub use stdio::Stdout;

    Modules

    -

    Traits

    -
    +
    inode 🔒
    pipe 🔒
    stdio 🔒

    Traits

    +
    \ No newline at end of file diff --git a/ch8/os/fs/inode/fn.list_apps.html b/ch8/os/fs/inode/fn.list_apps.html index a461c96f..58d6c376 100644 --- a/ch8/os/fs/inode/fn.list_apps.html +++ b/ch8/os/fs/inode/fn.list_apps.html @@ -1,6 +1,8 @@ list_apps in os::fs::inode - Rust -
    -

    Function os::fs::inode::list_apps

    source · []
    pub fn list_apps()
    + +
    +

    Function os::fs::inode::list_apps

    source · []
    pub fn list_apps()
    \ No newline at end of file diff --git a/ch8/os/fs/inode/fn.open_file.html b/ch8/os/fs/inode/fn.open_file.html index d7f883a7..7f6647aa 100644 --- a/ch8/os/fs/inode/fn.open_file.html +++ b/ch8/os/fs/inode/fn.open_file.html @@ -1,6 +1,8 @@ open_file in os::fs::inode - Rust -
    -

    Function os::fs::inode::open_file

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

    Function os::fs::inode::open_file

    source · []
    pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
    \ No newline at end of file diff --git a/ch8/os/fs/inode/index.html b/ch8/os/fs/inode/index.html index 37e325f8..101d6c44 100644 --- a/ch8/os/fs/inode/index.html +++ b/ch8/os/fs/inode/index.html @@ -1,8 +1,10 @@ os::fs::inode - Rust -
    \ No newline at end of file diff --git a/ch8/os/fs/inode/struct.OSInode.html b/ch8/os/fs/inode/struct.OSInode.html index dc461108..8292a355 100644 --- a/ch8/os/fs/inode/struct.OSInode.html +++ b/ch8/os/fs/inode/struct.OSInode.html @@ -1,19 +1,23 @@ OSInode in os::fs::inode - Rust -
    -

    Struct os::fs::inode::OSInode

    source · []
    pub struct OSInode {
    +    
    +    
    +

    Struct os::fs::inode::OSInode

    source · []
    pub struct OSInode {
         readable: bool,
         writable: bool,
         inner: UPSafeCell<OSInodeInner>,
    -}

    Fields

    readable: boolwritable: boolinner: UPSafeCell<OSInodeInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    readable: boolwritable: boolinner: UPSafeCell<OSInodeInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/inode/struct.OSInodeInner.html b/ch8/os/fs/inode/struct.OSInodeInner.html index 1d39bc94..bef94187 100644 --- a/ch8/os/fs/inode/struct.OSInodeInner.html +++ b/ch8/os/fs/inode/struct.OSInodeInner.html @@ -1,18 +1,22 @@ OSInodeInner in os::fs::inode - Rust -
    pub struct OSInodeInner {
    +    
    +    
    pub struct OSInodeInner {
         offset: usize,
         inode: Arc<Inode>,
    -}

    Fields

    offset: usizeinode: Arc<Inode>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    offset: usizeinode: Arc<Inode>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/inode/struct.OpenFlags.html b/ch8/os/fs/inode/struct.OpenFlags.html index 44a23a72..1ec21add 100644 --- a/ch8/os/fs/inode/struct.OpenFlags.html +++ b/ch8/os/fs/inode/struct.OpenFlags.html @@ -1,53 +1,55 @@ OpenFlags in os::fs::inode - Rust -
    -

    Struct os::fs::inode::OpenFlags

    source · []

    Fields

    bits: u32

    Implementations

    Returns an empty set of flags.

    +

    Returns the set containing all flags.

    +

    Returns the raw value of the flags currently stored.

    +

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

    -

    Convert from underlying bit representation, dropping any bits +

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

    -

    Convert from underlying bit representation, preserving all +

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

    -
    Safety
    +
    Safety

    The caller of the bitflags! macro can chose to allow or disallow extra bits for their bitflags type.

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

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

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

    -

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

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

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

    -

    Returns the intersection between the flags in self and +

    Returns true if no flags are currently stored.

    +

    Returns true if all flags are currently set.

    +

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

    +

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

    +

    Inserts the specified flags in-place.

    +

    Removes the specified flags in-place.

    +

    Toggles the specified flags in-place.

    +

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

    +

    Returns the intersection between the flags in self and other.

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

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

    -

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

    +

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

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

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

    -

    Returns the difference between the flags in self and other.

    +

    Returns the difference between the flags in self and other.

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

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

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

    -

    Returns the symmetric difference between the flags +

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

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

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

    -

    Returns the complement of this set of flags.

    +

    Returns the complement of this set of flags.

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

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

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

    -

    Do not check validity for simplicity +

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

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

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

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

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

    Extends a collection with exactly one element.

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

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

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

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

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Trait Implementations

    Formats the value using the given formatter.

    +

    Returns the intersection between the two sets of flags.

    +

    The resulting type after applying the & operator.

    +

    Disables all flags disabled in the set.

    +

    Returns the union of the two sets of flags.

    +

    The resulting type after applying the | operator.

    +

    Adds the set of flags.

    +

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

    +

    The resulting type after applying the ^ operator.

    +

    Toggles the set of flags.

    +

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

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

    Extends a collection with exactly one element.

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

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

    +

    Creates a value from an iterator. Read more

    +

    Feeds this value into the given Hasher. Read more

    +

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

    +

    Formats the value using the given formatter.

    +

    Returns the complement of this set of flags.

    +

    The resulting type after applying the ! operator.

    +

    Formats the value using the given formatter.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Returns the set difference of the two sets of flags.

    +

    The resulting type after applying the - operator.

    +

    Disables all flags enabled in the set.

    +

    Formats the value using the given formatter.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/inode/struct.ROOT_INODE.html b/ch8/os/fs/inode/struct.ROOT_INODE.html index 8569472f..c51618b4 100644 --- a/ch8/os/fs/inode/struct.ROOT_INODE.html +++ b/ch8/os/fs/inode/struct.ROOT_INODE.html @@ -1,19 +1,23 @@ ROOT_INODE in os::fs::inode - Rust -
    -

    Struct os::fs::inode::ROOT_INODE

    source · []
    pub struct ROOT_INODE {
    +    
    +    
    +

    Struct os::fs::inode::ROOT_INODE

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

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/constant.RING_BUFFER_SIZE.html b/ch8/os/fs/pipe/constant.RING_BUFFER_SIZE.html index 9300f28c..31a764da 100644 --- a/ch8/os/fs/pipe/constant.RING_BUFFER_SIZE.html +++ b/ch8/os/fs/pipe/constant.RING_BUFFER_SIZE.html @@ -1,6 +1,8 @@ RING_BUFFER_SIZE in os::fs::pipe - Rust -
    const RING_BUFFER_SIZE: usize = 32;
    + +
    const RING_BUFFER_SIZE: usize = 32;
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/enum.RingBufferStatus.html b/ch8/os/fs/pipe/enum.RingBufferStatus.html index 93b37d92..1dfc770f 100644 --- a/ch8/os/fs/pipe/enum.RingBufferStatus.html +++ b/ch8/os/fs/pipe/enum.RingBufferStatus.html @@ -1,27 +1,31 @@ RingBufferStatus in os::fs::pipe - Rust -
    enum RingBufferStatus {
    +    
    +    
    enum RingBufferStatus {
         Full,
         Empty,
         Normal,
    -}

    Variants

    Full

    Empty

    Normal

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

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

    Variants

    Full

    Empty

    Normal

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    This method tests for !=.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/fn.make_pipe.html b/ch8/os/fs/pipe/fn.make_pipe.html index b74a8220..cbf68237 100644 --- a/ch8/os/fs/pipe/fn.make_pipe.html +++ b/ch8/os/fs/pipe/fn.make_pipe.html @@ -1,7 +1,9 @@ make_pipe in os::fs::pipe - Rust -
    -

    Function os::fs::pipe::make_pipe

    source · []
    pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>)
    Expand description

    Return (read_end, write_end)

    -
    + +
    +

    Function os::fs::pipe::make_pipe

    source · []
    pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>)
    Expand description

    Return (read_end, write_end)

    +
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/index.html b/ch8/os/fs/pipe/index.html index 0bd647c3..660fcdfd 100644 --- a/ch8/os/fs/pipe/index.html +++ b/ch8/os/fs/pipe/index.html @@ -1,11 +1,13 @@ os::fs::pipe - Rust -
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/struct.Pipe.html b/ch8/os/fs/pipe/struct.Pipe.html index 8cb868f4..8fd30707 100644 --- a/ch8/os/fs/pipe/struct.Pipe.html +++ b/ch8/os/fs/pipe/struct.Pipe.html @@ -1,19 +1,23 @@ Pipe in os::fs::pipe - Rust -
    -

    Struct os::fs::pipe::Pipe

    source · []
    pub struct Pipe {
    +    
    +    
    +

    Struct os::fs::pipe::Pipe

    source · []
    pub struct Pipe {
         readable: bool,
         writable: bool,
         buffer: Arc<UPSafeCell<PipeRingBuffer>>,
    -}

    Fields

    readable: boolwritable: boolbuffer: Arc<UPSafeCell<PipeRingBuffer>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    readable: boolwritable: boolbuffer: Arc<UPSafeCell<PipeRingBuffer>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/pipe/struct.PipeRingBuffer.html b/ch8/os/fs/pipe/struct.PipeRingBuffer.html index 2aa49c2f..6dcf6b08 100644 --- a/ch8/os/fs/pipe/struct.PipeRingBuffer.html +++ b/ch8/os/fs/pipe/struct.PipeRingBuffer.html @@ -1,21 +1,25 @@ PipeRingBuffer in os::fs::pipe - Rust -
    pub struct PipeRingBuffer {
    +    
    +    
    pub struct PipeRingBuffer {
         arr: [u8; 32],
         head: usize,
         tail: usize,
         status: RingBufferStatus,
         write_end: Option<Weak<Pipe>>,
    -}

    Fields

    arr: [u8; 32]head: usizetail: usizestatus: RingBufferStatuswrite_end: Option<Weak<Pipe>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    arr: [u8; 32]head: usizetail: usizestatus: RingBufferStatuswrite_end: Option<Weak<Pipe>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/stdio/index.html b/ch8/os/fs/stdio/index.html index 80754c93..de535655 100644 --- a/ch8/os/fs/stdio/index.html +++ b/ch8/os/fs/stdio/index.html @@ -1,7 +1,9 @@ os::fs::stdio - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/fs/stdio/struct.Stdin.html b/ch8/os/fs/stdio/struct.Stdin.html index 51c54b43..7d4982e5 100644 --- a/ch8/os/fs/stdio/struct.Stdin.html +++ b/ch8/os/fs/stdio/struct.Stdin.html @@ -1,15 +1,19 @@ Stdin in os::fs::stdio - Rust -
    -

    Struct os::fs::stdio::Stdin

    source · []
    pub struct Stdin;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    +

    Struct os::fs::stdio::Stdin

    source · []
    pub struct Stdin;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/stdio/struct.Stdout.html b/ch8/os/fs/stdio/struct.Stdout.html index eb6560f0..c4b1338c 100644 --- a/ch8/os/fs/stdio/struct.Stdout.html +++ b/ch8/os/fs/stdio/struct.Stdout.html @@ -1,15 +1,19 @@ Stdout in os::fs::stdio - Rust -
    -

    Struct os::fs::stdio::Stdout

    source · []
    pub struct Stdout;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    +

    Struct os::fs::stdio::Stdout

    source · []
    pub struct Stdout;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/fs/trait.File.html b/ch8/os/fs/trait.File.html index 778df109..941e0404 100644 --- a/ch8/os/fs/trait.File.html +++ b/ch8/os/fs/trait.File.html @@ -1,11 +1,13 @@ File in os::fs - Rust -
    -

    Trait os::fs::File

    source · []
    pub trait File: Send + Sync {
    +    
    +    
    +

    Trait os::fs::File

    source · []
    pub trait File: Send + Sync {
         fn readable(&self) -> bool;
    -
    fn writable(&self) -> bool; -
    fn read(&self, buf: UserBuffer) -> usize; -
    fn write(&self, buf: UserBuffer) -> usize; -}

    Required methods

    Implementors

    + fn writable(&self) -> bool; + fn read(&self, buf: UserBuffer) -> usize; + fn write(&self, buf: UserBuffer) -> usize; +}

    Required methods

    Implementors

    \ No newline at end of file diff --git a/ch8/os/index.html b/ch8/os/index.html index 6eb7998c..fe9cb500 100644 --- a/ch8/os/index.html +++ b/ch8/os/index.html @@ -1,9 +1,11 @@ os - Rust -
    \ No newline at end of file diff --git a/ch8/os/lang_items/fn.backtrace.html b/ch8/os/lang_items/fn.backtrace.html index 39864fc1..1a725d71 100644 --- a/ch8/os/lang_items/fn.backtrace.html +++ b/ch8/os/lang_items/fn.backtrace.html @@ -1,6 +1,8 @@ backtrace in os::lang_items - Rust -
    unsafe fn backtrace()
    + +
    unsafe fn backtrace()
    \ No newline at end of file diff --git a/ch8/os/lang_items/fn.panic.html b/ch8/os/lang_items/fn.panic.html index 70a8c97f..1dea5955 100644 --- a/ch8/os/lang_items/fn.panic.html +++ b/ch8/os/lang_items/fn.panic.html @@ -1,6 +1,8 @@ panic in os::lang_items - Rust -
    -

    Function os::lang_items::panic

    source · []
    fn panic(info: &PanicInfo<'_>) -> !
    + +
    +

    Function os::lang_items::panic

    source · []
    fn panic(info: &PanicInfo<'_>) -> !
    \ No newline at end of file diff --git a/ch8/os/lang_items/index.html b/ch8/os/lang_items/index.html index 47387d15..87774e08 100644 --- a/ch8/os/lang_items/index.html +++ b/ch8/os/lang_items/index.html @@ -1,7 +1,9 @@ os::lang_items - Rust -
    + +
    +

    Module os::lang_items

    source · []

    Functions

    +
    panic 🔒
    \ No newline at end of file diff --git a/ch8/os/macro.print.html b/ch8/os/macro.print.html index 17d519f7..df49b790 100644 --- a/ch8/os/macro.print.html +++ b/ch8/os/macro.print.html @@ -1,9 +1,11 @@ print in os - Rust -
    -

    Macro os::print

    source · []
    macro_rules! print {
    +    
    +    
    +

    Macro os::print

    source · []
    macro_rules! print {
         ($fmt: literal $(, $($arg: tt)+)?) => { ... };
     }
    -
    +
    \ No newline at end of file diff --git a/ch8/os/macro.println.html b/ch8/os/macro.println.html index 6f58012d..40626a4a 100644 --- a/ch8/os/macro.println.html +++ b/ch8/os/macro.println.html @@ -1,9 +1,11 @@ println in os - Rust -
    -

    Macro os::println

    source · []
    macro_rules! println {
    +    
    +    
    +

    Macro os::println

    source · []
    macro_rules! println {
         ($fmt: literal $(, $($arg: tt)+)?) => { ... };
     }
    -
    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/constant.PA_WIDTH_SV39.html b/ch8/os/mm/address/constant.PA_WIDTH_SV39.html index d7ded0db..581afc43 100644 --- a/ch8/os/mm/address/constant.PA_WIDTH_SV39.html +++ b/ch8/os/mm/address/constant.PA_WIDTH_SV39.html @@ -1,6 +1,8 @@ PA_WIDTH_SV39 in os::mm::address - Rust -
    const PA_WIDTH_SV39: usize = 56;
    + +
    const PA_WIDTH_SV39: usize = 56;
    \ No newline at end of file diff --git a/ch8/os/mm/address/constant.PPN_WIDTH_SV39.html b/ch8/os/mm/address/constant.PPN_WIDTH_SV39.html index 07bf60dc..9d5254cb 100644 --- a/ch8/os/mm/address/constant.PPN_WIDTH_SV39.html +++ b/ch8/os/mm/address/constant.PPN_WIDTH_SV39.html @@ -1,6 +1,8 @@ PPN_WIDTH_SV39 in os::mm::address - Rust -
    const PPN_WIDTH_SV39: usize = PA_WIDTH_SV39 - PAGE_SIZE_BITS; // 0x0000_0000_0000_002cusize
    + +
    const PPN_WIDTH_SV39: usize = PA_WIDTH_SV39 - PAGE_SIZE_BITS; // 44usize
    \ No newline at end of file diff --git a/ch8/os/mm/address/constant.VA_WIDTH_SV39.html b/ch8/os/mm/address/constant.VA_WIDTH_SV39.html index 1f0e06d1..c8821bd0 100644 --- a/ch8/os/mm/address/constant.VA_WIDTH_SV39.html +++ b/ch8/os/mm/address/constant.VA_WIDTH_SV39.html @@ -1,6 +1,8 @@ VA_WIDTH_SV39 in os::mm::address - Rust -
    const VA_WIDTH_SV39: usize = 39;
    + +
    const VA_WIDTH_SV39: usize = 39;
    \ No newline at end of file diff --git a/ch8/os/mm/address/constant.VPN_WIDTH_SV39.html b/ch8/os/mm/address/constant.VPN_WIDTH_SV39.html index 124aa845..c4e11101 100644 --- a/ch8/os/mm/address/constant.VPN_WIDTH_SV39.html +++ b/ch8/os/mm/address/constant.VPN_WIDTH_SV39.html @@ -1,6 +1,8 @@ VPN_WIDTH_SV39 in os::mm::address - Rust -
    const VPN_WIDTH_SV39: usize = VA_WIDTH_SV39 - PAGE_SIZE_BITS; // 0x0000_0000_0000_001busize
    + +
    const VPN_WIDTH_SV39: usize = VA_WIDTH_SV39 - PAGE_SIZE_BITS; // 27usize
    \ No newline at end of file diff --git a/ch8/os/mm/address/index.html b/ch8/os/mm/address/index.html index cf1a589b..9497d914 100644 --- a/ch8/os/mm/address/index.html +++ b/ch8/os/mm/address/index.html @@ -1,11 +1,13 @@ os::mm::address - Rust -
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.PhysAddr.html b/ch8/os/mm/address/struct.PhysAddr.html index dd88701f..4cc80990 100644 --- a/ch8/os/mm/address/struct.PhysAddr.html +++ b/ch8/os/mm/address/struct.PhysAddr.html @@ -1,43 +1,47 @@ PhysAddr in os::mm::address - Rust -
    -

    Struct os::mm::address::PhysAddr

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

    Definitions

    -

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

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

    +
    +

    Struct os::mm::address::PhysAddr

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

    Definitions

    +

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

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

    -

    Performs the conversion.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Converts to this type from the input type.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.PhysPageNum.html b/ch8/os/mm/address/struct.PhysPageNum.html index b8b8d1ee..e47184f1 100644 --- a/ch8/os/mm/address/struct.PhysPageNum.html +++ b/ch8/os/mm/address/struct.PhysPageNum.html @@ -1,39 +1,43 @@ PhysPageNum in os::mm::address - Rust -
    #[repr(C)]
    pub struct PhysPageNum(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    +
    #[repr(C)]
    pub struct PhysPageNum(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.SimpleRange.html b/ch8/os/mm/address/struct.SimpleRange.html index 163d0da6..ef54a37f 100644 --- a/ch8/os/mm/address/struct.SimpleRange.html +++ b/ch8/os/mm/address/struct.SimpleRange.html @@ -1,26 +1,30 @@ SimpleRange in os::mm::address - Rust -
    pub struct SimpleRange<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { + +
    pub struct SimpleRange<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { l: T, r: T, -}

    Fields

    l: Tr: T

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    l: Tr: T

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    The type of the elements being iterated over.

    +

    Which kind of iterator are we turning this into?

    +

    Creates an iterator from a value. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.SimpleRangeIterator.html b/ch8/os/mm/address/struct.SimpleRangeIterator.html index 988ccfa1..2ff2157c 100644 --- a/ch8/os/mm/address/struct.SimpleRangeIterator.html +++ b/ch8/os/mm/address/struct.SimpleRangeIterator.html @@ -1,130 +1,137 @@ SimpleRangeIterator in os::mm::address - Rust -
    pub struct SimpleRangeIterator<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { + +
    pub struct SimpleRangeIterator<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { current: T, end: T, -}

    Fields

    current: Tend: T

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    -

    Advances the iterator and returns the next value. Read more

    -

    Returns the bounds on the remaining length of the iterator. Read more

    -

    Consumes the iterator, counting the number of iterations and returning it. Read more

    -

    Consumes the iterator, returning the last element. Read more

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

    Advances the iterator by n elements. Read more

    -

    Returns the nth element of the iterator. Read more

    -

    Creates an iterator starting at the same point, but stepping by +}

    Fields

    current: Tend: T

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    +

    Advances the iterator and returns the next value. Read more

    +

    Returns the bounds on the remaining length of the iterator. Read more

    +

    Consumes the iterator, counting the number of iterations and returning it. Read more

    +

    Consumes the iterator, returning the last element. Read more

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

    Advances the iterator by n elements. Read more

    +

    Returns the nth element of the iterator. Read more

    +

    Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more

    -

    Takes two iterators and creates a new iterator over both in sequence. Read more

    -

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

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

    Creates a new iterator which places a copy of separator between adjacent +

    Takes two iterators and creates a new iterator over both in sequence. Read more

    +

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

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

    Creates a new iterator which places a copy of separator between adjacent items of the original iterator. Read more

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

    Creates a new iterator which places an item generated by separator +

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

    Creates a new iterator which places an item generated by separator between adjacent items of the original iterator. Read more

    -

    Takes a closure and creates an iterator which calls that closure on each +

    Takes a closure and creates an iterator which calls that closure on each element. Read more

    -

    Calls a closure on each element of an iterator. Read more

    -

    Creates an iterator which uses a closure to determine if an element +

    Calls a closure on each element of an iterator. Read more

    +

    Creates an iterator which uses a closure to determine if an element should be yielded. Read more

    -

    Creates an iterator that both filters and maps. Read more

    -

    Creates an iterator which gives the current iteration count as well as +

    Creates an iterator that both filters and maps. Read more

    +

    Creates an iterator which gives the current iteration count as well as the next value. Read more

    -

    Creates an iterator which can use the peek and peek_mut methods +

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more

    -

    Creates an iterator that skips elements based on a predicate. Read more

    -

    Creates an iterator that yields elements based on a predicate. Read more

    -

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    -

    Creates an iterator that skips the first n elements. Read more

    -

    Creates an iterator that yields the first n elements, or fewer +

    Creates an iterator that skips elements based on a predicate. Read more

    +

    Creates an iterator that yields elements based on a predicate. Read more

    +

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    +

    Creates an iterator that skips the first n elements. Read more

    +

    Creates an iterator that yields the first n elements, or fewer if the underlying iterator ends sooner. Read more

    -

    An iterator adapter similar to fold that holds internal state and +

    An iterator adapter similar to fold that holds internal state and produces a new iterator. Read more

    -

    Creates an iterator that works like map, but flattens nested structure. Read more

    -

    Creates an iterator that flattens nested structure. Read more

    -

    Creates an iterator which ends after the first None. Read more

    -

    Does something with each element of an iterator, passing the value on. Read more

    -

    Borrows an iterator, rather than consuming it. Read more

    -

    Transforms an iterator into a collection. Read more

    -

    Consumes an iterator, creating two collections from it. Read more

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

    Reorders the elements of this iterator in-place according to the given predicate, +

    Creates an iterator that works like map, but flattens nested structure. Read more

    +

    Creates an iterator that flattens nested structure. Read more

    +

    Creates an iterator which ends after the first None. Read more

    +

    Does something with each element of an iterator, passing the value on. Read more

    +

    Borrows an iterator, rather than consuming it. Read more

    +

    Transforms an iterator into a collection. Read more

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

    Fallibly transforms an iterator into a collection, short circuiting if +a failure is encountered. Read more

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

    Collects all the items from an iterator into a collection. Read more

    +

    Consumes an iterator, creating two collections from it. Read more

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

    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. Returns the number of true elements found. Read more

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

    Checks if the elements of this iterator are partitioned according to the given predicate, +

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

    Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return true precede all those that return false. Read more

    -

    An iterator method that applies a function as long as it returns +

    An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more

    -

    An iterator method that applies a fallible function to each item in the +

    An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more

    -

    Folds every element into an accumulator by applying an operation, +

    Folds every element into an accumulator by applying an operation, returning the final result. Read more

    -

    Reduces the elements to a single one, by repeatedly applying a reducing +

    Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more

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

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +

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

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more

    -

    Tests if every element of the iterator matches a predicate. Read more

    -

    Tests if any element of the iterator matches a predicate. Read more

    -

    Searches for an element of an iterator that satisfies a predicate. Read more

    -

    Applies function to the elements of iterator and returns +

    Tests if every element of the iterator matches a predicate. Read more

    +

    Tests if any element of the iterator matches a predicate. Read more

    +

    Searches for an element of an iterator that satisfies a predicate. Read more

    +

    Applies function to the elements of iterator and returns the first non-none result. Read more

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

    Applies function to the elements of iterator and returns +

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

    Applies function to the elements of iterator and returns the first true result or the first error. Read more

    -

    Searches for an element in an iterator, returning its index. Read more

    -

    Searches for an element in an iterator from the right, returning its +

    Searches for an element in an iterator, returning its index. Read more

    +

    Searches for an element in an iterator from the right, returning its index. Read more

    -

    Returns the maximum element of an iterator. Read more

    -

    Returns the minimum element of an iterator. Read more

    -

    Returns the element that gives the maximum value from the +

    Returns the maximum element of an iterator. Read more

    +

    Returns the minimum element of an iterator. Read more

    +

    Returns the element that gives the maximum value from the specified function. Read more

    -

    Returns the element that gives the maximum value with respect to the +

    Returns the element that gives the maximum value with respect to the specified comparison function. Read more

    -

    Returns the element that gives the minimum value from the +

    Returns the element that gives the minimum value from the specified function. Read more

    -

    Returns the element that gives the minimum value with respect to the +

    Returns the element that gives the minimum value with respect to the specified comparison function. Read more

    -

    Reverses an iterator’s direction. Read more

    -

    Converts an iterator of pairs into a pair of containers. Read more

    -

    Creates an iterator which copies all of its elements. Read more

    -

    Creates an iterator which clones all of its elements. Read more

    -

    Repeats an iterator endlessly. Read more

    -

    Sums the elements of an iterator. Read more

    -

    Iterates over the entire iterator, multiplying all the elements Read more

    -

    Lexicographically compares the elements of this Iterator with those +

    Reverses an iterator’s direction. Read more

    +

    Converts an iterator of pairs into a pair of containers. Read more

    +

    Creates an iterator which copies all of its elements. Read more

    +

    Creates an iterator which clones all of its elements. Read more

    +

    Repeats an iterator endlessly. Read more

    +

    Sums the elements of an iterator. Read more

    +

    Iterates over the entire iterator, multiplying all the elements Read more

    +

    Lexicographically compares the elements of this Iterator with those of another. Read more

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

    Lexicographically compares the elements of this Iterator with those +

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

    Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more

    -

    Lexicographically compares the elements of this Iterator with those +

    Lexicographically compares the elements of this Iterator with those of another. Read more

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

    Lexicographically compares the elements of this Iterator with those +

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

    Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more

    -

    Determines if the elements of this Iterator are equal to those of +

    Determines if the elements of this Iterator are equal to those of another. Read more

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

    Determines if the elements of this Iterator are equal to those of +

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

    Determines if the elements of this Iterator are equal to those of another with respect to the specified equality function. Read more

    -

    Determines if the elements of this Iterator are unequal to those of +

    Determines if the elements of this Iterator are unequal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically less than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically less or equal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically greater than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically greater than or equal to those of another. Read more

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

    Checks if the elements of this iterator are sorted. Read more

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

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

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

    Checks if the elements of this iterator are sorted using the given key extraction +

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

    Checks if the elements of this iterator are sorted. Read more

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

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

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

    Checks if the elements of this iterator are sorted using the given key extraction function. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type of the elements being iterated over.

    +

    Which kind of iterator are we turning this into?

    +

    Creates an iterator from a value. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.VirtAddr.html b/ch8/os/mm/address/struct.VirtAddr.html index fff94adf..f9d83ce2 100644 --- a/ch8/os/mm/address/struct.VirtAddr.html +++ b/ch8/os/mm/address/struct.VirtAddr.html @@ -1,40 +1,44 @@ VirtAddr in os::mm::address - Rust -
    -

    Struct os::mm::address::VirtAddr

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

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Debugging

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    +
    +

    Struct os::mm::address::VirtAddr

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

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Debugging

    +

    Formats the value using the given formatter. Read more

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/struct.VirtPageNum.html b/ch8/os/mm/address/struct.VirtPageNum.html index 7f222ee9..9749bdc5 100644 --- a/ch8/os/mm/address/struct.VirtPageNum.html +++ b/ch8/os/mm/address/struct.VirtPageNum.html @@ -1,39 +1,43 @@ VirtPageNum in os::mm::address - Rust -
    #[repr(C)]
    pub struct VirtPageNum(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

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

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

    Converts to this type from the input type.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/address/trait.StepByOne.html b/ch8/os/mm/address/trait.StepByOne.html index 63b7ba1c..1e7ad700 100644 --- a/ch8/os/mm/address/trait.StepByOne.html +++ b/ch8/os/mm/address/trait.StepByOne.html @@ -1,8 +1,10 @@ StepByOne in os::mm::address - Rust -
    pub trait StepByOne {
    +    
    +    
    pub trait StepByOne {
         fn step(&mut self);
    -}

    Required methods

    Implementors

    +}

    Required methods

    Implementors

    \ No newline at end of file diff --git a/ch8/os/mm/address/type.VPNRange.html b/ch8/os/mm/address/type.VPNRange.html index c1fbb02e..cbcf60e8 100644 --- a/ch8/os/mm/address/type.VPNRange.html +++ b/ch8/os/mm/address/type.VPNRange.html @@ -1,6 +1,8 @@ VPNRange in os::mm::address - Rust -
    -

    Type Definition os::mm::address::VPNRange

    source · []
    pub type VPNRange = SimpleRange<VirtPageNum>;
    + +
    +

    Type Definition os::mm::address::VPNRange

    source · []
    pub type VPNRange = SimpleRange<VirtPageNum>;
    \ No newline at end of file diff --git a/ch8/os/mm/fn.init.html b/ch8/os/mm/fn.init.html index 816c9a63..5c7f8c41 100644 --- a/ch8/os/mm/fn.init.html +++ b/ch8/os/mm/fn.init.html @@ -1,6 +1,8 @@ init in os::mm - Rust -
    -

    Function os::mm::init

    source · []
    pub fn init()
    + +
    +

    Function os::mm::init

    source · []
    pub fn init()
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/fn.frame_alloc.html b/ch8/os/mm/frame_allocator/fn.frame_alloc.html index e484e1df..84b63b35 100644 --- a/ch8/os/mm/frame_allocator/fn.frame_alloc.html +++ b/ch8/os/mm/frame_allocator/fn.frame_alloc.html @@ -1,6 +1,8 @@ frame_alloc in os::mm::frame_allocator - Rust -
    pub fn frame_alloc() -> Option<FrameTracker>
    + +
    pub fn frame_alloc() -> Option<FrameTracker>
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/fn.frame_allocator_test.html b/ch8/os/mm/frame_allocator/fn.frame_allocator_test.html index d2f7f0c1..433ea4ff 100644 --- a/ch8/os/mm/frame_allocator/fn.frame_allocator_test.html +++ b/ch8/os/mm/frame_allocator/fn.frame_allocator_test.html @@ -1,6 +1,8 @@ frame_allocator_test in os::mm::frame_allocator - Rust -
    pub fn frame_allocator_test()
    + +
    pub fn frame_allocator_test()
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/fn.frame_dealloc.html b/ch8/os/mm/frame_allocator/fn.frame_dealloc.html index 32d523ad..90d4f695 100644 --- a/ch8/os/mm/frame_allocator/fn.frame_dealloc.html +++ b/ch8/os/mm/frame_allocator/fn.frame_dealloc.html @@ -1,6 +1,8 @@ frame_dealloc in os::mm::frame_allocator - Rust -
    pub fn frame_dealloc(ppn: PhysPageNum)
    + +
    pub fn frame_dealloc(ppn: PhysPageNum)
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/fn.init_frame_allocator.html b/ch8/os/mm/frame_allocator/fn.init_frame_allocator.html index 5125c9df..e64de651 100644 --- a/ch8/os/mm/frame_allocator/fn.init_frame_allocator.html +++ b/ch8/os/mm/frame_allocator/fn.init_frame_allocator.html @@ -1,6 +1,8 @@ init_frame_allocator in os::mm::frame_allocator - Rust -
    pub fn init_frame_allocator()
    + +
    pub fn init_frame_allocator()
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/index.html b/ch8/os/mm/frame_allocator/index.html index a23a0c23..22cc9235 100644 --- a/ch8/os/mm/frame_allocator/index.html +++ b/ch8/os/mm/frame_allocator/index.html @@ -1,10 +1,12 @@ os::mm::frame_allocator - Rust -
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html index d96d51d3..899a902b 100644 --- a/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ b/ch8/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html @@ -1,20 +1,24 @@ FRAME_ALLOCATOR in os::mm::frame_allocator - Rust -
    pub struct FRAME_ALLOCATOR {
    +    
    +    
    pub struct FRAME_ALLOCATOR {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<StackFrameAllocator>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/struct.FrameTracker.html b/ch8/os/mm/frame_allocator/struct.FrameTracker.html index dfc45fe7..b496d54b 100644 --- a/ch8/os/mm/frame_allocator/struct.FrameTracker.html +++ b/ch8/os/mm/frame_allocator/struct.FrameTracker.html @@ -1,19 +1,23 @@ FrameTracker in os::mm::frame_allocator - Rust -
    pub struct FrameTracker {
    +    
    +    
    pub struct FrameTracker {
         pub ppn: PhysPageNum,
    -}

    Fields

    ppn: PhysPageNum

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    ppn: PhysPageNum

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    Executes the destructor for this type. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/struct.StackFrameAllocator.html b/ch8/os/mm/frame_allocator/struct.StackFrameAllocator.html index 5a401b3a..ba254d29 100644 --- a/ch8/os/mm/frame_allocator/struct.StackFrameAllocator.html +++ b/ch8/os/mm/frame_allocator/struct.StackFrameAllocator.html @@ -1,19 +1,23 @@ StackFrameAllocator in os::mm::frame_allocator - Rust -
    pub struct StackFrameAllocator {
    +    
    +    
    pub struct StackFrameAllocator {
         current: usize,
         end: usize,
         recycled: Vec<usize>,
    -}

    Fields

    current: usizeend: usizerecycled: Vec<usize>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    current: usizeend: usizerecycled: Vec<usize>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/trait.FrameAllocator.html b/ch8/os/mm/frame_allocator/trait.FrameAllocator.html index 00839253..f7667df8 100644 --- a/ch8/os/mm/frame_allocator/trait.FrameAllocator.html +++ b/ch8/os/mm/frame_allocator/trait.FrameAllocator.html @@ -1,10 +1,12 @@ FrameAllocator in os::mm::frame_allocator - Rust -
    trait FrameAllocator {
    +    
    +    
    trait FrameAllocator {
         fn new() -> Self;
    -
    fn alloc(&mut self) -> Option<PhysPageNum>; -
    fn dealloc(&mut self, ppn: PhysPageNum); -}

    Required methods

    Implementors

    + fn alloc(&mut self) -> Option<PhysPageNum>; + fn dealloc(&mut self, ppn: PhysPageNum); +}

    Required methods

    Implementors

    \ No newline at end of file diff --git a/ch8/os/mm/frame_allocator/type.FrameAllocatorImpl.html b/ch8/os/mm/frame_allocator/type.FrameAllocatorImpl.html index d9a85d3e..424c3b48 100644 --- a/ch8/os/mm/frame_allocator/type.FrameAllocatorImpl.html +++ b/ch8/os/mm/frame_allocator/type.FrameAllocatorImpl.html @@ -1,6 +1,8 @@ FrameAllocatorImpl in os::mm::frame_allocator - Rust -
    type FrameAllocatorImpl = StackFrameAllocator;
    + +
    type FrameAllocatorImpl = StackFrameAllocator;
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/fn.handle_alloc_error.html b/ch8/os/mm/heap_allocator/fn.handle_alloc_error.html index f85900a1..2530c916 100644 --- a/ch8/os/mm/heap_allocator/fn.handle_alloc_error.html +++ b/ch8/os/mm/heap_allocator/fn.handle_alloc_error.html @@ -1,6 +1,8 @@ handle_alloc_error in os::mm::heap_allocator - Rust -
    pub fn handle_alloc_error(layout: Layout) -> !
    + +
    pub fn handle_alloc_error(layout: Layout) -> !
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/fn.heap_test.html b/ch8/os/mm/heap_allocator/fn.heap_test.html index 60341633..6475c14f 100644 --- a/ch8/os/mm/heap_allocator/fn.heap_test.html +++ b/ch8/os/mm/heap_allocator/fn.heap_test.html @@ -1,6 +1,8 @@ heap_test in os::mm::heap_allocator - Rust -
    pub fn heap_test()
    + +
    pub fn heap_test()
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/fn.init_heap.html b/ch8/os/mm/heap_allocator/fn.init_heap.html index 043c81db..6fafa7c1 100644 --- a/ch8/os/mm/heap_allocator/fn.init_heap.html +++ b/ch8/os/mm/heap_allocator/fn.init_heap.html @@ -1,6 +1,8 @@ init_heap in os::mm::heap_allocator - Rust -
    pub fn init_heap()
    + +
    pub fn init_heap()
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/index.html b/ch8/os/mm/heap_allocator/index.html index 1c78df9a..a09e54a2 100644 --- a/ch8/os/mm/heap_allocator/index.html +++ b/ch8/os/mm/heap_allocator/index.html @@ -1,8 +1,10 @@ os::mm::heap_allocator - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html b/ch8/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html index 80e8d72a..bf4b1785 100644 --- a/ch8/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html +++ b/ch8/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html @@ -1,6 +1,8 @@ HEAP_ALLOCATOR in os::mm::heap_allocator - Rust -
    static HEAP_ALLOCATOR: LockedHeap
    + +
    static HEAP_ALLOCATOR: LockedHeap
    \ No newline at end of file diff --git a/ch8/os/mm/heap_allocator/static.HEAP_SPACE.html b/ch8/os/mm/heap_allocator/static.HEAP_SPACE.html index 16025214..10553534 100644 --- a/ch8/os/mm/heap_allocator/static.HEAP_SPACE.html +++ b/ch8/os/mm/heap_allocator/static.HEAP_SPACE.html @@ -1,6 +1,8 @@ HEAP_SPACE in os::mm::heap_allocator - Rust -
    static mut HEAP_SPACE: [u8; 2097152]
    + +
    static mut HEAP_SPACE: [u8; 2097152]
    \ No newline at end of file diff --git a/ch8/os/mm/index.html b/ch8/os/mm/index.html index 64e757c6..acbc5993 100644 --- a/ch8/os/mm/index.html +++ b/ch8/os/mm/index.html @@ -1,9 +1,11 @@ os::mm - Rust -
    -

    Module os::mm

    source · []

    Re-exports

    + +
    +

    Module os::mm

    source · []

    Re-exports

    pub use address::PhysAddr;
    pub use address::PhysPageNum;
    pub use address::StepByOne;
    pub use address::VirtAddr;
    pub use address::VirtPageNum;
    pub use frame_allocator::frame_alloc;
    pub use frame_allocator::frame_dealloc;
    pub use frame_allocator::FrameTracker;
    pub use memory_set::remap_test;
    pub use memory_set::kernel_token;
    pub use memory_set::MapPermission;
    pub use memory_set::MemorySet;
    pub use memory_set::KERNEL_SPACE;
    pub use memory_set::KERNEL_SPACE;
    pub use page_table::translated_byte_buffer;
    pub use page_table::translated_ref;
    pub use page_table::translated_refmut;
    pub use page_table::translated_str;
    pub use page_table::PageTable;
    pub use page_table::PageTableEntry;
    pub use page_table::UserBuffer;
    pub use page_table::UserBufferIterator;

    Modules

    -

    Functions

    -
    +

    Functions

    +
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/enum.MapType.html b/ch8/os/mm/memory_set/enum.MapType.html index f680740a..6069230e 100644 --- a/ch8/os/mm/memory_set/enum.MapType.html +++ b/ch8/os/mm/memory_set/enum.MapType.html @@ -1,27 +1,31 @@ MapType in os::mm::memory_set - Rust -
    pub enum MapType {
    +    
    +    
    pub enum MapType {
         Identical,
         Framed,
    -}

    Variants

    Identical

    Framed

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

    Variants

    Identical

    Framed

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    This method tests for !=.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.ebss.html b/ch8/os/mm/memory_set/fn.ebss.html index 3bd8584f..abf3a54a 100644 --- a/ch8/os/mm/memory_set/fn.ebss.html +++ b/ch8/os/mm/memory_set/fn.ebss.html @@ -1,6 +1,8 @@ ebss in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::ebss

    source · []
    unsafe extern "C" fn ebss()
    + +
    +

    Function os::mm::memory_set::ebss

    source · []
    unsafe extern "C" fn ebss()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.edata.html b/ch8/os/mm/memory_set/fn.edata.html index b9f4cc53..e300398a 100644 --- a/ch8/os/mm/memory_set/fn.edata.html +++ b/ch8/os/mm/memory_set/fn.edata.html @@ -1,6 +1,8 @@ edata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::edata

    source · []
    unsafe extern "C" fn edata()
    + +
    +

    Function os::mm::memory_set::edata

    source · []
    unsafe extern "C" fn edata()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.ekernel.html b/ch8/os/mm/memory_set/fn.ekernel.html index a68105d6..4104c50a 100644 --- a/ch8/os/mm/memory_set/fn.ekernel.html +++ b/ch8/os/mm/memory_set/fn.ekernel.html @@ -1,6 +1,8 @@ ekernel in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::ekernel

    source · []
    unsafe extern "C" fn ekernel()
    + +
    +

    Function os::mm::memory_set::ekernel

    source · []
    unsafe extern "C" fn ekernel()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.erodata.html b/ch8/os/mm/memory_set/fn.erodata.html index 7a42fc8f..ea14c701 100644 --- a/ch8/os/mm/memory_set/fn.erodata.html +++ b/ch8/os/mm/memory_set/fn.erodata.html @@ -1,6 +1,8 @@ erodata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::erodata

    source · []
    unsafe extern "C" fn erodata()
    + +
    +

    Function os::mm::memory_set::erodata

    source · []
    unsafe extern "C" fn erodata()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.etext.html b/ch8/os/mm/memory_set/fn.etext.html index dfa43cfd..37af16a3 100644 --- a/ch8/os/mm/memory_set/fn.etext.html +++ b/ch8/os/mm/memory_set/fn.etext.html @@ -1,6 +1,8 @@ etext in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::etext

    source · []
    unsafe extern "C" fn etext()
    + +
    +

    Function os::mm::memory_set::etext

    source · []
    unsafe extern "C" fn etext()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.kernel_token.html b/ch8/os/mm/memory_set/fn.kernel_token.html index 91f879db..9cd7a4b8 100644 --- a/ch8/os/mm/memory_set/fn.kernel_token.html +++ b/ch8/os/mm/memory_set/fn.kernel_token.html @@ -1,6 +1,8 @@ kernel_token in os::mm::memory_set - Rust -
    pub fn kernel_token() -> usize
    + +
    pub fn kernel_token() -> usize
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.remap_test.html b/ch8/os/mm/memory_set/fn.remap_test.html index 73f364ce..e68483f1 100644 --- a/ch8/os/mm/memory_set/fn.remap_test.html +++ b/ch8/os/mm/memory_set/fn.remap_test.html @@ -1,6 +1,8 @@ remap_test in os::mm::memory_set - Rust -
    pub fn remap_test()
    + +
    pub fn remap_test()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.sbss_with_stack.html b/ch8/os/mm/memory_set/fn.sbss_with_stack.html index ecbf7b8a..6b2051e1 100644 --- a/ch8/os/mm/memory_set/fn.sbss_with_stack.html +++ b/ch8/os/mm/memory_set/fn.sbss_with_stack.html @@ -1,6 +1,8 @@ sbss_with_stack in os::mm::memory_set - Rust -
    unsafe extern "C" fn sbss_with_stack()
    + +
    unsafe extern "C" fn sbss_with_stack()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.sdata.html b/ch8/os/mm/memory_set/fn.sdata.html index 21790d43..f9c26016 100644 --- a/ch8/os/mm/memory_set/fn.sdata.html +++ b/ch8/os/mm/memory_set/fn.sdata.html @@ -1,6 +1,8 @@ sdata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::sdata

    source · []
    unsafe extern "C" fn sdata()
    + +
    +

    Function os::mm::memory_set::sdata

    source · []
    unsafe extern "C" fn sdata()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.srodata.html b/ch8/os/mm/memory_set/fn.srodata.html index 12becf5b..04e306e2 100644 --- a/ch8/os/mm/memory_set/fn.srodata.html +++ b/ch8/os/mm/memory_set/fn.srodata.html @@ -1,6 +1,8 @@ srodata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::srodata

    source · []
    unsafe extern "C" fn srodata()
    + +
    +

    Function os::mm::memory_set::srodata

    source · []
    unsafe extern "C" fn srodata()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.stext.html b/ch8/os/mm/memory_set/fn.stext.html index f462b9fc..054f5de6 100644 --- a/ch8/os/mm/memory_set/fn.stext.html +++ b/ch8/os/mm/memory_set/fn.stext.html @@ -1,6 +1,8 @@ stext in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::stext

    source · []
    unsafe extern "C" fn stext()
    + +
    +

    Function os::mm::memory_set::stext

    source · []
    unsafe extern "C" fn stext()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/fn.strampoline.html b/ch8/os/mm/memory_set/fn.strampoline.html index 6dd5b9da..d4c09c0c 100644 --- a/ch8/os/mm/memory_set/fn.strampoline.html +++ b/ch8/os/mm/memory_set/fn.strampoline.html @@ -1,6 +1,8 @@ strampoline in os::mm::memory_set - Rust -
    unsafe extern "C" fn strampoline()
    + +
    unsafe extern "C" fn strampoline()
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/index.html b/ch8/os/mm/memory_set/index.html index e677bf1b..9c2006f2 100644 --- a/ch8/os/mm/memory_set/index.html +++ b/ch8/os/mm/memory_set/index.html @@ -1,9 +1,11 @@ os::mm::memory_set - Rust -
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html index ff47bab0..66b47393 100644 --- a/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html +++ b/ch8/os/mm/memory_set/struct.KERNEL_SPACE.html @@ -1,19 +1,23 @@ KERNEL_SPACE in os::mm::memory_set - Rust -
    pub struct KERNEL_SPACE {
    +    
    +    
    pub struct KERNEL_SPACE {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/struct.MapArea.html b/ch8/os/mm/memory_set/struct.MapArea.html index 67f30feb..7af32b7e 100644 --- a/ch8/os/mm/memory_set/struct.MapArea.html +++ b/ch8/os/mm/memory_set/struct.MapArea.html @@ -1,22 +1,26 @@ MapArea in os::mm::memory_set - Rust -
    pub struct MapArea {
    +    
    +    
    pub struct MapArea {
         vpn_range: SimpleRange<VirtPageNum>,
         data_frames: BTreeMap<VirtPageNum, FrameTracker>,
         map_type: MapType,
         map_perm: MapPermission,
    -}

    Fields

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

    Implementations

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

    Fields

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

    Implementations

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/struct.MapPermission.html b/ch8/os/mm/memory_set/struct.MapPermission.html index 8b760210..a4817995 100644 --- a/ch8/os/mm/memory_set/struct.MapPermission.html +++ b/ch8/os/mm/memory_set/struct.MapPermission.html @@ -1,53 +1,55 @@ MapPermission in os::mm::memory_set - Rust -

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    +

    Returns the set containing all flags.

    +

    Returns the raw value of the flags currently stored.

    +

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

    -

    Convert from underlying bit representation, dropping any bits +

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

    -

    Convert from underlying bit representation, preserving all +

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

    -
    Safety
    +
    Safety

    The caller of the bitflags! macro can chose to allow or disallow extra bits for their bitflags type.

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

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

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

    -

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

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

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

    -

    Returns the intersection between the flags in self and +

    Returns true if no flags are currently stored.

    +

    Returns true if all flags are currently set.

    +

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

    +

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

    +

    Inserts the specified flags in-place.

    +

    Removes the specified flags in-place.

    +

    Toggles the specified flags in-place.

    +

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

    +

    Returns the intersection between the flags in self and other.

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

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

    -

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

    +

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

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

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

    -

    Returns the difference between the flags in self and other.

    +

    Returns the difference between the flags in self and other.

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

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

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

    -

    Returns the symmetric difference between the flags +

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

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

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

    -

    Returns the complement of this set of flags.

    +

    Returns the complement of this set of flags.

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

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

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

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

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

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

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

    Extends a collection with exactly one element.

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

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

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

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

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Trait Implementations

    Formats the value using the given formatter.

    +

    Returns the intersection between the two sets of flags.

    +

    The resulting type after applying the & operator.

    +

    Disables all flags disabled in the set.

    +

    Returns the union of the two sets of flags.

    +

    The resulting type after applying the | operator.

    +

    Adds the set of flags.

    +

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

    +

    The resulting type after applying the ^ operator.

    +

    Toggles the set of flags.

    +

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

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

    Extends a collection with exactly one element.

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

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

    +

    Creates a value from an iterator. Read more

    +

    Feeds this value into the given Hasher. Read more

    +

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

    +

    Formats the value using the given formatter.

    +

    Returns the complement of this set of flags.

    +

    The resulting type after applying the ! operator.

    +

    Formats the value using the given formatter.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Returns the set difference of the two sets of flags.

    +

    The resulting type after applying the - operator.

    +

    Disables all flags enabled in the set.

    +

    Formats the value using the given formatter.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/memory_set/struct.MemorySet.html b/ch8/os/mm/memory_set/struct.MemorySet.html index 7487efc3..1291cff6 100644 --- a/ch8/os/mm/memory_set/struct.MemorySet.html +++ b/ch8/os/mm/memory_set/struct.MemorySet.html @@ -1,23 +1,27 @@ MemorySet in os::mm::memory_set - Rust -
    pub struct MemorySet {
    +    
    +    
    pub struct MemorySet {
         page_table: PageTable,
         areas: Vec<MapArea>,
    -}

    Fields

    page_table: PageTableareas: Vec<MapArea>

    Implementations

    Assume that no conflicts.

    -

    Mention that trampoline is not collected by areas.

    -

    Without kernel stacks.

    -

    Include sections in elf and trampoline, +}

    Fields

    page_table: PageTableareas: Vec<MapArea>

    Implementations

    Assume that no conflicts.

    +

    Mention that trampoline is not collected by areas.

    +

    Without kernel stacks.

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/fn.translated_byte_buffer.html b/ch8/os/mm/page_table/fn.translated_byte_buffer.html index 0a78b767..8cd4e849 100644 --- a/ch8/os/mm/page_table/fn.translated_byte_buffer.html +++ b/ch8/os/mm/page_table/fn.translated_byte_buffer.html @@ -1,6 +1,8 @@ translated_byte_buffer in os::mm::page_table - Rust -
    pub fn translated_byte_buffer(
        token: usize,
        ptr: *const u8,
        len: usize
    ) -> Vec<&'static mut [u8]>
    + +
    pub fn translated_byte_buffer(
        token: usize,
        ptr: *const u8,
        len: usize
    ) -> Vec<&'static mut [u8]>
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/fn.translated_ref.html b/ch8/os/mm/page_table/fn.translated_ref.html index ec3d9511..9023b1e0 100644 --- a/ch8/os/mm/page_table/fn.translated_ref.html +++ b/ch8/os/mm/page_table/fn.translated_ref.html @@ -1,6 +1,8 @@ translated_ref in os::mm::page_table - Rust -
    pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T
    + +
    pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/fn.translated_refmut.html b/ch8/os/mm/page_table/fn.translated_refmut.html index 2c696d79..d4bf929c 100644 --- a/ch8/os/mm/page_table/fn.translated_refmut.html +++ b/ch8/os/mm/page_table/fn.translated_refmut.html @@ -1,6 +1,8 @@ translated_refmut in os::mm::page_table - Rust -
    pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T
    + +
    pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/fn.translated_str.html b/ch8/os/mm/page_table/fn.translated_str.html index 9660da3e..052e1ab9 100644 --- a/ch8/os/mm/page_table/fn.translated_str.html +++ b/ch8/os/mm/page_table/fn.translated_str.html @@ -1,7 +1,9 @@ translated_str in os::mm::page_table - Rust -
    pub fn translated_str(token: usize, ptr: *const u8) -> String
    Expand description

    Load a string from other address spaces into kernel space without an end \0.

    -
    + +
    pub fn translated_str(token: usize, ptr: *const u8) -> String
    Expand description

    Load a string from other address spaces into kernel space without an end \0.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/index.html b/ch8/os/mm/page_table/index.html index 8e6224e4..7467ec2b 100644 --- a/ch8/os/mm/page_table/index.html +++ b/ch8/os/mm/page_table/index.html @@ -1,9 +1,11 @@ os::mm::page_table - Rust -
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/struct.PTEFlags.html b/ch8/os/mm/page_table/struct.PTEFlags.html index f73ea52f..569d8117 100644 --- a/ch8/os/mm/page_table/struct.PTEFlags.html +++ b/ch8/os/mm/page_table/struct.PTEFlags.html @@ -1,53 +1,55 @@ PTEFlags in os::mm::page_table - Rust -

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    +

    Returns the set containing all flags.

    +

    Returns the raw value of the flags currently stored.

    +

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

    -

    Convert from underlying bit representation, dropping any bits +

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

    -

    Convert from underlying bit representation, preserving all +

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

    -
    Safety
    +
    Safety

    The caller of the bitflags! macro can chose to allow or disallow extra bits for their bitflags type.

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

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

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

    -

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

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

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

    -

    Returns the intersection between the flags in self and +

    Returns true if no flags are currently stored.

    +

    Returns true if all flags are currently set.

    +

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

    +

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

    +

    Inserts the specified flags in-place.

    +

    Removes the specified flags in-place.

    +

    Toggles the specified flags in-place.

    +

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

    +

    Returns the intersection between the flags in self and other.

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

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

    -

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

    +

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

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

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

    -

    Returns the difference between the flags in self and other.

    +

    Returns the difference between the flags in self and other.

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

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

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

    -

    Returns the symmetric difference between the flags +

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

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

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

    -

    Returns the complement of this set of flags.

    +

    Returns the complement of this set of flags.

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

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

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

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

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

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

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

    Extends a collection with exactly one element.

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

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

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

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

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Trait Implementations

    Formats the value using the given formatter.

    +

    Returns the intersection between the two sets of flags.

    +

    The resulting type after applying the & operator.

    +

    Disables all flags disabled in the set.

    +

    Returns the union of the two sets of flags.

    +

    The resulting type after applying the | operator.

    +

    Adds the set of flags.

    +

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

    +

    The resulting type after applying the ^ operator.

    +

    Toggles the set of flags.

    +

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

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

    Extends a collection with exactly one element.

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

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

    +

    Creates a value from an iterator. Read more

    +

    Feeds this value into the given Hasher. Read more

    +

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

    +

    Formats the value using the given formatter.

    +

    Returns the complement of this set of flags.

    +

    The resulting type after applying the ! operator.

    +

    Formats the value using the given formatter.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Returns the set difference of the two sets of flags.

    +

    The resulting type after applying the - operator.

    +

    Disables all flags enabled in the set.

    +

    Formats the value using the given formatter.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/struct.PageTable.html b/ch8/os/mm/page_table/struct.PageTable.html index 07010acc..856767ba 100644 --- a/ch8/os/mm/page_table/struct.PageTable.html +++ b/ch8/os/mm/page_table/struct.PageTable.html @@ -1,20 +1,24 @@ PageTable in os::mm::page_table - Rust -
    pub struct PageTable {
    +    
    +    
    pub struct PageTable {
         root_ppn: PhysPageNum,
         frames: Vec<FrameTracker>,
    -}

    Fields

    root_ppn: PhysPageNumframes: Vec<FrameTracker>

    Implementations

    Assume that it won’t oom when creating/mapping.

    -

    Temporarily used to get arguments from user space.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    root_ppn: PhysPageNumframes: Vec<FrameTracker>

    Implementations

    Assume that it won’t oom when creating/mapping.

    +

    Temporarily used to get arguments from user space.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/struct.PageTableEntry.html b/ch8/os/mm/page_table/struct.PageTableEntry.html index cc67b5da..a22fe547 100644 --- a/ch8/os/mm/page_table/struct.PageTableEntry.html +++ b/ch8/os/mm/page_table/struct.PageTableEntry.html @@ -1,22 +1,26 @@ PageTableEntry in os::mm::page_table - Rust -
    #[repr(C)]
    pub struct PageTableEntry { + +
    #[repr(C)]
    pub struct PageTableEntry { pub bits: usize, -}

    Fields

    bits: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    bits: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/struct.UserBuffer.html b/ch8/os/mm/page_table/struct.UserBuffer.html index 933e4bcb..00e81d2b 100644 --- a/ch8/os/mm/page_table/struct.UserBuffer.html +++ b/ch8/os/mm/page_table/struct.UserBuffer.html @@ -1,20 +1,24 @@ UserBuffer in os::mm::page_table - Rust -
    pub struct UserBuffer {
    +    
    +    
    pub struct UserBuffer {
         pub buffers: Vec<&'static mut [u8]>,
    -}

    Fields

    buffers: Vec<&'static mut [u8]>

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    buffers: Vec<&'static mut [u8]>

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    +

    Which kind of iterator are we turning this into?

    +

    Creates an iterator from a value. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/mm/page_table/struct.UserBufferIterator.html b/ch8/os/mm/page_table/struct.UserBufferIterator.html index c4f95bb8..318948d9 100644 --- a/ch8/os/mm/page_table/struct.UserBufferIterator.html +++ b/ch8/os/mm/page_table/struct.UserBufferIterator.html @@ -1,131 +1,138 @@ UserBufferIterator in os::mm::page_table - Rust -
    pub struct UserBufferIterator {
    +    
    +    
    pub struct UserBufferIterator {
         buffers: Vec<&'static mut [u8]>,
         current_buffer: usize,
         current_idx: usize,
    -}

    Fields

    buffers: Vec<&'static mut [u8]>current_buffer: usizecurrent_idx: usize

    Trait Implementations

    The type of the elements being iterated over.

    -

    Advances the iterator and returns the next value. Read more

    -

    Returns the bounds on the remaining length of the iterator. Read more

    -

    Consumes the iterator, counting the number of iterations and returning it. Read more

    -

    Consumes the iterator, returning the last element. Read more

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

    Advances the iterator by n elements. Read more

    -

    Returns the nth element of the iterator. Read more

    -

    Creates an iterator starting at the same point, but stepping by +}

    Fields

    buffers: Vec<&'static mut [u8]>current_buffer: usizecurrent_idx: usize

    Trait Implementations

    The type of the elements being iterated over.

    +

    Advances the iterator and returns the next value. Read more

    +

    Returns the bounds on the remaining length of the iterator. Read more

    +

    Consumes the iterator, counting the number of iterations and returning it. Read more

    +

    Consumes the iterator, returning the last element. Read more

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

    Advances the iterator by n elements. Read more

    +

    Returns the nth element of the iterator. Read more

    +

    Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more

    -

    Takes two iterators and creates a new iterator over both in sequence. Read more

    -

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

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

    Creates a new iterator which places a copy of separator between adjacent +

    Takes two iterators and creates a new iterator over both in sequence. Read more

    +

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

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

    Creates a new iterator which places a copy of separator between adjacent items of the original iterator. Read more

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

    Creates a new iterator which places an item generated by separator +

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

    Creates a new iterator which places an item generated by separator between adjacent items of the original iterator. Read more

    -

    Takes a closure and creates an iterator which calls that closure on each +

    Takes a closure and creates an iterator which calls that closure on each element. Read more

    -

    Calls a closure on each element of an iterator. Read more

    -

    Creates an iterator which uses a closure to determine if an element +

    Calls a closure on each element of an iterator. Read more

    +

    Creates an iterator which uses a closure to determine if an element should be yielded. Read more

    -

    Creates an iterator that both filters and maps. Read more

    -

    Creates an iterator which gives the current iteration count as well as +

    Creates an iterator that both filters and maps. Read more

    +

    Creates an iterator which gives the current iteration count as well as the next value. Read more

    -

    Creates an iterator which can use the peek and peek_mut methods +

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more

    -

    Creates an iterator that skips elements based on a predicate. Read more

    -

    Creates an iterator that yields elements based on a predicate. Read more

    -

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    -

    Creates an iterator that skips the first n elements. Read more

    -

    Creates an iterator that yields the first n elements, or fewer +

    Creates an iterator that skips elements based on a predicate. Read more

    +

    Creates an iterator that yields elements based on a predicate. Read more

    +

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    +

    Creates an iterator that skips the first n elements. Read more

    +

    Creates an iterator that yields the first n elements, or fewer if the underlying iterator ends sooner. Read more

    -

    An iterator adapter similar to fold that holds internal state and +

    An iterator adapter similar to fold that holds internal state and produces a new iterator. Read more

    -

    Creates an iterator that works like map, but flattens nested structure. Read more

    -

    Creates an iterator that flattens nested structure. Read more

    -

    Creates an iterator which ends after the first None. Read more

    -

    Does something with each element of an iterator, passing the value on. Read more

    -

    Borrows an iterator, rather than consuming it. Read more

    -

    Transforms an iterator into a collection. Read more

    -

    Consumes an iterator, creating two collections from it. Read more

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

    Reorders the elements of this iterator in-place according to the given predicate, +

    Creates an iterator that works like map, but flattens nested structure. Read more

    +

    Creates an iterator that flattens nested structure. Read more

    +

    Creates an iterator which ends after the first None. Read more

    +

    Does something with each element of an iterator, passing the value on. Read more

    +

    Borrows an iterator, rather than consuming it. Read more

    +

    Transforms an iterator into a collection. Read more

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

    Fallibly transforms an iterator into a collection, short circuiting if +a failure is encountered. Read more

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

    Collects all the items from an iterator into a collection. Read more

    +

    Consumes an iterator, creating two collections from it. Read more

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

    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. Returns the number of true elements found. Read more

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

    Checks if the elements of this iterator are partitioned according to the given predicate, +

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

    Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return true precede all those that return false. Read more

    -

    An iterator method that applies a function as long as it returns +

    An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more

    -

    An iterator method that applies a fallible function to each item in the +

    An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more

    -

    Folds every element into an accumulator by applying an operation, +

    Folds every element into an accumulator by applying an operation, returning the final result. Read more

    -

    Reduces the elements to a single one, by repeatedly applying a reducing +

    Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more

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

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +

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

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more

    -

    Tests if every element of the iterator matches a predicate. Read more

    -

    Tests if any element of the iterator matches a predicate. Read more

    -

    Searches for an element of an iterator that satisfies a predicate. Read more

    -

    Applies function to the elements of iterator and returns +

    Tests if every element of the iterator matches a predicate. Read more

    +

    Tests if any element of the iterator matches a predicate. Read more

    +

    Searches for an element of an iterator that satisfies a predicate. Read more

    +

    Applies function to the elements of iterator and returns the first non-none result. Read more

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

    Applies function to the elements of iterator and returns +

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

    Applies function to the elements of iterator and returns the first true result or the first error. Read more

    -

    Searches for an element in an iterator, returning its index. Read more

    -

    Searches for an element in an iterator from the right, returning its +

    Searches for an element in an iterator, returning its index. Read more

    +

    Searches for an element in an iterator from the right, returning its index. Read more

    -

    Returns the maximum element of an iterator. Read more

    -

    Returns the minimum element of an iterator. Read more

    -

    Returns the element that gives the maximum value from the +

    Returns the maximum element of an iterator. Read more

    +

    Returns the minimum element of an iterator. Read more

    +

    Returns the element that gives the maximum value from the specified function. Read more

    -

    Returns the element that gives the maximum value with respect to the +

    Returns the element that gives the maximum value with respect to the specified comparison function. Read more

    -

    Returns the element that gives the minimum value from the +

    Returns the element that gives the minimum value from the specified function. Read more

    -

    Returns the element that gives the minimum value with respect to the +

    Returns the element that gives the minimum value with respect to the specified comparison function. Read more

    -

    Reverses an iterator’s direction. Read more

    -

    Converts an iterator of pairs into a pair of containers. Read more

    -

    Creates an iterator which copies all of its elements. Read more

    -

    Creates an iterator which clones all of its elements. Read more

    -

    Repeats an iterator endlessly. Read more

    -

    Sums the elements of an iterator. Read more

    -

    Iterates over the entire iterator, multiplying all the elements Read more

    -

    Lexicographically compares the elements of this Iterator with those +

    Reverses an iterator’s direction. Read more

    +

    Converts an iterator of pairs into a pair of containers. Read more

    +

    Creates an iterator which copies all of its elements. Read more

    +

    Creates an iterator which clones all of its elements. Read more

    +

    Repeats an iterator endlessly. Read more

    +

    Sums the elements of an iterator. Read more

    +

    Iterates over the entire iterator, multiplying all the elements Read more

    +

    Lexicographically compares the elements of this Iterator with those of another. Read more

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

    Lexicographically compares the elements of this Iterator with those +

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

    Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more

    -

    Lexicographically compares the elements of this Iterator with those +

    Lexicographically compares the elements of this Iterator with those of another. Read more

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

    Lexicographically compares the elements of this Iterator with those +

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

    Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more

    -

    Determines if the elements of this Iterator are equal to those of +

    Determines if the elements of this Iterator are equal to those of another. Read more

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

    Determines if the elements of this Iterator are equal to those of +

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

    Determines if the elements of this Iterator are equal to those of another with respect to the specified equality function. Read more

    -

    Determines if the elements of this Iterator are unequal to those of +

    Determines if the elements of this Iterator are unequal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically less than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically less or equal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically greater than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically +

    Determines if the elements of this Iterator are lexicographically greater than or equal to those of another. Read more

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

    Checks if the elements of this iterator are sorted. Read more

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

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

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

    Checks if the elements of this iterator are sorted using the given key extraction +

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

    Checks if the elements of this iterator are sorted. Read more

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

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

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

    Checks if the elements of this iterator are sorted using the given key extraction function. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type of the elements being iterated over.

    +

    Which kind of iterator are we turning this into?

    +

    Creates an iterator from a value. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_CLEAR_IPI.html b/ch8/os/sbi/constant.SBI_CLEAR_IPI.html index c191974c..f5d56dfa 100644 --- a/ch8/os/sbi/constant.SBI_CLEAR_IPI.html +++ b/ch8/os/sbi/constant.SBI_CLEAR_IPI.html @@ -1,6 +1,8 @@ SBI_CLEAR_IPI in os::sbi - Rust -
    -

    Constant os::sbi::SBI_CLEAR_IPI

    source · []
    const SBI_CLEAR_IPI: usize = 3;
    + +
    +

    Constant os::sbi::SBI_CLEAR_IPI

    source · []
    const SBI_CLEAR_IPI: usize = 3;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_CONSOLE_GETCHAR.html b/ch8/os/sbi/constant.SBI_CONSOLE_GETCHAR.html index 12640c16..042f0251 100644 --- a/ch8/os/sbi/constant.SBI_CONSOLE_GETCHAR.html +++ b/ch8/os/sbi/constant.SBI_CONSOLE_GETCHAR.html @@ -1,6 +1,8 @@ SBI_CONSOLE_GETCHAR in os::sbi - Rust -
    const SBI_CONSOLE_GETCHAR: usize = 2;
    + +
    const SBI_CONSOLE_GETCHAR: usize = 2;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html b/ch8/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html index 11240f3f..fca7335b 100644 --- a/ch8/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html +++ b/ch8/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html @@ -1,6 +1,8 @@ SBI_CONSOLE_PUTCHAR in os::sbi - Rust -
    const SBI_CONSOLE_PUTCHAR: usize = 1;
    + +
    const SBI_CONSOLE_PUTCHAR: usize = 1;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_REMOTE_FENCE_I.html b/ch8/os/sbi/constant.SBI_REMOTE_FENCE_I.html index 35e0c19e..cb9d263a 100644 --- a/ch8/os/sbi/constant.SBI_REMOTE_FENCE_I.html +++ b/ch8/os/sbi/constant.SBI_REMOTE_FENCE_I.html @@ -1,6 +1,8 @@ SBI_REMOTE_FENCE_I in os::sbi - Rust -
    const SBI_REMOTE_FENCE_I: usize = 5;
    + +
    const SBI_REMOTE_FENCE_I: usize = 5;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html b/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html index 4bedd2b5..4a7078eb 100644 --- a/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html +++ b/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html @@ -1,6 +1,8 @@ SBI_REMOTE_SFENCE_VMA in os::sbi - Rust -
    const SBI_REMOTE_SFENCE_VMA: usize = 6;
    + +
    const SBI_REMOTE_SFENCE_VMA: usize = 6;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html b/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html index 06c69ce2..3c7e411b 100644 --- a/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html +++ b/ch8/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html @@ -1,6 +1,8 @@ SBI_REMOTE_SFENCE_VMA_ASID in os::sbi - Rust -
    const SBI_REMOTE_SFENCE_VMA_ASID: usize = 7;
    + +
    const SBI_REMOTE_SFENCE_VMA_ASID: usize = 7;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_SEND_IPI.html b/ch8/os/sbi/constant.SBI_SEND_IPI.html index a3da3df2..07195820 100644 --- a/ch8/os/sbi/constant.SBI_SEND_IPI.html +++ b/ch8/os/sbi/constant.SBI_SEND_IPI.html @@ -1,6 +1,8 @@ SBI_SEND_IPI in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SEND_IPI

    source · []
    const SBI_SEND_IPI: usize = 4;
    + +
    +

    Constant os::sbi::SBI_SEND_IPI

    source · []
    const SBI_SEND_IPI: usize = 4;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_SET_TIMER.html b/ch8/os/sbi/constant.SBI_SET_TIMER.html index b8c22ab8..5fcd7bc4 100644 --- a/ch8/os/sbi/constant.SBI_SET_TIMER.html +++ b/ch8/os/sbi/constant.SBI_SET_TIMER.html @@ -1,6 +1,8 @@ SBI_SET_TIMER in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SET_TIMER

    source · []
    const SBI_SET_TIMER: usize = 0;
    + +
    +

    Constant os::sbi::SBI_SET_TIMER

    source · []
    const SBI_SET_TIMER: usize = 0;
    \ No newline at end of file diff --git a/ch8/os/sbi/constant.SBI_SHUTDOWN.html b/ch8/os/sbi/constant.SBI_SHUTDOWN.html index 1019984f..bfed6936 100644 --- a/ch8/os/sbi/constant.SBI_SHUTDOWN.html +++ b/ch8/os/sbi/constant.SBI_SHUTDOWN.html @@ -1,6 +1,8 @@ SBI_SHUTDOWN in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SHUTDOWN

    source · []
    const SBI_SHUTDOWN: usize = 8;
    + +
    +

    Constant os::sbi::SBI_SHUTDOWN

    source · []
    const SBI_SHUTDOWN: usize = 8;
    \ No newline at end of file diff --git a/ch8/os/sbi/fn.console_getchar.html b/ch8/os/sbi/fn.console_getchar.html index 877c7578..1223ca43 100644 --- a/ch8/os/sbi/fn.console_getchar.html +++ b/ch8/os/sbi/fn.console_getchar.html @@ -1,6 +1,8 @@ console_getchar in os::sbi - Rust -
    pub fn console_getchar() -> usize
    + +
    pub fn console_getchar() -> usize
    \ No newline at end of file diff --git a/ch8/os/sbi/fn.console_putchar.html b/ch8/os/sbi/fn.console_putchar.html index d1f365ff..f65a2732 100644 --- a/ch8/os/sbi/fn.console_putchar.html +++ b/ch8/os/sbi/fn.console_putchar.html @@ -1,6 +1,8 @@ console_putchar in os::sbi - Rust -
    pub fn console_putchar(c: usize)
    + +
    pub fn console_putchar(c: usize)
    \ No newline at end of file diff --git a/ch8/os/sbi/fn.sbi_call.html b/ch8/os/sbi/fn.sbi_call.html index 00731305..7555efc9 100644 --- a/ch8/os/sbi/fn.sbi_call.html +++ b/ch8/os/sbi/fn.sbi_call.html @@ -1,6 +1,8 @@ sbi_call in os::sbi - Rust -
    -

    Function os::sbi::sbi_call

    source · []
    fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize
    + +
    +

    Function os::sbi::sbi_call

    source · []
    fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize
    \ No newline at end of file diff --git a/ch8/os/sbi/fn.set_timer.html b/ch8/os/sbi/fn.set_timer.html index baa87c5b..a189954c 100644 --- a/ch8/os/sbi/fn.set_timer.html +++ b/ch8/os/sbi/fn.set_timer.html @@ -1,6 +1,8 @@ set_timer in os::sbi - Rust -
    -

    Function os::sbi::set_timer

    source · []
    pub fn set_timer(timer: usize)
    + +
    +

    Function os::sbi::set_timer

    source · []
    pub fn set_timer(timer: usize)
    \ No newline at end of file diff --git a/ch8/os/sbi/fn.shutdown.html b/ch8/os/sbi/fn.shutdown.html index 14b7a2d8..67e910eb 100644 --- a/ch8/os/sbi/fn.shutdown.html +++ b/ch8/os/sbi/fn.shutdown.html @@ -1,6 +1,8 @@ shutdown in os::sbi - Rust -
    -

    Function os::sbi::shutdown

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

    Function os::sbi::shutdown

    source · []
    pub fn shutdown() -> !
    \ No newline at end of file diff --git a/ch8/os/sbi/index.html b/ch8/os/sbi/index.html index 8c090e8c..a6c08362 100644 --- a/ch8/os/sbi/index.html +++ b/ch8/os/sbi/index.html @@ -1,8 +1,10 @@ os::sbi - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/sync/condvar/index.html b/ch8/os/sync/condvar/index.html index 6633ede9..e7507f62 100644 --- a/ch8/os/sync/condvar/index.html +++ b/ch8/os/sync/condvar/index.html @@ -1,7 +1,9 @@ os::sync::condvar - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/sync/condvar/struct.Condvar.html b/ch8/os/sync/condvar/struct.Condvar.html index 2b8f17fd..7de6e6c9 100644 --- a/ch8/os/sync/condvar/struct.Condvar.html +++ b/ch8/os/sync/condvar/struct.Condvar.html @@ -1,17 +1,21 @@ Condvar in os::sync::condvar - Rust -
    pub struct Condvar {
    +    
    +    
    pub struct Condvar {
         pub inner: UPSafeCell<CondvarInner>,
    -}

    Fields

    inner: UPSafeCell<CondvarInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    inner: UPSafeCell<CondvarInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/condvar/struct.CondvarInner.html b/ch8/os/sync/condvar/struct.CondvarInner.html index f1dd3996..d9f44671 100644 --- a/ch8/os/sync/condvar/struct.CondvarInner.html +++ b/ch8/os/sync/condvar/struct.CondvarInner.html @@ -1,17 +1,21 @@ CondvarInner in os::sync::condvar - Rust -
    pub struct CondvarInner {
    +    
    +    
    pub struct CondvarInner {
         pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    wait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    wait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/index.html b/ch8/os/sync/index.html index 61bd5127..b0e9a642 100644 --- a/ch8/os/sync/index.html +++ b/ch8/os/sync/index.html @@ -1,8 +1,10 @@ os::sync - Rust -
    -

    Module os::sync

    source · []

    Re-exports

    + +
    +

    Module os::sync

    source · []

    Re-exports

    pub use condvar::Condvar;
    pub use mutex::Mutex;
    pub use mutex::MutexBlocking;
    pub use mutex::MutexSpin;
    pub use semaphore::Semaphore;
    pub use up::UPSafeCell;

    Modules

    -
    +
    condvar 🔒
    mutex 🔒
    semaphore 🔒
    up 🔒
    \ No newline at end of file diff --git a/ch8/os/sync/mutex/index.html b/ch8/os/sync/mutex/index.html index 5a6bd965..e23e91d4 100644 --- a/ch8/os/sync/mutex/index.html +++ b/ch8/os/sync/mutex/index.html @@ -1,8 +1,10 @@ os::sync::mutex - Rust -
    \ No newline at end of file diff --git a/ch8/os/sync/mutex/struct.MutexBlocking.html b/ch8/os/sync/mutex/struct.MutexBlocking.html index 41ae1b0e..6e832bfb 100644 --- a/ch8/os/sync/mutex/struct.MutexBlocking.html +++ b/ch8/os/sync/mutex/struct.MutexBlocking.html @@ -1,17 +1,21 @@ MutexBlocking in os::sync::mutex - Rust -
    pub struct MutexBlocking {
    +    
    +    
    pub struct MutexBlocking {
         inner: UPSafeCell<MutexBlockingInner>,
    -}

    Fields

    inner: UPSafeCell<MutexBlockingInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    inner: UPSafeCell<MutexBlockingInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/mutex/struct.MutexBlockingInner.html b/ch8/os/sync/mutex/struct.MutexBlockingInner.html index 374cd9d3..8247043b 100644 --- a/ch8/os/sync/mutex/struct.MutexBlockingInner.html +++ b/ch8/os/sync/mutex/struct.MutexBlockingInner.html @@ -1,18 +1,22 @@ MutexBlockingInner in os::sync::mutex - Rust -
    pub struct MutexBlockingInner {
    +    
    +    
    pub struct MutexBlockingInner {
         locked: bool,
         wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    locked: boolwait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    locked: boolwait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/mutex/struct.MutexSpin.html b/ch8/os/sync/mutex/struct.MutexSpin.html index 0abe1c3e..cad53354 100644 --- a/ch8/os/sync/mutex/struct.MutexSpin.html +++ b/ch8/os/sync/mutex/struct.MutexSpin.html @@ -1,17 +1,21 @@ MutexSpin in os::sync::mutex - Rust -
    pub struct MutexSpin {
    +    
    +    
    pub struct MutexSpin {
         locked: UPSafeCell<bool>,
    -}

    Fields

    locked: UPSafeCell<bool>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    locked: UPSafeCell<bool>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/mutex/trait.Mutex.html b/ch8/os/sync/mutex/trait.Mutex.html index dfd4727c..e8e6685b 100644 --- a/ch8/os/sync/mutex/trait.Mutex.html +++ b/ch8/os/sync/mutex/trait.Mutex.html @@ -1,9 +1,11 @@ Mutex in os::sync::mutex - Rust -
    -

    Trait os::sync::mutex::Mutex

    source · []
    pub trait Mutex: Sync + Send {
    +    
    +    
    +

    Trait os::sync::mutex::Mutex

    source · []
    pub trait Mutex: Sync + Send {
         fn lock(&self);
    -
    fn unlock(&self); -}

    Required methods

    Implementors

    + fn unlock(&self); +}

    Required methods

    Implementors

    \ No newline at end of file diff --git a/ch8/os/sync/semaphore/index.html b/ch8/os/sync/semaphore/index.html index ca290fe6..51800f80 100644 --- a/ch8/os/sync/semaphore/index.html +++ b/ch8/os/sync/semaphore/index.html @@ -1,7 +1,9 @@ os::sync::semaphore - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/sync/semaphore/struct.Semaphore.html b/ch8/os/sync/semaphore/struct.Semaphore.html index 41a734d1..d61f2ad0 100644 --- a/ch8/os/sync/semaphore/struct.Semaphore.html +++ b/ch8/os/sync/semaphore/struct.Semaphore.html @@ -1,17 +1,21 @@ Semaphore in os::sync::semaphore - Rust -
    pub struct Semaphore {
    +    
    +    
    pub struct Semaphore {
         pub inner: UPSafeCell<SemaphoreInner>,
    -}

    Fields

    inner: UPSafeCell<SemaphoreInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    inner: UPSafeCell<SemaphoreInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/semaphore/struct.SemaphoreInner.html b/ch8/os/sync/semaphore/struct.SemaphoreInner.html index b8fcc22b..f66c0a4c 100644 --- a/ch8/os/sync/semaphore/struct.SemaphoreInner.html +++ b/ch8/os/sync/semaphore/struct.SemaphoreInner.html @@ -1,18 +1,22 @@ SemaphoreInner in os::sync::semaphore - Rust -
    pub struct SemaphoreInner {
    +    
    +    
    pub struct SemaphoreInner {
         pub count: isize,
         pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    count: isizewait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    count: isizewait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/sync/up/index.html b/ch8/os/sync/up/index.html index 26f07349..9f55b3ef 100644 --- a/ch8/os/sync/up/index.html +++ b/ch8/os/sync/up/index.html @@ -1,9 +1,11 @@ os::sync::up - Rust -
    -

    Module os::sync::up

    source · []

    Structs

    + +
    +

    Module os::sync::up

    source · []

    Structs

    Wrap a static data structure inside it so that we are able to access it without any unsafe.

    -
    +
    \ No newline at end of file diff --git a/ch8/os/sync/up/struct.UPSafeCell.html b/ch8/os/sync/up/struct.UPSafeCell.html index d29e93de..c8e804ed 100644 --- a/ch8/os/sync/up/struct.UPSafeCell.html +++ b/ch8/os/sync/up/struct.UPSafeCell.html @@ -1,8 +1,10 @@ UPSafeCell in os::sync::up - Rust -
    -

    Struct os::sync::up::UPSafeCell

    source · []
    pub struct UPSafeCell<T> {
    +    
    +    
    +

    Struct os::sync::up::UPSafeCell

    source · []
    pub struct UPSafeCell<T> {
         inner: RefCell<T>,
     }
    Expand description

    Wrap a static data structure inside it so that we are able to access it without any unsafe.

    @@ -10,17 +12,19 @@ able to access it without any unsafe.

    In order to get mutable reference of inner data, call exclusive_access.

    Fields

    inner: RefCell<T>

    inner data

    -

    Implementations

    User is responsible to guarantee that inner struct is only used in +

    Implementations

    User is responsible to guarantee that inner struct is only used in uniprocessor.

    -

    Panic if the data has been borrowed.

    -

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Panic if the data has been borrowed.

    +

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_CLOSE.html b/ch8/os/syscall/constant.SYSCALL_CLOSE.html index c189a9c2..e0d288be 100644 --- a/ch8/os/syscall/constant.SYSCALL_CLOSE.html +++ b/ch8/os/syscall/constant.SYSCALL_CLOSE.html @@ -1,6 +1,8 @@ SYSCALL_CLOSE in os::syscall - Rust -
    const SYSCALL_CLOSE: usize = 57;
    + +
    const SYSCALL_CLOSE: usize = 57;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html b/ch8/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html index 81a37d17..a43d1795 100644 --- a/ch8/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html +++ b/ch8/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html @@ -1,6 +1,8 @@ SYSCALL_CONDVAR_CREATE in os::syscall - Rust -
    const SYSCALL_CONDVAR_CREATE: usize = 1030;
    + +
    const SYSCALL_CONDVAR_CREATE: usize = 1030;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html b/ch8/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html index de1ca4a3..bd45f526 100644 --- a/ch8/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html +++ b/ch8/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html @@ -1,6 +1,8 @@ SYSCALL_CONDVAR_SIGNAL in os::syscall - Rust -
    const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
    + +
    const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html b/ch8/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html index 95304d26..23bcbc75 100644 --- a/ch8/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html +++ b/ch8/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html @@ -1,6 +1,8 @@ SYSCALL_CONDVAR_WAIT in os::syscall - Rust -
    const SYSCALL_CONDVAR_WAIT: usize = 1032;
    + +
    const SYSCALL_CONDVAR_WAIT: usize = 1032;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_DUP.html b/ch8/os/syscall/constant.SYSCALL_DUP.html index 4a3ed056..abb0e748 100644 --- a/ch8/os/syscall/constant.SYSCALL_DUP.html +++ b/ch8/os/syscall/constant.SYSCALL_DUP.html @@ -1,6 +1,8 @@ SYSCALL_DUP in os::syscall - Rust -
    const SYSCALL_DUP: usize = 24;
    + +
    const SYSCALL_DUP: usize = 24;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_EXEC.html b/ch8/os/syscall/constant.SYSCALL_EXEC.html index ca11f1f5..20ddef91 100644 --- a/ch8/os/syscall/constant.SYSCALL_EXEC.html +++ b/ch8/os/syscall/constant.SYSCALL_EXEC.html @@ -1,6 +1,8 @@ SYSCALL_EXEC in os::syscall - Rust -
    const SYSCALL_EXEC: usize = 221;
    + +
    const SYSCALL_EXEC: usize = 221;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_EXIT.html b/ch8/os/syscall/constant.SYSCALL_EXIT.html index 4ab8b379..e4a6afb6 100644 --- a/ch8/os/syscall/constant.SYSCALL_EXIT.html +++ b/ch8/os/syscall/constant.SYSCALL_EXIT.html @@ -1,6 +1,8 @@ SYSCALL_EXIT in os::syscall - Rust -
    const SYSCALL_EXIT: usize = 93;
    + +
    const SYSCALL_EXIT: usize = 93;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_FORK.html b/ch8/os/syscall/constant.SYSCALL_FORK.html index a60495ae..af17f5eb 100644 --- a/ch8/os/syscall/constant.SYSCALL_FORK.html +++ b/ch8/os/syscall/constant.SYSCALL_FORK.html @@ -1,6 +1,8 @@ SYSCALL_FORK in os::syscall - Rust -
    const SYSCALL_FORK: usize = 220;
    + +
    const SYSCALL_FORK: usize = 220;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_GETPID.html b/ch8/os/syscall/constant.SYSCALL_GETPID.html index 3b32faa9..7792b40b 100644 --- a/ch8/os/syscall/constant.SYSCALL_GETPID.html +++ b/ch8/os/syscall/constant.SYSCALL_GETPID.html @@ -1,6 +1,8 @@ SYSCALL_GETPID in os::syscall - Rust -
    const SYSCALL_GETPID: usize = 172;
    + +
    const SYSCALL_GETPID: usize = 172;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_GETTID.html b/ch8/os/syscall/constant.SYSCALL_GETTID.html index ca733626..5c8c3f51 100644 --- a/ch8/os/syscall/constant.SYSCALL_GETTID.html +++ b/ch8/os/syscall/constant.SYSCALL_GETTID.html @@ -1,6 +1,8 @@ SYSCALL_GETTID in os::syscall - Rust -
    const SYSCALL_GETTID: usize = 1001;
    + +
    const SYSCALL_GETTID: usize = 1001;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_GET_TIME.html b/ch8/os/syscall/constant.SYSCALL_GET_TIME.html index 343a08f8..7ef5f3a5 100644 --- a/ch8/os/syscall/constant.SYSCALL_GET_TIME.html +++ b/ch8/os/syscall/constant.SYSCALL_GET_TIME.html @@ -1,6 +1,8 @@ SYSCALL_GET_TIME in os::syscall - Rust -
    const SYSCALL_GET_TIME: usize = 169;
    + +
    const SYSCALL_GET_TIME: usize = 169;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_KILL.html b/ch8/os/syscall/constant.SYSCALL_KILL.html index bf5ec3eb..ebe9dcd8 100644 --- a/ch8/os/syscall/constant.SYSCALL_KILL.html +++ b/ch8/os/syscall/constant.SYSCALL_KILL.html @@ -1,6 +1,8 @@ SYSCALL_KILL in os::syscall - Rust -
    const SYSCALL_KILL: usize = 129;
    + +
    const SYSCALL_KILL: usize = 129;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_MUTEX_CREATE.html b/ch8/os/syscall/constant.SYSCALL_MUTEX_CREATE.html index 6ed93ace..5839dacd 100644 --- a/ch8/os/syscall/constant.SYSCALL_MUTEX_CREATE.html +++ b/ch8/os/syscall/constant.SYSCALL_MUTEX_CREATE.html @@ -1,6 +1,8 @@ SYSCALL_MUTEX_CREATE in os::syscall - Rust -
    const SYSCALL_MUTEX_CREATE: usize = 1010;
    + +
    const SYSCALL_MUTEX_CREATE: usize = 1010;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_MUTEX_LOCK.html b/ch8/os/syscall/constant.SYSCALL_MUTEX_LOCK.html index 3f352e9d..5f5373a7 100644 --- a/ch8/os/syscall/constant.SYSCALL_MUTEX_LOCK.html +++ b/ch8/os/syscall/constant.SYSCALL_MUTEX_LOCK.html @@ -1,6 +1,8 @@ SYSCALL_MUTEX_LOCK in os::syscall - Rust -
    const SYSCALL_MUTEX_LOCK: usize = 1011;
    + +
    const SYSCALL_MUTEX_LOCK: usize = 1011;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html b/ch8/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html index 074de3fe..f209704a 100644 --- a/ch8/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html +++ b/ch8/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html @@ -1,6 +1,8 @@ SYSCALL_MUTEX_UNLOCK in os::syscall - Rust -
    const SYSCALL_MUTEX_UNLOCK: usize = 1012;
    + +
    const SYSCALL_MUTEX_UNLOCK: usize = 1012;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_OPEN.html b/ch8/os/syscall/constant.SYSCALL_OPEN.html index 6db5ddbd..e10e6a42 100644 --- a/ch8/os/syscall/constant.SYSCALL_OPEN.html +++ b/ch8/os/syscall/constant.SYSCALL_OPEN.html @@ -1,6 +1,8 @@ SYSCALL_OPEN in os::syscall - Rust -
    const SYSCALL_OPEN: usize = 56;
    + +
    const SYSCALL_OPEN: usize = 56;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_PIPE.html b/ch8/os/syscall/constant.SYSCALL_PIPE.html index e92c2618..414cc34f 100644 --- a/ch8/os/syscall/constant.SYSCALL_PIPE.html +++ b/ch8/os/syscall/constant.SYSCALL_PIPE.html @@ -1,6 +1,8 @@ SYSCALL_PIPE in os::syscall - Rust -
    const SYSCALL_PIPE: usize = 59;
    + +
    const SYSCALL_PIPE: usize = 59;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_READ.html b/ch8/os/syscall/constant.SYSCALL_READ.html index 028c955f..cf445b3b 100644 --- a/ch8/os/syscall/constant.SYSCALL_READ.html +++ b/ch8/os/syscall/constant.SYSCALL_READ.html @@ -1,6 +1,8 @@ SYSCALL_READ in os::syscall - Rust -
    const SYSCALL_READ: usize = 63;
    + +
    const SYSCALL_READ: usize = 63;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html index 42485644..90be423c 100644 --- a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html +++ b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html @@ -1,6 +1,8 @@ SYSCALL_SEMAPHORE_CREATE in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
    + +
    const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html index e7b97375..9c178b9c 100644 --- a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html +++ b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html @@ -1,6 +1,8 @@ SYSCALL_SEMAPHORE_DOWN in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
    + +
    const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html index ce325bb6..be10fecd 100644 --- a/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html +++ b/ch8/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html @@ -1,6 +1,8 @@ SYSCALL_SEMAPHORE_UP in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_UP: usize = 1021;
    + +
    const SYSCALL_SEMAPHORE_UP: usize = 1021;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_SLEEP.html b/ch8/os/syscall/constant.SYSCALL_SLEEP.html index e1e9e0bc..8f1480da 100644 --- a/ch8/os/syscall/constant.SYSCALL_SLEEP.html +++ b/ch8/os/syscall/constant.SYSCALL_SLEEP.html @@ -1,6 +1,8 @@ SYSCALL_SLEEP in os::syscall - Rust -
    const SYSCALL_SLEEP: usize = 101;
    + +
    const SYSCALL_SLEEP: usize = 101;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_THREAD_CREATE.html b/ch8/os/syscall/constant.SYSCALL_THREAD_CREATE.html index 2fe08c30..f873b513 100644 --- a/ch8/os/syscall/constant.SYSCALL_THREAD_CREATE.html +++ b/ch8/os/syscall/constant.SYSCALL_THREAD_CREATE.html @@ -1,6 +1,8 @@ SYSCALL_THREAD_CREATE in os::syscall - Rust -
    const SYSCALL_THREAD_CREATE: usize = 1000;
    + +
    const SYSCALL_THREAD_CREATE: usize = 1000;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_WAITPID.html b/ch8/os/syscall/constant.SYSCALL_WAITPID.html index d902aa1a..e4746848 100644 --- a/ch8/os/syscall/constant.SYSCALL_WAITPID.html +++ b/ch8/os/syscall/constant.SYSCALL_WAITPID.html @@ -1,6 +1,8 @@ SYSCALL_WAITPID in os::syscall - Rust -
    const SYSCALL_WAITPID: usize = 260;
    + +
    const SYSCALL_WAITPID: usize = 260;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_WAITTID.html b/ch8/os/syscall/constant.SYSCALL_WAITTID.html index c259da17..a6c07f23 100644 --- a/ch8/os/syscall/constant.SYSCALL_WAITTID.html +++ b/ch8/os/syscall/constant.SYSCALL_WAITTID.html @@ -1,6 +1,8 @@ SYSCALL_WAITTID in os::syscall - Rust -
    const SYSCALL_WAITTID: usize = 1002;
    + +
    const SYSCALL_WAITTID: usize = 1002;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_WRITE.html b/ch8/os/syscall/constant.SYSCALL_WRITE.html index 73f23b78..ffce29df 100644 --- a/ch8/os/syscall/constant.SYSCALL_WRITE.html +++ b/ch8/os/syscall/constant.SYSCALL_WRITE.html @@ -1,6 +1,8 @@ SYSCALL_WRITE in os::syscall - Rust -
    const SYSCALL_WRITE: usize = 64;
    + +
    const SYSCALL_WRITE: usize = 64;
    \ No newline at end of file diff --git a/ch8/os/syscall/constant.SYSCALL_YIELD.html b/ch8/os/syscall/constant.SYSCALL_YIELD.html index 45bf9297..0ab0ec57 100644 --- a/ch8/os/syscall/constant.SYSCALL_YIELD.html +++ b/ch8/os/syscall/constant.SYSCALL_YIELD.html @@ -1,6 +1,8 @@ SYSCALL_YIELD in os::syscall - Rust -
    const SYSCALL_YIELD: usize = 124;
    + +
    const SYSCALL_YIELD: usize = 124;
    \ No newline at end of file diff --git a/ch8/os/syscall/fn.syscall.html b/ch8/os/syscall/fn.syscall.html index fd17cd3b..baa1d5a6 100644 --- a/ch8/os/syscall/fn.syscall.html +++ b/ch8/os/syscall/fn.syscall.html @@ -1,6 +1,8 @@ syscall in os::syscall - Rust -
    -

    Function os::syscall::syscall

    source · []
    pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize
    + +
    +

    Function os::syscall::syscall

    source · []
    pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_close.html b/ch8/os/syscall/fs/fn.sys_close.html index 43b0efef..3e3471a6 100644 --- a/ch8/os/syscall/fs/fn.sys_close.html +++ b/ch8/os/syscall/fs/fn.sys_close.html @@ -1,6 +1,8 @@ sys_close in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_close

    source · []
    pub fn sys_close(fd: usize) -> isize
    + +
    +

    Function os::syscall::fs::sys_close

    source · []
    pub fn sys_close(fd: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_dup.html b/ch8/os/syscall/fs/fn.sys_dup.html index d0b39347..4e4ac120 100644 --- a/ch8/os/syscall/fs/fn.sys_dup.html +++ b/ch8/os/syscall/fs/fn.sys_dup.html @@ -1,6 +1,8 @@ sys_dup in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_dup

    source · []
    pub fn sys_dup(fd: usize) -> isize
    + +
    +

    Function os::syscall::fs::sys_dup

    source · []
    pub fn sys_dup(fd: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_open.html b/ch8/os/syscall/fs/fn.sys_open.html index 3bc3a469..34f41857 100644 --- a/ch8/os/syscall/fs/fn.sys_open.html +++ b/ch8/os/syscall/fs/fn.sys_open.html @@ -1,6 +1,8 @@ sys_open in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_open

    source · []
    pub fn sys_open(path: *const u8, flags: u32) -> isize
    + +
    +

    Function os::syscall::fs::sys_open

    source · []
    pub fn sys_open(path: *const u8, flags: u32) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_pipe.html b/ch8/os/syscall/fs/fn.sys_pipe.html index 57c88e7d..84cd0af0 100644 --- a/ch8/os/syscall/fs/fn.sys_pipe.html +++ b/ch8/os/syscall/fs/fn.sys_pipe.html @@ -1,6 +1,8 @@ sys_pipe in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_pipe

    source · []
    pub fn sys_pipe(pipe: *mut usize) -> isize
    + +
    +

    Function os::syscall::fs::sys_pipe

    source · []
    pub fn sys_pipe(pipe: *mut usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_read.html b/ch8/os/syscall/fs/fn.sys_read.html index b18050d3..17ff86fd 100644 --- a/ch8/os/syscall/fs/fn.sys_read.html +++ b/ch8/os/syscall/fs/fn.sys_read.html @@ -1,6 +1,8 @@ sys_read in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_read

    source · []
    pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize
    + +
    +

    Function os::syscall::fs::sys_read

    source · []
    pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/fn.sys_write.html b/ch8/os/syscall/fs/fn.sys_write.html index 2bd61525..961b7436 100644 --- a/ch8/os/syscall/fs/fn.sys_write.html +++ b/ch8/os/syscall/fs/fn.sys_write.html @@ -1,6 +1,8 @@ sys_write in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_write

    source · []
    pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize
    + +
    +

    Function os::syscall::fs::sys_write

    source · []
    pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/fs/index.html b/ch8/os/syscall/fs/index.html index 4970c656..a7fbc7df 100644 --- a/ch8/os/syscall/fs/index.html +++ b/ch8/os/syscall/fs/index.html @@ -1,7 +1,9 @@ os::syscall::fs - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/syscall/index.html b/ch8/os/syscall/index.html index ff7db82c..78c69e8c 100644 --- a/ch8/os/syscall/index.html +++ b/ch8/os/syscall/index.html @@ -1,9 +1,11 @@ os::syscall - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_exec.html b/ch8/os/syscall/process/fn.sys_exec.html index 25d4e70b..be527834 100644 --- a/ch8/os/syscall/process/fn.sys_exec.html +++ b/ch8/os/syscall/process/fn.sys_exec.html @@ -1,6 +1,8 @@ sys_exec in os::syscall::process - Rust -
    pub fn sys_exec(path: *const u8, args: *const usize) -> isize
    + +
    pub fn sys_exec(path: *const u8, args: *const usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_exit.html b/ch8/os/syscall/process/fn.sys_exit.html index 72a69ef6..52320f5f 100644 --- a/ch8/os/syscall/process/fn.sys_exit.html +++ b/ch8/os/syscall/process/fn.sys_exit.html @@ -1,6 +1,8 @@ sys_exit in os::syscall::process - Rust -
    pub fn sys_exit(exit_code: i32) -> !
    + +
    pub fn sys_exit(exit_code: i32) -> !
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_fork.html b/ch8/os/syscall/process/fn.sys_fork.html index e743f157..330a5cc1 100644 --- a/ch8/os/syscall/process/fn.sys_fork.html +++ b/ch8/os/syscall/process/fn.sys_fork.html @@ -1,6 +1,8 @@ sys_fork in os::syscall::process - Rust -
    pub fn sys_fork() -> isize
    + +
    pub fn sys_fork() -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_get_time.html b/ch8/os/syscall/process/fn.sys_get_time.html index fcf96d5b..2803d48f 100644 --- a/ch8/os/syscall/process/fn.sys_get_time.html +++ b/ch8/os/syscall/process/fn.sys_get_time.html @@ -1,6 +1,8 @@ sys_get_time in os::syscall::process - Rust -
    pub fn sys_get_time() -> isize
    + +
    pub fn sys_get_time() -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_getpid.html b/ch8/os/syscall/process/fn.sys_getpid.html index 4ab103f0..4fc5f586 100644 --- a/ch8/os/syscall/process/fn.sys_getpid.html +++ b/ch8/os/syscall/process/fn.sys_getpid.html @@ -1,6 +1,8 @@ sys_getpid in os::syscall::process - Rust -
    pub fn sys_getpid() -> isize
    + +
    pub fn sys_getpid() -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_kill.html b/ch8/os/syscall/process/fn.sys_kill.html index 08b9fd05..50f8c820 100644 --- a/ch8/os/syscall/process/fn.sys_kill.html +++ b/ch8/os/syscall/process/fn.sys_kill.html @@ -1,6 +1,8 @@ sys_kill in os::syscall::process - Rust -
    pub fn sys_kill(pid: usize, signal: u32) -> isize
    + +
    pub fn sys_kill(pid: usize, signal: u32) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_waitpid.html b/ch8/os/syscall/process/fn.sys_waitpid.html index edae9303..237f1475 100644 --- a/ch8/os/syscall/process/fn.sys_waitpid.html +++ b/ch8/os/syscall/process/fn.sys_waitpid.html @@ -1,8 +1,10 @@ sys_waitpid in os::syscall::process - Rust -
    pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize
    Expand description

    If there is not a child process whose pid is same as given, return -1. +

    +
    pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize
    Expand description

    If there is not a child process whose pid is same as given, return -1. Else if there is a child process but it is still running, return -2.

    -
    +
    \ No newline at end of file diff --git a/ch8/os/syscall/process/fn.sys_yield.html b/ch8/os/syscall/process/fn.sys_yield.html index 7a2409fb..149022eb 100644 --- a/ch8/os/syscall/process/fn.sys_yield.html +++ b/ch8/os/syscall/process/fn.sys_yield.html @@ -1,6 +1,8 @@ sys_yield in os::syscall::process - Rust -
    pub fn sys_yield() -> isize
    + +
    pub fn sys_yield() -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/process/index.html b/ch8/os/syscall/process/index.html index 4780326d..91665be0 100644 --- a/ch8/os/syscall/process/index.html +++ b/ch8/os/syscall/process/index.html @@ -1,9 +1,11 @@ os::syscall::process - Rust -
    -

    Module os::syscall::process

    source · []

    Functions

    + +
    +

    Module os::syscall::process

    source · []

    Functions

    If there is not a child process whose pid is same as given, return -1. Else if there is a child process but it is still running, return -2.

    -
    +
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_condvar_create.html b/ch8/os/syscall/sync/fn.sys_condvar_create.html index 221b0c76..86bcab39 100644 --- a/ch8/os/syscall/sync/fn.sys_condvar_create.html +++ b/ch8/os/syscall/sync/fn.sys_condvar_create.html @@ -1,6 +1,8 @@ sys_condvar_create in os::syscall::sync - Rust -
    pub fn sys_condvar_create(_arg: usize) -> isize
    + +
    pub fn sys_condvar_create(_arg: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_condvar_signal.html b/ch8/os/syscall/sync/fn.sys_condvar_signal.html index f944c3ec..02a16101 100644 --- a/ch8/os/syscall/sync/fn.sys_condvar_signal.html +++ b/ch8/os/syscall/sync/fn.sys_condvar_signal.html @@ -1,6 +1,8 @@ sys_condvar_signal in os::syscall::sync - Rust -
    pub fn sys_condvar_signal(condvar_id: usize) -> isize
    + +
    pub fn sys_condvar_signal(condvar_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_condvar_wait.html b/ch8/os/syscall/sync/fn.sys_condvar_wait.html index fde84215..3330d0df 100644 --- a/ch8/os/syscall/sync/fn.sys_condvar_wait.html +++ b/ch8/os/syscall/sync/fn.sys_condvar_wait.html @@ -1,6 +1,8 @@ sys_condvar_wait in os::syscall::sync - Rust -
    pub fn sys_condvar_wait(condvar_id: usize, mutex_id: usize) -> isize
    + +
    pub fn sys_condvar_wait(condvar_id: usize, mutex_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_mutex_create.html b/ch8/os/syscall/sync/fn.sys_mutex_create.html index 723f7cf5..5a136428 100644 --- a/ch8/os/syscall/sync/fn.sys_mutex_create.html +++ b/ch8/os/syscall/sync/fn.sys_mutex_create.html @@ -1,6 +1,8 @@ sys_mutex_create in os::syscall::sync - Rust -
    pub fn sys_mutex_create(blocking: bool) -> isize
    + +
    pub fn sys_mutex_create(blocking: bool) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_mutex_lock.html b/ch8/os/syscall/sync/fn.sys_mutex_lock.html index 15d64cba..b1bdd2df 100644 --- a/ch8/os/syscall/sync/fn.sys_mutex_lock.html +++ b/ch8/os/syscall/sync/fn.sys_mutex_lock.html @@ -1,6 +1,8 @@ sys_mutex_lock in os::syscall::sync - Rust -
    pub fn sys_mutex_lock(mutex_id: usize) -> isize
    + +
    pub fn sys_mutex_lock(mutex_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_mutex_unlock.html b/ch8/os/syscall/sync/fn.sys_mutex_unlock.html index e192e54a..7f70a93a 100644 --- a/ch8/os/syscall/sync/fn.sys_mutex_unlock.html +++ b/ch8/os/syscall/sync/fn.sys_mutex_unlock.html @@ -1,6 +1,8 @@ sys_mutex_unlock in os::syscall::sync - Rust -
    pub fn sys_mutex_unlock(mutex_id: usize) -> isize
    + +
    pub fn sys_mutex_unlock(mutex_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_semaphore_create.html b/ch8/os/syscall/sync/fn.sys_semaphore_create.html index 2370a3fa..bcfc382b 100644 --- a/ch8/os/syscall/sync/fn.sys_semaphore_create.html +++ b/ch8/os/syscall/sync/fn.sys_semaphore_create.html @@ -1,6 +1,8 @@ sys_semaphore_create in os::syscall::sync - Rust -
    pub fn sys_semaphore_create(res_count: usize) -> isize
    + +
    pub fn sys_semaphore_create(res_count: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_semaphore_down.html b/ch8/os/syscall/sync/fn.sys_semaphore_down.html index 34a07f69..9e403e41 100644 --- a/ch8/os/syscall/sync/fn.sys_semaphore_down.html +++ b/ch8/os/syscall/sync/fn.sys_semaphore_down.html @@ -1,6 +1,8 @@ sys_semaphore_down in os::syscall::sync - Rust -
    pub fn sys_semaphore_down(sem_id: usize) -> isize
    + +
    pub fn sys_semaphore_down(sem_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_semaphore_up.html b/ch8/os/syscall/sync/fn.sys_semaphore_up.html index 7281694d..645d3eca 100644 --- a/ch8/os/syscall/sync/fn.sys_semaphore_up.html +++ b/ch8/os/syscall/sync/fn.sys_semaphore_up.html @@ -1,6 +1,8 @@ sys_semaphore_up in os::syscall::sync - Rust -
    pub fn sys_semaphore_up(sem_id: usize) -> isize
    + +
    pub fn sys_semaphore_up(sem_id: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/fn.sys_sleep.html b/ch8/os/syscall/sync/fn.sys_sleep.html index 8c7a649d..7f3a339e 100644 --- a/ch8/os/syscall/sync/fn.sys_sleep.html +++ b/ch8/os/syscall/sync/fn.sys_sleep.html @@ -1,6 +1,8 @@ sys_sleep in os::syscall::sync - Rust -
    -

    Function os::syscall::sync::sys_sleep

    source · []
    pub fn sys_sleep(ms: usize) -> isize
    + +
    +

    Function os::syscall::sync::sys_sleep

    source · []
    pub fn sys_sleep(ms: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/sync/index.html b/ch8/os/syscall/sync/index.html index 2dd5a615..153de578 100644 --- a/ch8/os/syscall/sync/index.html +++ b/ch8/os/syscall/sync/index.html @@ -1,7 +1,9 @@ os::syscall::sync - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/syscall/thread/fn.sys_gettid.html b/ch8/os/syscall/thread/fn.sys_gettid.html index 1faf620b..c00cd702 100644 --- a/ch8/os/syscall/thread/fn.sys_gettid.html +++ b/ch8/os/syscall/thread/fn.sys_gettid.html @@ -1,6 +1,8 @@ sys_gettid in os::syscall::thread - Rust -
    pub fn sys_gettid() -> isize
    + +
    pub fn sys_gettid() -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/thread/fn.sys_thread_create.html b/ch8/os/syscall/thread/fn.sys_thread_create.html index 59d09cec..1de9c924 100644 --- a/ch8/os/syscall/thread/fn.sys_thread_create.html +++ b/ch8/os/syscall/thread/fn.sys_thread_create.html @@ -1,6 +1,8 @@ sys_thread_create in os::syscall::thread - Rust -
    pub fn sys_thread_create(entry: usize, arg: usize) -> isize
    + +
    pub fn sys_thread_create(entry: usize, arg: usize) -> isize
    \ No newline at end of file diff --git a/ch8/os/syscall/thread/fn.sys_waittid.html b/ch8/os/syscall/thread/fn.sys_waittid.html index b5168fa5..489c2e9b 100644 --- a/ch8/os/syscall/thread/fn.sys_waittid.html +++ b/ch8/os/syscall/thread/fn.sys_waittid.html @@ -1,9 +1,11 @@ sys_waittid in os::syscall::thread - Rust -
    pub fn sys_waittid(tid: usize) -> i32
    Expand description

    thread does not exist, return -1 +

    +
    pub fn sys_waittid(tid: usize) -> i32
    Expand description

    thread does not exist, return -1 thread has not exited yet, return -2 otherwise, return thread’s exit code

    -
    +
    \ No newline at end of file diff --git a/ch8/os/syscall/thread/index.html b/ch8/os/syscall/thread/index.html index 405da0ca..ae2d05e2 100644 --- a/ch8/os/syscall/thread/index.html +++ b/ch8/os/syscall/thread/index.html @@ -1,10 +1,12 @@ os::syscall::thread - Rust -
    -

    Module os::syscall::thread

    source · []

    Functions

    + +
    +

    Module os::syscall::thread

    source · []

    Functions

    thread does not exist, return -1 thread has not exited yet, return -2 otherwise, return thread’s exit code

    -
    +
    \ No newline at end of file diff --git a/ch8/os/task/context/index.html b/ch8/os/task/context/index.html index d9baf036..74b2c655 100644 --- a/ch8/os/task/context/index.html +++ b/ch8/os/task/context/index.html @@ -1,7 +1,9 @@ os::task::context - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/task/context/struct.TaskContext.html b/ch8/os/task/context/struct.TaskContext.html index 86c3149c..76dd0a3a 100644 --- a/ch8/os/task/context/struct.TaskContext.html +++ b/ch8/os/task/context/struct.TaskContext.html @@ -1,19 +1,23 @@ TaskContext in os::task::context - Rust -
    #[repr(C)]
    pub struct TaskContext { + +
    #[repr(C)]
    pub struct TaskContext { ra: usize, sp: usize, s: [usize; 12], -}

    Fields

    ra: usizesp: usizes: [usize; 12]

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    ra: usizesp: usizes: [usize; 12]

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/fn.add_initproc.html b/ch8/os/task/fn.add_initproc.html index 1e291ee6..bd7498f5 100644 --- a/ch8/os/task/fn.add_initproc.html +++ b/ch8/os/task/fn.add_initproc.html @@ -1,6 +1,8 @@ add_initproc in os::task - Rust -
    -

    Function os::task::add_initproc

    source · []
    pub fn add_initproc()
    + +
    +

    Function os::task::add_initproc

    source · []
    pub fn add_initproc()
    \ No newline at end of file diff --git a/ch8/os/task/fn.block_current_and_run_next.html b/ch8/os/task/fn.block_current_and_run_next.html index eb1ff107..ef47bdfd 100644 --- a/ch8/os/task/fn.block_current_and_run_next.html +++ b/ch8/os/task/fn.block_current_and_run_next.html @@ -1,6 +1,8 @@ block_current_and_run_next in os::task - Rust -
    pub fn block_current_and_run_next()
    + +
    pub fn block_current_and_run_next()
    \ No newline at end of file diff --git a/ch8/os/task/fn.check_signals_of_current.html b/ch8/os/task/fn.check_signals_of_current.html index 60f17b5b..ee2c3b91 100644 --- a/ch8/os/task/fn.check_signals_of_current.html +++ b/ch8/os/task/fn.check_signals_of_current.html @@ -1,6 +1,8 @@ check_signals_of_current in os::task - Rust -
    pub fn check_signals_of_current() -> Option<(i32, &'static str)>
    + +
    pub fn check_signals_of_current() -> Option<(i32, &'static str)>
    \ No newline at end of file diff --git a/ch8/os/task/fn.current_add_signal.html b/ch8/os/task/fn.current_add_signal.html index dc27d6e4..ae57127e 100644 --- a/ch8/os/task/fn.current_add_signal.html +++ b/ch8/os/task/fn.current_add_signal.html @@ -1,6 +1,8 @@ current_add_signal in os::task - Rust -
    pub fn current_add_signal(signal: SignalFlags)
    + +
    pub fn current_add_signal(signal: SignalFlags)
    \ No newline at end of file diff --git a/ch8/os/task/fn.exit_current_and_run_next.html b/ch8/os/task/fn.exit_current_and_run_next.html index 2360abc0..a0368b0f 100644 --- a/ch8/os/task/fn.exit_current_and_run_next.html +++ b/ch8/os/task/fn.exit_current_and_run_next.html @@ -1,6 +1,8 @@ exit_current_and_run_next in os::task - Rust -
    pub fn exit_current_and_run_next(exit_code: i32)
    + +
    pub fn exit_current_and_run_next(exit_code: i32)
    \ No newline at end of file diff --git a/ch8/os/task/fn.suspend_current_and_run_next.html b/ch8/os/task/fn.suspend_current_and_run_next.html index f0529347..fcfd9bd3 100644 --- a/ch8/os/task/fn.suspend_current_and_run_next.html +++ b/ch8/os/task/fn.suspend_current_and_run_next.html @@ -1,6 +1,8 @@ suspend_current_and_run_next in os::task - Rust -
    pub fn suspend_current_and_run_next()
    + +
    pub fn suspend_current_and_run_next()
    \ No newline at end of file diff --git a/ch8/os/task/id/fn.kernel_stack_position.html b/ch8/os/task/id/fn.kernel_stack_position.html index 4d746b7c..d5f5895f 100644 --- a/ch8/os/task/id/fn.kernel_stack_position.html +++ b/ch8/os/task/id/fn.kernel_stack_position.html @@ -1,7 +1,9 @@ kernel_stack_position in os::task::id - Rust -
    pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
    Expand description

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

    -
    + +
    pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
    Expand description

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

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/fn.kstack_alloc.html b/ch8/os/task/id/fn.kstack_alloc.html index ed362ad4..6358f391 100644 --- a/ch8/os/task/id/fn.kstack_alloc.html +++ b/ch8/os/task/id/fn.kstack_alloc.html @@ -1,6 +1,8 @@ kstack_alloc in os::task::id - Rust -
    -

    Function os::task::id::kstack_alloc

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

    Function os::task::id::kstack_alloc

    source · []
    pub fn kstack_alloc() -> KernelStack
    \ No newline at end of file diff --git a/ch8/os/task/id/fn.pid_alloc.html b/ch8/os/task/id/fn.pid_alloc.html index 9e76e058..3e975810 100644 --- a/ch8/os/task/id/fn.pid_alloc.html +++ b/ch8/os/task/id/fn.pid_alloc.html @@ -1,6 +1,8 @@ pid_alloc in os::task::id - Rust -
    -

    Function os::task::id::pid_alloc

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

    Function os::task::id::pid_alloc

    source · []
    pub fn pid_alloc() -> PidHandle
    \ No newline at end of file diff --git a/ch8/os/task/id/fn.trap_cx_bottom_from_tid.html b/ch8/os/task/id/fn.trap_cx_bottom_from_tid.html index 5e5d08cb..cf4bbce1 100644 --- a/ch8/os/task/id/fn.trap_cx_bottom_from_tid.html +++ b/ch8/os/task/id/fn.trap_cx_bottom_from_tid.html @@ -1,6 +1,8 @@ trap_cx_bottom_from_tid in os::task::id - Rust -
    fn trap_cx_bottom_from_tid(tid: usize) -> usize
    + +
    fn trap_cx_bottom_from_tid(tid: usize) -> usize
    \ No newline at end of file diff --git a/ch8/os/task/id/fn.ustack_bottom_from_tid.html b/ch8/os/task/id/fn.ustack_bottom_from_tid.html index 954d1cb8..5a8977b7 100644 --- a/ch8/os/task/id/fn.ustack_bottom_from_tid.html +++ b/ch8/os/task/id/fn.ustack_bottom_from_tid.html @@ -1,6 +1,8 @@ ustack_bottom_from_tid in os::task::id - Rust -
    fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
    + +
    fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
    \ No newline at end of file diff --git a/ch8/os/task/id/index.html b/ch8/os/task/id/index.html index 8cb66035..2b27e6cb 100644 --- a/ch8/os/task/id/index.html +++ b/ch8/os/task/id/index.html @@ -1,9 +1,11 @@ os::task::id - Rust -
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html index 428f7cba..d784d715 100644 --- a/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html +++ b/ch8/os/task/id/struct.KSTACK_ALLOCATOR.html @@ -1,20 +1,24 @@ KSTACK_ALLOCATOR in os::task::id - Rust -
    struct KSTACK_ALLOCATOR {
    +    
    +    
    struct KSTACK_ALLOCATOR {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.KernelStack.html b/ch8/os/task/id/struct.KernelStack.html index 2a4cf7f3..730c4e8f 100644 --- a/ch8/os/task/id/struct.KernelStack.html +++ b/ch8/os/task/id/struct.KernelStack.html @@ -1,16 +1,20 @@ KernelStack in os::task::id - Rust -
    -

    Struct os::task::id::KernelStack

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

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    +

    Struct os::task::id::KernelStack

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

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.PID_ALLOCATOR.html b/ch8/os/task/id/struct.PID_ALLOCATOR.html index d4e9fa16..66cbad98 100644 --- a/ch8/os/task/id/struct.PID_ALLOCATOR.html +++ b/ch8/os/task/id/struct.PID_ALLOCATOR.html @@ -1,20 +1,24 @@ PID_ALLOCATOR in os::task::id - Rust -
    struct PID_ALLOCATOR {
    +    
    +    
    struct PID_ALLOCATOR {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.PidHandle.html b/ch8/os/task/id/struct.PidHandle.html index 9a28040a..a4431f41 100644 --- a/ch8/os/task/id/struct.PidHandle.html +++ b/ch8/os/task/id/struct.PidHandle.html @@ -1,16 +1,20 @@ PidHandle in os::task::id - Rust -
    -

    Struct os::task::id::PidHandle

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

    Tuple Fields

    0: usize

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    + +
    +

    Struct os::task::id::PidHandle

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

    Tuple Fields

    0: usize

    Trait Implementations

    Executes the destructor for this type. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.RecycleAllocator.html b/ch8/os/task/id/struct.RecycleAllocator.html index d92efefd..5c11bac4 100644 --- a/ch8/os/task/id/struct.RecycleAllocator.html +++ b/ch8/os/task/id/struct.RecycleAllocator.html @@ -1,18 +1,22 @@ RecycleAllocator in os::task::id - Rust -
    pub struct RecycleAllocator {
    +    
    +    
    pub struct RecycleAllocator {
         current: usize,
         recycled: Vec<usize>,
    -}

    Fields

    current: usizerecycled: Vec<usize>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    current: usizerecycled: Vec<usize>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/id/struct.TaskUserRes.html b/ch8/os/task/id/struct.TaskUserRes.html index 4e56392e..28430208 100644 --- a/ch8/os/task/id/struct.TaskUserRes.html +++ b/ch8/os/task/id/struct.TaskUserRes.html @@ -1,20 +1,24 @@ TaskUserRes in os::task::id - Rust -
    -

    Struct os::task::id::TaskUserRes

    source · []
    pub struct TaskUserRes {
    +    
    +    
    +

    Struct os::task::id::TaskUserRes

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

    Fields

    tid: usizeustack_base: usizeprocess: Weak<ProcessControlBlock>

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    tid: usizeustack_base: usizeprocess: Weak<ProcessControlBlock>

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/index.html b/ch8/os/task/index.html index b8d84726..bb7d5294 100644 --- a/ch8/os/task/index.html +++ b/ch8/os/task/index.html @@ -1,10 +1,12 @@ os::task - Rust -
    \ No newline at end of file diff --git a/ch8/os/task/manager/fn.add_task.html b/ch8/os/task/manager/fn.add_task.html index d3aefe8a..619e917f 100644 --- a/ch8/os/task/manager/fn.add_task.html +++ b/ch8/os/task/manager/fn.add_task.html @@ -1,6 +1,8 @@ add_task in os::task::manager - Rust -
    -

    Function os::task::manager::add_task

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

    Function os::task::manager::add_task

    source · []
    pub fn add_task(task: Arc<TaskControlBlock>)
    \ No newline at end of file diff --git a/ch8/os/task/manager/fn.fetch_task.html b/ch8/os/task/manager/fn.fetch_task.html index 89e0c2af..f01de50e 100644 --- a/ch8/os/task/manager/fn.fetch_task.html +++ b/ch8/os/task/manager/fn.fetch_task.html @@ -1,6 +1,8 @@ fetch_task in os::task::manager - Rust -
    pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
    + +
    pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
    \ No newline at end of file diff --git a/ch8/os/task/manager/fn.insert_into_pid2process.html b/ch8/os/task/manager/fn.insert_into_pid2process.html index 88bc64fb..0462649f 100644 --- a/ch8/os/task/manager/fn.insert_into_pid2process.html +++ b/ch8/os/task/manager/fn.insert_into_pid2process.html @@ -1,6 +1,8 @@ insert_into_pid2process in os::task::manager - Rust -
    pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
    + +
    pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
    \ No newline at end of file diff --git a/ch8/os/task/manager/fn.pid2process.html b/ch8/os/task/manager/fn.pid2process.html index f5deabaa..50b50905 100644 --- a/ch8/os/task/manager/fn.pid2process.html +++ b/ch8/os/task/manager/fn.pid2process.html @@ -1,6 +1,8 @@ pid2process in os::task::manager - Rust -
    pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
    + +
    pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
    \ No newline at end of file diff --git a/ch8/os/task/manager/fn.remove_from_pid2process.html b/ch8/os/task/manager/fn.remove_from_pid2process.html index 1ad81b39..97514522 100644 --- a/ch8/os/task/manager/fn.remove_from_pid2process.html +++ b/ch8/os/task/manager/fn.remove_from_pid2process.html @@ -1,6 +1,8 @@ remove_from_pid2process in os::task::manager - Rust -
    pub fn remove_from_pid2process(pid: usize)
    + +
    pub fn remove_from_pid2process(pid: usize)
    \ No newline at end of file diff --git a/ch8/os/task/manager/index.html b/ch8/os/task/manager/index.html index a1a97bac..0516fa26 100644 --- a/ch8/os/task/manager/index.html +++ b/ch8/os/task/manager/index.html @@ -1,8 +1,10 @@ os::task::manager - Rust -
    \ No newline at end of file diff --git a/ch8/os/task/manager/struct.PID2PCB.html b/ch8/os/task/manager/struct.PID2PCB.html index a698294c..1521bb72 100644 --- a/ch8/os/task/manager/struct.PID2PCB.html +++ b/ch8/os/task/manager/struct.PID2PCB.html @@ -1,20 +1,24 @@ PID2PCB in os::task::manager - Rust -
    pub struct PID2PCB {
    +    
    +    
    pub struct PID2PCB {
         __private_field: (),
    -}

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/manager/struct.TASK_MANAGER.html b/ch8/os/task/manager/struct.TASK_MANAGER.html index 4fd04940..83770f6c 100644 --- a/ch8/os/task/manager/struct.TASK_MANAGER.html +++ b/ch8/os/task/manager/struct.TASK_MANAGER.html @@ -1,20 +1,24 @@ TASK_MANAGER in os::task::manager - Rust -
    pub struct TASK_MANAGER {
    +    
    +    
    pub struct TASK_MANAGER {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<TaskManager>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<TaskManager>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/manager/struct.TaskManager.html b/ch8/os/task/manager/struct.TaskManager.html index 06461f22..78cc2788 100644 --- a/ch8/os/task/manager/struct.TaskManager.html +++ b/ch8/os/task/manager/struct.TaskManager.html @@ -1,18 +1,22 @@ TaskManager in os::task::manager - Rust -
    pub struct TaskManager {
    +    
    +    
    pub struct TaskManager {
         ready_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    ready_queue: VecDeque<Arc<TaskControlBlock>>

    Implementations

    A simple FIFO scheduler.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    ready_queue: VecDeque<Arc<TaskControlBlock>>

    Implementations

    A simple FIFO scheduler.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/process/index.html b/ch8/os/task/process/index.html index 25306d3e..8cf006db 100644 --- a/ch8/os/task/process/index.html +++ b/ch8/os/task/process/index.html @@ -1,7 +1,9 @@ os::task::process - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/task/process/struct.ProcessControlBlock.html b/ch8/os/task/process/struct.ProcessControlBlock.html index 98ff06f6..db899063 100644 --- a/ch8/os/task/process/struct.ProcessControlBlock.html +++ b/ch8/os/task/process/struct.ProcessControlBlock.html @@ -1,20 +1,24 @@ ProcessControlBlock in os::task::process - Rust -
    pub struct ProcessControlBlock {
    +    
    +    
    pub struct ProcessControlBlock {
         pub pid: PidHandle,
         inner: UPSafeCell<ProcessControlBlockInner>,
    -}

    Fields

    pid: PidHandleinner: UPSafeCell<ProcessControlBlockInner>

    Implementations

    Only support processes with a single thread.

    -

    Only support processes with a single thread.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    pid: PidHandleinner: UPSafeCell<ProcessControlBlockInner>

    Implementations

    Only support processes with a single thread.

    +

    Only support processes with a single thread.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/process/struct.ProcessControlBlockInner.html b/ch8/os/task/process/struct.ProcessControlBlockInner.html index 16b348af..408ecf11 100644 --- a/ch8/os/task/process/struct.ProcessControlBlockInner.html +++ b/ch8/os/task/process/struct.ProcessControlBlockInner.html @@ -1,8 +1,10 @@ ProcessControlBlockInner in os::task::process - Rust -
    pub struct ProcessControlBlockInner {
    +    
    +    
    pub struct ProcessControlBlockInner {
         pub is_zombie: bool,
         pub memory_set: MemorySet,
         pub parent: Option<Weak<ProcessControlBlock>>,
    @@ -15,14 +17,16 @@
         pub mutex_list: Vec<Option<Arc<dyn Mutex>>>,
         pub semaphore_list: Vec<Option<Arc<Semaphore>>>,
         pub condvar_list: Vec<Option<Arc<Condvar>>>,
    -}

    Fields

    is_zombie: boolmemory_set: MemorySetparent: Option<Weak<ProcessControlBlock>>children: Vec<Arc<ProcessControlBlock>>exit_code: i32fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>signals: SignalFlagstasks: Vec<Option<Arc<TaskControlBlock>>>task_res_allocator: RecycleAllocatormutex_list: Vec<Option<Arc<dyn Mutex>>>semaphore_list: Vec<Option<Arc<Semaphore>>>condvar_list: Vec<Option<Arc<Condvar>>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    is_zombie: boolmemory_set: MemorySetparent: Option<Weak<ProcessControlBlock>>children: Vec<Arc<ProcessControlBlock>>exit_code: i32fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>signals: SignalFlagstasks: Vec<Option<Arc<TaskControlBlock>>>task_res_allocator: RecycleAllocatormutex_list: Vec<Option<Arc<dyn Mutex>>>semaphore_list: Vec<Option<Arc<Semaphore>>>condvar_list: Vec<Option<Arc<Condvar>>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_kstack_top.html b/ch8/os/task/processor/fn.current_kstack_top.html index 8dac726d..64b5b3d0 100644 --- a/ch8/os/task/processor/fn.current_kstack_top.html +++ b/ch8/os/task/processor/fn.current_kstack_top.html @@ -1,6 +1,8 @@ current_kstack_top in os::task::processor - Rust -
    pub fn current_kstack_top() -> usize
    + +
    pub fn current_kstack_top() -> usize
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_process.html b/ch8/os/task/processor/fn.current_process.html index d5903bf0..bc4fd217 100644 --- a/ch8/os/task/processor/fn.current_process.html +++ b/ch8/os/task/processor/fn.current_process.html @@ -1,6 +1,8 @@ current_process in os::task::processor - Rust -
    pub fn current_process() -> Arc<ProcessControlBlock>
    + +
    pub fn current_process() -> Arc<ProcessControlBlock>
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_task.html b/ch8/os/task/processor/fn.current_task.html index f6f6bccc..ab638a6e 100644 --- a/ch8/os/task/processor/fn.current_task.html +++ b/ch8/os/task/processor/fn.current_task.html @@ -1,6 +1,8 @@ current_task in os::task::processor - Rust -
    pub fn current_task() -> Option<Arc<TaskControlBlock>>
    + +
    pub fn current_task() -> Option<Arc<TaskControlBlock>>
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_trap_cx.html b/ch8/os/task/processor/fn.current_trap_cx.html index 79f846c8..1a718a17 100644 --- a/ch8/os/task/processor/fn.current_trap_cx.html +++ b/ch8/os/task/processor/fn.current_trap_cx.html @@ -1,6 +1,8 @@ current_trap_cx in os::task::processor - Rust -
    pub fn current_trap_cx() -> &'static mut TrapContext
    + +
    pub fn current_trap_cx() -> &'static mut TrapContext
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_trap_cx_user_va.html b/ch8/os/task/processor/fn.current_trap_cx_user_va.html index a42a3ccc..27324e8e 100644 --- a/ch8/os/task/processor/fn.current_trap_cx_user_va.html +++ b/ch8/os/task/processor/fn.current_trap_cx_user_va.html @@ -1,6 +1,8 @@ current_trap_cx_user_va in os::task::processor - Rust -
    pub fn current_trap_cx_user_va() -> usize
    + +
    pub fn current_trap_cx_user_va() -> usize
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.current_user_token.html b/ch8/os/task/processor/fn.current_user_token.html index 6087a229..1b0a3b9b 100644 --- a/ch8/os/task/processor/fn.current_user_token.html +++ b/ch8/os/task/processor/fn.current_user_token.html @@ -1,6 +1,8 @@ current_user_token in os::task::processor - Rust -
    pub fn current_user_token() -> usize
    + +
    pub fn current_user_token() -> usize
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.run_tasks.html b/ch8/os/task/processor/fn.run_tasks.html index d9451900..0f715a6f 100644 --- a/ch8/os/task/processor/fn.run_tasks.html +++ b/ch8/os/task/processor/fn.run_tasks.html @@ -1,6 +1,8 @@ run_tasks in os::task::processor - Rust -
    pub fn run_tasks()
    + +
    pub fn run_tasks()
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.schedule.html b/ch8/os/task/processor/fn.schedule.html index 3e7f480b..92fb33e1 100644 --- a/ch8/os/task/processor/fn.schedule.html +++ b/ch8/os/task/processor/fn.schedule.html @@ -1,6 +1,8 @@ schedule in os::task::processor - Rust -
    pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
    + +
    pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
    \ No newline at end of file diff --git a/ch8/os/task/processor/fn.take_current_task.html b/ch8/os/task/processor/fn.take_current_task.html index 11abf37c..5393a0d8 100644 --- a/ch8/os/task/processor/fn.take_current_task.html +++ b/ch8/os/task/processor/fn.take_current_task.html @@ -1,6 +1,8 @@ take_current_task in os::task::processor - Rust -
    pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
    + +
    pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
    \ No newline at end of file diff --git a/ch8/os/task/processor/index.html b/ch8/os/task/processor/index.html index a9bd2c70..72c87f45 100644 --- a/ch8/os/task/processor/index.html +++ b/ch8/os/task/processor/index.html @@ -1,8 +1,10 @@ os::task::processor - Rust -
    \ No newline at end of file diff --git a/ch8/os/task/processor/struct.PROCESSOR.html b/ch8/os/task/processor/struct.PROCESSOR.html index 02d16739..0c4a9675 100644 --- a/ch8/os/task/processor/struct.PROCESSOR.html +++ b/ch8/os/task/processor/struct.PROCESSOR.html @@ -1,20 +1,24 @@ PROCESSOR in os::task::processor - Rust -
    pub struct PROCESSOR {
    +    
    +    
    pub struct PROCESSOR {
         __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<Processor>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCell<Processor>>

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/processor/struct.Processor.html b/ch8/os/task/processor/struct.Processor.html index 9fc6cc87..48ca87af 100644 --- a/ch8/os/task/processor/struct.Processor.html +++ b/ch8/os/task/processor/struct.Processor.html @@ -1,18 +1,22 @@ Processor in os::task::processor - Rust -
    pub struct Processor {
    +    
    +    
    pub struct Processor {
         current: Option<Arc<TaskControlBlock>>,
         idle_task_cx: TaskContext,
    -}

    Fields

    current: Option<Arc<TaskControlBlock>>idle_task_cx: TaskContext

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    current: Option<Arc<TaskControlBlock>>idle_task_cx: TaskContext

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/signal/index.html b/ch8/os/task/signal/index.html index b3346870..318bb245 100644 --- a/ch8/os/task/signal/index.html +++ b/ch8/os/task/signal/index.html @@ -1,7 +1,9 @@ os::task::signal - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/task/signal/struct.SignalFlags.html b/ch8/os/task/signal/struct.SignalFlags.html index c994d201..aa8a6398 100644 --- a/ch8/os/task/signal/struct.SignalFlags.html +++ b/ch8/os/task/signal/struct.SignalFlags.html @@ -1,53 +1,55 @@ SignalFlags in os::task::signal - Rust -

    Fields

    bits: u32

    Implementations

    Returns an empty set of flags.

    +

    Returns the set containing all flags.

    +

    Returns the raw value of the flags currently stored.

    +

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

    -

    Convert from underlying bit representation, dropping any bits +

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

    -

    Convert from underlying bit representation, preserving all +

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

    -
    Safety
    +
    Safety

    The caller of the bitflags! macro can chose to allow or disallow extra bits for their bitflags type.

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

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

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

    -

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

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

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

    -

    Returns the intersection between the flags in self and +

    Returns true if no flags are currently stored.

    +

    Returns true if all flags are currently set.

    +

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

    +

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

    +

    Inserts the specified flags in-place.

    +

    Removes the specified flags in-place.

    +

    Toggles the specified flags in-place.

    +

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

    +

    Returns the intersection between the flags in self and other.

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

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

    -

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

    +

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

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

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

    -

    Returns the difference between the flags in self and other.

    +

    Returns the difference between the flags in self and other.

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

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

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

    -

    Returns the symmetric difference between the flags +

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

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

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

    -

    Returns the complement of this set of flags.

    +

    Returns the complement of this set of flags.

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

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

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

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

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

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

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

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

    Extends a collection with exactly one element.

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

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

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

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

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Trait Implementations

    Formats the value using the given formatter.

    +

    Returns the intersection between the two sets of flags.

    +

    The resulting type after applying the & operator.

    +

    Disables all flags disabled in the set.

    +

    Returns the union of the two sets of flags.

    +

    The resulting type after applying the | operator.

    +

    Adds the set of flags.

    +

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

    +

    The resulting type after applying the ^ operator.

    +

    Toggles the set of flags.

    +

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

    Formats the value using the given formatter. Read more

    +

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

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

    Extends a collection with exactly one element.

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

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

    +

    Creates a value from an iterator. Read more

    +

    Feeds this value into the given Hasher. Read more

    +

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

    +

    Formats the value using the given formatter.

    +

    Returns the complement of this set of flags.

    +

    The resulting type after applying the ! operator.

    +

    Formats the value using the given formatter.

    +

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Returns the set difference of the two sets of flags.

    +

    The resulting type after applying the - operator.

    +

    Disables all flags enabled in the set.

    +

    Formats the value using the given formatter.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/struct.INITPROC.html b/ch8/os/task/struct.INITPROC.html index 8fdf6391..386bfae5 100644 --- a/ch8/os/task/struct.INITPROC.html +++ b/ch8/os/task/struct.INITPROC.html @@ -1,19 +1,23 @@ INITPROC in os::task - Rust -
    -

    Struct os::task::INITPROC

    source · []
    pub struct INITPROC {
    +    
    +    
    +

    Struct os::task::INITPROC

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

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/switch/fn.__switch.html b/ch8/os/task/switch/fn.__switch.html index 7d5e620d..71540423 100644 --- a/ch8/os/task/switch/fn.__switch.html +++ b/ch8/os/task/switch/fn.__switch.html @@ -1,6 +1,8 @@ __switch in os::task::switch - Rust -
    -

    Function os::task::switch::__switch

    source · []
    pub unsafe extern "C" fn __switch(
        current_task_cx_ptr: *mut TaskContext,
        next_task_cx_ptr: *const TaskContext
    )
    + +
    +

    Function os::task::switch::__switch

    source · []
    pub unsafe extern "C" fn __switch(
        current_task_cx_ptr: *mut TaskContext,
        next_task_cx_ptr: *const TaskContext
    )
    \ No newline at end of file diff --git a/ch8/os/task/switch/index.html b/ch8/os/task/switch/index.html index c7c3e27b..108eea14 100644 --- a/ch8/os/task/switch/index.html +++ b/ch8/os/task/switch/index.html @@ -1,7 +1,9 @@ os::task::switch - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/task/task/enum.TaskStatus.html b/ch8/os/task/task/enum.TaskStatus.html index 77dce7dc..1fba410c 100644 --- a/ch8/os/task/task/enum.TaskStatus.html +++ b/ch8/os/task/task/enum.TaskStatus.html @@ -1,27 +1,31 @@ TaskStatus in os::task::task - Rust -
    pub enum TaskStatus {
    +    
    +    
    pub enum TaskStatus {
         Ready,
         Running,
         Blocking,
    -}

    Variants

    Ready

    Running

    Blocking

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

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

    Variants

    Ready

    Running

    Blocking

    Trait Implementations

    Returns a copy of the value. Read more

    +

    Performs copy-assignment from source. Read more

    +

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

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    This method tests for !=.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The resulting type after obtaining ownership.

    +

    Creates owned data from borrowed data, usually by cloning. Read more

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

    Uses borrowed data to replace owned data, usually by cloning. Read more

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/task/index.html b/ch8/os/task/task/index.html index 0d33e2fa..6b5fa509 100644 --- a/ch8/os/task/task/index.html +++ b/ch8/os/task/task/index.html @@ -1,8 +1,10 @@ os::task::task - Rust -
    \ No newline at end of file diff --git a/ch8/os/task/task/struct.TaskControlBlock.html b/ch8/os/task/task/struct.TaskControlBlock.html index 6de2a314..57936985 100644 --- a/ch8/os/task/task/struct.TaskControlBlock.html +++ b/ch8/os/task/task/struct.TaskControlBlock.html @@ -1,19 +1,23 @@ TaskControlBlock in os::task::task - Rust -
    pub struct TaskControlBlock {
    +    
    +    
    pub struct TaskControlBlock {
         pub process: Weak<ProcessControlBlock>,
         pub kstack: KernelStack,
         inner: UPSafeCell<TaskControlBlockInner>,
    -}

    Fields

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

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

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

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/task/task/struct.TaskControlBlockInner.html b/ch8/os/task/task/struct.TaskControlBlockInner.html index 4b70818b..3179f845 100644 --- a/ch8/os/task/task/struct.TaskControlBlockInner.html +++ b/ch8/os/task/task/struct.TaskControlBlockInner.html @@ -1,21 +1,25 @@ TaskControlBlockInner in os::task::task - Rust -
    pub struct TaskControlBlockInner {
    +    
    +    
    pub struct TaskControlBlockInner {
         pub res: Option<TaskUserRes>,
         pub trap_cx_ppn: PhysPageNum,
         pub task_cx: TaskContext,
         pub task_status: TaskStatus,
         pub exit_code: Option<i32>,
    -}

    Fields

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

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

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

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/timer/constant.MSEC_PER_SEC.html b/ch8/os/timer/constant.MSEC_PER_SEC.html index 3c422973..819371c1 100644 --- a/ch8/os/timer/constant.MSEC_PER_SEC.html +++ b/ch8/os/timer/constant.MSEC_PER_SEC.html @@ -1,6 +1,8 @@ MSEC_PER_SEC in os::timer - Rust -
    -

    Constant os::timer::MSEC_PER_SEC

    source · []
    const MSEC_PER_SEC: usize = 1000;
    + +
    +

    Constant os::timer::MSEC_PER_SEC

    source · []
    const MSEC_PER_SEC: usize = 1000;
    \ No newline at end of file diff --git a/ch8/os/timer/constant.TICKS_PER_SEC.html b/ch8/os/timer/constant.TICKS_PER_SEC.html index 296cfd51..65ff446c 100644 --- a/ch8/os/timer/constant.TICKS_PER_SEC.html +++ b/ch8/os/timer/constant.TICKS_PER_SEC.html @@ -1,6 +1,8 @@ TICKS_PER_SEC in os::timer - Rust -
    const TICKS_PER_SEC: usize = 100;
    + +
    const TICKS_PER_SEC: usize = 100;
    \ No newline at end of file diff --git a/ch8/os/timer/fn.add_timer.html b/ch8/os/timer/fn.add_timer.html index bb2c944a..062214c0 100644 --- a/ch8/os/timer/fn.add_timer.html +++ b/ch8/os/timer/fn.add_timer.html @@ -1,6 +1,8 @@ add_timer in os::timer - Rust -
    -

    Function os::timer::add_timer

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

    Function os::timer::add_timer

    source · []
    pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
    \ No newline at end of file diff --git a/ch8/os/timer/fn.check_timer.html b/ch8/os/timer/fn.check_timer.html index 4084c492..1597850d 100644 --- a/ch8/os/timer/fn.check_timer.html +++ b/ch8/os/timer/fn.check_timer.html @@ -1,6 +1,8 @@ check_timer in os::timer - Rust -
    -

    Function os::timer::check_timer

    source · []
    pub fn check_timer()
    + +
    +

    Function os::timer::check_timer

    source · []
    pub fn check_timer()
    \ No newline at end of file diff --git a/ch8/os/timer/fn.get_time.html b/ch8/os/timer/fn.get_time.html index b217a3fb..052a1cfd 100644 --- a/ch8/os/timer/fn.get_time.html +++ b/ch8/os/timer/fn.get_time.html @@ -1,6 +1,8 @@ get_time in os::timer - Rust -
    -

    Function os::timer::get_time

    source · []
    pub fn get_time() -> usize
    + +
    +

    Function os::timer::get_time

    source · []
    pub fn get_time() -> usize
    \ No newline at end of file diff --git a/ch8/os/timer/fn.get_time_ms.html b/ch8/os/timer/fn.get_time_ms.html index 1749b65b..24cd029c 100644 --- a/ch8/os/timer/fn.get_time_ms.html +++ b/ch8/os/timer/fn.get_time_ms.html @@ -1,6 +1,8 @@ get_time_ms in os::timer - Rust -
    -

    Function os::timer::get_time_ms

    source · []
    pub fn get_time_ms() -> usize
    + +
    +

    Function os::timer::get_time_ms

    source · []
    pub fn get_time_ms() -> usize
    \ No newline at end of file diff --git a/ch8/os/timer/fn.set_next_trigger.html b/ch8/os/timer/fn.set_next_trigger.html index 5e597118..a39e0225 100644 --- a/ch8/os/timer/fn.set_next_trigger.html +++ b/ch8/os/timer/fn.set_next_trigger.html @@ -1,6 +1,8 @@ set_next_trigger in os::timer - Rust -
    pub fn set_next_trigger()
    + +
    pub fn set_next_trigger()
    \ No newline at end of file diff --git a/ch8/os/timer/index.html b/ch8/os/timer/index.html index ec666c81..b6813279 100644 --- a/ch8/os/timer/index.html +++ b/ch8/os/timer/index.html @@ -1,9 +1,11 @@ os::timer - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/timer/struct.TIMERS.html b/ch8/os/timer/struct.TIMERS.html index 13c5aced..61a5f265 100644 --- a/ch8/os/timer/struct.TIMERS.html +++ b/ch8/os/timer/struct.TIMERS.html @@ -1,20 +1,24 @@ TIMERS in os::timer - Rust -
    -

    Struct os::timer::TIMERS

    source · []
    struct TIMERS {
    +    
    +    
    +

    Struct os::timer::TIMERS

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

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    __private_field: ()

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

    Panic if the data has been borrowed.

    +

    Trait Implementations

    The resulting type after dereferencing.

    +

    Dereferences the value.

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/timer/struct.TimerCondVar.html b/ch8/os/timer/struct.TimerCondVar.html index 3abc9cab..b41ccedc 100644 --- a/ch8/os/timer/struct.TimerCondVar.html +++ b/ch8/os/timer/struct.TimerCondVar.html @@ -1,32 +1,36 @@ TimerCondVar in os::timer - Rust -
    pub struct TimerCondVar {
    +    
    +    
    pub struct TimerCondVar {
         pub expire_ms: usize,
         pub task: Arc<TaskControlBlock>,
    -}

    Fields

    expire_ms: usizetask: Arc<TaskControlBlock>

    Trait Implementations

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

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

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

    Fields

    expire_ms: usizetask: Arc<TaskControlBlock>

    Trait Implementations

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

    +

    Compares and returns the maximum of two values. Read more

    +

    Compares and returns the minimum of two values. Read more

    +

    Restrict a value to a certain interval. Read more

    +

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

    -

    This method tests for !=.

    -

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

    -

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

    -

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

    This method tests for !=.

    +

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

    +

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

    +

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

    -

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

    -

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

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

    +

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

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/trap/context/index.html b/ch8/os/trap/context/index.html index 8742d3a9..2aa4e532 100644 --- a/ch8/os/trap/context/index.html +++ b/ch8/os/trap/context/index.html @@ -1,7 +1,9 @@ os::trap::context - Rust -
    + +
    \ No newline at end of file diff --git a/ch8/os/trap/context/struct.TrapContext.html b/ch8/os/trap/context/struct.TrapContext.html index 25f423a0..ed6178e8 100644 --- a/ch8/os/trap/context/struct.TrapContext.html +++ b/ch8/os/trap/context/struct.TrapContext.html @@ -1,23 +1,27 @@ TrapContext in os::trap::context - Rust -
    #[repr(C)]
    pub struct TrapContext { + +
    #[repr(C)]
    pub struct TrapContext { pub x: [usize; 32], pub sstatus: Sstatus, pub sepc: usize, pub kernel_satp: usize, pub kernel_sp: usize, pub trap_handler: usize, -}

    Fields

    x: [usize; 32]sstatus: Sstatussepc: usizekernel_satp: usizekernel_sp: usizetrap_handler: usize

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    +}

    Fields

    x: [usize; 32]sstatus: Sstatussepc: usizekernel_satp: usizekernel_sp: usizetrap_handler: usize

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    +

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    +

    Immutably borrows from an owned value. Read more

    +

    Mutably borrows from an owned value. Read more

    +

    Returns the argument unchanged.

    +

    Calls U::from(self).

    +

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

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +

    The type returned in the event of a conversion error.

    +

    Performs the conversion.

    +
    \ No newline at end of file diff --git a/ch8/os/trap/fn.enable_timer_interrupt.html b/ch8/os/trap/fn.enable_timer_interrupt.html index d33259e0..e1324c0c 100644 --- a/ch8/os/trap/fn.enable_timer_interrupt.html +++ b/ch8/os/trap/fn.enable_timer_interrupt.html @@ -1,6 +1,8 @@ enable_timer_interrupt in os::trap - Rust -
    pub fn enable_timer_interrupt()
    + +
    pub fn enable_timer_interrupt()
    \ No newline at end of file diff --git a/ch8/os/trap/fn.init.html b/ch8/os/trap/fn.init.html index 296c51cd..84ca830f 100644 --- a/ch8/os/trap/fn.init.html +++ b/ch8/os/trap/fn.init.html @@ -1,6 +1,8 @@ init in os::trap - Rust -
    -

    Function os::trap::init

    source · []
    pub fn init()
    + +
    +

    Function os::trap::init

    source · []
    pub fn init()
    \ No newline at end of file diff --git a/ch8/os/trap/fn.set_kernel_trap_entry.html b/ch8/os/trap/fn.set_kernel_trap_entry.html index 547682d6..f2a71039 100644 --- a/ch8/os/trap/fn.set_kernel_trap_entry.html +++ b/ch8/os/trap/fn.set_kernel_trap_entry.html @@ -1,6 +1,8 @@ set_kernel_trap_entry in os::trap - Rust -
    fn set_kernel_trap_entry()
    + +
    fn set_kernel_trap_entry()
    \ No newline at end of file diff --git a/ch8/os/trap/fn.set_user_trap_entry.html b/ch8/os/trap/fn.set_user_trap_entry.html index aa677228..201ea76d 100644 --- a/ch8/os/trap/fn.set_user_trap_entry.html +++ b/ch8/os/trap/fn.set_user_trap_entry.html @@ -1,6 +1,8 @@ set_user_trap_entry in os::trap - Rust -
    fn set_user_trap_entry()
    + +
    fn set_user_trap_entry()
    \ No newline at end of file diff --git a/ch8/os/trap/fn.trap_from_kernel.html b/ch8/os/trap/fn.trap_from_kernel.html index a26ced20..1c4e3296 100644 --- a/ch8/os/trap/fn.trap_from_kernel.html +++ b/ch8/os/trap/fn.trap_from_kernel.html @@ -1,7 +1,9 @@ trap_from_kernel in os::trap - Rust -
    #[no_mangle]
    -pub fn trap_from_kernel() -> !
    + +
    #[no_mangle]
    +pub fn trap_from_kernel() -> !
    \ No newline at end of file diff --git a/ch8/os/trap/fn.trap_handler.html b/ch8/os/trap/fn.trap_handler.html index dd960d1a..5283d373 100644 --- a/ch8/os/trap/fn.trap_handler.html +++ b/ch8/os/trap/fn.trap_handler.html @@ -1,7 +1,9 @@ trap_handler in os::trap - Rust -
    -

    Function os::trap::trap_handler

    source · []
    #[no_mangle]
    -pub fn trap_handler() -> !
    + +
    +

    Function os::trap::trap_handler

    source · []
    #[no_mangle]
    +pub fn trap_handler() -> !
    \ No newline at end of file diff --git a/ch8/os/trap/fn.trap_return.html b/ch8/os/trap/fn.trap_return.html index 916a98a6..1db45cd7 100644 --- a/ch8/os/trap/fn.trap_return.html +++ b/ch8/os/trap/fn.trap_return.html @@ -1,7 +1,9 @@ trap_return in os::trap - Rust -
    -

    Function os::trap::trap_return

    source · []
    #[no_mangle]
    -pub fn trap_return() -> !
    + +
    +

    Function os::trap::trap_return

    source · []
    #[no_mangle]
    +pub fn trap_return() -> !
    \ No newline at end of file diff --git a/ch8/os/trap/index.html b/ch8/os/trap/index.html index fdf16447..2a8cb91b 100644 --- a/ch8/os/trap/index.html +++ b/ch8/os/trap/index.html @@ -1,9 +1,11 @@ os::trap - Rust -
    \ No newline at end of file diff --git a/ch8/rustdoc.css b/ch8/rustdoc.css index deed2f8a..674a5af6 100644 --- a/ch8/rustdoc.css +++ b/ch8/rustdoc.css @@ -1 +1 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic.ttf.woff2") format("woff2"),url("NanumBarunGothic.ttf.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.4 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5rem;}h2{font-size:1.4rem;}h3{font-size:1.3rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:20px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}h1.fqn{margin:0;padding:0;}.main-heading{display:flex;border-bottom:1px dashed #DDDDDD;padding-bottom:6px;margin-bottom:15px;padding-left:1px;}.main-heading a:hover{text-decoration:underline;}#toggle-all-docs{text-decoration:none;}h2,.top-doc h3,.top-doc h4,.sidebar .others h3{border-bottom:1px solid;}h3.code-header{font-size:1.1rem;}h4.code-header{font-size:1rem;}h3.code-header,h4.code-header{font-weight:600;border-bottom-style:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,.out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main-content>ul.docblock>li>a{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}.content ul.crate a.crate{font-size:1rem/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.docblock.item-decl{margin-left:0;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{max-width:none;overflow:visible;margin-left:0px;}nav.sub{position:relative;font-size:1rem;text-transform:uppercase;}.sub-container{display:flex;flex-direction:row;flex-wrap:nowrap;}.sub-logo-container{display:none;margin-right:20px;}.source .sub-logo-container{display:block;}.source .sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.sidebar{width:200px;overflow-y:scroll;position:sticky;min-width:200px;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{width:50px;min-width:0px;max-width:300px;flex-grow:0;flex-shrink:0;flex-basis:auto;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar>*:not(:first-child){transition:opacity 0.5s,visibility 0.2s;opacity:0;visibility:hidden;}.source .sidebar.expanded{overflow-y:auto;}.source .sidebar.expanded>*{opacity:1;visibility:visible;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.hidden{display:none !important;}.logo-container{display:flex;margin-top:10px;margin-bottom:10px;justify-content:center;}.logo-container>img{height:100px;width:100px;}.sidebar .location{border:1px solid;font-size:1.0625rem;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:0.9375rem;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;overflow-wrap:anywhere;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:0.875rem;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:1.0625rem;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre.line-numbers{width:auto;overflow-x:visible;}.rustdoc .example-wrap>pre{margin:0;}#search{position:relative;}.search-loading{text-align:center;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.3rem;}.top-doc .docblock h3{font-size:1.15rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.1rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.95rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.information){max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;text-align:right;margin-left:auto;margin-right:0;font-size:1.15rem;padding:0 0 0 12px;font-weight:normal;float:right;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;overflow-wrap:break-word;overflow-wrap:anywhere;}.in-band>code,.in-band>.code-header{display:inline-block;}#main-content{position:relative;}#main-content>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1rem;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;overflow-wrap:normal;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1rem;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8rem;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:0.81rem;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:1.5625rem;position:absolute;top:-6px;left:-19px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main-content>.item-info{margin-top:0;}nav:not(.sidebar){flex-grow:1;border-bottom:1px solid;padding-bottom:10px;margin-bottom:25px;}.source nav:not(.sidebar).sub{margin-left:32px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:1.0625rem;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.2rem;}.search-container{position:relative;max-width:960px;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}.search-results-title{display:inline;}#search-settings{font-size:1.5rem;font-weight:500;margin-bottom:20px;}#crate-search{min-width:115px;margin-top:5px;margin-left:0.2em;padding-left:0.3em;padding-right:23px;border:0;border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;background-image:url("down-arrow.svg");}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-webkit-appearance:none;-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:1.0625rem;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{padding:3px;margin-bottom:5px;font-size:0.9rem;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.2rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:0.8rem;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-weight:normal;font-size:1rem;}.impl .srclink{font-size:1.0625rem;}.rightside{float:right;}.has-srclink{font-size:1rem;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.3rem;top:5px;right:5px;z-index:1;}.example-wrap:hover .test-arrow{visibility:visible;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.code-attribute{font-weight:300;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:1.25rem;margin-right:5px;}h3.variant{font-weight:600;font-size:1.1rem;margin-bottom:10px;border-bottom:none;}.sub-variant h4{font-size:1rem;font-weight:400;border-bottom:none;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.top-doc .docblock>.section-header:first-child{margin-left:15px;}.top-doc .docblock>.section-header:first-child:hover>a:before{left:-10px;}.docblock>.section-header:first-child{margin-top:0;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:1.25rem;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:1rem;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:1.1875rem;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:1.25rem;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:1.125rem;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:1rem;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:sticky;top:0;left:0;cursor:pointer;font-weight:bold;font-size:1.2rem;border-bottom:1px solid;display:flex;height:40px;justify-content:center;align-items:center;z-index:10;}#source-sidebar{width:100%;z-index:1;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:-34px;top:9px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;font-size:16px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:16px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);overflow-wrap:normal;}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:1rem;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:1.1875rem;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:1.0625rem;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main-content>ul{padding-left:10px;}#main-content>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7rem;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:1rem;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url("toggle-minus.svg");}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url("toggle-plus.svg");}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}.sidebar.expanded+main .width-limiter .sub-logo-container.rust-logo{display:none;}.rustdoc.source .sidebar{transition:width .5s;}.source .sidebar.expanded{width:300px;}}@media (max-width:700px){body{padding-top:0px;}main{padding-left:15px;padding-top:0px;}#theme-picker{display:none;width:0;}.rustdoc{flex-direction:column;}.rustdoc:not(.source)>.sidebar{width:100%;height:45px;min-height:40px;max-height:45px;margin:0;padding:0 15px;position:static;z-index:11;overflow-y:hidden;}.rustdoc.source>.sidebar{position:fixed;top:0;left:0;margin:0;z-index:11;width:0;}.sidebar.mobile{position:sticky !important;top:0;left:0;width:100%;margin-left:0;background-color:rgba(0,0,0,0);}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:1.5rem;}.sidebar .location:empty{padding:0;}.rustdoc:not(.source) .sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;top:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}.source nav:not(.sidebar).sub{margin-left:32px;}.content{margin-left:0px;}.source .content{margin-top:10px;}#search{margin-left:0;padding:0;}.anchor{display:none !important;}.theme-picker{z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:1.3125rem;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}.sidebar.expanded #sidebar-toggle{font-size:1.5rem;}.sidebar:not(.expanded) #sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;border:1px solid;border-left:0;}#source-sidebar{z-index:11;}#main-content>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}.source .sidebar.expanded{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main-content>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{border-radius:4px;border:0;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock table code{overflow-wrap:normal;}.sub-container{flex-direction:column;}.sub-logo-container{align-self:center;}.source .sub-logo-container>img{height:35px;width:35px;}.sidebar:not(.expanded) #sidebar-toggle{top:10px;}}.scraped-example-title{font-family:'Fira Sans';}.scraped-example:not(.expanded) .code-wrapper pre.line-numbers{overflow:hidden;max-height:240px;}.scraped-example:not(.expanded) .code-wrapper .example-wrap pre.rust{overflow-y:hidden;max-height:240px;padding-bottom:0;}.scraped-example .code-wrapper .prev{position:absolute;top:0.25em;right:2.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .next{position:absolute;top:0.25em;right:1.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .expand{position:absolute;top:0.25em;right:0.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper:before{content:" ";width:100%;height:5px;position:absolute;z-index:100;top:0;background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:100;bottom:0;background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper{overflow:hidden;max-height:240px;}.scraped-example .code-wrapper .line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{flex:1;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.more-examples-toggle{margin-top:10px;}.more-examples-toggle summary{color:#999;font-family:'Fira Sans';}.more-scraped-examples{margin-left:25px;display:flex;flex-direction:row;width:calc(100% - 25px);}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line:hover .toggle-line-inner{background:#aaa;}.toggle-line-inner{min-width:2px;background:#ddd;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;font-family:'Fira Sans';}.example-links ul{margin-bottom:0;} \ No newline at end of file + @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic.ttf.woff2") format("woff2"),url("NanumBarunGothic.ttf.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:20px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}h1.fqn{margin:0;padding:0;}.main-heading{display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:6px;margin-bottom:15px;}.main-heading a:hover{text-decoration:underline;}#toggle-all-docs{text-decoration:none;}h2,.top-doc h3,.top-doc h4{border-bottom:1px solid;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;border-bottom-style:none;margin:0;padding:0;margin-top:0.6em;margin-bottom:0.4em;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;position:relative;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,.out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main-content>ul.docblock>li>a{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{padding:1px 6px;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.docblock.item-decl{margin-left:0;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{max-width:none;overflow:visible;margin-left:0px;}nav.sub{position:relative;font-size:1rem;text-transform:uppercase;}.sub-container{display:flex;flex-direction:row;flex-wrap:nowrap;}.sub-logo-container{display:none;margin-right:20px;}.source .sub-logo-container{display:block;}.source .sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.sidebar{font-size:0.875rem;width:250px;min-width:200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.sidebar-elems,.sidebar>.location{padding-left:24px;}.sidebar .location{overflow-wrap:anywhere;}.rustdoc.source .sidebar{width:50px;min-width:0px;max-width:300px;flex-grow:0;flex-shrink:0;flex-basis:auto;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar>*:not(#sidebar-toggle){opacity:0;visibility:hidden;}.source .sidebar.expanded{overflow-y:auto;}.source .sidebar.expanded>*:not(#sidebar-toggle){opacity:1;visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.hidden{display:none !important;}.sidebar .logo-container{display:flex;margin-top:10px;margin-bottom:10px;justify-content:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.block{padding:0;}.block ul,.block li{padding:0;margin:0;list-style:none;}.block a,h2.location a{display:block;padding:0.25rem;margin-left:-0.25rem;text-overflow:ellipsis;overflow:hidden;}.sidebar h2{border-bottom:none;font-weight:500;padding:0;margin:0;margin-top:0.7rem;margin-bottom:0.7rem;}.sidebar h3{font-size:1.125rem;font-weight:500;padding:0;margin:0;}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;}.mobile-topbar{display:none;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.line-numbers{text-align:right;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre.line-numbers{width:auto;overflow-x:visible;}.rustdoc .example-wrap>pre{margin:0;}#search{position:relative;}.search-loading{text-align:center;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.information){max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;font-size:1.125rem;font-weight:normal;float:right;}.method>.code-header,.trait-impl>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;overflow-wrap:break-word;overflow-wrap:anywhere;}.in-band>code,.in-band>.code-header{display:inline-block;}#main-content{position:relative;}#main-content>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.125rem;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1rem;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.875rem;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.item-info{display:block;}.content .item-info code{font-size:0.875rem;}.content .item-info{position:relative;margin-left:24px;}.sub-variant>div>.item-info{margin-top:initial;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main-content>.item-info{margin-top:0;margin-left:0;}nav.sub{flex-grow:1;margin-bottom:25px;}.source nav.sub{margin-left:32px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.block a.current.crate{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.25rem;}.search-container{position:relative;display:flex;height:34px;}.search-container>*{height:100%;}.search-results-title{display:inline;}#search-settings{font-size:1.5rem;font-weight:500;margin-bottom:20px;}#crate-search{min-width:115px;margin-top:5px;margin-left:0.25em;padding-left:0.3125em;padding-right:23px;border:0;border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;background-image:url("down-arrow.svg");}.search-container{margin-top:4px;}.search-input{-webkit-appearance:none;-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:1px solid;border-radius:2px;padding:8px;font-size:1rem;transition:border-color 300ms ease;width:100%;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:inline-block;}.stab{padding:3px;margin-bottom:5px;font-size:0.875rem;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.25rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:0.875rem;line-height:1.2;margin-bottom:0;margin-left:0.3125em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-weight:normal;font-size:1rem;}.rightside{float:right;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;}.example-wrap:hover .test-arrow{visibility:visible;}a.test-arrow:hover{text-decoration:none;}.code-attribute{font-weight:300;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:1.25rem;}h3.variant{font-weight:600;font-size:1.125rem;margin-bottom:10px;border-bottom:none;}.sub-variant h4{font-size:1rem;font-weight:400;border-bottom:none;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:1.25rem;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:1rem;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:1.1875rem;font-weight:600;display:block;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:1.25rem;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:1.125rem;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:1rem;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#sidebar-toggle{position:sticky;top:0;left:0;cursor:pointer;font-weight:bold;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:center;align-items:center;z-index:10;}#source-sidebar{width:100%;z-index:1;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:-38px;top:4px;}.theme-picker button{outline:none;}#settings-menu,#help-button{margin-left:4px;outline:none;}#theme-picker,#copy-path{height:34px;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:5px;width:33px;border:1px solid;border-radius:2px;cursor:pointer;}#help-button{font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:20px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);overflow-wrap:normal;}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:1rem;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:1.125rem;display:block;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main-content>ul{padding-left:10px;}#main-content>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.625rem;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:1rem;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url("toggle-minus.svg");}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url("toggle-plus.svg");}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:16px;height:16px;background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}.sidebar.expanded+main .width-limiter .sub-logo-container.rust-logo{display:none;}.source .sidebar.expanded{width:300px;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{padding-top:0px;display:block;}main{padding-left:15px;padding-top:0px;}.rustdoc,.main-heading{flex-direction:column;}.content .out-of-band{text-align:left;margin-left:initial;padding:initial;}.content .out-of-band .since::before{content:"Since ";}#copy-path{display:none;}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar-elems{margin-top:1em;}.sidebar{position:fixed;top:45px;left:-1000px;margin-left:0;background-color:rgba(0,0,0,0);margin:0;padding:0;z-index:11;height:calc(100vh - 45px);}.source main,.source .sidebar{top:0;padding:0;}.sidebar.shown,.sidebar.expanded,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{position:fixed;margin:0;z-index:11;width:0;}.mobile-topbar .location a{padding:0;margin:0;}.mobile-topbar .location{border:none;padding:0;margin:auto 0.5em auto auto;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:24px;}.mobile-topbar .logo-container{max-height:45px;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin-left:20px;margin-top:5px;margin-bottom:5px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.source .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;}.source nav:not(.sidebar).sub{margin-left:32px;}#theme-picker{display:none;width:0;}.content{margin-left:0px;}.source .content{margin-top:10px;}#search{margin-left:0;padding:0;}.anchor{display:none !important;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.sidebar.expanded #sidebar-toggle{font-size:1.5rem;}.sidebar:not(.expanded) #sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;border:1px solid;border-left:0;}#source-sidebar{z-index:11;}#main-content>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}.source .sidebar.expanded{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main-content>table:not(.table-display) td{word-break:break-word;width:50%;}#crate-search{border-radius:4px;border:0;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}.sub-container{flex-direction:column;}.sub-logo-container{align-self:center;}.source .sub-logo-container>img{height:35px;width:35px;}.sidebar:not(.expanded) #sidebar-toggle{top:10px;}}.method-toggle summary,.implementors-toggle summary,.impl{margin-bottom:0.75em;}.method-toggle[open]{margin-bottom:2em;}.implementors-toggle[open]{margin-bottom:2em;}#trait-implementations-list .method-toggle,#synthetic-implementations-list .method-toggle,#blanket-implementations-list .method-toggle{margin-bottom:1em;}.scraped-example-title{font-family:'Fira Sans';}.scraped-example:not(.expanded) .code-wrapper pre.line-numbers{overflow:hidden;max-height:240px;}.scraped-example:not(.expanded) .code-wrapper .example-wrap pre.rust{overflow-y:hidden;max-height:240px;padding-bottom:0;}.scraped-example .code-wrapper .prev{position:absolute;top:0.25em;right:2.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .next{position:absolute;top:0.25em;right:1.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .expand{position:absolute;top:0.25em;right:0.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper:before{content:" ";width:100%;height:5px;position:absolute;z-index:100;top:0;background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:100;bottom:0;background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper{overflow:hidden;max-height:240px;}.scraped-example .code-wrapper .line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{flex:1;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.more-examples-toggle{margin-top:10px;}.more-examples-toggle summary{color:#999;font-family:'Fira Sans';}.more-scraped-examples{margin-left:25px;display:flex;flex-direction:row;width:calc(100% - 25px);}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line:hover .toggle-line-inner{background:#aaa;}.toggle-line-inner{min-width:2px;background:#ddd;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;font-family:'Fira Sans';}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/ch8/search-index.js b/ch8/search-index.js index 64157d28..8adee2be 100644 --- a/ch8/search-index.js +++ b/ch8/search-index.js @@ -1,4 +1,4 @@ var searchIndex = JSON.parse('{\ -"os":{"doc":"","t":[0,5,0,0,0,0,0,0,14,14,5,0,0,0,0,0,0,6,17,17,17,17,17,17,17,17,17,17,3,11,11,11,11,5,11,11,11,11,0,3,12,5,11,11,11,11,11,0,11,11,11,0,12,13,13,12,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,11,11,13,12,12,13,12,12,12,12,12,12,12,12,12,12,11,4,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,17,17,17,17,17,17,12,12,17,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,17,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,8,0,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,13,13,13,3,3,17,4,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,5,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,5,0,0,12,12,12,12,17,17,3,3,3,3,8,17,6,17,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,8,6,3,3,12,10,11,11,11,11,11,11,11,12,10,11,11,11,12,11,5,5,5,11,11,11,11,5,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,7,7,5,5,5,13,13,3,3,3,4,3,18,18,18,18,12,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,12,11,12,11,11,11,11,11,12,11,11,11,5,11,11,5,5,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,18,18,18,3,3,3,18,18,3,3,18,18,18,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,5,5,5,5,5,0,0,0,0,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,8,3,3,3,11,11,11,11,11,11,11,11,11,12,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,3,3,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,12,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,12,5,5,11,11,5,0,5,11,5,11,0,11,0,0,0,0,5,0,0,11,11,11,3,11,11,11,11,11,12,12,12,11,11,11,11,12,12,3,3,3,3,3,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,12,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,3,3,3,12,12,11,5,11,11,11,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,5,12,5,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,5,5,11,5,11,11,11,11,11,11,18,18,18,18,18,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,13,13,13,3,3,4,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,17,17,3,3,12,5,11,11,11,11,5,11,11,11,12,11,11,5,5,11,11,11,5,12,11,11,11,11,11,11,0,5,5,5,5,5,5,5,3,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,12],"n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MMIO","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","block","BLOCK_DEVICE","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","sdcard","try_from","try_into","type_id","virtio_blk","0","ACMD23","ACMD41","CID_CRC","CMD","CMD0","CMD10","CMD12","CMD16","CMD17","CMD18","CMD24","CMD25","CMD55","CMD58","CMD59","CMD8","CMD9","CMDFailed","CSDStruct","CSD_CRC","CS_HIGH","CS_LOW","CannotGetCardInfo","CardBlockSize","CardCapacity","CardCapacityStatusNotSet","CardComdClasses","ContentProtectAppli","CopyFlag","DSRImpl","DeviceSize","ECC","EraseGrMul","EraseGrSize","FileFormat","FileFormatGroup","HIGH_SPEED_ENABLE","InitError","ManDeflECC","ManufactDate","ManufacturerID","MaxBusClkFrec","MaxWrBlockLen","NSAC","OEM_AppliID","PERIPHERALS","PartBlockRead","PermWrProtect","ProdName1","ProdName2","ProdRev","ProdSN","RdBlockLen","RdBlockMisalign","Reserved1","Reserved1","Reserved2","Reserved2","Reserved3","Reserved4","SDCard","SDCardCID","SDCardCSD","SDCardInfo","SDCardWrapper","SD_CS","SD_CS_GPIONUM","SD_START_DATA_MULTIPLE_BLOCK_READ","SD_START_DATA_MULTIPLE_BLOCK_WRITE","SD_START_DATA_SINGLE_BLOCK_READ","SD_START_DATA_SINGLE_BLOCK_WRITE","SD_cid","SD_csd","SEC_LEN","SysSpecVersion","TAAC","TempWrProtect","WrBlockMisalign","WrProtectGrEnable","WrProtectGrSize","WrSpeedFact","WriteBlockPaPartial","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cs_gpionum","deref","end_cmd","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_cardinfo","get_cidregister","get_csdregister","get_dataresponse","get_response","init","init_sdcard","into","into","into","into","into","into","into","into","io_init","lowlevel_init","new","new","read_block","read_data","read_sector","send_cmd","spi","spi_cs","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","write_block","write_data","write_sector","0","0","1","0","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","__private_field","borrow","borrow","borrow_mut","borrow_mut","deref","from","from","into","into","new","read_block","try_from","try_from","try_into","try_into","type_id","type_id","virtio_dma_alloc","virtio_dma_dealloc","virtio_phys_to_virt","virtio_virt_to_phys","write_block","File","inode","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","ne","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","address","frame_allocator","heap_allocator","init","memory_set","page_table","0","0","0","0","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","ne","ne","ne","ne","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc","deref","drop","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","ne","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","writable","SBI_CLEAR_IPI","SBI_CONSOLE_GETCHAR","SBI_CONSOLE_PUTCHAR","SBI_REMOTE_FENCE_I","SBI_REMOTE_SFENCE_VMA","SBI_REMOTE_SFENCE_VMA_ASID","SBI_SEND_IPI","SBI_SET_TIMER","SBI_SHUTDOWN","console_getchar","console_putchar","sbi_call","set_timer","shutdown","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","INITPROC","__private_field","add_initproc","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","deref","exit_current_and_run_next","from","id","into","manager","process","processor","signal","suspend_current_and_run_next","switch","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","0","0","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove_from_pid2process","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","ne","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":["os","","","","","","","","","","","","","","","","","os::board","","","os::config","","","","","","","","os::console","","","","","","","","","","os::drivers","os::drivers::block","","","","","","","","","","","","","os::drivers::block::sdcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::sdcard::InitError","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","os::lang_items","","os::mm","","","","","","os::mm::address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::frame_allocator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::heap_allocator","","","","","os::mm::memory_set","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::page_table","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sbi","","","","","","","","","","","","","","os::sync","","","","os::sync::condvar","","","","","","","","","","","","","","","","","","","","","os::sync::mutex","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sync::semaphore","","","","","","","","","","","","","","","","","","","","","","os::sync::up","","","","","","","","","","","os::syscall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall::fs","","","","","","os::syscall::process","","","","","","","","os::syscall::sync","","","","","","","","","","os::syscall::thread","","","os::task","","","","","","","","","","","","","","","","","","","","","","","","os::task::context","","","","","","","","","","","","","os::task::id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::processor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::signal","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::switch","os::task::task","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::timer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::trap","","","","","","","","os::trap::context","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Number of blocks to erase (SDC) ","Initiate initialization process (SDC) ","","SD commands ","Software reset ","Read CID register ","Stop to read data ","Change R/W block size ","Read block ","Read multiple blocks ","Write a block ","Write multiple blocks ","Leading command for ACMD* ","Read OCR ","Enable/disable CRC check ","Check voltage range (SDC V2) ","Read CSD register ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Card Identification Data: CID Register","Card Specific Data: CSD Register","Card information","","CS value passed to SPI controller, this is a dummy value …","GPIOHS GPIO number to use for controlling the SD card CS …","Data token start byte, Start Multiple Block Read ","Data token start byte, Start Multiple Block Write ","Data token start byte, Start Single Block Read ","Data token start byte, Start Single Block Write ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Connect pins to internal functions ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","","","","","","","","","","","","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 …","","","","","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","","","","","","","","","","","","","","","","","","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 …","","","","","","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.","","","","","","","","","","","","","","","","","","","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 …","","","","","","","","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrap a static data structure inside it so that we are able …","","","Panic if the data has been borrowed.","","inner data","","User is responsible to guarantee that inner struct is only …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","","","","","","","","","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 …","","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,2,0,2,2,2,2,2,0,2,2,2,0,3,4,4,5,0,4,4,4,4,4,4,4,4,4,4,4,4,4,6,7,7,8,8,6,9,9,6,7,7,7,7,7,7,7,7,7,7,8,0,7,5,5,7,7,7,5,0,7,7,5,5,5,5,7,7,7,5,7,5,7,7,0,0,0,0,0,0,0,0,0,0,0,9,9,0,7,7,7,7,7,7,7,7,10,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,4,6,7,5,9,4,6,7,5,9,8,10,8,4,4,6,7,5,9,8,3,4,6,7,5,9,10,8,8,8,8,8,8,0,8,3,4,6,7,5,9,10,0,8,8,3,3,8,8,8,8,8,4,6,7,5,9,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,3,8,8,11,12,11,13,0,0,0,14,13,14,13,14,14,13,14,13,14,13,13,13,14,13,14,13,14,0,0,0,0,13,0,0,0,15,15,0,15,15,16,0,0,0,16,16,0,16,16,17,16,16,16,16,16,16,16,16,16,18,19,17,16,18,19,17,16,16,16,16,16,16,17,16,16,16,16,16,16,16,16,16,18,19,17,16,16,16,16,16,16,18,19,16,16,16,18,19,17,16,16,16,0,16,18,16,19,0,16,18,18,16,18,18,16,16,16,16,16,16,16,18,19,17,16,18,19,17,16,18,19,17,16,16,18,18,18,20,20,20,0,0,0,0,21,21,21,21,22,21,20,22,21,20,22,20,20,20,22,21,20,21,22,21,20,0,21,22,21,22,22,22,21,21,21,20,22,21,20,22,21,20,22,21,20,22,22,22,21,21,22,0,0,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,0,0,0,0,0,0,0,0,25,26,27,28,0,0,0,0,0,0,0,0,0,0,0,0,25,26,29,25,26,27,28,30,29,25,26,27,28,30,25,26,25,26,27,28,30,25,26,27,28,30,25,26,27,28,29,29,25,26,27,28,25,26,25,26,27,28,29,25,25,25,26,26,26,27,27,27,28,28,28,30,27,30,25,27,27,25,30,28,29,25,26,27,28,30,29,30,30,25,26,27,28,29,30,29,25,26,25,26,27,28,30,31,27,28,25,26,27,28,30,29,25,26,27,28,30,29,25,26,27,28,30,29,25,26,27,28,30,0,0,0,0,0,32,33,34,35,34,32,35,34,32,34,33,34,32,35,34,35,0,0,0,35,34,32,34,0,35,34,32,33,35,34,35,34,35,34,32,35,34,32,35,34,32,0,0,0,0,0,36,36,0,0,0,0,0,37,37,37,37,38,39,37,39,37,37,37,37,37,37,37,37,39,40,38,36,37,39,40,38,36,37,36,37,36,37,37,37,37,40,40,38,37,0,0,0,37,36,37,0,0,37,36,37,37,37,37,37,39,40,38,36,37,40,37,37,37,39,39,37,37,37,39,37,37,39,40,38,36,37,37,37,0,40,40,40,39,40,37,40,39,39,37,39,37,39,39,0,37,39,0,0,37,0,0,0,37,37,37,36,37,37,39,39,39,40,38,36,37,39,40,38,36,37,39,40,38,36,37,37,40,40,40,41,41,41,0,0,0,41,41,0,0,41,41,41,41,41,41,41,41,41,41,42,41,41,43,44,45,41,42,43,44,45,41,42,44,45,41,42,41,42,41,41,41,45,45,41,41,42,41,42,41,43,43,42,41,41,41,41,41,43,43,44,45,41,42,41,41,41,41,43,41,41,41,41,43,44,45,41,42,44,45,41,41,42,44,43,41,43,44,42,45,41,41,42,42,41,43,41,41,41,41,41,42,41,43,43,43,0,0,0,0,43,44,45,41,42,43,44,45,41,42,43,44,45,41,42,41,43,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,47,46,47,46,47,46,46,47,46,46,46,47,46,47,46,47,46,47,0,0,0,0,48,49,50,48,49,50,48,49,50,49,48,49,50,51,48,49,48,50,48,49,48,49,50,48,49,50,48,49,50,51,48,49,50,0,0,52,53,52,53,53,52,52,53,52,52,53,52,52,53,52,53,52,53,52,53,0,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,55,55,0,0,0,55,0,55,0,55,0,0,0,0,0,0,0,55,55,55,0,56,56,56,56,56,56,56,56,56,56,56,56,57,58,0,0,0,0,0,0,59,60,61,62,62,61,57,58,62,59,60,61,57,58,62,59,60,61,61,62,62,59,60,57,58,62,61,57,58,62,59,60,58,61,57,58,62,59,60,0,0,61,62,0,62,58,61,62,0,62,62,61,57,58,62,59,60,61,57,58,62,59,60,61,57,58,62,59,60,62,62,0,62,0,0,0,63,64,65,0,65,63,64,65,63,64,63,64,65,0,65,63,64,0,65,63,64,65,0,65,0,65,63,64,65,63,64,65,63,64,0,0,66,66,67,66,67,66,66,66,66,67,66,66,67,67,66,66,66,67,67,67,67,66,66,66,66,67,66,67,66,66,66,66,66,67,66,67,66,67,66,0,0,68,69,68,69,68,69,69,0,0,0,0,0,0,68,69,68,69,69,69,68,69,0,0,69,0,69,68,69,68,69,68,70,70,70,70,70,0,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,0,71,71,71,0,0,0,72,73,71,72,73,71,71,71,71,73,72,73,71,73,73,72,72,72,72,73,71,72,72,72,73,73,73,71,73,72,73,71,72,73,71,72,73,71,0,0,0,0,74,0,75,74,75,74,0,75,74,75,75,75,74,0,0,75,74,75,0,75,75,74,75,74,75,74,0,0,0,0,0,0,0,0,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76],"f":[null,[[]],null,null,null,null,null,null,null,null,[[],["never",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["arguments",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15]],["result",6]],null,null,null,[[]],[[]],[[]],[[],["arc",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["cmd",4]],[[],["initerror",4]],[[],["sdcardcsd",3]],[[],["sdcardcid",3]],[[],["sdcardinfo",3]],[[]],[[]],[[]],[[]],[[]],null,[[],["upsafecell",3]],[[]],[[["cmd",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["sdcardinfo",3]]]],[[],["result",4,[["sdcardcid",3]]]],[[],["result",4,[["sdcardcsd",3]]]],[[],["u8",15]],[[],["u8",15]],[[],["result",4,[["sdcardinfo",3],["initerror",4]]]],[[],["sdcard",3,[["spiimpl",3,[["spi0",3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15],["u8",15]]],[[]],[[["usize",15]]],[[]],[[["u32",15]],["result",4]],[[["cmd",4],["u32",15],["u8",15]]],null,null,[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["usize",15]]],[[]],[[["u32",15]],["result",4]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["upsafecell",3]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["usize",15]],["physaddr",3]],[[["physaddr",3],["usize",15]],["i32",15]],[[["physaddr",3]],["virtaddr",3]],[[["virtaddr",3]],["physaddr",3]],[[["usize",15]]],null,null,null,[[["userbuffer",3]],["usize",15]],[[],["bool",15]],null,[[],["bool",15]],[[["userbuffer",3]],["usize",15]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["openflags",3]]],[[]],[[],["u32",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["openflags",3]],[[]],[[["openflags",3]],["ordering",4]],[[]],[[],["bool",15]],[[],["arc",3]],[[]],[[]],[[["openflags",3]],["bool",15]],[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["u32",15]],["option",4]],[[["u32",15]]],[[["u32",15]]],[[["intoiterator",8]]],[[]],null,null,[[]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[]],[[["openflags",3]],["bool",15]],[[["bool",15],["bool",15],["arc",3,[["inode",3]]]]],[[]],null,[[["str",15],["openflags",3]],["option",4,[["arc",3,[["osinode",3]]]]]],[[["openflags",3]],["option",4,[["ordering",4]]]],[[["userbuffer",3]],["usize",15]],[[],["vec",3,[["u8",15]]]],[[]],[[],["bool",15]],null,[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[],["bool",15]],null,[[["userbuffer",3]],["usize",15]],null,null,null,null,null,null,null,[[],["bool",15]],null,[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["ringbufferstatus",4]],[[]],[[["ringbufferstatus",4]],["bool",15]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[["userbuffer",3]],["usize",15]],[[],["u8",15]],[[["arc",3,[["upsafecell",3,[["piperingbuffer",3]]]]]]],[[],["bool",15]],null,[[["arc",3]]],null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,[[["userbuffer",3]],["usize",15]],[[["u8",15]]],null,[[["arc",3,[["upsafecell",3,[["piperingbuffer",3]]]]]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["userbuffer",3]],["usize",15]],[[["userbuffer",3]],["usize",15]],[[],["bool",15]],[[],["bool",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],[[],["bool",15]],[[["userbuffer",3]],["usize",15]],[[["userbuffer",3]],["usize",15]],[[]],[[["panicinfo",3]],["never",15]],null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[],["physaddr",3]],[[],["virtaddr",3]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[],["simplerange",3]],[[]],[[]],[[]],[[]],[[]],[[["physaddr",3]],["ordering",4]],[[["virtaddr",3]],["ordering",4]],[[["physpagenum",3]],["ordering",4]],[[["virtpagenum",3]],["ordering",4]],null,null,[[["physaddr",3]],["bool",15]],[[["virtaddr",3]],["bool",15]],[[["physpagenum",3]],["bool",15]],[[["virtpagenum",3]],["bool",15]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["usize",15]]],[[["physpagenum",3]]],[[["virtpagenum",3]]],[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["physaddr",3]]],[[]],[[["virtaddr",3]]],[[["usize",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["physaddr",3]],["bool",15]],[[["virtaddr",3]],["bool",15]],[[["physpagenum",3]],["bool",15]],[[["virtpagenum",3]],["bool",15]],[[]],[[]],[[],["option",4]],[[],["usize",15]],[[],["usize",15]],[[["physaddr",3]],["option",4,[["ordering",4]]]],[[["virtaddr",3]],["option",4,[["ordering",4]]]],[[["physpagenum",3]],["option",4,[["ordering",4]]]],[[["virtpagenum",3]],["option",4,[["ordering",4]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[],["option",4,[["physpagenum",3]]]],[[],["option",4,[["physpagenum",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["physpagenum",3]]],[[["physpagenum",3]]],[[],["upsafecell",3]],[[]],null,[[["formatter",3]],["result",6]],[[],["option",4,[["frametracker",3]]]],[[]],[[["physpagenum",3]]],[[]],[[]],[[]],[[["physpagenum",3],["physpagenum",3]]],[[]],[[]],[[]],[[]],[[]],[[["physpagenum",3]]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[["layout",3]],["never",15]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[["mappermission",3]]],[[]],[[],["u8",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["maptype",4]],[[],["mappermission",3]],[[]],[[]],[[["mappermission",3]],["ordering",4]],[[]],[[],["bool",15]],[[["pagetable",3]]],null,[[],["arc",3]],[[]],null,null,null,[[]],[[["maptype",4]],["bool",15]],[[["mappermission",3]],["bool",15]],null,null,[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["maparea",3]]],[[["u8",15]],["option",4]],[[["u8",15]]],[[["u8",15]]],[[]],[[["memoryset",3]],["memoryset",3]],[[["intoiterator",8]]],[[]],[[]],[[["virtaddr",3],["virtaddr",3],["mappermission",3]]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["usize",15]],[[["pagetable",3]]],[[["pagetable",3],["virtpagenum",3]]],null,[[]],null,[[["mappermission",3]],["bool",15]],[[["virtaddr",3],["virtaddr",3],["maptype",4],["mappermission",3]]],[[]],[[]],[[]],null,[[["mappermission",3]],["option",4,[["ordering",4]]]],[[["maparea",3],["option",4]]],[[]],[[]],[[]],[[["virtpagenum",3]]],null,null,[[["bool",15]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[["pagetable",3]]],[[["pagetable",3],["virtpagenum",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["pteflags",3]]],[[]],[[],["u8",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["pteflags",3]],[[],["pagetableentry",3]],[[]],[[]],[[["pteflags",3]],["ordering",4]],[[]],[[],["bool",15]],null,null,[[]],[[]],[[]],[[["pteflags",3]],["bool",15]],[[],["bool",15]],[[["intoiterator",8]]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["pteflags",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["option",4]],[[["u8",15]]],[[["u8",15]]],[[["intoiterator",8]]],[[["usize",15]]],[[]],[[]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["usize",15]],[[["virtpagenum",3],["physpagenum",3],["pteflags",3]]],[[["pteflags",3]],["bool",15]],[[]],[[["vec",3]]],[[["physpagenum",3],["pteflags",3]]],[[],["option",4]],[[]],[[["pteflags",3]],["option",4,[["ordering",4]]]],[[],["physpagenum",3]],[[],["bool",15]],[[]],null,[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["virtaddr",3]],["option",4,[["physaddr",3]]]],[[["usize",15],["usize",15]],["vec",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[["virtpagenum",3]]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[],["usize",15]],[[["usize",15]]],[[["usize",15],["usize",15],["usize",15],["usize",15]],["usize",15]],[[["usize",15]]],[[],["never",15]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["arc",3,[["mutex",8]]]]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],null,null,[[]],[[]],[[],["refmut",3]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["usize",15]],["isize",15]],null,[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["u32",15]],["isize",15]],[[],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[],["isize",15]],[[["i32",15]],["never",15]],[[],["isize",15]],[[],["isize",15]],[[],["isize",15]],[[["usize",15],["u32",15]],["isize",15]],[[["isize",15]],["isize",15]],[[],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["bool",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["usize",15]],["i32",15]],null,null,[[]],[[]],[[]],[[]],[[],["option",4]],null,[[["signalflags",3]]],[[],["arc",3]],[[["i32",15]]],[[]],null,[[]],null,null,null,null,[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["usize",15]]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["usize",15]]],[[]],[[]],[[],["upsafecell",3]],[[],["upsafecell",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[],["kernelstack",3]],[[]],[[["arc",3,[["processcontrolblock",3]]],["usize",15],["bool",15]]],[[],["pidhandle",3]],null,[[]],null,null,[[["usize",15]],["usize",15]],[[],["physpagenum",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["usize",15]],null,[[["usize",15],["usize",15]],["usize",15]],[[],["usize",15]],null,null,null,null,null,[[["arc",3,[["taskcontrolblock",3]]]]],[[["arc",3,[["taskcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["upsafecell",3]],[[],["upsafecell",3]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[]],[[]],[[]],[[["usize",15],["arc",3,[["processcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[["usize",15]],["option",4,[["arc",3,[["processcontrolblock",3]]]]]],null,[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],null,null,[[["usize",15]]],[[["arc",3],["vec",3,[["string",3]]]]],null,null,[[["arc",3]],["arc",3]],[[]],[[]],[[["usize",15]],["arc",3,[["taskcontrolblock",3]]]],[[],["usize",15]],[[],["usize",15]],null,[[],["refmut",3,[["processcontrolblockinner",3]]]],[[]],[[]],null,null,null,[[],["arc",3]],null,null,null,null,null,null,[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,[[]],[[]],[[]],[[]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],null,[[],["usize",15]],[[],["arc",3,[["processcontrolblock",3]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["trapcontext",3]],[[],["usize",15]],[[],["usize",15]],[[],["upsafecell",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[["signalflags",3]]],[[]],[[],["u32",15]],null,[[]],[[]],[[]],[[]],[[],["option",4]],[[],["signalflags",3]],[[]],[[["signalflags",3]],["ordering",4]],[[]],[[],["bool",15]],[[]],[[]],[[["signalflags",3]],["bool",15]],[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["u32",15]],["option",4]],[[["u32",15]]],[[["u32",15]]],[[["intoiterator",8]]],[[]],[[]],[[]],[[],["bool",15]],[[]],[[],["bool",15]],[[],["bool",15]],[[["signalflags",3]],["bool",15]],[[]],[[["signalflags",3]],["option",4,[["ordering",4]]]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["taskstatus",4]],[[]],[[["taskstatus",4]],["bool",15]],null,[[]],[[]],[[]],[[],["taskstatus",4]],[[],["trapcontext",3]],[[],["usize",15]],null,[[],["refmut",3,[["taskcontrolblockinner",3]]]],[[]],[[]],[[]],null,[[["arc",3,[["processcontrolblock",3]]],["usize",15],["bool",15]]],null,null,null,null,[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[["usize",15],["arc",3,[["taskcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[]],[[],["ordering",4]],[[],["upsafecell",3]],[[],["bool",15]],null,[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["option",4,[["ordering",4]]]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[],["never",15]],[[],["never",15]],[[],["never",15]],null,[[["usize",15],["usize",15],["usize",15],["usize",15],["usize",15]]],[[]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],null,null,null,[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null],"p":[[3,"Stdout"],[3,"BLOCK_DEVICE"],[3,"SDCardWrapper"],[4,"CMD"],[3,"SDCardCID"],[4,"InitError"],[3,"SDCardCSD"],[3,"SDCard"],[3,"SDCardInfo"],[3,"PERIPHERALS"],[13,"CMDFailed"],[13,"CardCapacityStatusNotSet"],[3,"VirtIOBlock"],[3,"QUEUE_FRAMES"],[8,"File"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"OSInode"],[3,"OSInodeInner"],[4,"RingBufferStatus"],[3,"PipeRingBuffer"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[3,"SimpleRangeIterator"],[3,"SimpleRange"],[8,"StepByOne"],[3,"FRAME_ALLOCATOR"],[8,"FrameAllocator"],[3,"StackFrameAllocator"],[3,"FrameTracker"],[4,"MapType"],[3,"MapPermission"],[3,"KERNEL_SPACE"],[3,"MemorySet"],[3,"MapArea"],[3,"PTEFlags"],[3,"PageTableEntry"],[3,"PageTable"],[3,"UserBuffer"],[3,"UserBufferIterator"],[3,"Condvar"],[3,"CondvarInner"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"MutexBlockingInner"],[8,"Mutex"],[3,"Semaphore"],[3,"SemaphoreInner"],[3,"UPSafeCell"],[3,"INITPROC"],[3,"TaskContext"],[3,"PidHandle"],[3,"KernelStack"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"TaskManager"],[3,"ProcessControlBlockInner"],[3,"ProcessControlBlock"],[3,"PROCESSOR"],[3,"Processor"],[3,"SignalFlags"],[4,"TaskStatus"],[3,"TaskControlBlock"],[3,"TaskControlBlockInner"],[3,"TIMERS"],[3,"TimerCondVar"],[3,"TrapContext"]]}\ +"os":{"doc":"","t":[0,5,0,0,0,0,0,0,14,14,5,0,0,0,0,0,0,6,17,17,17,17,17,17,17,17,17,17,3,11,11,11,11,5,11,11,11,11,0,3,12,5,11,11,11,11,11,0,11,11,11,0,12,13,13,12,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,11,11,13,12,12,13,12,12,12,12,12,12,12,12,12,12,11,4,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,17,17,17,17,17,17,12,12,17,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,3,17,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,8,0,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,13,13,13,3,3,17,4,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,5,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,5,0,0,12,12,12,12,17,17,3,3,3,3,8,17,6,17,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,8,6,3,3,12,10,11,11,11,11,11,11,11,12,10,11,11,11,12,11,5,5,5,11,11,11,11,5,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,7,7,5,5,5,13,13,3,3,3,4,3,18,18,18,18,12,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,12,11,12,11,11,11,11,11,12,11,11,11,5,11,11,5,5,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,18,18,18,3,3,3,18,18,3,3,18,18,18,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,5,5,5,5,5,0,0,0,0,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,8,3,3,3,11,11,11,11,11,11,11,11,11,12,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,3,3,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,3,11,11,11,11,12,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,12,5,5,11,11,5,0,5,11,5,11,0,11,0,0,0,0,5,0,0,11,11,11,3,11,11,11,11,11,12,12,12,11,11,11,11,12,12,3,3,3,3,3,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,12,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,3,3,3,12,12,11,5,11,11,11,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,5,12,5,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,5,5,11,5,11,11,11,11,11,11,18,18,18,18,18,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,13,13,13,3,3,4,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,17,17,3,3,12,5,11,11,11,11,5,11,11,11,12,11,11,5,5,11,11,11,5,12,11,11,11,11,11,11,0,5,5,5,5,5,5,5,3,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,12],"n":["board","clear_bss","config","console","drivers","fs","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","BlockDeviceImpl","CLOCK_FREQ","MMIO","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","block","BLOCK_DEVICE","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","sdcard","try_from","try_into","type_id","virtio_blk","0","ACMD23","ACMD41","CID_CRC","CMD","CMD0","CMD10","CMD12","CMD16","CMD17","CMD18","CMD24","CMD25","CMD55","CMD58","CMD59","CMD8","CMD9","CMDFailed","CSDStruct","CSD_CRC","CS_HIGH","CS_LOW","CannotGetCardInfo","CardBlockSize","CardCapacity","CardCapacityStatusNotSet","CardComdClasses","ContentProtectAppli","CopyFlag","DSRImpl","DeviceSize","ECC","EraseGrMul","EraseGrSize","FileFormat","FileFormatGroup","HIGH_SPEED_ENABLE","InitError","ManDeflECC","ManufactDate","ManufacturerID","MaxBusClkFrec","MaxWrBlockLen","NSAC","OEM_AppliID","PERIPHERALS","PartBlockRead","PermWrProtect","ProdName1","ProdName2","ProdRev","ProdSN","RdBlockLen","RdBlockMisalign","Reserved1","Reserved1","Reserved2","Reserved2","Reserved3","Reserved4","SDCard","SDCardCID","SDCardCSD","SDCardInfo","SDCardWrapper","SD_CS","SD_CS_GPIONUM","SD_START_DATA_MULTIPLE_BLOCK_READ","SD_START_DATA_MULTIPLE_BLOCK_WRITE","SD_START_DATA_SINGLE_BLOCK_READ","SD_START_DATA_SINGLE_BLOCK_WRITE","SD_cid","SD_csd","SEC_LEN","SysSpecVersion","TAAC","TempWrProtect","WrBlockMisalign","WrProtectGrEnable","WrProtectGrSize","WrSpeedFact","WriteBlockPaPartial","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cs_gpionum","deref","end_cmd","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_cardinfo","get_cidregister","get_csdregister","get_dataresponse","get_response","init","init_sdcard","into","into","into","into","into","into","into","into","io_init","lowlevel_init","new","new","read_block","read_data","read_sector","send_cmd","spi","spi_cs","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","write_block","write_data","write_sector","0","0","1","0","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","__private_field","borrow","borrow","borrow_mut","borrow_mut","deref","from","from","into","into","new","read_block","try_from","try_from","try_into","try_into","type_id","type_id","virtio_dma_alloc","virtio_dma_dealloc","virtio_phys_to_virt","virtio_virt_to_phys","write_block","File","inode","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","ne","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","address","frame_allocator","heap_allocator","init","memory_set","page_table","0","0","0","0","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","ne","ne","ne","ne","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc","deref","drop","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","ne","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","writable","SBI_CLEAR_IPI","SBI_CONSOLE_GETCHAR","SBI_CONSOLE_PUTCHAR","SBI_REMOTE_FENCE_I","SBI_REMOTE_SFENCE_VMA","SBI_REMOTE_SFENCE_VMA_ASID","SBI_SEND_IPI","SBI_SET_TIMER","SBI_SHUTDOWN","console_getchar","console_putchar","sbi_call","set_timer","shutdown","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait","wait_queue","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","UPSafeCell","borrow","borrow_mut","exclusive_access","from","inner","into","new","try_from","try_into","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","INITPROC","__private_field","add_initproc","block_current_and_run_next","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","deref","exit_current_and_run_next","from","id","into","manager","process","processor","signal","suspend_current_and_run_next","switch","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","0","0","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove_from_pid2process","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","ne","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","context","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":["os","","","","","","","","","","","","","","","","","os::board","","","os::config","","","","","","","","os::console","","","","","","","","","","os::drivers","os::drivers::block","","","","","","","","","","","","","os::drivers::block::sdcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::sdcard::InitError","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","os::lang_items","","os::mm","","","","","","os::mm::address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::frame_allocator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::heap_allocator","","","","","os::mm::memory_set","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::page_table","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sbi","","","","","","","","","","","","","","os::sync","","","","os::sync::condvar","","","","","","","","","","","","","","","","","","","","","os::sync::mutex","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sync::semaphore","","","","","","","","","","","","","","","","","","","","","","os::sync::up","","","","","","","","","","","os::syscall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall::fs","","","","","","os::syscall::process","","","","","","","","os::syscall::sync","","","","","","","","","","os::syscall::thread","","","os::task","","","","","","","","","","","","","","","","","","","","","","","","os::task::context","","","","","","","","","","","","","os::task::id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::processor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::signal","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::switch","os::task::task","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::timer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::trap","","","","","","","","os::trap::context","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Number of blocks to erase (SDC) ","Initiate initialization process (SDC) ","","SD commands ","Software reset ","Read CID register ","Stop to read data ","Change R/W block size ","Read block ","Read multiple blocks ","Write a block ","Write multiple blocks ","Leading command for ACMD* ","Read OCR ","Enable/disable CRC check ","Check voltage range (SDC V2) ","Read CSD register ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Card Identification Data: CID Register","Card Specific Data: CSD Register","Card information","","CS value passed to SPI controller, this is a dummy value …","GPIOHS GPIO number to use for controlling the SD card CS …","Data token start byte, Start Multiple Block Read ","Data token start byte, Start Multiple Block Write ","Data token start byte, Start Single Block Read ","Data token start byte, Start Single Block Write ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Connect pins to internal functions ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the 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).","","","","","","","","","","Wrap a static data structure inside it so that we are able …","","","Panic if the data has been borrowed.","Returns the argument unchanged.","inner data","Calls U::from(self).","User is responsible to guarantee that inner struct is only …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","","","","","","","","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,2,0,2,2,2,2,2,0,2,2,2,0,3,4,4,5,0,4,4,4,4,4,4,4,4,4,4,4,4,4,6,7,7,8,8,6,9,9,6,7,7,7,7,7,7,7,7,7,7,8,0,7,5,5,7,7,7,5,0,7,7,5,5,5,5,7,7,7,5,7,5,7,7,0,0,0,0,0,0,0,0,0,0,0,9,9,0,7,7,7,7,7,7,7,7,10,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,4,6,7,5,9,4,6,7,5,9,8,10,8,4,4,6,7,5,9,8,3,4,6,7,5,9,10,8,8,8,8,8,8,0,8,3,4,6,7,5,9,10,0,8,8,3,3,8,8,8,8,8,4,6,7,5,9,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,8,3,4,6,7,5,9,10,3,8,8,11,12,11,13,0,0,0,14,13,14,13,14,14,13,14,13,14,13,13,13,14,13,14,13,14,0,0,0,0,13,0,0,0,15,15,0,15,15,16,0,0,0,16,16,0,16,16,17,16,16,16,16,16,16,16,16,16,18,19,17,16,18,19,17,16,16,16,16,16,16,17,16,16,16,16,16,16,16,16,16,18,19,17,16,16,16,16,16,16,18,19,16,16,16,18,19,17,16,16,16,0,16,18,16,19,0,16,18,18,16,18,18,16,16,16,16,16,16,16,18,19,17,16,18,19,17,16,18,19,17,16,16,18,18,18,20,20,20,0,0,0,0,21,21,21,21,22,21,20,22,21,20,22,20,20,20,22,21,20,21,22,21,20,0,21,22,21,22,22,22,21,21,21,20,22,21,20,22,21,20,22,21,20,22,22,22,21,21,22,0,0,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,23,24,0,0,0,0,0,0,0,0,25,26,27,28,0,0,0,0,0,0,0,0,0,0,0,0,25,26,29,25,26,27,28,30,29,25,26,27,28,30,25,26,25,26,27,28,30,25,26,27,28,30,25,26,27,28,29,29,25,26,27,28,25,26,25,26,27,28,29,25,25,25,26,26,26,27,27,27,28,28,28,30,27,30,25,27,27,25,30,28,29,25,26,27,28,30,29,30,30,25,26,27,28,29,30,29,25,26,25,26,27,28,30,31,27,28,25,26,27,28,30,29,25,26,27,28,30,29,25,26,27,28,30,29,25,26,27,28,30,0,0,0,0,0,32,33,34,35,34,32,35,34,32,34,33,34,32,35,34,35,0,0,0,35,34,32,34,0,35,34,32,33,35,34,35,34,35,34,32,35,34,32,35,34,32,0,0,0,0,0,36,36,0,0,0,0,0,37,37,37,37,38,39,37,39,37,37,37,37,37,37,37,37,39,40,38,36,37,39,40,38,36,37,36,37,36,37,37,37,37,40,40,38,37,0,0,0,37,36,37,0,0,37,36,37,37,37,37,37,39,40,38,36,37,40,37,37,37,39,39,37,37,37,39,37,37,39,40,38,36,37,37,37,0,40,40,40,39,40,37,40,39,39,37,39,37,39,39,0,37,39,0,0,37,0,0,0,37,37,37,36,37,37,39,39,39,40,38,36,37,39,40,38,36,37,39,40,38,36,37,37,40,40,40,41,41,41,0,0,0,41,41,0,0,41,41,41,41,41,41,41,41,41,41,42,41,41,43,44,45,41,42,43,44,45,41,42,44,45,41,42,41,42,41,41,41,45,45,41,41,42,41,42,41,43,43,42,41,41,41,41,41,43,43,44,45,41,42,41,41,41,41,43,41,41,41,41,43,44,45,41,42,44,45,41,41,42,44,43,41,43,44,42,45,41,41,42,42,41,43,41,41,41,41,41,42,41,43,43,43,0,0,0,0,43,44,45,41,42,43,44,45,41,42,43,44,45,41,42,41,43,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,47,46,47,46,47,46,46,47,46,46,46,47,46,47,46,47,46,47,0,0,0,0,48,49,50,48,49,50,48,49,50,49,48,49,50,51,48,49,48,50,48,49,48,49,50,48,49,50,48,49,50,51,48,49,50,0,0,52,53,52,53,53,52,52,53,52,52,53,52,52,53,52,53,52,53,52,53,0,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,55,55,0,0,0,55,0,55,0,55,0,0,0,0,0,0,0,55,55,55,0,56,56,56,56,56,56,56,56,56,56,56,56,57,58,0,0,0,0,0,0,59,60,61,62,62,61,57,58,62,59,60,61,57,58,62,59,60,61,61,62,62,59,60,57,58,62,61,57,58,62,59,60,58,61,57,58,62,59,60,0,0,61,62,0,62,58,61,62,0,62,62,61,57,58,62,59,60,61,57,58,62,59,60,61,57,58,62,59,60,62,62,0,62,0,0,0,63,64,65,0,65,63,64,65,63,64,63,64,65,0,65,63,64,0,65,63,64,65,0,65,0,65,63,64,65,63,64,65,63,64,0,0,66,66,67,66,67,66,66,66,66,67,66,66,67,67,66,66,66,67,67,67,67,66,66,66,66,67,66,67,66,66,66,66,66,67,66,67,66,67,66,0,0,68,69,68,69,68,69,69,0,0,0,0,0,0,68,69,68,69,69,69,68,69,0,0,69,0,69,68,69,68,69,68,70,70,70,70,70,0,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,0,71,71,71,0,0,0,72,73,71,72,73,71,71,71,71,73,72,73,71,73,73,72,72,72,72,73,71,72,72,72,73,73,73,71,73,72,73,71,72,73,71,72,73,71,0,0,0,0,74,0,75,74,75,74,0,75,74,75,75,75,74,0,0,75,74,75,0,75,75,74,75,74,75,74,0,0,0,0,0,0,0,0,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76],"f":[null,[[]],null,null,null,null,null,null,null,null,[[],["never",0]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[["arguments",3]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0],["str",0]],["result",6]],null,null,null,[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["arc",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["cmd",4]],[[["",0]],["initerror",4]],[[["",0]],["sdcardcsd",3]],[[["",0]],["sdcardcid",3]],[[["",0]],["sdcardinfo",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],null,[[["",0]],["upsafecell",3]],[[["",0]]],[[["",0],["cmd",4]],["bool",0]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["result",4,[["sdcardinfo",3]]]],[[["",0]],["result",4,[["sdcardcid",3]]]],[[["",0]],["result",4,[["sdcardcsd",3]]]],[[["",0]],["u8",0]],[[["",0]],["u8",0]],[[["",0]],["result",4,[["sdcardinfo",3],["initerror",4]]]],[[],["sdcard",3,[["spiimpl",3,[["spi0",3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]]],[[["u32",0],["u8",0]]],[[]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],[[["",0],["cmd",4],["u32",0],["u8",0]]],null,null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["usize",0]]],[[["",0]]],[[["",0],["u32",0]],["result",4]],null,null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["upsafecell",3]],[[]],[[]],[[]],[[]],[[]],[[["",0],["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["usize",0]],["physaddr",3]],[[["physaddr",3],["usize",0]],["i32",0]],[[["physaddr",3]],["virtaddr",3]],[[["virtaddr",3]],["physaddr",3]],[[["",0],["usize",0]]],null,null,null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],null,[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["openflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["openflags",3]],[[["",0],["",0]]],[[["",0],["openflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0]],["arc",3]],[[]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],null,null,[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[]],[[["",0],["openflags",3]],["bool",0]],[[["bool",0],["bool",0],["arc",3,[["inode",3]]]]],[[]],null,[[["str",0],["openflags",3]],["option",4,[["arc",3,[["osinode",3]]]]]],[[["",0],["openflags",3]],["option",4,[["ordering",4]]]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["vec",3,[["u8",0]]]],[[["",0]]],[[["",0]],["bool",0]],null,[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],null,null,null,null,null,null,null,[[["",0]],["bool",0]],null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]],["ringbufferstatus",4]],[[["",0],["",0]]],[[["",0],["ringbufferstatus",4]],["bool",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["u8",0]],[[["arc",3,[["upsafecell",3,[["piperingbuffer",3]]]]]]],[[["",0]],["bool",0]],null,[[["",0],["arc",3]]],null,null,[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],null,[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["u8",0]]],null,[[["arc",3,[["upsafecell",3,[["piperingbuffer",3]]]]]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],[[]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["userbuffer",3]],["usize",0]],[[["",0],["userbuffer",3]],["usize",0]],[[]],[[["panicinfo",3]],["never",0]],null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["physaddr",3]],[[["",0]],["virtaddr",3]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0]],["simplerange",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["physaddr",3]],["ordering",4]],[[["",0],["virtaddr",3]],["ordering",4]],[[["",0],["physpagenum",3]],["ordering",4]],[[["",0],["virtpagenum",3]],["ordering",4]],null,null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[["",0]],["physpagenum",3]],[[["",0]],["virtpagenum",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["physpagenum",3]]],[[["usize",0]]],[[]],[[["usize",0]]],[[]],[[["virtpagenum",3]]],[[]],[[["physaddr",3]]],[[["usize",0]]],[[["virtaddr",3]]],[[["usize",0]]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]]],[[["",0]],["",0]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["",0],["physaddr",3]],["bool",0]],[[["",0],["virtaddr",3]],["bool",0]],[[["",0],["physpagenum",3]],["bool",0]],[[["",0],["virtpagenum",3]],["bool",0]],[[]],[[]],[[["",0]],["option",4]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0],["physaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["virtaddr",3]],["option",4,[["ordering",4]]]],[[["",0],["physpagenum",3]],["option",4,[["ordering",4]]]],[[["",0],["virtpagenum",3]],["option",4,[["ordering",4]]]],null,[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["option",4,[["physpagenum",3]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["physpagenum",3]]],[[["",0],["physpagenum",3]]],[[["",0]],["upsafecell",3]],[[["",0]]],null,[[["",0],["formatter",3]],["result",6]],[[],["option",4,[["frametracker",3]]]],[[]],[[["physpagenum",3]]],[[]],[[]],[[]],[[["",0],["physpagenum",3],["physpagenum",3]]],[[]],[[]],[[]],[[]],[[]],[[["physpagenum",3]]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["layout",3]],["never",0]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[["",0]]],[[]],null,[[]],[[["",0]]],[[["mappermission",3]]],[[["",0]]],[[["",0]],["u8",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["maptype",4]],[[["",0]],["mappermission",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["mappermission",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[["",0],["pagetable",3]]],null,[[["",0]],["arc",3]],[[]],null,null,null,[[]],[[["",0],["maptype",4]],["bool",0]],[[["",0],["mappermission",3]],["bool",0]],null,null,[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["maparea",3]]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[]],[[["memoryset",3]],["memoryset",3]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[["",0],["virtaddr",3],["virtaddr",3],["mappermission",3]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[],["usize",0]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,[[["",0]]],null,[[["",0],["mappermission",3]],["bool",0]],[[["virtaddr",3],["virtaddr",3],["maptype",4],["mappermission",3]]],[[]],[[]],[[]],null,[[["",0],["mappermission",3]],["option",4,[["ordering",4]]]],[[["",0],["maparea",3],["option",4]]],[[["",0]]],[[]],[[["",0]]],[[["",0],["virtpagenum",3]]],null,null,[[["",0],["bool",0]]],null,null,null,[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["pagetable",3]]],[[["",0],["pagetable",3],["virtpagenum",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["pteflags",3]]],[[["",0]]],[[["",0]],["u8",0]],null,null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0]],["pteflags",3]],[[["",0]],["pagetableentry",3]],[[["",0],["",0]]],[[["",0],["",0]]],[[["",0],["pteflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],null,null,[[]],[[]],[[]],[[["",0],["pteflags",3]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0]],["pteflags",3]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",0]],["option",4]],[[["u8",0]]],[[["u8",0]]],[[["intoiterator",8]]],[[["usize",0]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3],["physpagenum",3],["pteflags",3]]],[[["",0],["pteflags",3]],["bool",0]],[[]],[[["vec",3]]],[[["physpagenum",3],["pteflags",3]]],[[["",0]],["option",4]],[[]],[[["",0],["pteflags",3]],["option",4,[["ordering",4]]]],[[["",0]],["physpagenum",3]],[[["",0]],["bool",0]],[[["",0]]],null,[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],[[["",0]],["usize",0]],[[["",0],["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["",0],["virtaddr",3]],["option",4,[["physaddr",3]]]],[[["usize",0],["usize",0]],["vec",3]],[[["usize",0]],["",0]],[[["usize",0]],["",0]],[[["usize",0]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[]],[[["",0],["virtpagenum",3]]],[[["",0]],["bool",0]],null,null,null,null,null,null,null,null,null,[[],["usize",0]],[[["usize",0]]],[[["usize",0],["usize",0],["usize",0],["usize",0]],["usize",0]],[[["usize",0]]],[[],["never",0]],null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0],["arc",3,[["mutex",8]]]]],null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],[[["",0]]],[[["",0]]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0]]],[[]],[[]],null,[[]],[[]],[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]]],null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["refmut",3]],[[]],null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["usize",0]],["isize",0]],null,[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["u32",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[],["isize",0]],[[["i32",0]],["never",0]],[[],["isize",0]],[[],["isize",0]],[[],["isize",0]],[[["usize",0],["u32",0]],["isize",0]],[[["isize",0]],["isize",0]],[[],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["bool",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[["usize",0]],["isize",0]],[[],["isize",0]],[[["usize",0],["usize",0]],["isize",0]],[[["usize",0]],["i32",0]],null,null,[[]],[[]],[[["",0]],["",0]],[[["",0]],["",0]],[[],["option",4]],null,[[["signalflags",3]]],[[["",0]],["arc",3]],[[["i32",0]]],[[]],null,[[]],null,null,null,null,[[]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null,[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["usize",0]]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,[[["",0]],["usize",0]],[[["",0]]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,[[["",0],["usize",0]]],[[["",0]]],[[["",0]]],[[["",0]],["upsafecell",3]],[[["",0]],["upsafecell",3]],[[["",0]]],[[["",0]]],[[["",0]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["",0]],["usize",0]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",0]]],[[],["kernelstack",3]],[[]],[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],[[],["pidhandle",3]],null,[[["",0]]],null,null,[[["usize",0]],["usize",0]],[[["",0]],["physpagenum",3]],[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["usize",0]],null,[[["usize",0],["usize",0]],["usize",0]],[[["",0]],["usize",0]],null,null,null,null,null,[[["",0],["arc",3,[["taskcontrolblock",3]]]]],[[["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["upsafecell",3]],[[["",0]],["upsafecell",3]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[]],[[]],[[]],[[["usize",0],["arc",3,[["processcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[["usize",0]],["option",4,[["arc",3,[["processcontrolblock",3]]]]]],null,[[["usize",0]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,[[["",0]],["usize",0]],[[["",0]],["usize",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],null,null,[[["",0],["usize",0]]],[[["arc",3],["vec",3,[["string",3]]]]],null,null,[[["arc",3]],["arc",3]],[[]],[[]],[[["",0],["usize",0]],["arc",3,[["taskcontrolblock",3]]]],[[["",0]],["usize",0]],[[["",0]],["usize",0]],null,[[["",0]],["refmut",3,[["processcontrolblockinner",3]]]],[[]],[[]],null,null,null,[[],["arc",3]],null,null,null,null,null,null,[[["",0]],["usize",0]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],null,[[],["usize",0]],[[],["arc",3,[["processcontrolblock",3]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["trapcontext",3]],[[],["usize",0]],[[],["usize",0]],[[["",0]],["upsafecell",3]],[[]],[[]],[[["",0]]],null,[[]],[[]],[[]],[[]],[[]],[[["",0]],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[["",0]]],[[["signalflags",3]]],[[["",0]]],[[["",0]],["u32",0]],null,[[]],[[["",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["option",4]],[[["",0]],["signalflags",3]],[[["",0],["",0]]],[[["",0],["signalflags",3]],["ordering",4]],[[]],[[["",0]],["bool",0]],[[]],[[]],[[["",0],["signalflags",3]],["bool",0]],[[["",0],["intoiterator",8]]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[["",0],["formatter",3]],["result",6]],[[]],[[["u32",0]],["option",4]],[[["u32",0]]],[[["u32",0]]],[[["intoiterator",8]]],[[["",0],["",0]]],[[["",0]]],[[]],[[["",0]],["bool",0]],[[]],[[["",0]],["bool",0]],[[["",0]],["bool",0]],[[["",0],["signalflags",3]],["bool",0]],[[]],[[["",0],["signalflags",3]],["option",4,[["ordering",4]]]],[[["",0]]],[[["",0],["bool",0]]],[[]],[[["",0]]],[[]],[[["",0]]],[[["",0]]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[]],null,null,null,null,null,null,null,[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["taskstatus",4]],[[["",0],["",0]]],[[["",0],["taskstatus",4]],["bool",0]],null,[[]],[[]],[[]],[[["",0]],["taskstatus",4]],[[["",0]],["trapcontext",3]],[[["",0]],["usize",0]],null,[[["",0]],["refmut",3,[["taskcontrolblockinner",3]]]],[[]],[[]],[[]],null,[[["arc",3,[["processcontrolblock",3]]],["usize",0],["bool",0]]],null,null,null,null,[[["",0]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,null,null,null,null,[[["usize",0],["arc",3,[["taskcontrolblock",3]]]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0]],["",0]],[[]],[[["",0],["",0]],["ordering",4]],[[["",0]],["upsafecell",3]],[[["",0],["",0]],["bool",0]],null,[[]],[[]],[[],["usize",0]],[[],["usize",0]],[[]],[[]],[[["",0],["",0]],["option",4,[["ordering",4]]]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],[[["",0]],["typeid",3]],null,[[]],[[]],[[]],[[]],[[],["never",0]],[[],["never",0]],[[],["never",0]],null,[[["usize",0],["usize",0],["usize",0],["usize",0],["usize",0]]],[[["",0]],["",0]],[[["",0]],["",0]],[[["",0],["formatter",3]],["result",6]],[[]],[[]],null,null,null,[[["",0],["usize",0]]],null,null,[[],["result",4]],[[],["result",4]],[[["",0]],["typeid",3]],null],"p":[[3,"Stdout"],[3,"BLOCK_DEVICE"],[3,"SDCardWrapper"],[4,"CMD"],[3,"SDCardCID"],[4,"InitError"],[3,"SDCardCSD"],[3,"SDCard"],[3,"SDCardInfo"],[3,"PERIPHERALS"],[13,"CMDFailed"],[13,"CardCapacityStatusNotSet"],[3,"VirtIOBlock"],[3,"QUEUE_FRAMES"],[8,"File"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"OSInode"],[3,"OSInodeInner"],[4,"RingBufferStatus"],[3,"PipeRingBuffer"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[3,"SimpleRangeIterator"],[3,"SimpleRange"],[8,"StepByOne"],[3,"FRAME_ALLOCATOR"],[8,"FrameAllocator"],[3,"StackFrameAllocator"],[3,"FrameTracker"],[4,"MapType"],[3,"MapPermission"],[3,"KERNEL_SPACE"],[3,"MemorySet"],[3,"MapArea"],[3,"PTEFlags"],[3,"PageTableEntry"],[3,"PageTable"],[3,"UserBuffer"],[3,"UserBufferIterator"],[3,"Condvar"],[3,"CondvarInner"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"MutexBlockingInner"],[8,"Mutex"],[3,"Semaphore"],[3,"SemaphoreInner"],[3,"UPSafeCell"],[3,"INITPROC"],[3,"TaskContext"],[3,"PidHandle"],[3,"KernelStack"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"TaskManager"],[3,"ProcessControlBlockInner"],[3,"ProcessControlBlock"],[3,"PROCESSOR"],[3,"Processor"],[3,"SignalFlags"],[4,"TaskStatus"],[3,"TaskControlBlock"],[3,"TaskControlBlockInner"],[3,"TIMERS"],[3,"TimerCondVar"],[3,"TrapContext"]]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/ch8/search.js b/ch8/search.js index 3aa50607..a8026db5 100644 --- a/ch8/search.js +++ b/ch8/search.js @@ -1,2 +1,2 @@ -(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[result.id];obj.lev=result.lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){var result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(var i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){var found=false;if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){found=obj[GENERICS_DATA].some(function(gen){return gen[NAME]===val.name})}return found?0:MAX_LEV_DISTANCE+1}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}function addIntoResults(isExact,res,fullId,id,index,lev){if(lev===0||(!isExact&&lev<=MAX_LEV_DISTANCE)){if(res[fullId]!==undefined){var result=res[fullId];if(result.dontValidate||result.lev<=lev){return}}res[fullId]={id:id,index:index,dontValidate:isExact,lev:lev,}}}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i0){firstNonZeroDistance=distance;break}}in_args=firstNonZeroDistance}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned);if(is_module){addIntoResults(true,results,fullId,i,-1,0)}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");removeEmptyStringsFromArray(paths);val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}addIntoResults(false,results_in_args,fullId,j,index,in_args);addIntoResults(false,results_returned,fullId,j,index,returned);if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}addIntoResults(false,results,fullId,j,index,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type="",query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query,true);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(window.ALL_CRATES.length>1){crates=` in `}var output=`
    -

    Results for ${escape(query.query)} `+(query.type?" (type: "+escape(query.type)+")":"")+"

    "+crates+`
    `+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    ";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;let crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;itpositions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;xpositions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,searchWords,filterCrates),params["go_to_first"],filterCrates)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;var crateCorpus=rawSearchIndex[crate];searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=crateCorpus.t;var itemNames=crateCorpus.n;var itemPaths=crateCorpus.q;var itemDescs=crateCorpus.d;var itemParentIdxs=crateCorpus.i;var itemFunctionSearchTypes=crateCorpus.f;var paths=crateCorpus.p;var aliases=crateCorpus.a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){updateLocalStorage("rustdoc-saved-filter-crate",ev.target.value);currentResults=null;search(undefined,true)}searchWords=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file +(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[result.id];obj.lev=result.lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){var result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(var i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){var found=false;if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){found=obj[GENERICS_DATA].some(function(gen){return gen[NAME]===val.name})}return found?0:MAX_LEV_DISTANCE+1}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}function addIntoResults(isExact,res,fullId,id,index,lev){if(lev===0||(!isExact&&lev<=MAX_LEV_DISTANCE)){if(res[fullId]!==undefined){var result=res[fullId];if(result.dontValidate||result.lev<=lev){return}}res[fullId]={id:id,index:index,dontValidate:isExact,lev:lev,}}}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i0){firstNonZeroDistance=distance;break}}in_args=firstNonZeroDistance}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned);if(is_module){addIntoResults(true,results,fullId,i,-1,0)}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");removeEmptyStringsFromArray(paths);val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}addIntoResults(false,results_in_args,fullId,j,index,in_args);addIntoResults(false,results_returned,fullId,j,index,returned);if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}addIntoResults(false,results,fullId,j,index,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type="",query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query,true);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(window.ALL_CRATES.length>1){crates=` in `}var output=`
    +

    Results for ${escape(query.query)} `+(query.type?" (type: "+escape(query.type)+")":"")+"

    "+crates+`
    `+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    ";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;let crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){query=query.raw.trim();var results={"in_args":[],"returned":[],"others":[],};if(query.length!==0){var tmp=execQuery(getQuery(query),searchWords,filterCrates);results.in_args.push(tmp.in_args);results.returned.push(tmp.returned);results.others.push(tmp.others)}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){putBackSearch()}return}var filterCrates=getFilterCrates();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=buildUrl(query.raw,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execSearch(query,searchWords,filterCrates),params["go_to_first"],filterCrates)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;var crateCorpus=rawSearchIndex[crate];searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=crateCorpus.t;var itemNames=crateCorpus.n;var itemPaths=crateCorpus.q;var itemDescs=crateCorpus.d;var itemParentIdxs=crateCorpus.i;var itemFunctionSearchTypes=crateCorpus.f;var paths=crateCorpus.p;var aliases=crateCorpus.a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="All crates"){var params=searchState.getQueryStringParams();var query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}searchWords=buildIndex(rawSearchIndex);registerSearchEvents();function runSearchIfNeeded(){if(searchState.getQueryStringParams().search){search()}}runSearchIfNeeded()};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file diff --git a/ch8/settings.css b/ch8/settings.css index 67098658..35df7bce 100644 --- a/ch8/settings.css +++ b/ch8/settings.css @@ -1 +1 @@ -.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file +.setting-line{margin:0.6em 0 0.6em 0.3em;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.setting-line .radio-line,.setting-line .choices{display:flex;flex-wrap:wrap;}.setting-line .radio-line .setting-name{flex-grow:1;margin-top:auto;margin-bottom:auto;}.setting-line .radio-line input{margin-right:0.3em;}.radio-line .choice{border-radius:0.1em;border:1px solid;margin-left:0.5em;margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file diff --git a/ch8/settings.html b/ch8/settings.html index d801b250..a433d003 100644 --- a/ch8/settings.html +++ b/ch8/settings.html @@ -1,6 +1,17 @@ Rustdoc settings -

    Rustdoc settings

    Theme preferences
    Use system theme
    Theme
    Preferred dark theme
    Preferred light theme
    -
    Auto-hide item contents for large items.
    Auto-hide item methods' documentation
    Auto-hide trait implementation documentation
    Directly go to item in search if there is only one result
    Show line numbers on code examples
    Disable keyboard shortcuts
    + +
    +

    Rustdoc settings

    Back
    Use system theme
    Theme
    Preferred light theme
    Preferred dark theme
    Auto-hide item contents for large items.
    Auto-hide item methods' documentation
    Auto-hide trait implementation documentation
    Directly go to item in search if there is only one result
    Show line numbers on code examples
    Disable keyboard shortcuts
    \ No newline at end of file diff --git a/ch8/settings.js b/ch8/settings.js index b26bdadc..80471891 100644 --- a/ch8/settings.js +++ b/ch8/settings.js @@ -1 +1 @@ -(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();updateLightAndDark();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){addClass(document.getElementById("theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("theme").parentElement.parentElement,"hidden")}function updateLightAndDark(){if(getSettingValue("use-system-theme")!=="false"){showLightAndDark()}else{hideLightAndDark()}}function setEvents(){updateLightAndDark();onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file +(function(){function changeSetting(settingName,value){updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();updateLightAndDark();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){addClass(document.getElementById("theme").parentElement,"hidden");removeClass(document.getElementById("preferred-light-theme").parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement,"hidden");removeClass(document.getElementById("theme").parentElement,"hidden")}function updateLightAndDark(){if(getSettingValue("use-system-theme")!=="false"){showLightAndDark()}else{hideLightAndDark()}}function setEvents(){updateLightAndDark();onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}});onEachLazy(document.querySelectorAll("input[type=\"radio\"]"),function(elem){const settingId=elem.name;const settingValue=getSettingValue(settingId);if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",function(ev){changeSetting(ev.target.name,ev.target.value)})});document.getElementById("back").addEventListener("click",function(){history.back()})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file diff --git a/ch8/source-script.js b/ch8/source-script.js index 09515e07..9faf492c 100644 --- a/ch8/source-script.js +++ b/ch8/source-script.js @@ -1 +1 @@ -(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.classList.add("expanded");child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.classList.remove("expanded");child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner=document.createElement("div");if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var container=document.querySelector("nav.sidebar");var sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){container.classList.remove("expanded")}else{container.classList.add("expanded")}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});container.insertBefore(sidebar,document.querySelector(".sidebar-logo").nextSibling);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file +(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.classList.add("expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{sidebar.classList.remove("expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner=document.createElement("div");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var container=document.querySelector("nav.sidebar");var sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("source-sidebar-show")!=="true"){container.classList.remove("expanded")}else{container.classList.add("expanded")}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});container.appendChild(sidebar);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/ch8/src/os/boards/qemu.rs.html b/ch8/src/os/boards/qemu.rs.html index 71070af0..13672cff 100644 --- a/ch8/src/os/boards/qemu.rs.html +++ b/ch8/src/os/boards/qemu.rs.html @@ -1,7 +1,9 @@ qemu.rs - source -
    1
    +    
    +    
    1
     2
     3
     4
    @@ -14,5 +16,5 @@
     pub type BlockDeviceImpl = crate::drivers::block::VirtIOBlock;
     
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/config.rs.html b/ch8/src/os/config.rs.html index ca9532c6..f15073ed 100644 --- a/ch8/src/os/config.rs.html +++ b/ch8/src/os/config.rs.html @@ -1,15 +1,17 @@ config.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -30,5 +32,5 @@
     pub use crate::board::{CLOCK_FREQ, MMIO};
     
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/console.rs.html b/ch8/src/os/console.rs.html index 063ba6d9..97271bbf 100644 --- a/ch8/src/os/console.rs.html +++ b/ch8/src/os/console.rs.html @@ -1,15 +1,17 @@ console.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -64,5 +66,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/drivers/block/mod.rs.html b/ch8/src/os/drivers/block/mod.rs.html index 42896207..3b38b5c5 100644 --- a/ch8/src/os/drivers/block/mod.rs.html +++ b/ch8/src/os/drivers/block/mod.rs.html @@ -1,15 +1,17 @@ mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -62,5 +64,5 @@
         println!("block device test passed!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/drivers/block/sdcard.rs.html b/ch8/src/os/drivers/block/sdcard.rs.html index 079348d1..51359824 100644 --- a/ch8/src/os/drivers/block/sdcard.rs.html +++ b/ch8/src/os/drivers/block/sdcard.rs.html @@ -1,105 +1,107 @@ sdcard.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -1530,5 +1532,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/drivers/block/virtio_blk.rs.html b/ch8/src/os/drivers/block/virtio_blk.rs.html index 305e293e..f71d2899 100644 --- a/ch8/src/os/drivers/block/virtio_blk.rs.html +++ b/ch8/src/os/drivers/block/virtio_blk.rs.html @@ -1,15 +1,17 @@ virtio_blk.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -162,5 +164,5 @@
             .unwrap()
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/drivers/mod.rs.html b/ch8/src/os/drivers/mod.rs.html index e65a377b..f24e962d 100644 --- a/ch8/src/os/drivers/mod.rs.html +++ b/ch8/src/os/drivers/mod.rs.html @@ -1,12 +1,14 @@ mod.rs - source -
    1
    +    
    +    
    1
     2
     3
     
    pub mod block;
     
     pub use block::BLOCK_DEVICE;
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/fs/inode.rs.html b/ch8/src/os/fs/inode.rs.html index cf6d0eb7..b11a4946 100644 --- a/ch8/src/os/fs/inode.rs.html +++ b/ch8/src/os/fs/inode.rs.html @@ -1,105 +1,107 @@ inode.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -280,5 +282,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/fs/mod.rs.html b/ch8/src/os/fs/mod.rs.html index a96810d9..79263aa5 100644 --- a/ch8/src/os/fs/mod.rs.html +++ b/ch8/src/os/fs/mod.rs.html @@ -1,15 +1,17 @@ mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -34,5 +36,5 @@
     pub use pipe::{make_pipe, Pipe};
     pub use stdio::{Stdin, Stdout};
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/fs/pipe.rs.html b/ch8/src/os/fs/pipe.rs.html index 29226d9b..ff2cb2a9 100644 --- a/ch8/src/os/fs/pipe.rs.html +++ b/ch8/src/os/fs/pipe.rs.html @@ -1,105 +1,107 @@ pipe.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -334,5 +336,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/fs/stdio.rs.html b/ch8/src/os/fs/stdio.rs.html index d2c86ee7..af994059 100644 --- a/ch8/src/os/fs/stdio.rs.html +++ b/ch8/src/os/fs/stdio.rs.html @@ -1,15 +1,17 @@ stdio.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -116,5 +118,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/lang_items.rs.html b/ch8/src/os/lang_items.rs.html index 3510fcf6..830f4be0 100644 --- a/ch8/src/os/lang_items.rs.html +++ b/ch8/src/os/lang_items.rs.html @@ -1,15 +1,17 @@ lang_items.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -76,5 +78,5 @@
         println!("---END   BACKTRACE---");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/main.rs.html b/ch8/src/os/main.rs.html index 682ffc01..26b3d7ac 100644 --- a/ch8/src/os/main.rs.html +++ b/ch8/src/os/main.rs.html @@ -1,15 +1,17 @@ main.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -122,5 +124,5 @@
         panic!("Unreachable in rust_main!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/address.rs.html b/ch8/src/os/mm/address.rs.html index ae243b29..dd3416e5 100644 --- a/ch8/src/os/mm/address.rs.html +++ b/ch8/src/os/mm/address.rs.html @@ -1,105 +1,107 @@ address.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -518,5 +520,5 @@
     }
     pub type VPNRange = SimpleRange<VirtPageNum>;
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/frame_allocator.rs.html b/ch8/src/os/mm/frame_allocator.rs.html index b03750c0..2a68a3ef 100644 --- a/ch8/src/os/mm/frame_allocator.rs.html +++ b/ch8/src/os/mm/frame_allocator.rs.html @@ -1,105 +1,107 @@ frame_allocator.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -256,5 +258,5 @@
         println!("frame_allocator_test passed!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/heap_allocator.rs.html b/ch8/src/os/mm/heap_allocator.rs.html index d2313840..532cbad3 100644 --- a/ch8/src/os/mm/heap_allocator.rs.html +++ b/ch8/src/os/mm/heap_allocator.rs.html @@ -1,15 +1,17 @@ heap_allocator.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -92,5 +94,5 @@
         println!("heap_test passed!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/memory_set.rs.html b/ch8/src/os/mm/memory_set.rs.html index e855fce1..3e25e5c1 100644 --- a/ch8/src/os/mm/memory_set.rs.html +++ b/ch8/src/os/mm/memory_set.rs.html @@ -1,105 +1,107 @@ memory_set.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -754,5 +756,5 @@
         println!("remap_test passed!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/mod.rs.html b/ch8/src/os/mm/mod.rs.html index 3f24ee17..783b1784 100644 --- a/ch8/src/os/mm/mod.rs.html +++ b/ch8/src/os/mm/mod.rs.html @@ -1,15 +1,17 @@ mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -46,5 +48,5 @@
         KERNEL_SPACE.exclusive_access().activate();
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/mm/page_table.rs.html b/ch8/src/os/mm/page_table.rs.html index da976c57..5ac95682 100644 --- a/ch8/src/os/mm/page_table.rs.html +++ b/ch8/src/os/mm/page_table.rs.html @@ -1,105 +1,107 @@ page_table.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -500,5 +502,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sbi.rs.html b/ch8/src/os/sbi.rs.html index 3d51abc8..f39290ab 100644 --- a/ch8/src/os/sbi.rs.html +++ b/ch8/src/os/sbi.rs.html @@ -1,15 +1,17 @@ sbi.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -92,5 +94,5 @@
         panic!("It should shutdown!");
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sync/condvar.rs.html b/ch8/src/os/sync/condvar.rs.html index c6ae20c0..da6e78d7 100644 --- a/ch8/src/os/sync/condvar.rs.html +++ b/ch8/src/os/sync/condvar.rs.html @@ -1,15 +1,17 @@ condvar.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -80,5 +82,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sync/mod.rs.html b/ch8/src/os/sync/mod.rs.html index 8043a7a4..eee2bef1 100644 --- a/ch8/src/os/sync/mod.rs.html +++ b/ch8/src/os/sync/mod.rs.html @@ -1,7 +1,9 @@ mod.rs - source -
    1
    +    
    +    
    1
     2
     3
     4
    @@ -20,5 +22,5 @@
     pub use semaphore::Semaphore;
     pub use up::UPSafeCell;
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sync/mutex.rs.html b/ch8/src/os/sync/mutex.rs.html index be986932..36448e41 100644 --- a/ch8/src/os/sync/mutex.rs.html +++ b/ch8/src/os/sync/mutex.rs.html @@ -1,15 +1,17 @@ mutex.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -178,5 +180,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sync/semaphore.rs.html b/ch8/src/os/sync/semaphore.rs.html index 38297cea..cc5ba032 100644 --- a/ch8/src/os/sync/semaphore.rs.html +++ b/ch8/src/os/sync/semaphore.rs.html @@ -1,15 +1,17 @@ semaphore.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -92,5 +94,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/sync/up.rs.html b/ch8/src/os/sync/up.rs.html index 8e982968..a50c9b57 100644 --- a/ch8/src/os/sync/up.rs.html +++ b/ch8/src/os/sync/up.rs.html @@ -1,15 +1,17 @@ up.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -60,5 +62,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/syscall/fs.rs.html b/ch8/src/os/syscall/fs.rs.html index 573d2081..85c7eab2 100644 --- a/ch8/src/os/syscall/fs.rs.html +++ b/ch8/src/os/syscall/fs.rs.html @@ -1,15 +1,17 @@ fs.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -200,5 +202,5 @@
         new_fd as isize
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/syscall/mod.rs.html b/ch8/src/os/syscall/mod.rs.html index 2139c1bb..76cf5b39 100644 --- a/ch8/src/os/syscall/mod.rs.html +++ b/ch8/src/os/syscall/mod.rs.html @@ -1,15 +1,17 @@ mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -142,5 +144,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/syscall/process.rs.html b/ch8/src/os/syscall/process.rs.html index 1c038f31..759da32e 100644 --- a/ch8/src/os/syscall/process.rs.html +++ b/ch8/src/os/syscall/process.rs.html @@ -1,105 +1,107 @@ process.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -236,5 +238,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/syscall/sync.rs.html b/ch8/src/os/syscall/sync.rs.html index e357641b..80515671 100644 --- a/ch8/src/os/syscall/sync.rs.html +++ b/ch8/src/os/syscall/sync.rs.html @@ -1,105 +1,107 @@ sync.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -270,5 +272,5 @@
         0
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/syscall/thread.rs.html b/ch8/src/os/syscall/thread.rs.html index aacba748..452fffaa 100644 --- a/ch8/src/os/syscall/thread.rs.html +++ b/ch8/src/os/syscall/thread.rs.html @@ -1,15 +1,17 @@ thread.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -172,5 +174,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/context.rs.html b/ch8/src/os/task/context.rs.html index 61884b80..d9313a1d 100644 --- a/ch8/src/os/task/context.rs.html +++ b/ch8/src/os/task/context.rs.html @@ -1,15 +1,17 @@ context.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -52,5 +54,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/id.rs.html b/ch8/src/os/task/id.rs.html index 1c511d97..130e0d55 100644 --- a/ch8/src/os/task/id.rs.html +++ b/ch8/src/os/task/id.rs.html @@ -1,105 +1,107 @@ id.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -448,5 +450,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/manager.rs.html b/ch8/src/os/task/manager.rs.html index 71cfec2a..b2f2e3a8 100644 --- a/ch8/src/os/task/manager.rs.html +++ b/ch8/src/os/task/manager.rs.html @@ -1,15 +1,17 @@ manager.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -112,5 +114,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/mod.rs.html b/ch8/src/os/task/mod.rs.html index 8354b900..c817734f 100644 --- a/ch8/src/os/task/mod.rs.html +++ b/ch8/src/os/task/mod.rs.html @@ -1,105 +1,107 @@ mod.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -260,5 +262,5 @@
         process_inner.signals |= signal;
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/process.rs.html b/ch8/src/os/task/process.rs.html index 1db781f3..c3ad08c6 100644 --- a/ch8/src/os/task/process.rs.html +++ b/ch8/src/os/task/process.rs.html @@ -1,105 +1,107 @@ process.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -520,5 +522,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/processor.rs.html b/ch8/src/os/task/processor.rs.html index 8818b570..0368f877 100644 --- a/ch8/src/os/task/processor.rs.html +++ b/ch8/src/os/task/processor.rs.html @@ -1,105 +1,107 @@ processor.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -210,5 +212,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/signal.rs.html b/ch8/src/os/task/signal.rs.html index 31594845..a3cfd8d8 100644 --- a/ch8/src/os/task/signal.rs.html +++ b/ch8/src/os/task/signal.rs.html @@ -1,15 +1,17 @@ signal.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -60,5 +62,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/switch.rs.html b/ch8/src/os/task/switch.rs.html index 416474a8..18b475c6 100644 --- a/ch8/src/os/task/switch.rs.html +++ b/ch8/src/os/task/switch.rs.html @@ -1,7 +1,9 @@ switch.rs - source -
    1
    +    
    +    
    1
     2
     3
     4
    @@ -18,5 +20,5 @@
         pub fn __switch(current_task_cx_ptr: *mut TaskContext, next_task_cx_ptr: *const TaskContext);
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/task/task.rs.html b/ch8/src/os/task/task.rs.html index 409f2aaa..2d773d9e 100644 --- a/ch8/src/os/task/task.rs.html +++ b/ch8/src/os/task/task.rs.html @@ -1,15 +1,17 @@ task.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -158,5 +160,5 @@
         Blocking,
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/timer.rs.html b/ch8/src/os/timer.rs.html index 49ed5ace..c14ddec2 100644 --- a/ch8/src/os/timer.rs.html +++ b/ch8/src/os/timer.rs.html @@ -1,15 +1,17 @@ timer.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -148,5 +150,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/trap/context.rs.html b/ch8/src/os/trap/context.rs.html index 969a581d..abb9e647 100644 --- a/ch8/src/os/trap/context.rs.html +++ b/ch8/src/os/trap/context.rs.html @@ -1,15 +1,17 @@ context.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
     10
     11
     12
    @@ -80,5 +82,5 @@
         }
     }
     
    -
    +
    \ No newline at end of file diff --git a/ch8/src/os/trap/mod.rs.html b/ch8/src/os/trap/mod.rs.html index 15ed2880..dec7cdc0 100644 --- a/ch8/src/os/trap/mod.rs.html +++ b/ch8/src/os/trap/mod.rs.html @@ -1,105 +1,107 @@ mod.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    +    
    +    
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
     100
     101
     102
    @@ -254,5 +256,5 @@
     
     pub use context::TrapContext;
     
    -
    +
    \ No newline at end of file diff --git a/ch8/storage.js b/ch8/storage.js index c090e1f3..c6d070de 100644 --- a/ch8/storage.js +++ b/ch8/storage.js @@ -1 +1 @@ -var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file +var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}window.addEventListener("pageshow",function(ev){if(ev.persisted){setTimeout(switchToSavedTheme,0)}}) \ No newline at end of file