.th PROCTAB FILES .sh NAME \&.../files/proctab7 \- \*(II runtime configuration information .sh DESCRIPTION The process table describes the runtime configuration of the \*(II system. Each line of the process table has a special meaning depending on the first character of the line. Blank lines and lines beginning with an asterisk are comments. All other lines have a sequence of fields separated by commas. Pipe descriptor fields are lower case letters or digits; if they are digits they are replaced by file descriptors from the \*(EE flag or the @ flag. .s3 .bd D defines a macro. The first field is a single character macro name. The second field is the string to use as the value. Macros are expanded using ``$\fIx\fP'' where .it x is the macro name. The macro ``P'' is predefined to be the pathname of the \*(II subtree. .s3 .bd P introduces a process description. All lines up to an end of file or another P line describe a single process. The first field is the process number. The next field is the pathname of the binary to execute for this process. The third field is the name of the process to use for printing messages. The fourth field must be a single character lower case letter representing the input pipe that is normally read when nothing special is happening, or a vertical bar followed by a single digit, meaning to read from that file descriptor. The next field is a set of flags in octal regarding processing of this process; these are described below. The final field is a single letter telling what trace flag this process uses. .s3 .bd L defines what modules are defined locally by this process. The first field is the module number used internally. The second field is a set of flags describing processing of this module: the only bit defined is the 0001 bit which allows this module to be executed directly by the user. The third field is the function number in the process which defines this module. The final field is the module number to be executed after this module completes; zero is nothing (return). .s3 .bd R defines modules that are known to this process but which must be passed to another process for execution. The first field is the process number the modules will be found in. The second field is the pipe to write to get to that process. The third field is the pipe to read to get a response from that process. The fourth field is a set of flags: 0001 means to write the output pipe if you get a broadcast message, 0002 means that the process is physically adjacent on the read pipe, and 0004 means that the process is adjacent on the write pipe. The fifth and subsequent fields are the module numbers that are defined by this process. .s3 The status bits for the .bd P line are as follows: .nf .s3 000010 close diagnostic output 000004 close standard input 000002 run in user's directory, not database 000001 run as the user, not as \*(II .s3 .fi .s3 The lowest numbered process becomes the parent of all the other processes. .s1 .bd WARNING: Giving a user permission to specify his or her own process table will allow them to bypass all protection provided by \*(II. This facility should be provided for system debugging only! .sh "EXAMPLE" The following example will execute a three process system. .s3 .nf .in +4 DB:$P/bin DS:$P/source **** Process 0 -- terminal monitor P0:$B/monitor:MONITOR:h:0003:M L0:0:0:0 R1:0:a:h:0007:1 * Process 1 -- parser P1:$B/parser:PARSER:a:0014:P L3:1:0:0 R0:0:h:a:0006:0 R2:0:b:g:0007:5:6:7 * Process 2 -- data base utilities P2:$B/alldbu:DBU:b:0014:Z L5:0:6:0 L6:0:0:0 L7:0:1:0 R0:0:g:b:0000 R1:0:g:b:0006 .fi .in -4