srv - server registry
bind #s /srv
The srv device provides a one-level directory holding already-open channels to services.
In effect, srv is a bulletin board on which processes may post open file descriptors to
make them available to other processes.
To install a channel, create a new file such as /srv/myserv and then write a text string
(suitable for strtoul; see atof(2)) giving the file descriptor number of an open file.
Any process may then open /srv/myserv to acquire another reference to the open file that
An entry in srv holds a reference to the associated file even if no process has the file
open. Removing the file from /srv releases that reference.
It is an error to write more than one number into a server file, or to create a file with
a name that is already being used.
To drop one end of a pipe into /srv, that is, to create a named pipe:
int fd, p;
fd = create("/srv/namedpipe", 1, 0666);
sprint(buf, "%d", p);
write(fd, buf, strlen(buf));
write(p, "hello", 5);
At this point, any process may open and read /srv/namedpipe to receive the hello string.
Data written to /srv/namedpipe will be received by executing
read(p, buf, sizeof buf);
in the above process.