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.