From a624a56e289e4a02a411f83741f0f2c9fc0f0b2e Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 14 Sep 2026 21:26:47 -0300 Subject: Add Linux Tty9p mounted terminals and forward raw TTY keys --- docs/fs.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'docs/fs.md') diff --git a/docs/fs.md b/docs/fs.md index 8805ffde..942a26a3 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -50,11 +50,15 @@ drive Unix or TCP without a kernel mount: For [Linux v9fs](https://www.kernel.org/doc/html/latest/filesystems/9p.html), use `version=9p2000,cache=none,access=any` and `trans=unix`, or `trans=tcp` with `port=5640`. Set `uname`, `dfltuid`, and `dfltgid` for the local user. -Leave `aname` empty: the mount root contains `os` and `self`. Kernel mounts -are not part of the test suite. Neither 9P2000.u nor 9P2000.L is implemented. +Leave `aname` empty: the mount root contains `os` and `self`. The opt-in +[Linux v9fs experiment](v9fs.md) tests a kernel mount in a separate subprocess +namespace (`zig build v9fs-test`, requiring explicit mount authorization). +Neither 9P2000.u nor 9P2000.L is implemented. Existing Plan9port/v9fs clients need a userspace bridge for QUIC. The server root contains `os` and `self`. Under `self`, `index` lists panes, +`README` explains the interface. `new/` lists its creation endpoints and another +`README`; listing, walking and statting entries do not create panes. Opening `new/ctl` creates a pane and returns its serial, and `pane/` contains `body`, `tag`, `ctl`, `addr`, `data`, `event`, and selection files. Terminal panes additionally have `pty/{ctl,status,data}`. @@ -82,6 +86,8 @@ This is a control filesystem, not a complete POSIX export. Native filenames may contain up to 255 bytes. Existing regular OS files support read, write, and truncation to zero; protocol create, remove, rename, and other metadata changes are refused. Ownership, permissions, and timestamps are synthetic. +Zero-length truncation accepts the accompanying `mtime` hint sent by Linux +v9fs; the hint is not stored. Standalone timestamp changes remain refused. `zig build fs-test` drives real sessions using the independent Python client in `test/ninep.py`. `zig build 9p-test` checks the freestanding wire protocol; -- cgit v1.3