Crate os

source ·
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 kernel
  • task: Task management
  • syscall: System call handling and implementation
  • mm: Address map using SV39
  • sync: Wrap a static data structure inside it so that we are able to access it without any unsafe.
  • 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§

  • Constants in the kernel
  • console 🔒
    SBI console driver, for text output
  • block device driver
  • File trait & inode(dir, file, pipe, stdin, stdout)
  • The panic handler
  • Global logger
  • Memory management implementation
  • SBI call wrappers
  • Synchronization and interior mutability primitives
  • Implementation of syscalls
  • Task management implementation
  • RISC-V timer-related functionality
  • Trap handling functionality

Macros§

  • Print! to the host console using the format string and arguments.
  • Println! to the host console using the format string and arguments.

Functions§