feature: boot.mgr replace hardcoded init sequence with dependency-driven boot manager
Introduce boot.mgr - a self-registering, dependency-ordered boot initialization framework with barrier-based phasing and glob pattern matching. Units now declare their own init procedures and dependencies via registerBoot()/registerBarrier() in their initialization sections, boot.mgr.run() topologically sorts and executes them. - Add src/boot/boot.mgr.pas with topoSort, glob matching, barrier two-pass algorithm, and boot tree printer - Gut src/asuro.pas (kmain): now just stores multiboot info, calls System.init(), boot.mgr.run, and yield() - Add initialization sections with registerBoot() to 53 existing units - Add new units: core.pas, test.pas, driver.storage.boot.pas, app.wasm.pas, app.bsod.pas (factored out of asuro.pas) - Define 9 barrier phases: immediate -> early -> middle -> storage -> bus -> device -> bus.late -> late -> final - Fix xHCI ISR: exclude PRC/WRC from PORTSC change bit clearing to prevent race with port reset busy-wait - Fix driver.bus.usb.core fire_completion_hooks: guard against uint32 underflow when CompletionHookCount = 0 - Move auto_mount_volumes from device barrier to late barrier so it runs after PCI scan discovers storage controllers - Add toolchain/compile_initcalls.sh for boot entry extraction - Add Boot Registration sections to all 51 doc files; create 4 new doc files; rewrite boot.mgr.md; update mkdocs.yml nav
This commit is contained in:
1 parent
dd56ffbcb4
commit
2d190c221a
116 files changed
+1922
-465
No files matched your search
@@ -0,0 +1,27 @@
|
||||
# core
|
||||
|
||||
Core subsystem late initialiser.
|
||||
|
||||
## Overview
|
||||
|
||||
This unit performs late-stage core initialisation that depends on the RTC being available. Currently it seeds the pseudo-random number generator from the real-time clock.
|
||||
|
||||
## Boot Registration
|
||||
|
||||
Registered with `boot.mgr` as `core` at the `late` barrier.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `boot.mgr`
|
||||
- `core.rand`
|
||||
- `driver.timer.rtc`
|
||||
|
||||
## Procedures
|
||||
|
||||
### init
|
||||
|
||||
```pascal
|
||||
procedure init;
|
||||
```
|
||||
|
||||
Seeds `core.rand.srand` with a value derived from the current RTC date/time (seconds, minutes, hours, day), ensuring the PRNG produces different sequences across reboots.
|
||||
@@ -29,6 +29,10 @@ If `init` has not been called before a panic (early boot panic), the unit gracef
|
||||
- `core.strings` — string comparison for gfxd process detection
|
||||
- `core.gfx.color` — TRGB32 colour type for direct pixel drawing
|
||||
|
||||
## Boot Registration
|
||||
|
||||
Registered with `boot.mgr` as `core.panic`, depending on glob `arch.*.panic` (waits for all matching entries).
|
||||
|
||||
## Constants
|
||||
|
||||
### MAX_REGISTER_ENTRIES
|
||||
|
||||
Reference in new issue
Block a user