Plan B User's Manual


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 interrupted by process warnings, errors, or by none of them (see below). Besides, it stands as a place-holder for authentication for the user.

Each human using Plan B has a user name. The name corresponds 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 locations for the human—conventionally, they match network 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 allowed and only by an authenticated human—a 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. Afterwards, 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 represent 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.

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 considered 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.



Plan B User's Manual. First edition.