book/src/development/design/kernel.md

1.2 KiB

Microkernel

The core kernel of Mercury will be highly limited, implementing only necessary portions. This allows other functionality to be simply run in userspace.

Additionally, most code should be put into separate libraries then pulled into the kernel code. This will likely be done via git submodules.

Initially, it will be built for RISC-V, then ARM (focused on running in a VM), then on a Raspberry Pi. Afterwards, we can put focus towards building out various features.

Support for multiple targets will be done via Cargo.toml targets, cross-compilation, and conditional compilation.

Boot Process

To be implemented

Memory Management

To-Do

Processes

To-Do

Error Handling

All errors must be handled gracefully by the kernel. If possible, they should simply log an error. If not, they can display it to the user, preferrably in a simple format, maybe using something like const_panic or snafu.