Files
LithosAnanake/include/starkernel
Robert Allan JamesandClaude Sonnet 5 e55111c2c5 starkernel: item 3.7 -- per-VM free lists (Phase 3 core complete, for real)
Punch list §25 item 3.7 complete. Added to §25.4 after starting item
4.1 surfaced it as an unbuilt prerequisite -- 3.6's earlier "Phase 3
core complete" claim is corrected in this same commit.

StadiumVMQuota table (size STADIUM_MAX_VM_COUNT, linearly searched by
vm_id -- capsule_birth.c's vm_id is monotonic and never reused, so it
cannot index a table directly, and a 4-entry scan costs nothing). New
per-cell stadium_owner byte array records which quota a cell belongs
to, needed so eviction returns a freed cell to the correct VM's list
and so eviction search stays scoped to the evicting VM's own residents
(quota isolation).

Free-list linkage reuses each cell's `link` field as a next-free
pointer while unresident -- link is documented only as generic "index
into the Stadium, not a pointer," so this is a repurposing, not a
header change. Does not answer the separate, still-open question of
which field carries a multi-cell patron's first continuation-cell
index; item 3.5's mass != 1 refusal stands exactly as it was.

Boot-time: every cell chained into one list in ascending index order,
granted whole to vm_id 0 (Hera), the only VM that exists. Ascending
order preserves item 3.6's "Hera is patron zero" invariant once real
birth-wiring lands.

stadium_admit()'s signature changed to take vm_id -- a change to code
shipped in item 3.5, amended there. Pops the calling VM's free-list
head first (O(1)); only falls back to a same-VM-scoped eviction search
if empty.

Caught a real bug before the boot run: the header zero-fill on
eviction (and the initial free-list build) both left contains == 0,
but 0 is Hera's valid index -- the same collision item 3.1's
STADIUM_CONTAINS_NONE fix addressed, recurring at a new site. Fixed by
explicitly setting contains = STADIUM_CONTAINS_NONE at both free-list
sites.

Explicitly out of scope, reported not invented: granting quota to any
VM other than Hera is capacity arbitration (item 1.3 left "how much
moves per transfer" open). stadium_owner is set once at boot and never
rewritten, so quota_slot_for_vm() refuses every vm_id != 0 permanently
until item 4.2 adds the grant path and owner-array writes.

Verified: three-architecture boot (amd64, aarch64, riscv64), all
reaching ok> with identical dict_hash=0x3d4e1daf289da94f matching the
item-3.6 baseline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 18:09:34 -04:00
..
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00
2026-08-01 07:49:56 -04:00

include/starkernel/

Headers for LithosAnanke, the bare-metal UEFI kernel (src/starkernel/). Built only via Makefile.starkernel; gated by __STARKERNEL__ when shared with hosted code.

  • uefi.h — UEFI protocol/type definitions consumed by the loader.
  • elf64.h, elf_loader.h — ELF64 parsing and kernel-image loading.
  • boot_info_offsets.h — struct-offset constants shared between the assembly bootstrap and the C boot path.
  • arch.h, apic.h, timer.h — architecture init, APIC interrupt controller, timer (TSC/HPET/APIC, 100 Hz heartbeat).
  • console.h, framebuffer.h, vt100.h — UART 16550 console, framebuffer driver, and VT100 terminal emulation over the framebuffer.
  • pmm.h, vmm.h, kmalloc.h — physical memory manager (bitmap allocator), 4-level x86_64 paging, kernel heap allocator.
  • pci.h, virtio_blk.h — PCI enumeration and the VirtIO block device driver (disk backend for the kernel block subsystem).
  • capsule.h, capsule_birth.h, capsule_loader.h, capsule_run.h, capsule_vm_physics.h, capsule_generated.h — capsule system types, birth protocol, physics-runtime capsule bindings, and the build-time- generated capsule directory (see tools/mkcapsule.c).
  • kernel_args.h, cmdline.h — boot-time kernel argument parsing (starforth.cfg / command line).
  • repl.h — kernel REPL.
  • log.h, doe_log.h — kernel logging and DoE metrics logging.
  • q48_16.h — kernel-build copy of Q48.16 fixed-point arithmetic.
  • xxhash64.h — content-addressing hash used for capsule IDs.
  • hal_memory.h — hardware-abstraction-layer memory interface.

Subdirectories:

  • hal/ — top-level hardware-abstraction-layer interface.
  • vm/ — kernel VM subsystem headers (capsule arena, parity logging, bootstrap wiring).
  • freestanding/ — minimal libc-shim headers (assert.h, ctype.h, errno.h, inttypes.h, math.h, sched.h, signal.h, stdio.h, stdlib.h, string.h, time.h, sys/time.h, sys/types.h) for building shared VM code in the freestanding kernel environment, where no real libc is available.