diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-02 01:52:10 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-02 01:52:10 +0200 |
| commit | 045c9ddf71b62dff538cd3ae1963166ab5c145a0 (patch) | |
| tree | fd99757329f7b770f067aa5f0204c87068fea681 /CONTEXT.md | |
| parent | gop: rustfmt collapse in init_shadow warning band (diff) | |
| download | rs-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 'CONTEXT.md')
| -rw-r--r-- | CONTEXT.md | 11 |
1 files changed, 9 insertions, 2 deletions
| @@ -126,8 +126,15 @@ backbuffer from the fb-aware page allocator (it can no longer land on | |||
| 126 | the framebuffer — the heap free list spans the fb hole, so a 1.9 MB | 126 | the framebuffer — the heap free list spans the fb hole, so a 1.9 MB |
| 127 | shadow could alias the display and turn every scroll into an MMIO→MMIO | 127 | shadow could alias the display and turn every scroll into an MMIO→MMIO |
| 128 | memcpy) and converts the scroll's shadow memmove to per-word stores as | 128 | memcpy) and converts the scroll's shadow memmove to per-word stores as |
| 129 | a belt-and-suspenders measure. A future major GUI overhaul (graphics | 129 | a belt-and-suspenders measure; 0.5.5 makes every boot stage visible on |
| 130 | windows beyond the text surface) would be the `a` bump (1.0.0). | 130 | real hardware (no serial console): `gop::boot_marker` prints the boot |
| 131 | progress straight to the framebuffer (the last marker before a hang | ||
| 132 | identifies 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 | ||
| 134 | fallback allocation is panic-proof (try_reserve; a heap OOM degrades | ||
| 135 | to 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 | ||
