summaryrefslogtreecommitdiffstats
path: root/rsnix/src/lib.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-27 16:58:31 +0200
committersalmonik <salmonik@tuta.io>2026-08-27 16:58:31 +0200
commit300c0acbd7ab3fae8596ff839c39d9a17c70c68d (patch)
tree5a600b24c037dc798766e3ce3fc004956e517abb /rsnix/src/lib.rs
parentexec: PE32+ loader, versioned ABI, first external binaries (v0.6.0) (diff)
downloadrs-dos-300c0acbd7ab3fae8596ff839c39d9a17c70c68d.tar.gz
rs-dos-300c0acbd7ab3fae8596ff839c39d9a17c70c68d.zip
streams: per-invocation channel, pumping mode, filter pipeline wiring
exec: LineChannel bounded ring (cap=16) with abort/eof/marker fields. Shell 'pumping mode' assembles canonical lines from its queue into the channel while the command runs; ^C marks the channel aborted. Shell-side grammar: USE/TIL pre-drain into the channel before spawn; <cmd> <path> TIL <marker> sugar drains paths until the marker line. Interactive TIL: pump_key checks each submitted line against the marker and closes the channel when it matches. Exports callbacks run in the command task but touch shell-owned state: this is safe by construction — the shell blocks in exec_external until the command completes. put_line feeds Pipeline::line directly; get_line pops from the channel (yield-poll when empty). load: drop NX from image mapping (single-privilege kernel, NX bit 63 reserved when EFER.NXE is set by OVMF); compute image span from section RVAs not file size. bins/count: gate binary — reads lines via get_line, reports count via put_line. Verified: count USE file → 6; count <path> TIL END → 2; interactive count TIL DONE → 3; -h filter across task boundary; ^C abort. v1 stream exports: put_line → Pipeline, get_line ← channel, log_line → klog append, exit → abort_current. Accounting: print_one_line → pipe.line() returns false (head kill / pager ^C) → the binary should wrap up promptly; accepted: binary does not check the return value in v1 (phase 3 simplification).
Diffstat (limited to 'rsnix/src/lib.rs')
-rw-r--r--rsnix/src/lib.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/rsnix/src/lib.rs b/rsnix/src/lib.rs
index 376d3b5..325932a 100644
--- a/rsnix/src/lib.rs
+++ b/rsnix/src/lib.rs
@@ -5,6 +5,7 @@ extern crate alloc;
5pub mod ahci; 5pub mod ahci;
6pub mod cursor; 6pub mod cursor;
7pub mod ehci; 7pub mod ehci;
8pub mod exec;
8pub mod fat; 9pub mod fat;
9pub mod font; 10pub mod font;
10pub mod fs; 11pub mod fs;
@@ -12,7 +13,6 @@ pub mod gdt;
12pub mod gop; 13pub mod gop;
13pub mod interrupts; 14pub mod interrupts;
14pub mod klog; 15pub mod klog;
15pub mod exec;
16pub mod load; 16pub mod load;
17pub mod memory; 17pub mod memory;
18pub mod paging; 18pub mod paging;