|
|
4049ba5007
|
feat(kernel): per-process budgets (pages, endpoints, notifs, regions) carved from creator, returned on death; init owns pool
|
2026-10-27 15:08:58 +01:00 |
|
|
|
7415bab7f5
|
feat(kernel): console cap gates DebugPutchar, no uart fast path; spawn start arg in a0; delegate returns slot
|
2026-10-27 14:54:36 +01:00 |
|
|
|
99273db6d3
|
refactor(adapter): split trap/page_table/smp/entry by concern; trim comments
|
2026-10-27 13:21:53 +01:00 |
|
|
|
909b3f0503
|
feat(storage): full file protocol over per-client shared region (badged clients, owned handles, clamped lengths, ReadOnly on unwritable disk); init loads via libkos::fs; drop boot shared buffer
|
2026-10-27 12:42:37 +01:00 |
|
|
|
694c675a40
|
feat: devices via caps (BootInfo, init assigns devices, drivers map MMIO/DMA themselves, IRQ-driven input); drop boot device wiring and info pages; headless display fallback
|
2026-10-27 12:28:39 +01:00 |
|
|
|
b87a62475f
|
feat(adapter): higher-half kernel (linked at PHYS_OFFSET, boot trampoline, no low mappings), fix SBI ecall clobbers
|
2026-10-27 00:25:20 +01:00 |
|
|
|
bafc18a5f8
|
feat(kernel): SystemControl cap for halt, board device table + boot caps to init, RegionAddress syscall, idle loop services irqs
|
2026-10-26 23:59:57 +01:00 |
|
|
|
8d2c40cb1e
|
feat(kernel): kernel-owned memory model
- FrameTable: per-frame owner/use, replaces PagePool + ProcessMemory
- Quota per process, page tables charged to owner
- Regions for shared mem + device MMIO, torn down w/ owner
- Platform: create/destroy AS, map/unmap, zero_frame; drop translate_va
- RequestPages/ReleasePages/MapPage(move) checked vs kernel records
- user window 0x1000..32MiB, private pts by construction
- boot loader + device setup go through kernel api
- kernel built in place, boot allocator bounded
- isolation tests, randomized invariant test, FrameTable kani proofs
- fixes: inflated release, unmapped release, dst va unchecked,
heap overflow, unbounded pt alloc, unzeroed frames, double free
|
2026-10-26 19:40:50 +01:00 |
|
|
|
27be73f42d
|
feat: wire display + input servers to snake, fix QEMU 11.x GPU bug
VirtIO GPU: QEMU 11.x has RESOURCE_ATTACH_BACKING (0x0104) and
RESOURCE_FLUSH (0x0106) command types swapped in its legacy MMIO
VirtIO GPU implementation. Workaround: send swapped type values.
Confirmed via QEMU monitor (xp shows correct bytes in memory)
and QEMU trace events (device dispatches to wrong handler).
Display pipeline now works end-to-end:
adapter → GPU init → create_2d → attach_backing → set_scanout
display-server → clear(blue) → flush → transfer + resource_flush
snake → draw commands via IPC → display renders → flush to GPU
Input server:
- New driver-input-uart crate (reads UART at mapped VA 0x20000)
- New bins/input-qemu composition root
- Adapter loads input-server, maps UART MMIO into its address space
- Init delegates both display_ep (slot 0) and input_ep (slot 1) to snake
- WASD keys → UART → input-server → IPC → snake direction change
Snake game runs with display and input, exits on wall collision.
|
2026-10-18 21:10:42 +02:00 |
|
|
|
8d53fa9ac5
|
refactor(adapter-riscv): split kmain into boot/, devices/ modules
kmain is now 20 lines — six function calls:
hardware::init → BSS, MMU, traps, timer, PLIC, kernel
loader::load_init → read init.elf, create process, map ELF
loader::load_server → read server ELF, create process, map ELF
storage_setup → VirtIO block re-init, shared buffer, phys-info
gpu_setup → VirtIO GPU init, framebuffer alloc, phys-info
caps::grant_all → endpoints, capability grants
New modules:
boot/hardware.rs — hardware init (BSS, MMU, traps, kernel)
boot/loader.rs — ELF loading, thread setup, enter_userspace
boot/caps.rs — endpoint creation, capability grants
devices/storage_setup.rs — VirtIO block for storage server
devices/gpu_setup.rs — VirtIO GPU for display server
All unsafe contained in hw/, mmu/, trap/. Boot and device
modules call safe wrappers.
|
2026-10-18 13:19:16 +02:00 |
|