man(1) Manual page archive


     INTRO(3)                                                 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 `#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 loca-
          tions in the name space.  For example, after

               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 `#'
          it looks at the next character, and if that is a valid
          device character it performs an attach(5) on the correspond-
          ing 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 `/' or end of string,
          those characters are passed as parameter aname to the
          attach.  For example,

               #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 fol-
          lowing pages includes a bind command to put the device in
          the conventional place.  Most of these binds are done auto-
          matically 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)