summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-02 01:52:10 +0200
committersalmonik <salmonik@tuta.io>2026-08-02 01:52:10 +0200
commit045c9ddf71b62dff538cd3ae1963166ab5c145a0 (patch)
treefd99757329f7b770f067aa5f0204c87068fea681 /CONTEXT.md
parentgop: rustfmt collapse in init_shadow warning band (diff)
downloadrs-dos-045c9ddf71b62dff538cd3ae1963166ab5c145a0.tar.gz
rs-dos-045c9ddf71b62dff538cd3ae1963166ab5c145a0.zip
v0.5.5: visible boot progress + panic-on-screen for real hardware
Real hardware has no serial console: a pre-shell panic was a silent blank screen (the panic handler only wrote to serial, then cli;hlt). v0.5.4's shadow change made this window reachable — if the fb-aware page allocation or the heap fallback failed on hardware, the kernel halted before the shell banner with zero screen output. - gop::boot_marker(): every boot stage now draws straight to the framebuffer (row 0, white-on-black). The last marker visible before a hang identifies where the kernel died. - Panic handler: pre-shell panics now draw a white-on-red '*** PANIC *** <msg> at file:line' band via gop::dump_lines. - init_shadow(): heap fallback is panic-proof (try_reserve_exact + resize instead of vec![0; words] which aborts on OOM); page-alloc result defensively re-checked against the fb region; any failure degrades to no-shadow mode with a visible warning band. - Verified: full chain (rsboot -> kernel) boots with markers, shell banner renders, all 5 test suites pass.
Diffstat (limited to '')
-rw-r--r--CONTEXT.md11
1 files changed, 9 insertions, 2 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index 1a1470c..196565c 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -126,8 +126,15 @@ backbuffer from the fb-aware page allocator (it can no longer land on
126the framebuffer — the heap free list spans the fb hole, so a 1.9 MB 126the framebuffer — the heap free list spans the fb hole, so a 1.9 MB
127shadow could alias the display and turn every scroll into an MMIO→MMIO 127shadow could alias the display and turn every scroll into an MMIO→MMIO
128memcpy) and converts the scroll's shadow memmove to per-word stores as 128memcpy) and converts the scroll's shadow memmove to per-word stores as
129a belt-and-suspenders measure. A future major GUI overhaul (graphics 129a belt-and-suspenders measure; 0.5.5 makes every boot stage visible on
130windows beyond the text surface) would be the `a` bump (1.0.0). 130real hardware (no serial console): `gop::boot_marker` prints the boot
131progress straight to the framebuffer (the last marker before a hang
132identifies the death site) and pre-shell panics now draw a white-on-red
133`*** PANIC ***` band instead of a silent blank screen, and the shadow
134fallback allocation is panic-proof (try_reserve; a heap OOM degrades
135to no-shadow mode instead of halting). A future major GUI overhaul
136(graphics windows beyond the text surface) would be the `a` bump
137(1.0.0).
131 138
132## Project layout 139## Project layout
133 140