From 6767d96e8ed5049af7b551b00d6320fbfb5dcd05 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 31 Jul 2026 16:31:34 +0200 Subject: vfs: everything is a file — dirs, ramfs, character devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fs.rs: node-table VFS (root /dev /tmp /etc). Regular files are in-memory ramfs; char devices regenerate content on every read so 'cat /dev/rtc' shows the live time. Nodes are stable handles with tombstone removal; . and .. path resolution. - /dev devices: mem (raw physical RAM, offset = address), rtc, pci, version, meminfo, null, zero, console (write prints to screen+serial), serial. /etc/motd static file. - shell: ls, cat, hexdump (hexdump -C style), mkdir, touch, rm; echo gains '>' overwrite and '>>' append redirection (append bug fixed: first '>' in '>>' was parsed as overwrite) - boot: fs init + self-test (create/read/write/remove) before the shell - QEMU verified: file lifecycle, redirection, console/null writes, mkdir/touch/rm, hexdump /dev/mem and /tmp/x byte-exact --- rsdos/src/main.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'rsdos') diff --git a/rsdos/src/main.rs b/rsdos/src/main.rs index c35d88f..8e49937 100644 --- a/rsdos/src/main.rs +++ b/rsdos/src/main.rs @@ -154,6 +154,14 @@ pub extern "efiapi" fn efi_main(image_handle: Handle, system_table: *mut SystemT let devices = rsnix::pci::probe(); rsnix::serial_println!("pci: {} device(s) on all buses", devices.len()); + let (dirs, files) = rsnix::fs::init(); + rsnix::serial_println!("fs: vfs ready — {} dirs, {} files", dirs, files); + if rsnix::fs::self_test() { + rsnix::serial_println!("fs: self-test OK (create/read/write/remove)"); + } else { + rsnix::serial_println!("fs: self-test FAILED"); + } + rsnix::serial_println!("boot: entering shell"); shell::run(); } -- cgit v1.2.3