2024-02-01 17:23:51 +02:00
2024-02-01 17:23:51 +02:00
2024-01-30 11:37:11 +02:00
2023-07-18 18:03:45 +03:00
2023-08-05 16:32:12 +03:00
2024-01-26 18:53:07 +02:00
2023-12-18 23:26:51 +02:00

yggdrasil-kernel

Rust Unix-like operating system kernel.

See also:

Main features

  • Architecture support: aarch64 and x86_64
  • Kernel/userspace preemptive multithreading
  • Kernel-space multitasking with async/await runtime
  • Symmetric Multiprocessing
  • Unix-like virtual filesystem: files, directories, block/char devices, symlinks, mounts
  • In-memory read-write filesystem for tar-based initrd
  • sysfs/devfs
  • Binary formats: ELF + #!/... shebangs
  • Rust-style interfaces for most of the stuff like memory management, devices etc.

aarch64-specific:

  • PSCI for SMP start-up and power control
  • PL011 serial port
  • ARM generic timer as system/monotonic timer
  • GICv2 IRQ controller

x86_64-specific:

  • UEFI boot through yboot (no plans for legacy boot)
  • PCIe, with plans to extend to aarch64 as well
    • NVMe drive support (read/write)
    • AHCI SATA drive support (read/write)
  • I/O and Local APIC IRQ controllers
  • PS/2 keyboard,
  • i8253-based timer (got some problems with HPET on real hw, had to revert, lol)
  • COM ports
  • ACPI, work in progress, mostly broken on real hardware
    • ACPI shutdown
    • PCI IRQ pin routing
    • Events like power button, etc.
  • Fancy framebuffer console

Userspace features:

  • Sanitized system calls better suited for Rust
  • Userspace threads
  • Synchronization primitives through futex-like interface
  • Unix-like signals and exceptions

General plans (in no particular order)

  • Better unification of architecture code
  • async for VFS (?)
  • PCIe NVMe block device
  • PCIe SATA block device
  • PCIe XHCI USB devices
  • Better algorithms for memory management

Navigation

  • src/arch — architecture-specific code
  • src/device — device driver implementations
    • bus — bus devices like USB, PCIe etc.
    • display — everything related to graphic displays
    • power — power and reset controllers
    • serial — serial transceiver drivers
    • devtree.rs — stuff related to ARM DeviceTree
    • tty.rs — Unix-style terminal driver implementation
  • src/fs — in-kernel filesystems (sysfs/devfs)
  • src/mem — memory management
  • src/proc — process information management
  • src/syscall — system call handling
  • src/task — kernel and userspace tasks, processes and threads
  • src/util — utilities used within the kernel
  • src/init.rs — kernel init thread impl.
Description
Yggdrasil OS
Readme 15 MiB
Languages
Rust 97.4%
Assembly 1.1%
C 1.1%
Shell 0.3%