A deep dive into Mercury, the userspace driver development environment for the Helios microkernel (part of the Ares OS project). The post walks through writing a serial port driver using the Hare programming language, covering the capability-based security model, driver manifests, IPC protocol definitions generated by ipcgen, shared memory via mapped pages, interrupt handling with a poll-based event loop, and how drivers are loaded and started by the sysinit/usrinit bootstrap chain.
Sort: