xref: /plan9/sys/doc/fs/p8 (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1.SH
29P Protocol Drivers
3.PP
4The file server described so far
5waits for 9P protocol messages to
6appear in its input queue.
7It processes each message and
8sends the reply back to the originator.
9There are groups of processes that
10perform protocol I/O on some network or
11device and the resulting messages
12are sent to the file system queue.
13The simplest of these is the driver
14for the Cyclone I/O board.
15The Cyclone is a fiber machine-to-machine
16interface on a VME bus.
17Each Cyclone board has an i960 computer on it.
18The i960 can do DMA transfers on the VME bus
19and can transmit and receive bytes over its
20fiber interface.
21The microcode on the i960 manages a set of
22buffers in the host memory.
23When a 9P message arrives on the fiber interface,
24the message is transferred into the host memory
25and placed in circular queue of buffers.
26The cyclone also has a circular queue of
27messages to transmit.
28The transfer rate averages about a megabyte per second and
29the latency is a few microseconds for a small
30message.
31Almost no protocol is involved.
32It is possible to checksum the messages,
33but there is such a low error rate that it
34has been disabled.
35.PP
36There are two Cyclones on Bootes.
37One interface goes to our main CPU server
38while the other is not used.
39.PP
40There is a set of two processes
41.CW lai
42and
43.CW lao
44that perform Ethernet input and output.
45These processes send Ethernet messages
46to/from two more processes
47.CW ilo
48and
49.CW ilt
50that do the IL reliable datagram protocol
51on top of IP packets.
52.PP
53There is another suite of five processes
54.CW dki ,
55.CW dko ,
56.CW dkp ,
57.CW dkt ,
58and
59.CW dkl
60that do the Datakit URP protocol on top of a
61Datakit device driver.
62The structure is such that more protocol
63stacks can be added to feed the file system.
64.PP
65The last process in Bootes,
66.CW con ,
67reads the console
68and calls internal subroutines to
69executes commands typed.
70Since there is only one process,
71only one command can be executing at a
72time.
73See
74.I fs (8)
75for a description of the
76commands available at the console.
77