From d559c50a98e65ce889411b46ab108b392907e0f0 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Tue, 24 Sep 2024 09:51:37 -0600 Subject: wip 9p --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 8240584..a1441f4 100644 --- a/README.md +++ b/README.md @@ -26,3 +26,52 @@ UART: - pin2: gpio1: RX (so connect it to your FTDI's TX) - pin3: gnd (so connect it to your FTDI's GND) - picocom --baud=115200 /dev/ttyUSB0 + +# Usage + +The harness uses DHCP to acquire an IPv4 address, then serves the 9P +protocol over TCP: + + - TCP port: 564 (9P does not have a standard TCP port number, but + this is the default port number used by most 9P-over-TCP clients, + including the Linux kernel's v9fs driver). + - Supported protocol versions: + - `9P2000` (base protocol): Yes + - `9P2000.u` (Unix extension): Yes, with Linux kernel + architecture-"generic" errnos. This will match the Linux kernel + errnos on most architectures (but notably not on Alpha, MIPS, + PA-RISC, PowerPC, or SPARC; I am unsure whether on these + platforms the kernel's v9fs filesystem driver will map the + "generic" errnos to the architecture-specific errnos for you). + - `9P2000.L` (Linux extension): No, it's an abomination and + unlikely to ever be supported + - `9P2000.e` (Erlang extension): No, but if you want it and ask + nicely I'd be happy to add it (I'm not sure why you'd want it + though). + - Authentication: None + +There are lots of 9P clients that you can use. 9P is a filesystem +protocol; and you can mount it directly with the the Linux kernel's +v9fs filesystem driver, with plan9port's `9pfuse`; or interact with it +without mounting it using the shell commands `9p` (from plan9port), +`wmiir`, `ixpc`; or interact with it without mounting it by using a +library for your programming language of choice. + +Some notes on choosing a client: + - On x86-32, the Linux kernel v9fs driver is known to drop entries + from directory listings; I advise using 9pfuse instead of you want + to mount it on 32-bit systems. + - I generally like mounting it as a real filesystem, but this means + that you only get errno errors, and the more-helpful error strings + are discarded. + - The sbc-harness only supports 8 concurrent connections to the 9P + server, so while shell commands are handy for poking around, for + real use where you're doing things in parallel you'll likely want + to mount it or use a library that can reuse existing connections. + +# Bugs/Limitations + + - Only supports 8 concurrent TCP connectsions to the 9P server (due + to limitations in the W5500 TCP-offload chip) + - Only supports IPv4, not IPv6 (due to limitations in the W5500 + TCP-offload chip) -- cgit v1.2.3-2-g168b