danos/library/runtime
Daniel Samson 67702fa250
Phase 2d (ii): filesystem modification time (mtime)
Completes Phase 2: the FAT filesystem now stamps and reports a real modification
time, built on the Phase 2d(i) kernel wall-clock. This is the last stat field the
compiler's build cache needs to reason about (source vs cached output).

- on-disk.zig: fatToEpoch / epochToFatDateTime convert between the two 16-bit DOS
  date/time fields and Unix epoch seconds (UTC — FAT has no timezone). Host-tested
  round-trip + an absolute check (1577836800 == 2020-01-01).
- engine: a settable current_time_epoch that create/write stamp into the entry's
  write (and creation) date/time; Node/Listing gained an mtime decoded from those
  fields on read. Host test: a create stamps the mtime, read back through resolve
  and listEntry.
- vfs protocol FileStatus + runtime.fs.Attributes gained an mtime field; the fat
  server sets current_time_epoch from runtime.system.wallClock() per request and
  returns mtime from stat. The flat ramfs reports 0 (it has no timestamps).
- fat-test reads the created file's mtime through stat and checks it is a real
  current time, behind a new `fat-mtime` QEMU case.

Verified against the host: the guest stamped mtime 1783971676 while the host clock
was 1783971680 (boot+test lag) — the file's mtime is real current time. zig build,
zig build test (the epoch<->DOS conversions + the engine mtime test),
zig build check-fat-image, and a sequential QEMU sweep — fat-mount, fat-mutations,
fat-rename, fat-mtime, vfs, vfs-client-death, log-flush, orderly-shutdown,
initial-ramdisk, smoke, wall-clock, usb-storage — all green. mode/inode remain.
2026-07-13 20:43:40 +01:00
..
block.zig M6: FAT read/write filesystem server, mounted into the VFS 2026-07-13 15:05:53 +01:00
device.zig WIP: USB 2026-07-12 22:24:47 +01:00
dma.zig M14b: DMA memory (dma_alloc / dma_free) 2026-07-10 19:43:59 +01:00
fs.zig Phase 2d (ii): filesystem modification time (mtime) 2026-07-13 20:43:40 +01:00
heap.zig Split the `system` contract into boot-handoff / abi / device-abi 2026-07-10 18:08:51 +01:00
input.zig fixing comments 2026-07-12 16:19:09 +01:00
ipc.zig Signals over IPC, one-shot timers, and the service harness (M17.4) 2026-07-12 23:53:38 +01:00
process.zig Signals over IPC, one-shot timers, and the service harness (M17.4) 2026-07-12 23:53:38 +01:00
runtime.zig Phase 1a: add the native runtime.fs, retire the posix shim 2026-07-13 19:43:56 +01:00
service.zig The application surface: enumerate, subscribe, and device-list (M18.3) 2026-07-13 00:49:03 +01:00
start.zig Pass arguments to main via runtime.process.Init, dispatched on signature 2026-07-11 14:22:48 +01:00
system-call.zig zig fmt 2026-07-12 16:04:58 +01:00
system.zig Phase 2d (i): a kernel wall-clock from the CMOS RTC 2026-07-13 20:35:03 +01:00
time.zig Add runtime.time, drop demo drivers, harden TSC timekeeping 2026-07-13 11:56:43 +01:00
usb.zig USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00
user.ld Re-organize the source tree as a monorepo mirroring the FHS 2026-07-10 12:55:56 +01:00