Expand description
The main module and entrypoint
Various facilities of the kernels are implemented as submodules. The most important ones are:
trap
: Handles all cases of switching from userspace to the kerneltask
: Task managementsyscall
: System call handling and implementationmm
: Address map using SV39sync
: Wrap a static data structure inside it so that we are able to access it without anyunsafe
.fs
: Separate user from file system with some structures
The operating system also starts in this module. Kernel code starts
executing from entry.asm
, after which rust_main()
is called to
initialize various pieces of functionality. (See its source code for
details.)
We then call task::run_tasks()
and for the first time go to
userspace.
Modules
QEMU riscv-64 virt machine
Constants in the kernel
SBI console driver, for text output
block device driver
File trait & inode(dir, file, pipe, stdin, stdout)
The panic handler and backtrace
Global logger
Memory management implementation
SBI call wrappers
Synchronization and interior mutability primitives
Implementation of syscalls
Implementation of process ProcessControlBlock
and task(thread) TaskControlBlock
management mechanism
RISC-V timer-related functionality
Trap handling functionality
Macros
Print! macro to the host console using the format string and arguments.
Println! macro to the host console using the format string and arguments.