summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/cloud9.md11
-rw-r--r--docs/fs.md10
2 files changed, 15 insertions, 6 deletions
diff --git a/docs/cloud9.md b/docs/cloud9.md
index d31d2cb3..d5acc37c 100644
--- a/docs/cloud9.md
+++ b/docs/cloud9.md
@@ -13,8 +13,15 @@ The file-server engine (fids, jobs, parking, flush, hangup) is cloud9's
editor's reply payload locator). `src/9p.zig` names the editor's and the
board's `fs.Options` and re-exports the wire names the transports use.
Mounting, Unix namespace discovery and permissions, the editor event loop,
-connection limits, and exported tree policy remain here. `src/9p_quic.zig`
-selects the existing `pardes-9p` ALPN for cloud9's optional OpenSSL transport.
+connection limits, and exported tree policy remain here. The Unix and TCP
+listeners run on cloud9's `serve.Runner` (`std.Io`: an accept task per
+listener, a reader and a writer task per connection, four slots); its handler
+queues every backend request for the editor's thread, which answers them all
+in `Listener.tick` after each editor update, retries parked reads there, and
+has the runner ship the replies. `src/9p_quic.zig` selects the existing
+`pardes-9p` ALPN for cloud9's optional OpenSSL transport; QUIC still runs on
+the poll loop in `src/9p_io.zig`, since cloud9's QUIC adapter is
+nonblocking-descriptor based rather than `std.Io` based.
The standalone protocol/GPIO tests import the same module. The separate
`05-zig-p4` build also supplies cloud9 for the GPIO firmware entry.
diff --git a/docs/fs.md b/docs/fs.md
index a9293393..55ffdc9c 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -40,8 +40,9 @@ IPv4/IPv6 addresses, not DNS names. Listener port zero chooses a free port;
All connections have session access, including `os`. TCP is unencrypted.
QUIC uses an ephemeral TLS identity without peer verification or login.
It carries 9P2000 on one bidirectional stream with ALPN `pardes-9p`.
-The four application connection slots are shared across transports;
-OpenSSL's internal buffers are separate, dynamically allocated memory.
+Unix and TCP connections share four slots served by cloud9's `std.Io`
+runner; QUIC has four of its own on the editor's poll loop. OpenSSL's
+internal buffers are separate, dynamically allocated memory.
[Plan9port's client](https://9fans.github.io/plan9port/man/man1/9p.html) can
drive Unix or TCP without a kernel mount, and `9ns` mounts the tree in a
@@ -141,8 +142,9 @@ and the editor's reply payload over cloud9's backend contract), `pane.zig`
(pane files), `ctl.zig`, `addr.zig`, `pty.zig`, `events.zig` (event and log
streams), `screen.zig` and `sources.zig`. The protocol engine is cloud9's
`fs.Server`, configured in `src/9p.zig` (the editor's and the board's
-capacities); the transports are `src/9p_io.zig`; `src/fs.zig` keeps host
-access, mounts, resolution, find and grep.
+capacities); the transports are `src/9p_io.zig` (cloud9's `serve.Runner`
+for Unix and TCP, a poll loop for QUIC, and the 9P client for mounts);
+`src/fs.zig` keeps host access, mounts, resolution, find and grep.
`zig build fs-test` drives real sessions using the independent Python client
in `test/ninep.py`; `zig build fs-discovery-test` checks that browsing creates