Commit Graph

18 Commits

Author SHA1 Message Date
c603a578c0 feat(userspace): shell runs programs (ls, cat) via spawn w/ terminal+storage+args page; ext4 holes read as zeros; storage re-attach same buffer 2026-10-27 17:22:08 +01:00
0fd568cdad feat(storage): ext4-only disk via mkfs.ext4 -d; drop FAT16; feature-gated mount (ro on unknown ro_compat); ext4 read spans blocks, delete clears inode, mkdir counts dir; virtio-blk writes; test-qemu e2fsck gate 2026-10-27 17:09:35 +01:00
a4f467f45d feat(userspace): log server sole console holder; init boots from manifest; adapter loads only init+storage 2026-10-27 15:40:19 +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
8bc5402a29 fix(userspace): clip display rects, bounds-check session app ids and fat16 handles, reject bad fat16 geometry, session kills via process cap 2026-10-27 12:11:13 +01:00
9be67e403b fix(ext4): review fixes — bounds checks, delete safety, blocks_count, multi-extent dirs 2026-10-18 23:28:34 +02:00
73661e925d test(ext4): comprehensive edge case and integration tests 2026-10-18 23:17:15 +02:00
bc4659eabd feat(ext4): mkdir and nested directory support 2026-10-18 23:16:35 +02:00
2ede01bdd2 feat(ext4): file create, write, and delete with extent management 2026-10-18 23:15:38 +02:00
bff18df349 feat(ext4): directory entry find/add/remove operations 2026-10-18 23:14:02 +02:00
fe0693b969 feat(ext4): block and inode bitmap allocation/deallocation 2026-10-18 23:12:33 +02:00
381669d9dd feat(ext4): inode read/write, init_empty_inode, multi-extent read 2026-10-18 23:09:57 +02:00
d85cb5b55d feat(storage): add mkdir to FileSystem trait with stubs 2026-10-18 23:06:26 +02:00
5766c6f7f7 refactor: extract ports/drivers/bins layers — clean dependency inversion
Separate abstractions from implementations following DIP:

  servers/              drivers/
      │                     │
      ▼                     ▼
    ports/  (trait-only crates, zero deps)

New crates:

ports/ (abstractions):
  - port-framebuffer: Framebuffer trait
  - port-block-device: BlockDevice trait + SectorId
  - port-input-device: InputDevice trait + InputEvent types

drivers/ (implementations depend on ports/):
  - driver-framebuffer-virtio: VirtIO GPU framebuffer
  - driver-framebuffer-mock: test double
  - driver-block-virtio: VirtIO block device

bins/ (composition roots wire server + driver):
  - display-qemu: DisplayServer<VirtioFramebuffer>
  - storage-qemu: storage server with VirtIO block

Servers no longer own their hardware traits or driver code.
Neither server nor driver depends on the other — both point
inward to the port abstraction.
2026-10-18 13:13:53 +02:00
29c3841679 feat(storage-server): implement ext4 read-only filesystem with superblock, inode, extent, and directory parsing 2026-10-18 03:49:24 +02:00
dd5c2c7268 feat(storage-server): implement FAT16 filesystem with read, write, create, delete, list, and cluster chain management 2026-10-18 03:45:30 +02:00
2dc503e07e refactor(storage-server): add SectorId, FileName, PackedPath newtypes, eliminate raw primitives and DRY violations 2026-10-18 03:41:14 +02:00
7a4600b3a2 feat(storage-server): add StorageServer<F: FileSystem> with BlockDevice trait, mock adapters, and tests 2026-10-18 03:37:40 +02:00