USR(4)                                                     USR(4)

     Name
          usr - Human user boxes.

     Synopsis
          /b/usr
          /b/usr/me
          /b/usr/*/name
          /b/usr/*/state
          /b/usr/*/secret
          /b/usr/*/crypt
          /b/usr/*/clear
          /b/usr/*/itext
          /b/usr/*/otext
          /b/usr/*/etext
          /b/usr/*/mouse
          /b/usr/*/draw
          /b/usr/*/⋯

     Description
          This box represents a human using the system. It is used to
          locate the favourite I/O devices to get in touch with the
          human and also to determine if the human should be inter-
          rupted by process warnings, errors, or by none of them (see
          below). Besides, it stands as a place-holder for authentica-
          tion for the user.

          Each human using Plan B has a user name. The name corre-
          sponds to a box under /b/usr.  The special name /b/usr/me
          maps to the box corresponding for the human responsible of
          the /b/proc/me process.

          Each box named under /b/usr has a set of inner boxes used to
          represent human-related information.

          name    contains the unreal name for the human (i.e. the
                  name used by other humans to call it out).
          state   contains a string representing the state of the
                  human. Such human can copy new strings to alter the
                  state as known by the system. Conventional states
                  are gone for a user disconnected or logged out; here
                  for a user connected and logged in, who is willing
                  to accept interruptions from the system; and busy
                  for a user connected and logged in, who wouldn't
                  like to be disturbed. Other states represent loca-
                  tions for the humanconventionally, they match net-
                  work names used in system constraints. Thus, any
                  user who is neither gone nor busy should be assummed
                  to be here.
          secret  is used to copy a secret known by the human for
                  authentication. Only copies from the local node are

     USR(4)                                                     USR(4)

                  allowed and only by an authenticated humana human
                  is assumed to be authenticated before the first copy
                  into secret.
          crypt   is used together with clear to cypher/decypher text
                  using the copied into it and later copied from clear
                  to decrypt cyphertext.
          clear   is used for authentication together with crypt, as
                  said above.
          The following boxes represent human preferences for input,
          output, and processing. When a shell is started, it links
          its I/O boxes to the correspondant human I/O boxes. After-
          wards, all processes started by that shell will have their
          I/O boxes linked to the shell I/O boxes. This is convenient
          since old processes already running when a human connects to
          the system should not update their I/O boxes to reach the
          human (otherwise they would overhelm the user)the user can
          later update I/O boxes for desired processes by linking
          their I/O boxes to appropriate places. Nevertheless, old
          processes are expected to use some of the boxes mentioned
          below to notify the human.
          itext
            is the preferred input text box. Usually it is a link to a
            text input device.
          otext
            is the preferred output text box. Usually it is a link to
            a text output device.
          etext
            is the preferred user box for event messages; also a link
            to a text output device. This box is not to be confussed
            with UNIX standard error, which would rather be otext in
            Plan B.  Etext is the box where to copy messages to notify
            the human of errors and other events of interest.
          mouse
            is the box used to get pointer input. It is usually a link
            to a pointer device on the terminal used by the human; but
            it can be also redirected to permit the human to use other
            devices.
          draw
            is the box used to send graphic output. More preciselly,
            it allows the creation of (inner) boxes corresponding to
            graphics windows.
          There can be other boxes created under /b/usr/*/ to repre-
          sent all sort of I/O devices from the system to the human
          and vice-versa. As of today, there is no such box, but it is
          expected that other boxes (e.g. view, edit, etc.)  would
          appear as the port of applications to Plan B (e.g.  upas)
          require applications to get in touch with the human (e.g. to
          let him view a message or to edit it).

     Announces
          /b/usr as /usr.

     USR(4)                                                     USR(4)

     Source
          /src/b/port/ownbox.c

     Bugs
          The crypt and clear boxes have race conditions, since there
          is no box descriptor concept in Plan B. They will be
          replaced after revisiting authentication, which can be con-
          sidered to be another bug in the system.

          Only itext and otext are being used; the implementation for
          other user I/O boxes mentioned here is incomplete.