diff options
| author | salmonik <salmonik@tuta.io> | 2026-07-31 16:31:34 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-07-31 16:31:34 +0200 |
| commit | 6767d96e8ed5049af7b551b00d6320fbfb5dcd05 (patch) | |
| tree | 118e6b52d75684e52f96b923e773a1100c02c5cb /rsdos/src/main.rs | |
| parent | rtc + pci: CMOS clock with date command, PCI bus enumeration (diff) | |
| download | rs-dos-6767d96e8ed5049af7b551b00d6320fbfb5dcd05.tar.gz rs-dos-6767d96e8ed5049af7b551b00d6320fbfb5dcd05.zip | |
vfs: everything is a file — dirs, ramfs, character devices
- 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
Diffstat (limited to '')
| -rw-r--r-- | rsdos/src/main.rs | 8 |
1 files changed, 8 insertions, 0 deletions
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 | |||
| 154 | let devices = rsnix::pci::probe(); | 154 | let devices = rsnix::pci::probe(); |
| 155 | rsnix::serial_println!("pci: {} device(s) on all buses", devices.len()); | 155 | rsnix::serial_println!("pci: {} device(s) on all buses", devices.len()); |
| 156 | 156 | ||
| 157 | let (dirs, files) = rsnix::fs::init(); | ||
| 158 | rsnix::serial_println!("fs: vfs ready — {} dirs, {} files", dirs, files); | ||
| 159 | if rsnix::fs::self_test() { | ||
| 160 | rsnix::serial_println!("fs: self-test OK (create/read/write/remove)"); | ||
| 161 | } else { | ||
| 162 | rsnix::serial_println!("fs: self-test FAILED"); | ||
| 163 | } | ||
| 164 | |||
| 157 | rsnix::serial_println!("boot: entering shell"); | 165 | rsnix::serial_println!("boot: entering shell"); |
| 158 | shell::run(); | 166 | shell::run(); |
| 159 | } | 167 | } |
