xref: /plan9/sys/man/3/0intro (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
INTRO 3
NAME
intro - introduction to the Plan 9 devices
DESCRIPTION
A Plan 9 device implements a file tree for client processes. A file name beginning with a pound sign, such as .LR #c , names the root of a file tree implemented by a particular "kernel device driver" identified by the character after the pound sign. Such names are usually bound to conventional locations in the name space. For example, after
.EX bind("#c", "/dev", MREPL)

an ls (1) of /dev will list the files provided by the console device.

A kernel device driver is a server in the sense of the Plan 9 File Protocol, 9P (see Section 5), but with the messages implemented by local rather than remote procedure calls. Also, several of the messages ( Nop , Session , Flush , and Error ) have no subroutine equivalents.

When a system call is passed a file name beginning with .L "#" it looks at the next character, and if that is a valid device character it performs an attach (5) on the corresponding device to get a channel representing the root of that device's file tree. If there are any characters after the device character but before the next .L "/" or end of string, those characters are passed as parameter aname to the attach. For example,

.EX #I2

identifies the number 2 IP protocol stack (see ip (3)).

Each kernel device has a conventional place at which to be bound to the name space. The SYNOPSIS sections of the following pages includes a bind command to put the device in the conventional place. Most of these binds are done automatically by init (8) using newns (see auth (2)) on the file /lib/namespace (see namespace (6)). When typed to rc (1), the bind commands will need quotes to protect the # characters.

SEE ALSO
intro (5), intro (2)