Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed76cbbc79 | ||
|
|
140229b88d | ||
|
|
cb2379fd06 | ||
|
|
1665b239b0 | ||
|
|
70ed0337f8 |
@@ -2,12 +2,31 @@
|
|||||||
Codename: Shodan
|
Codename: Shodan
|
||||||
Version: 1
|
Version: 1
|
||||||
|
|
||||||
A small operating system, written from scratch in Zig — a bootloader (`boot/`)
|
A small resilient operating system, written from scratch in Zig.
|
||||||
and a microkernel (`system/kernel/`), sharing a neutral handoff contract (`system/boot-handoff.zig`).
|
|
||||||
It boots x86-64 via UEFI, and so far has a framebuffer console, a physical frame
|
## Zen of DanOS:
|
||||||
allocator, its own paging with W^X permissions, interrupt/exception handling, a
|
|
||||||
LAPIC timer, a kernel heap, a fixed-priority preemptive scheduler, and in-kernel IPC
|
- Resilient Micro-Kernel Architecture.
|
||||||
channels. See [`docs/`](docs/README.md) for how each piece works.
|
- Every process run in an isolated user space not kernel space.
|
||||||
|
- Processes cannot take down the entire OS with it when they die or is killed
|
||||||
|
- Stable public runtime library, private OS ABI.
|
||||||
|
- Keeps a stable runtime for user space processes between OS versions (great for backwards compatibility)
|
||||||
|
- Allows the underlying OS to be changed without effecting applications
|
||||||
|
- Provides a boundary to enable compatibility between OS's e.g. POSIX, MUSL etc
|
||||||
|
- Drivers are just isolated processes in user space.
|
||||||
|
- Thin binaries that can be restarted like applications.
|
||||||
|
- Useful during driver development.
|
||||||
|
- Drivers can claim MMIO / ports
|
||||||
|
- Driver resources (e.g. IRQ/Port/MMIO) claims are automatically cleaned up if the driver dies or is killed
|
||||||
|
- Drivers can also hook into the process lifecyle to clean up or reset hardware
|
||||||
|
- No legacy to deal with
|
||||||
|
- Zig code uses a clean coding style (Zen of Zig)
|
||||||
|
- Favor reading code over writing code.
|
||||||
|
- No magic numbers.
|
||||||
|
- No shortend names unless its for ABI compatibility or acronyms
|
||||||
|
- Inter-Process Communication (IPC)
|
||||||
|
- Publish and subscribe to Asynchronous Messages
|
||||||
|
- Talk to services and processes synchronously
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
@@ -60,7 +79,7 @@ straight into CI.
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Design notes explaining the *why* behind the code live in
|
Design notes explaining *why* behind the code live in
|
||||||
[`docs/`](docs/README.md) — start with [`docs/README.md`](docs/README.md).
|
[`docs/`](docs/README.md) — start with [`docs/README.md`](docs/README.md).
|
||||||
|
|
||||||
## Logo
|
## Logo
|
||||||
|
|||||||
@@ -21,6 +21,25 @@ run the existing QEMU suite green before any new work starts.
|
|||||||
|
|
||||||
**Numbering note:** continues the milestone sequence (driver track ended at M16).
|
**Numbering note:** continues the milestone sequence (driver track ended at M16).
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
The loop marks a phase `[x]` in the same commit that lands it. A phase is marked
|
||||||
|
only when its definition of green holds.
|
||||||
|
|
||||||
|
- [x] **Phase 0** — baseline: docs committed, feat/usb merged to main, pushed;
|
||||||
|
`usb-xhci-libary.zig` renamed to `usb-xhci-library.zig`; existing QEMU
|
||||||
|
suite green from the worktree (48/48, 2026-07-12).
|
||||||
|
- [ ] **M17.1** — kernel releases claims/MSI on death (branch `feat/process-lifecycle`)
|
||||||
|
- [ ] **M17.2** — exit reasons
|
||||||
|
- [ ] **M17.3** — published exit events + VFS subscriber
|
||||||
|
- [ ] **M17.4** — signals, timer notifications, `runtime.process`, the service harness
|
||||||
|
- [ ] **merge** `feat/process-lifecycle` → main, push
|
||||||
|
- [ ] **M18.1** — device-manager protocol: hello + restart policy (branch `feat/device-manager`)
|
||||||
|
- [ ] **merge** `feat/device-manager` → main, push
|
||||||
|
- [ ] **M18.2** — xHCI port scan + tree reports (branch `feat/usb-xhci-bus`)
|
||||||
|
- [ ] **M18.3** — app surface: enumerate/subscribe + device-list
|
||||||
|
- [ ] **merge** `feat/usb-xhci-bus` → main, push — **loop ends here**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## M17.1 — the kernel releases a dead process's claims
|
## M17.1 — the kernel releases a dead process's claims
|
||||||
|
|||||||
Reference in New Issue
Block a user