COMPILATION LISTING OF SEGMENT up_sysctl_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1006.3 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 up_sysctl_: 14 procedure (bv_msg_ptr); 15 16 /* Update System Control = Event-call driven proc which executes as part of the 17* answering service in the system control process. It is invoked by an event 18* signal indicating that installation of a system table is requested. It locates the 19* appropriate table in a special directory whose name is "update" and which is appended 20* to the current system directory (i.e., sysdir || ">update"), and after proper validation 21* installs the table in its appropriate place. 22* 23* Initially coded by Michael J. Spier, February 13, 1970 24* Revised 10/70 THVV 25* Modified 6/72 to give project administrators access to their PDT. J. Phillipps 26* Modified 741029 by PG to handle authorization-only updates, etc. 27* Modified 760804 by THVV for sending mail 28* Modified 03/16/78 by C. D. Tavares to add up_rtdt_ 29* Modified May 1978 by T. Casey to lengthen answer from up_xxx_ and print it if nonblank, even for successful installs. 30* Modified 25 Sept 1979 by T. Casey to make max installs settable and to log all wakeups. 31* Modified March 1980 by T. Casey to add metering. 32* Modified June 1981 by T. Casey for MR9.0 to do only one install per wakeup. 33* Modified July 1981 by E. N. Kittlitz for better proj_admin_seg error handling. 34* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 35* Modified December 1981, E. N. Kittlitz. eliminate proj_admin_seg by publishing IPC channel in whotab. 36* Modified December 1981 B. I. Margulies to eliminate ttt installations. 37* Modified February 1982, E. N. Kittlitz. part of the xxx.install.acs changes. 38* Modified April 1982, E. N. Kittlitz. set ring brackets on the segment. 39* Modified May 1982, E. N. Kittlitz. New AS initialization. 40* Modified: 41* 10/05/84 by R. Michael Tague: Changed $check_acs to use as_data_$acsdir 42* as the containing directory for the ACS segments and to return a bit (36) 43* mode value instead of fixed bin (5). 44* Modified 1984-10-09 BIM to fix above to return standard bit(36) modes. 45* Modified 1985-04-19 E. Swenson to fix any_other handler. 46**/ 47 48 /****^ HISTORY COMMENTS: 49* 1) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 50* audit(86-06-10,Martinson), install(86-07-11,MR12.0-1092): 51* Correct error message documentation. 52* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 53* audit(87-07-16,Hartogs), install(87-08-04,MR12.1-1055): 54* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 55* END HISTORY COMMENTS */ 56 57 /* NOTE NOTE NOTE: this program depends on star_ returning things 58* in the order they were appended to the directory. This should 59* be changed. The wakeup from the user should contain the UID of 60* the segment, and there should be some protection for lost wakeups. 61* --enk 62**/ 63 64 /* parameters */ 65 66 declare bv_msg_ptr ptr parameter; 67 68 /* entries */ 69 70 dcl (as_meter_$enter, as_meter_$exit) entry (fixed bin); 71 dcl asu_$find_process entry (bit (36) aligned, fixed bin, ptr); 72 dcl sys_log_$error_log entry options (variable); 73 dcl condition_ entry (char (*), entry); 74 dcl reversion_ entry (char (*)); 75 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 76 dcl freen_ entry (ptr); /* subr. to release storage allocated by star */ 77 dcl get_group_id_ entry () returns (char (32)); /* returns my access name */ 78 dcl get_process_id_ entry () returns (bit (36)); /* returns my processid */ 79 dcl as_dump_ entry (char (*) aligned); 80 dcl get_system_free_area_ entry (ptr); 81 dcl sys_log_ entry options (variable); 82 dcl ioa_ entry options (variable); 83 dcl ioa_$rsnnl entry options (variable); 84 dcl ios_$order entry (char (*) aligned, char (*) aligned, ptr, bit (72) aligned); 85 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 86 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 87 dcl ipc_$drain_chn entry (fixed bin (71), fixed bin (35)); 88 dcl ipc_$mask_ev_calls entry (fixed bin (35)); /* keeps stuff from happening */ 89 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); /* lets it happen again */ 90 dcl (up_pdt_, up_sat_, up_mgt_, up_cdt_, up_rtdt_) entry (ptr, fixed bin, 91 char (*), char (*), ptr, ptr, ptr, char (*), fixed bin (35)); 92 93 dcl hcs_$replace_acl entry (char (*), char (*), ptr, fixed bin, bit (1) aligned, fixed bin (35)); 94 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 95 dcl hcs_$get_access_class entry (char (*), char (*), bit (72), fixed bin (35)); 96 dcl hcs_$get_author entry (char (*), char (*), fixed bin, char (*) aligned, fixed bin (35)); 97 dcl hcs_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, bit (36) aligned, 98 fixed bin (35)); 99 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), 100 fixed bin (2), ptr, fixed bin (35)); 101 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 102 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), 103 fixed bin (24), fixed bin (35)); 104 dcl hcs_$wakeup entry (bit (*) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 105 dcl hphcs_$set_ring_brackets entry (char (*), char (*), (3) fixed bin (3), fixed bin (35)); 106 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 107 dcl send_mail_$access_class entry (char (*), char (*), ptr, bit (72), fixed bin (35)); 108 109 dcl (addr, clock, divide, fixed, length, null, rtrim, substr, unspec) builtin; 110 111 /* DECLARATION OF EXTERNAL STATIC VARIABLES */ 112 113 dcl error_table_$messages_deferred fixed bin (35) ext; 114 dcl error_table_$messages_off fixed bin (35) ext; 115 116 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 117 118 dcl areap ptr init (null); 119 dcl maildir char (168) int static; /* name of update dir */ 120 dcl 1 acla (1) int static aligned, /* Handy canned ACL: 1st element is for sysctl */ 121 2 userid char (32), /* (my name) */ 122 2 mode bit (36), 123 2 rpad bit (36) init ("0"b), 124 2 rcode fixed bin (35); 125 126 dcl ring_brackets (3) fixed bin (3) int static init (7, 7, 7) options (constant); 127 128 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 129 130 dcl idir char (168); /* Not used. */ 131 dcl iname char (32); /* Name of table installed. */ 132 dcl update_program variable entry (ptr, fixed bin, char (*), char (*), 133 ptr, ptr, ptr, char (*), fixed bin (35)); 134 dcl (i, j, k, n_branches, wordcount) fixed bin; 135 dcl code fixed bin (35); 136 dcl bitcount fixed bin (24), type fixed bin (2); 137 dcl short char (8) aligned, long char (100) aligned; 138 dcl message char (200); 139 dcl failed bit (1) init ("1"b); 140 dcl hisid char (32) aligned; /* author of table */ 141 dcl (iptr, bptr, nptr) ptr; /* ptrs */ 142 dcl segp ptr; /* ptr to segment. */ 143 dcl mailseg char (32); /* always "**" */ 144 dcl status bit (72) aligned; /* IOS status */ 145 dcl his_auth bit (72); /* Sender access class */ 146 dcl name char (4) aligned; /* kind of table (PDT, etc) */ 147 dcl answer char (160) init (""); /* result from installer */ 148 dcl n_installs fixed bin; 149 dcl deferred bit (1) aligned; 150 dcl wakeup_msg char (8); /* copy of message in wakeup data */ 151 dcl (n_deferred, n_pending) fixed bin; /* counters for defered and pending installs */ 152 153 /* based */ 154 155 declare 1 event based (bv_msg_ptr) aligned, 156 2 event_channel fixed bin (71), 157 2 event_message fixed bin (71), 158 2 sending_process_id bit (36), 159 2 device_signal bit (18) unaligned, 160 2 sending_ring bit (18) unaligned, 161 2 data_ptr ptr; 162 163 declare event_string char (8) based (addr (event.event_message)); 164 dcl 1 branch (20) based (bptr) aligned, /* structure returned by star */ 165 166 (2 type bit (2), /* segment type */ 167 2 nname bit (16), /* number of names */ 168 2 nindex bit (18)) unaligned; /* index of first */ 169 170 dcl names (30) char (32) aligned based (nptr); /* names returned by star */ 171 172 dcl 1 tbl aligned based (segp), /* dummy declaration of table */ 1 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 1 2 1 3 /* the "author" items must always be the first ones in the table. The 1 4* module which moves the converted table to the System Control process 1 5* fills in these data items and assumes them to be at the head of the segment 1 6* regardless of the specific table's actual declaration. The variables 1 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 1 8* respectively. For tables installed in multiple processes, these 1 9* are to be used to lock out multiple installations. */ 1 10 1 11 /* Lock should be used as a modification lock. Since, in general, 1 12* entries may not be moved in system tables, even by installations, 1 13* it is sufficient for only installers and programs that change threads 1 14* to set or respect the lock. Simply updating data in an entry 1 15* requires no such protection. 1 16* 1 17* Last_install_time is used by readers of system tables to detect 1 18* installations or other serious modifications. By checking it before 1 19* and after copying a block of data, they can be protected against 1 20* modifications. 1 21* 1 22* Modules that set the lock should save proc_group_id, and then 1 23* put their group id there for the time they hold the lock. 1 24* if they do not actually install the, they should restore the group id. 1 25**/ 1 26 1 27 2 author aligned, /* validation data about table's author */ 1 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 1 29 3 lock bit (36), /* installation lock */ 1 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 1 31 3 update_authorization bit (1) unal, /* update only authorizations */ 1 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 1 33 3 pad bit (33) unaligned, 1 34 3 last_install_time fixed bin (71), 1 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 1 36 3 w_dir char (64), /* author's working directory */ 1 37 1 38 /* END INCLUDE FILE author.incl.pl1 */ 173 174 2 dummy; 175 176 if ^sc_stat_$Multics then return; /* not initialized */ 177 ansp = as_data_$ansp; 178 anstbl.current_time = clock (); 179 180 call as_meter_$enter (INSTALL_METER); 181 call ipc_$mask_ev_calls (code); /* no recursive updating */ 182 183 /* See what kind of wakeup we got */ 184 185 if event.event_message = 0 then /* the install command presently sends a zero message */ 186 wakeup_msg = "install"; /* pretend it can speak English */ 187 else wakeup_msg = event_string; /* copy real message using char overlay */ 188 189 /* We can't do an install when the anstbl is locked - we might be replacing a table out from under dialup_ */ 190 191 if anstbl.lock_count > 0 then do; /* are we busy? */ 192 anstbl.update_pending = "1"b; /* someone is logging in. we'll get back to this */ 193 call sys_log_ (sv, "up_sysctl_: ^a wakeup with anstbl locked", wakeup_msg); 194 go to unmask_return; /* but give up for now */ 195 end; 196 else anstbl.update_pending = "0"b; /* clear pending flag. */ 197 198 /* Initialize a few variables. */ 199 200 unspec (send_mail_info) = "0"b; 201 send_mail_info.version = 1; 202 send_mail_info.wakeup = "1"b; 203 send_mail_info.always_add = "1"b; 204 send_mail_info.sent_from = "install"; 205 mailseg = "**"; /* set up name of update dir & look for anything */ 206 call get_system_free_area_ (areap); 207 bptr, nptr = null; 208 209 /* Before listing the update directory, we'll drain the event channel. 210* That way, we won't lose wakeups that arrive after we have started processing. */ 211 212 call ipc_$drain_chn (anstbl.update_channel, code); 213 if code ^= 0 then do; 214 call convert_ipc_code_ (code); /* it better not say "there were none" */ 215 call sys_log_$error_log (1, code, "up_sysctl_", "draining update channel."); 216 end; /* what else can we do but go on? */ 217 218 /* List the update directory. All segments in it are tables to be installed. */ 219 220 call hcs_$star_ (maildir, mailseg, 10b, areap, n_branches, bptr, nptr, code); 221 if code ^= 0 then n_branches = 0; /* if directory empty, false alarm */ 222 if n_branches = 0 | sv > 0 then do; /* if it is empty, or we're in debug mode, log the wakeup */ 223 if n_branches = 0 then /* log potential harrassment */ 224 call asu_$find_process (event.sending_process_id, (0), utep); 225 else utep = null; 226 if utep = null then 227 call sys_log_ (sv, "up_sysctl_: ^a wakeup with ^d installs pending", wakeup_msg, n_branches); 228 else call sys_log_ (sv, "up_sysctl_: ^a wakeup from ^a.^a with ^d installs pending", wakeup_msg, ute.person, ute.project, n_branches); 229 end; 230 231 if n_branches = 0 then goto update_return; /* quit if nothing to do */ 232 233 n_deferred, n_pending = 0; /* clear counters */ 234 n_installs = 0; /* we'll count installs against our limit per wakeup */ 235 236 /* Since we're not going to try to do all the installs at once, we want to take them in the order 237* in which they were requested - oldest first. hcs_$star returns them in that order. */ 238 239 do i = 1 to n_branches; /* go thru entries in update directory */ 240 j = fixed (branch (i).nindex, 17); /* where's a name? */ 241 mailseg = names (j); /* what's in a name? */ 242 call condition_ ("any_other", ucs); /* Set up a handler in case of a fault. */ 243 244 call hphcs_$set_ring_brackets (maildir, mailseg, ring_brackets, code); /* try to get it. ignore failure */ 245 call hcs_$replace_acl (maildir, mailseg, addr (acla), 1, "0"b, code); 246 if code ^= 0 then go to try_next; /* make sure nobody has access to segment */ 247 248 failed = "1"b; 249 deferred = ""b; 250 idir, iname, answer = " "; /* clear args to update proc */ 251 252 /* Initiate the table to be installed. */ 253 254 call hcs_$initiate_count (maildir, mailseg, "", bitcount, 0, segp, code); 255 256 if segp ^= null then do; /* segment must be there... */ 257 wordcount = divide (bitcount + 35, 36, 17, 0); 258 name = tbl.author.table; /* obtain kind of segment */ 259 260 /* Check author's ID and acces class. */ 261 262 call hcs_$get_access_class (maildir, mailseg, his_auth, code); 263 if code ^= 0 then go to flop; 264 call hcs_$get_author (maildir, mailseg, 1, hisid, code); 265 if code ^= 0 then go to flop; /* obtain true author of seg. */ 266 if tbl.author.proc_group_id ^= hisid then do; 267 answer = "userid should be " || tbl.author.proc_group_id; 268 go to signal; 269 end; 270 271 /* See what kind of table it is. */ 272 273 if name = "SAT " then update_program = up_sat_; 274 else if name = "PDT " then update_program = up_pdt_; 275 else if name = "MGT " then update_program = up_mgt_; 276 else if name = "CDT " then update_program = up_cdt_; 277 else if name = "RTDT" then update_program = up_rtdt_; 278 else do; /* Unknown table type. */ 279 answer = "Invalid table type " || name; 280 go to signal; 281 end; 282 283 /* Check for installs (all or PDT) suspended */ 284 285 if max_installs = 0 | (name = "PDT" & NO_PDT_sw) then do; /* if this one must be deferred */ 286 if tbl.author.deferral_notified then do; /* if we already notified then do; the installer */ 287 n_deferred = n_deferred + 1; /* count defered installs for later message to operator */ 288 goto try_next; /* go see if there is anything else to do */ 289 end; 290 291 deferred = "1"b; /* tell following code we deferred this one */ 292 goto signal; /* go build message saying what happened */ 293 end; 294 295 /* We're going to try to install this one. Trying takes as much time, whether it succeeds or fails, 296* so we'll count the attempt against our limit of installs per wakeup */ 297 298 n_installs = n_installs + 1; 299 300 /* Here's where we actually do the install. */ 301 302 call update_program (segp, wordcount, idir, iname, iptr, ansp, ip, answer, code); 303 304 /* Now, see how it turned out */ 305 306 flop: if code = 0 then failed = "0"b; 307 else do; /* Otherwise, fuss. */ 308 if answer = "" then do; /* See if can be explained. */ 309 call convert_status_code_ (code, short, long); 310 answer = long; 311 end; 312 end; 313 signal: call reversion_ ("any_other"); 314 315 /* Build a message saying what we did. */ 316 317 if iname = "" then iname = name; /* Make name of segment */ 318 319 if deferred then do; /* if we deferred it, say that */ 320 call ioa_$rsnnl ("Installation of ^a for ^a deferred;", message, j, iname, hisid); 321 tbl.author.deferral_notified = "1"b; /* remember that we notified the installer */ 322 n_deferred = n_deferred + 1; /* count deferred installs for later message to operator */ 323 end; 324 325 else if failed then /* or if there was an error, say that */ 326 call ioa_$rsnnl ("Unable to install ^a for ^a. ^a", message, j, 327 iname, hisid, answer); 328 329 else /* or if we succeeded, say that */ 330 call ioa_$rsnnl ("Installed ^a for ^a^[^;^x^a^].", message, j, iname, hisid, 331 (answer = ""), answer); /* a successful install can sometimes produce a warning message */ 332 333 /* Tell the operator what we did. */ 334 335 n_pending = n_branches - i + n_deferred;/* # not looked at + # deferred */ 336 call sys_log_ (1, "up_sysctl_: ^a^[^x(^d pending)^]", message, (n_pending > 0), n_pending); 337 338 /* Tell the installer what we did. */ 339 340 k = length (rtrim (hisid)) - 2; /* length of "Person.Project" without the ".a" */ 341 call send_mail_to_installer; 342 if code ^= 0 343 & code ^= error_table_$messages_off 344 & code ^= error_table_$messages_deferred 345 then call sys_log_$error_log (0, code, "up_sysctl_", 346 "unable to notify ^a of installation of ^a", hisid, iname); 347 348 /* If we deferred his install, send him an additional explanatory message. 349* (It's pointless to repeatedly print the explanation as part of the operator message.) 350* If we got a serious error sending the first message, we won't bother sending the second one. */ 351 352 else /* if we did not get a serious error sending the first message */ 353 if deferred then do; /* and it was deferred, send the second message */ 354 call ioa_$rsnnl ("^[all^;PDT^] installs are suspended - please do not re-issue install command.", 355 message, j, (max_installs = 0)); 356 call send_mail_to_installer; 357 end; 358 359 /* Delete the table from the update directory */ 360 361 if ^deferred then /* unless we deferred this installation */ 362 call hcs_$delentry_seg (segp, code); /* delete the segment */ 363 end; /* end segment successfully initiated */ 364 try_next: 365 if n_installs >= max_installs then /* if we have installed our limit */ 366 if max_installs > 0 then /* (and the limit isn't zero) */ 367 goto more_later; /* get out of the loop for now */ 368 369 end; /* end loop thru entries in update directory */ 370 371 more_later: if i < n_branches then /* if we had not gotten to the last entry */ 372 call send_upsysctl_wakeup; /* send ourselves a wakeup, to do the rest later */ 373 else /* if we aren't coming back for a while */ 374 if n_deferred > 0 then /* if there are deferred installs, nag a little */ 375 call sys_log_ (1, "up_sysctl_: ^[all^;PDT^] installs are suspended; ^d pending", 376 (max_installs = 0), n_deferred); 377 378 update_return: 379 if bptr ^= null then call freen_ (bptr); /* clean up free storage */ 380 if nptr ^= null then call freen_ (nptr); /* ... */ 381 unmask_return: 382 code = 0; /* get unmasked */ 383 do i = 1 to 100 while (code = 0); /* .. so more logins can go */ 384 call ipc_$unmask_ev_calls (code); /* .. */ 385 if i > 1 then 386 if code = 0 then call ioa_ ("up_sysctl_: error - event calls were masked"); 387 end; 388 call as_meter_$exit (INSTALL_METER); 389 return; /* all done. */ 390 391 /* We transfer to this label if an unclaimed signal occurs */ 392 393 cleanup: 394 if segp ^= null then do; /* do we have a user segment? */ 395 if answer = "" then answer = "fault"; 396 go to signal; /* tell him we couldn't */ 397 end; 398 else go to update_return; /* no segment, just give up */ 399 400 send_mail_to_installer: proc; 401 402 call send_mail_$access_class (substr (hisid, 1, k), substr (message, 1, j), addr (send_mail_info), 403 his_auth, code); 404 return; 405 end send_mail_to_installer; 406 send_upsysctl_wakeup: proc; /* to send ourselves a wakeup to keep installs going */ 407 408 dcl upsysctl_msg fixed bin (71) aligned; /* argument to hcs_$send_wakeup */ 409 dcl upsysctl_string char (8) based (addr (upsysctl_msg)); /* overlay to store chars in it */ 410 411 upsysctl_string = "upsysctl"; 412 call hcs_$wakeup (anstbl.as_procid, anstbl.update_channel, upsysctl_msg, code); 413 if code ^= 0 then 414 call sys_log_$error_log (1, code, "up_sysctl", "Sending upsysctl wakeup"); 415 416 return; 417 418 end send_upsysctl_wakeup; 419 420 set_max_installs: entry; /* FOR EMERGENCY USE ONLY */ 421 422 dcl cu_$arg_count entry returns (fixed bin); 423 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 424 dcl argp ptr, argl fixed bin, arg char (argl) based (argp); 425 dcl (argno, nargs) fixed bin; 426 dcl cv_dec_check_ entry (char (*) aligned, fixed bin (35)) returns (fixed bin (35)); 427 dcl max_installs fixed bin int static init (1); /* default is 1 install per wakeup; zero shuts off all installs */ 428 dcl NO_PDT_sw bit (1) aligned int static init (""b); /* "1"b shuts off just PDT installs */ 429 dcl sv fixed bin int static init (0); /* severity of log messages */ 430 431 nargs = cu_$arg_count (); 432 if nargs = 0 then 433 call sys_log_ (-1, "USAGE: set_max_installs 0|1|-pdt_off|-pdt_on| -loud|-quiet"); 434 else do argno = 1 to nargs; /* go thru all arguments */ 435 call cu_$arg_ptr (argno, argp, argl, code); /* look at next argument */ 436 if arg = "-pdt_off" then /* in desperate situations */ 437 NO_PDT_sw = "1"b; /* administrator can shut off PDT installs */ 438 else if arg = "-pdt_on" then do; /* hopefully he remembers to turn them back on */ 439 if NO_PDT_sw then /* if we're actually turning them back on */ 440 call send_upsysctl_wakeup; /* send ourselves a wakeup to get them started */ 441 NO_PDT_sw = ""b; 442 end; 443 else if arg = "-loud" then sv = 1; /* for debugging */ 444 else if arg = "-quiet" then sv = 0; /* back to normal */ 445 else do; /* must be a number */ 446 i = cv_dec_check_ ((arg), code); 447 if (code ^= 0) | (i < 0) | (i > 1) then 448 call sys_log_ (-1, "set_max_installs: ^a is not 0 or 1", arg); 449 else do; 450 if max_installs = 0 & i = 1 then /* if we're actually turning installs back on */ 451 call send_upsysctl_wakeup; /* send ourselves a wakeup to get them started */ 452 max_installs = i; 453 end; /* end it is 0 or 1 */ 454 end; /* end must be a number */ 455 end; /* end loop thru arguments */ 456 return; 457 458 /* Procedure which is called by "signal_" if any unclaimed fault comes up. */ 459 460 ucs: proc (mc_ptr, condition, crawlout, infoptr, contin); 461 462 dcl mc_ptr ptr parameter; 463 dcl condition char (*) parameter; 464 dcl crawlout ptr parameter; 465 dcl infoptr ptr parameter; 466 dcl contin bit (1) parameter; 467 468 dcl mbuf char (120) aligned, mlth fixed bin; 469 dcl non_local_exit bit (1); 470 dcl as_check_condition_ entry (char (*), bit (1), bit (1)); 471 472 call as_check_condition_ (condition, contin, non_local_exit); 473 if contin | non_local_exit then 474 return; 475 476 if iname ^= " " then do; /* we know what we were doing at fault time */ 477 call ioa_$rsnnl ("up_sysctl_: ^a installing ^a for ^a", mbuf, mlth, 478 condition, iname, tbl.author.proc_group_id); 479 end; 480 else call ioa_$rsnnl ("up_sysctl_: Error ^a", mbuf, mlth, condition); 481 482 call sys_log_ (2, "^a", mbuf); 483 call as_dump_ (mbuf); 484 call ios_$order ("user_i/o", "start", null, status); 485 answer = condition; 486 go to cleanup; /* Fall down, gracefully. */ 487 488 end ucs; 489 490 /* Access checking entry, used by up_xxx_ programs. 491* Determines effective access of installer to >instaldir>xxx.install.acs. 492* If the segment does not exist, it is created. 493**/ 494 495 check_acs: entry (a_acs_name, a_group_id, a_ring, a_mode, a_code); 496 497 dcl a_acs_name char (*); 498 dcl a_group_id char (*); 499 dcl a_ring fixed bin; 500 dcl a_mode bit (36) aligned; 501 dcl a_code fixed bin (35); 502 /* AIM? what's that? */ 503 call hcs_$get_user_access_modes (as_data_$acsdir, a_acs_name, a_group_id, a_ring, a_mode, ""b, a_code); 504 if a_code = error_table_$noentry then begin; 505 dcl rings (3) fixed bin (3) init (5, 5, 5); 506 /* note: we presume process is system_low */ 507 /* (not that it's likely to matter) */ 508 call sys_log_ (1, "up_sysctl_$check_acs: ^a not found. It will be created.", pathname_ (as_data_$acsdir, a_acs_name)); 509 call hcs_$append_branchx (as_data_$acsdir, a_acs_name, RW_ACCESS_BIN, rings, "*.SysAdmin.*", 0, 0, 0, code); 510 if code ^= 0 then do; 511 call sys_log_$error_log (1, code, "up_sysctl_$check_acs", "Unable to create ^a.", pathname_ (as_data_$acsdir, a_acs_name)); 512 a_mode = "0"b; 513 return; 514 end; 515 call hcs_$get_user_access_modes (as_data_$acsdir, a_acs_name, a_group_id, a_ring, a_mode, ""b, a_code); 516 end; 517 return; 518 519 520 /* Initialization entry to setup segments used to hold event channels for 521* installing new tables. 522* 523* PG 741101 524**/ 525 526 init: entry; 527 528 /* automatic */ 529 530 declare sat_ptr ptr, 531 group_id char (32), 532 process_id bit (36); 533 534 /* entries */ 535 536 declare convert_ipc_code_ entry (fixed bin (35)); 537 declare hcs_$add_dir_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 538 declare as_add_admin_acl_$dir entry (char (*), char (*), ptr, entry, bit (*), fixed bin (35)); 539 declare hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), fixed bin (1), fixed bin (24), fixed bin (35)); 540 declare sub_err_ entry () options (variable); 541 declare up_sysctl_$up_sysctl_ entry (); 542 543 /* external static */ 544 545 declare error_table_$noentry fixed bin (35) ext static; 546 declare error_table_$out_of_sequence fixed bin (35) ext static; 547 548 /* program */ 549 550 if ^sc_stat_$Multics_typed | sc_stat_$Go_typed then do; 551 code = error_table_$out_of_sequence; 552 go to init_sub_error; 553 end; 554 ansp = as_data_$ansp; 555 556 process_id = get_process_id_ (); 557 group_id = get_group_id_ (); 558 559 maildir = rtrim (anstbl.sysdir) || ">update"; 560 acla (1).userid = group_id; /* set up canned ACL */ 561 acla (1).mode = "101"b; 562 563 /* First make sure the installation "update" directory is present. */ 564 565 call hcs_$status_minf (anstbl.sysdir, "update", 1, type, bitcount, code); 566 if code = error_table_$noentry then do; /* not there, try to create */ 567 type = 2; /* we are creating a directory */ 568 569 call hcs_$append_branchx (anstbl.sysdir, "update", 01011b /* SMA */, ring_brackets, 570 group_id, 1b, 0b, 0, code); 571 if code = 0 then 572 call as_add_admin_acl_$dir (anstbl.sysdir, "update", sat_ptr, hcs_$add_dir_acl_entries, 573 "001"b /* A */, code); 574 end; 575 576 if (code ^= 0) | (type ^= 2) then do; 577 call sys_log_$error_log (2, code, "up_sysctl_$init", "Cannot find/create ^a>update", anstbl.sysdir); 578 go to init_sub_error; 579 end; 580 581 /* create and publish IPC channel for installation wakeups */ 582 583 call ipc_$create_ev_chn (anstbl.update_channel, code); 584 if code ^= 0 then go to ipc_failed; 585 586 call ipc_$decl_ev_call_chn (anstbl.update_channel, up_sysctl_$up_sysctl_, null, INSTALL_PRIO, code); 587 if code ^= 0 then go to ipc_failed; 588 whotab.installation_request_pid = process_id; 589 whotab.installation_request_channel = anstbl.update_channel; 590 591 return; 592 593 ipc_failed: 594 call convert_ipc_code_ (code); /* convert non-standard ipc code to std code */ 595 call sys_log_$error_log (2, code, "up_sysctl_$init", "Cannot make IPC channel."); 596 init_sub_error: 597 call sub_err_ (code, "up_sysctl_$init", "s"); 598 599 600 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 600 601 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* The answer table has one entry per "login instance" whether completed or */ 3 6 /* not. It is connected to the Channel Definition Table by the pointer */ 3 7 /* "channel". The header is used mostly by dialup_. */ 3 8 /* */ 3 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 3 10 /* */ 3 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 12 3 13 /****^ HISTORY COMMENTS: 3 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 3 15* Replace anstbl.incl.pl1. 3 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 3 17* Add anstbl.session_uid_counter. 3 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 3 19* Add anstbl.message_update_time and named constants for values of 3 20* anstbl.session, and to make all padding explicit. 3 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 3 22* Change "entry" to a placeholder so as not to require 3 23* user_table_entry.incl.pl1. 3 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 3 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 3 26* Added the flag login_server_present which indicates whether a login 3 27* server request has been received. This is used to determine whether 3 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 3 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 3 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 3 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 32* A) Moved constants for ute.pw_flags.mask_ctl into 3 33* user_table_entry.incl.pl1. 3 34* B) Added common table header to all user tables. 3 35* END HISTORY COMMENTS */ 3 36 3 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 38 /* */ 3 39 /* The anstbl structure below is divided into sections. Each section begins */ 3 40 /* with a comment describing the elements in the section. Elements are */ 3 41 /* placed within a section, based upon their function or the programs that */ 3 42 /* use them. Each section begins on a double word and is an even number of */ 3 43 /* words long. */ 3 44 /* */ 3 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 46 3 47 3 48 3 49 /* format: style4 */ 3 50 3 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 3 52 3 53 dcl ansp ptr automatic init (null); 3 54 3 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 3 56 2 header like ut_header, /* Header common to all user tables. */ 3 57 3 58 /* Counter elements. */ 3 59 2 nlin fixed bin, /* number of active lines */ 3 60 2 mxlin fixed bin, /* maximum number of active lines */ 3 61 2 n_users fixed bin, /* number of logged-in users */ 3 62 2 max_users fixed bin, /* maximum number of users allowed */ 3 63 2 n_units fixed bin, /* number of logged in units */ 3 64 2 max_units fixed bin, /* maximum number of units */ 3 65 2 n_sessions fixed bin, /* number of Multics sessions */ 3 66 2 n_pad fixed bin, 3 67 3 68 /* Name elements. */ 3 69 2 sysdir char (64) unal, /* name of main system control directory */ 3 70 2 as_tty char (8) unal, /* name of main answering service device. */ 3 71 3 72 /* Login elements. */ 3 73 2 login_word char (8) unal, /* login word if special_session=1 */ 3 74 2 session char (8) unal, /* session indicator */ 3 75 2 special_message char (128) unal, /* message to be printed for special session */ 3 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 3 77 2 message_lng fixed bin, /* length of special message */ 3 78 2 login_pad fixed bin, 3 79 3 80 /* Table update elements. */ 3 81 2 lock_count fixed bin, /* global lock for all system control tables */ 3 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 3 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 3 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 3 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 3 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 3 87 2 update_pad fixed bin, 3 88 3 89 /* dialup_ data values. */ 3 90 2 current_time fixed bin (71), /* Time of last transaction */ 3 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 3 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 3 93 3 94 /* load_ctl_ elements. */ 3 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 3 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 3 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 3 98 /* load_ctl_ load leveling desired response range: */ 3 99 2 response_high fixed bin, /* bad if user response time slower than this */ 3 100 2 response_low fixed bin, /* bad if user response time faster than this */ 3 101 2 load_ctl_pad fixed bin, 3 102 3 103 /* Login server request server data. */ 3 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 3 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 3 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 3 107 3 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 3 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 3 110 3 contents (UTE_SIZE) fixed bin; 3 111 3 112 /* constants */ 3 113 3 114 /* values for anstbl.session */ 3 115 3 116 dcl (AT_NORMAL init ("normal "), 3 117 AT_SPECIAL init ("special "), 3 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 3 119 3 120 dcl UTE_SIZE fixed bin internal static initial (300); 3 121 3 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 601 602 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 4 2 4 3 /* format: style4 */ 4 4 4 5 /* This file must be kept in sync with as_data_.alm */ 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 4 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 4 10* Remove references to the 963 and 029 preaccess commands and remove support 4 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 4 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 4 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 14* Add references to as_data_ entrypoints added for Login Server. 4 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 4 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 17* Added new user signal field of inacrcvd (14) to handle inactivity response 4 18* from user. 4 19* END HISTORY COMMENTS */ 4 20 4 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 4 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 4 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 4 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 4 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 4 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 4 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 4 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 4 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 4 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 4 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 4 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 4 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 4 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 4 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 4 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 4 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 4 38 dcl as_data_$g115_dim char (32) ext static; 4 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 4 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 4 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 4 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 4 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 4 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 4 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 4 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 4 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 4 48 dcl as_data_$request_priority fixed bin ext static; 4 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 4 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 4 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 4 52 dcl as_data_$satp ptr ext static; /* SAT */ 4 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 4 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 4 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 4 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 4 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 4 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 4 59 dcl as_data_$version char (8) ext static; /* AS version */ 4 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 4 61 4 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 4 63 2 n_login_args fixed bin, 4 64 2 pad fixed bin, 4 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 4 66 4 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 4 68 2 n_signals fixed bin, 4 69 2 pad fixed bin, 4 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 4 71 4 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 4 73 2 n_system_signals fixed bin, 4 74 2 pad fixed bin, 4 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 4 76 4 77 dcl as_data_$login_words fixed bin ext static aligned, 4 78 /* interactive login words */ 4 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 4 80 2 n_words fixed bin, 4 81 2 pad fixed bin, 4 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 4 83 4 84 dcl as_data_$debug_flag bit (1) aligned external static; 4 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 4 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 4 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 4 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 4 89 4 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 602 603 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 5 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 7* Removed ansp, autp and dutp from this include file, adding them to 5 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 5 9* daemon_user_table.incl.pl1. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* This include file requires as_data_.incl.pl1 */ 5 14 5 15 /* format: style4 */ 5 16 5 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 5 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 5 19 dcl asmtp ptr defined (as_data_$asmtp); 5 20 dcl devtabp ptr defined (as_data_$devtabp); 5 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 5 22 dcl mgtp ptr defined (as_data_$mgtp); 5 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 5 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 5 25 dcl sat_htp ptr defined (as_data_$sat_htp); 5 26 dcl satp ptr defined (as_data_$satp); 5 27 dcl scdtp ptr defined (as_data_$cdtp); 5 28 dcl sysdir char (168) defined (as_data_$sysdir); 5 29 dcl whoptr ptr defined (as_data_$whoptr); 5 30 5 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 603 604 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 6 2 6 3 /* These are the names and numbers of the slots in as_meter_table 6 4* (see as_meter_table.incl.pl1). 6 5* 6 6* Written March 1980 by Tom Casey 6 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 6 8**/ 6 9 6 10 6 11 /****^ HISTORY COMMENTS: 6 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 6 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 6 14* A) Add NETUP_METER. 6 15* B) Add AS_METER_NAMES array. 6 16* END HISTORY COMMENTS */ 6 17 6 18 6 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 6 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 6 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 6 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 6 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 6 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 6 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 6 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 6 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 6 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 6 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 6 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 6 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 6 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 6 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 6 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 6 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 6 36* (the attempts might fail because of load control limits) */ 6 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 6 38 6 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 6 40 6 41 /* Bit length of recursion_possible equals highest slot number given above. */ 6 42 6 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 6 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 6 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 6 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 6 47 "FIXPDT", "TRYABSLG", "NETUP"); 6 48 6 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 604 605 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 7 2 7 3 /* This include file defines the priorities of all of the event channels used by the answering service. 7 4* 7 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 7 6* The names correspond to the functions of the event call handlers. 7 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 7 8* 7 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 7 10* See the code in those procedures for information on the handlers themselves 7 11* (which are entry variables in some cases, and thus could not be documented in this file). 7 12* 7 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 7 14* 7 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 7 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 7 17* 7 18* Written June 1981 by T. Casey for MR9.0 7 19* Modified 1984-10-15 BIM for sac -> as_request. 7 20* as_request is above login, since sac is important and 7 21* dial requests for already logged in users can take 7 22* first dibs over new logins. 7 23**/ 7 24 7 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 7 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 7 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 7 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 7 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 7 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 7 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 7 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 7 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 7 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 7 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 7 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 7 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 7 38 7 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 605 606 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 8 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 8 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 8 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 10* Reorganized by type of data to improve readability. 8 11* END HISTORY COMMENTS */ 8 12 8 13 8 14 /* ACCESS NAMES */ 8 15 dcl ( 8 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 8 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 8 18 ) char(32) ext static; 8 19 8 20 /* PATHNAMES */ 8 21 dcl ( 8 22 sc_stat_$info_dir, /* admin info segs directory */ 8 23 sc_stat_$log_dir, /* as log segs directory */ 8 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 8 25 sc_stat_$sysdir /* system control directory */ 8 26 ) char(168) ext static; 8 27 8 28 /* OTHER CHAR STRINGS */ 8 29 dcl ( 8 30 sc_stat_$master_channel /* Master TTY channel. */ 8 31 ) char(6) aligned ext static; 8 32 8 33 /* LABELS */ 8 34 dcl ( 8 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 8 36 /* ssu_$null_label unless */ 8 37 /* admin_listener is active. */ 8 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 8 39 /* attributable to a particular */ 8 40 /* command. */ 8 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 8 42 ) label variable ext static; 8 43 8 44 /* POINTERS TO */ 8 45 dcl ( 8 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 8 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 8 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 8 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 8 50 /* by sys_log_. */ 8 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 8 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 8 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 8 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 8 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 8 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 8 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 8 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 8 59 ) ptr ext static; 8 60 8 61 /* SWITCHES */ 8 62 dcl ( 8 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 8 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 8 65 sc_stat_$Multics, /* TRUE after answering service started */ 8 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 8 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 8 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 8 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 8 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 8 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 8 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 8 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 8 74 /* if PNT not yet available. */ 8 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 8 76 sc_stat_$test_mode, /* TRUE if in test environment */ 8 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 8 78 /* by operator signed on system console*/ 8 79 ) bit(1) aligned ext static; 8 80 8 81 8 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 606 607 /* BEGIN send_mail_info include file */ 9 2 9 3 dcl send_mail_info_version_2 fixed bin init(2); 9 4 9 5 dcl 1 send_mail_info aligned, 9 6 2 version fixed bin, /* = 2 */ 9 7 2 sent_from char(32) aligned, 9 8 2 switches, 9 9 3 wakeup bit(1) unal, 9 10 3 mbz1 bit(1) unal, 9 11 3 always_add bit(1) unal, 9 12 3 never_add bit(1) unal, 9 13 3 notify bit(1) unal, 9 14 3 acknowledge bit(1) unal, 9 15 3 mbz bit(30) unal; 9 16 9 17 /* END send_mail_info include file */ 607 608 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 10 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 10 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 10 8* attribute switches. 10 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 10 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 10 12* be deleted. 10 13* B) Add constants identifying attributes that can be changed by user at 10 14* login, etc. 10 15* END HISTORY COMMENTS */ 10 16 10 17 10 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 10 19 10 20 /* format: style4 */ 10 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 10 22 (2 administrator bit (1), /* 1 system administrator privileges */ 10 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 10 24 2 nobump bit (1), /* 2 user cannot be bumped */ 10 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 10 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 10 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 10 28* . of same project (distinct from "nobump") */ 10 29 2 nolist bit (1), /* 7 don't list user on "who" */ 10 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 10 31 2 multip bit (1), /* 9 user may have several processes */ 10 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 10 33 2 brief bit (1), /* 11 no login or logout message */ 10 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 10 35 2 vhomedir bit (1), /* 13 user may change homedir */ 10 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 10 37 2 sb_ok bit (1), /* 15 user may be standby */ 10 38 2 pm_ok bit (1), /* 16 user may be primary */ 10 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 10 40 2 daemon bit (1), /* 18 user may login as daemon */ 10 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 10 42 2 no_warning bit (1), /* 20 no warning message */ 10 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 10 44* . in PDT: this user has an individual load control group */ 10 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 10 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 10 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 10 48 2 pad bit (12)) unaligned; 10 49 10 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 10 51 ("none", /* 0 */ 10 52 "administrator", /* 1 */ 10 53 "primary_line", /* 2 */ 10 54 "nobump", /* 3 */ 10 55 "guaranteed_login", /* 4 */ 10 56 "anonymous", /* 5 */ 10 57 "nopreempt", /* 6 */ 10 58 "nolist", /* 7 */ 10 59 "dialok", /* 8 */ 10 60 "multip", /* 9 */ 10 61 "bumping", /* 10 */ 10 62 "brief", /* 11 */ 10 63 "vinitproc", /* 12 */ 10 64 "vhomedir", /* 13 */ 10 65 "nostartup", /* 14 */ 10 66 "no_secondary", /* 15 */ 10 67 "no_prime", /* 16 */ 10 68 "no_eo", /* 17 */ 10 69 "daemon", /* 18 */ 10 70 "", /* 19 vdim OBSOLETE */ 10 71 "no_warning", /* 20 */ 10 72 "igroup", /* 21 */ 10 73 "save_pdir", /* 22 */ 10 74 "disconnect_ok", /* 23 */ 10 75 "save_on_disconnect"); /* 24 */ 10 76 10 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 10 78 ("null", /* 0 */ 10 79 "admin", /* 1 */ 10 80 "", "", /* 2 - 3 */ 10 81 "guar", /* 4 */ 10 82 "anon", /* 5 */ 10 83 "", "", /* 6 - 7 */ 10 84 "dial", /* 8 */ 10 85 "multi_login", /* 9 */ 10 86 "preempting", /* 10 */ 10 87 "", /* 11 */ 10 88 "v_process_overseer", /* 12 */ 10 89 "v_home_dir", /* 13 */ 10 90 "no_start_up", /* 14 */ 10 91 "no_sec", /* 15 */ 10 92 "no_primary", /* 16 */ 10 93 "no_edit_only", /* 17 */ 10 94 "op_login", /* 18 */ 10 95 "", /* 19 */ 10 96 "nowarn", /* 20 */ 10 97 "", "", "", /* 21 - 23 */ 10 98 "save"); /* 24 */ 10 99 10 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 10 101 options(constant) init("000000000010000000010000000000000000"b); 10 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 10 103 10 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 10 105 options(constant) init("000000000010000000010000000000000000"b); 10 106 /* PDT value for (brief, no_warning) is default */ 10 107 10 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 10 109 options(constant) init("000100000110010000010000000000000000"b); 10 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 10 111 11 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 11 2 11 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 4 /* */ 11 5 /* This include file describes the attributes of an absentee job. It is */ 11 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 11 7 /* and PIT.incl.pl1. */ 11 8 /* */ 11 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 10 11 11 /****^ HISTORY COMMENTS: 11 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 11 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 14* Separated abs_attributes from the request structure 11 15* (abs_message_format.incl.pl1) so that the identical structure could be 11 16* used in the ute structure (user_table_entry.incl.pl1). 11 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 11 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 19* Added ABS_ATTRIBUTE_NAMES array. 11 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 11 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 11 22* Added the no_start_up flag. SCP6367 11 23* END HISTORY COMMENTS */ 11 24 11 25 dcl 1 user_abs_attributes aligned based, 11 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 11 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 11 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 11 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 11 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 11 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 11 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 11 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 11 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 11 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 11 36 2 attributes_pad bit (26) unaligned; 11 37 11 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 11 39 "restartable", 11 40 "user_deferred_until_time", 11 41 "proxy", 11 42 "set_bit_cnt", 11 43 "time_in_gmt", 11 44 "user_deferred_indefinitely", 11 45 "secondary_ok", 11 46 "truncate_absout", 11 47 "restarted", 11 48 "no_start_up"); 11 49 11 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 11 51 10 112 10 113 10 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 608 609 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 12 2 12 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 4 /* */ 12 5 /* This include file requires that the user include */ 12 6 /* user_attributes.incl.pl1 as well. It also includes */ 12 7 /* abs_attributes.incl.pl1 itself. */ 12 8 /* */ 12 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 12 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 12 11 /* */ 12 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 13 12 14 /****^ HISTORY COMMENTS: 12 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 12 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 12 17* This comment for hcom. 12 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 12 19* anstbl.incl.pl1, and dutbl.incl.pl1. 12 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 12 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 12 22* 84-07-12 BIM added min_process_authorization 12 23* 84-12-31 Keith Loepere added pdir_dir_quota 12 24* 85-01-16 by E. Swenson to add ute.session_uid 12 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 12 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 12 27* Added fields for DSA login server support. 12 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 12 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 12 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 12 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 12 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 12 33* Added disconnection_rel_minutes. 12 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 12 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 36* Changed structure under ute.abs_attributes to use like structure in 12 37* abs_attributes.incl.pl1. This allows the same attributes to be used 12 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 12 39* file. 12 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 12 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 12 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 12 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 45* A) Global reorganization to locate things by type of data. 12 46* B) Eliminate ute.uflags.logged_in. 12 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 12 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 49* A) Reduced overlength person and project fields to proper length. 12 50* B) Adjusted dialed-console section to begin on even word boundary. 12 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 12 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 53* Add ute.line_type. 12 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 12 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 12 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 12 57* for the storage. SCP6367 12 58* END HISTORY COMMENTS */ 12 59 12 60 /* format: style4 */ 12 61 12 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 63 /* */ 12 64 /* Each of the named sections below defines a type of data. Typing comes */ 12 65 /* from data associated with the ute entry itself, with the person, with */ 12 66 /* login argument data, from the main user of the data (eg, dialup_, */ 12 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 12 68 /* and is an even number of words long. The total structure is 300 decimal */ 12 69 /* words long. */ 12 70 /* */ 12 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 72 12 73 12 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 12 75 12 76 dcl utep pointer automatic init (null); 12 77 12 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 12 79 12 80 /* Variables which give state of this entry */ 12 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 12 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 12 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 12 84 2 next_free fixed bin, /* points to previous free entry */ 12 85 12 86 /* Information user gave about person_id associated with this entry. */ 12 87 2 person char (24) unal, /* user's name */ 12 88 2 project char (12) unal, /* project of absentee user */ 12 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 12 90 2 tag_pad bit (27) unal, 12 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 12 92 2 login_flags, /* flags for login data */ 12 93 3 cpw bit (1) unal, /* flag for wish to change password */ 12 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 12 95 3 special_pw unal, /* dial or slave */ 12 96 4 dial_pw bit (1) unal, /* true if dial -user */ 12 97 4 slave_pw bit (1) unal, /* true if slave -user */ 12 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 12 99 3 cda bit (1) unal, /* flag to change default authorization */ 12 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 12 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 12 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 12 103 3 pw_pad bit (25) unal, /* spare parts */ 12 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 12 105 /* Must remain last in pw_flags so it does not */ 12 106 /* appear in PW_FLAG_VALUES array below. */ 12 107 2 generated_pw char (8) unal, /* user must type this as new password */ 12 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 12 109 2 process_authorization bit (72), /* access_authorization of this process */ 12 110 12 111 /* Information user gave about process associated with this entry. */ 12 112 2 outer_module char (32) unal, /* Name of console dim */ 12 113 2 home_dir char (64) unal, /* initial home directory */ 12 114 2 init_proc char (64) unal, /* name of login responder */ 12 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 12 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 12 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 12 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 12 119 2 initial_ring fixed bin, /* ring process will be started in */ 12 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 12 121 2 ln_args fixed bin, /* length of string containing arguments */ 12 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 12 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 12 124 12 125 /* Most of the following information is relevant only to absentee processes */ 12 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 12 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 12 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 12 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 12 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 12 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 12 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 12 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 12 134* (but see uflags.adjust_abs_q_no). */ 12 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 12 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 12 137 2 abs_flags, 12 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 12 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 12 140 3 abs_flags_pad bit (34) unal, 12 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 12 142 2 sender char (32) unal, /* name of RJE station that job is from */ 12 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 12 144 2 proxy_project char (9) unal, 12 145 2 proxy_project_pad char (3) unal, 12 146 2 abs_pad fixed bin, 12 147 12 148 /* Information about process actually created */ 12 149 2 proc_id bit (36), /* process id of absentee process */ 12 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 12 151 2 process_authorization_range (2) bit (72) aligned, 12 152 2 audit bit (36), /* audit flags for user */ 12 153 2 lot_size fixed bin, /* Size of linkage offset table */ 12 154 2 kst_size fixed bin, /* Size of process known segment table */ 12 155 2 cls_size fixed bin, /* Size of process combined linkage */ 12 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 12 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 12 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 12 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 12 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 12 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 12 162 2 pdir_pad fixed bin(17) unal, 12 163 2 process_pad fixed bin, 12 164 12 165 /* Information about primary terminal associated with this entry */ 12 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 12 167 2 terminal_type char (32) unaligned, /* terminal type */ 12 168 2 line_type fixed bin, /* line type */ 12 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 12 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 12 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 12 172 12 173 /* Variables useful for dialed terminals */ 12 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 12 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 12 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 12 177 2 dial_server_flags, 12 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 12 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 12 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 12 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 12 182 12 183 /* Information about usage/accounting. Device usage meters are in a 12 184* separate segment, "devtab" */ 12 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 12 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 12 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 12 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 12 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 12 190 2 last_update_time fixed bin (71), /* time of last account update */ 12 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 12 192 2 ndevices fixed bin, /* Count of attached devices */ 12 193 2 device_head fixed bin, /* Table index of head of device chain */ 12 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 12 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 12 196 2 rs_number_pad bit(30) unal, 12 197 2 usage_pad fixed bin, 12 198 12 199 /* Information for dialup_ (control variables). */ 12 200 2 event fixed bin (71), /* event associated with channel or user manager */ 12 201 2 uprojp ptr, /* ptr to user project sat entry */ 12 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 12 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 12 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 12 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 12 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 12 207 2 count fixed bin, /* counter for logins and dialups */ 12 208 2 n_processes fixed bin, /* number of processes created in this session */ 12 209 2 lock_value fixed bin, /* number of locks set for this entry */ 12 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 12 211 2 login_code char (8) unal, /* login command from LOGIN line */ 12 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 12 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 12 214 2 logout_type char (4) unal, /* type of logout */ 12 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 12 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 12 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 12 218 2 work_class fixed bin, /* work class used by priority scheduler */ 12 219 2 group char (8) unal, /* party group identifier */ 12 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 12 221 12 222 2 uflags, /* Miscellaneous flags */ 12 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 12 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 12 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 12 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 12 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 12 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 12 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 12 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 12 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 12 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 12 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 12 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 12 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 12 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 12 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 12 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 12 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 12 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 12 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 12 242 3 uflags_pad bit (17) unal, 12 243 12 244 /* Information used by load_ctl_ for the process */ 12 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 12 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 12 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 12 248 12 249 12 250 /* Information for login server */ 12 251 2 login_server_info, 12 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 12 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 12 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 12 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 12 256 3 process_id bit (36) aligned, /* process_id of login server */ 12 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 12 258 12 259 /* values for ute.process_type */ 12 260 12 261 dcl (PT_INTERACTIVE initial (1), 12 262 PT_ABSENTEE initial (2), 12 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 12 264 12 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 12 266 "INVALID-TYPE", 12 267 "interactive", 12 268 "absentee", 12 269 "daemon"); 12 270 12 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 12 272 "UNKNOWN-TABLE", 12 273 "answer_table", 12 274 "absentee_user_table", 12 275 "daemon_user_table"); 12 276 12 277 12 278 /* values for ute.pw_flags.mask_ctl */ 12 279 12 280 dcl (DO_MASK init ("00"b), 12 281 DONT_MASK init ("01"b), 12 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 12 283 12 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 12 285 "do_mask", "dont_mask", "derive_mask", ""); 12 286 12 287 12 288 /* names for ute.pw_flags */ 12 289 12 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 12 291 "cpw", 12 292 "generate_pw", 12 293 "dial_pw", 12 294 "slave_pw", 12 295 "cdp", 12 296 "cda", 12 297 "auth_given", 12 298 "noprint", 12 299 "operator"); 12 300 12 301 /* names for ute.uflags */ 12 302 12 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 12 304 "dont_call_init_admin", 12 305 "ip_given", 12 306 "ss_given", 12 307 "lvs_attached", 12 308 "send_initial_string", 12 309 "adjust_abs_q_no", 12 310 "foreground_secondary_ok", 12 311 "foreground_job", 12 312 "sus_sent", 12 313 "suspended", 12 314 "ignore_cpulimit", 12 315 "deferral_logged", 12 316 "save_if_disconnected", 12 317 "disconnected", 12 318 "disconnected_list", 12 319 "proc_create_ok", 12 320 "activity_can_unbump", 12 321 "fpe_causes_logout", 12 322 "user_specified_immediate"); 12 323 12 324 /* names for ute.abs_flags */ 12 325 12 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 12 327 "abs_run", 12 328 "notify"); 12 329 12 330 /* names of ute.dial_server_flags */ 12 331 12 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 12 333 "registered", 12 334 "privileged"); 12 335 12 336 /* values of ute.login_result */ 12 337 12 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 12 339 "logged in", 12 340 "login failed, hangup", 12 341 "login failed, try again"); 12 342 12 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 609 610 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* This include file declares the header shared by the answer_table, */ 13 6 /* absentee_user_table and daemon_user_table include files. */ 13 7 /* */ 13 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 9 13 10 /****^ HISTORY COMMENTS: 13 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 13 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 13* Initial coding. 13 14* END HISTORY COMMENTS */ 13 15 13 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 13 17 2 header_version fixed bin, /* version of the header (3) */ 13 18 2 entry_version fixed bin, /* version of user table entries */ 13 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 13 20 2 header_length fixed bin, /* length of the header */ 13 21 2 max_size fixed bin, /* max number of entries in this table */ 13 22 2 current_size fixed bin, /* actual size of table (in entries) */ 13 23 2 number_free fixed bin, /* number of free entries in the table. */ 13 24 2 first_free fixed bin, /* index of first entry in the free list. */ 13 25 2 as_procid bit (36), /* process ID of user table manager process */ 13 26 2 ut_header_pad fixed bin; 13 27 13 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 610 611 14 1 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 14 2 14 3 /* Modified 740723 by PG to add security info */ 14 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 14 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 14 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 14 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 14 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 14 9 14 10 dcl 1 whotab based (whoptr) aligned, 14 11 2 mxusers fixed bin, /* max. number of users on system */ 14 12 2 n_users fixed bin, /* current number of users */ 14 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 14 14 2 n_units fixed bin, /* current load */ 14 15 2 timeup fixed bin (71), /* time system was started */ 14 16 2 session char (8), /* AS state, same as anstbl.session */ 14 17 2 nextsd fixed bin (71), /* time we will shutdown */ 14 18 2 until fixed bin (71), /* projected time we start up again */ 14 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 14 20 2 erfno char (8), /* if a crash, the error number */ 14 21 2 obsolete_why char (32), /* reason for last shutdown */ 14 22 2 installation_id char (32), /* name of installation */ 14 23 2 obsolete_message char (32), /* message for all users */ 14 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 14 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 14 26 2 max_abs_users fixed bin, /* max number of absentee users */ 14 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 14 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 14 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 14 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 14 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 14 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 14 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 14 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 14 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 14 36 2 pad1 bit (9) unal, 14 37 2 pad (3) fixed bin, 14 38 2 version fixed bin, /* structure version */ 14 39 2 header_size fixed bin, /* length of header in words */ 14 40 2 entry_size fixed bin, /* length of entry in words */ 14 41 /* laste_adjust is used only by Answering Service programs */ 14 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 14 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 14 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 14 45 14 46 /* whotab header extension: The header is extended from 64 words by 14 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 14 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 14 49* present. This allows existing programs to function with old definitions of 14 50* whotab. Obviously no new header field can be more than 31 contiguous words in 14 51* length. In the Answering Service, all programs using whotab must be compiled 14 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 14 53 14 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 14 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 14 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 14 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 14 58 2 abs_control, /* see absentee_user_table */ 14 59 3 mnbz bit (1) unal, /* must not be zero */ 14 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 14 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 14 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 14 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 14 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 14 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 14 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 14 67 3 control_pad bit (23) unal, 14 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 14 69 2 installation_request_pid bit (36), /* installation process identifier */ 14 70 2 sysid char (32), /* current system name */ 14 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 14 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 14 73 2 message char (124), /* message for all users */ 14 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 14 75 2 why char (124), /* reason for last shutdown */ 14 76 2 e (1000), /* offset 240o */ 14 77 3 active fixed bin, /* nonzero means logged in */ 14 78 3 person char (28) aligned, /* person name */ 14 79 3 project char (28), /* project id */ 14 80 3 anon fixed bin, /* 1 if anonymous user */ 14 81 3 padding fixed bin (71), 14 82 3 timeon fixed bin (71), /* time of login */ 14 83 3 units fixed bin, /* load units */ 14 84 3 stby fixed bin, /* 1 if stby */ 14 85 3 idcode char (4), /* tty id code */ 14 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 14 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 14 88 3 group char (8), /* party-line group */ 14 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 14 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 14 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 14 92 3 pad2 bit (33) unal, 14 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 14 94 3 process_authorization bit (72); /* access authorization of process */ 14 95 14 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 14 97 14 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 612 613 614 /* BEGIN MESSAGE DOCUMENTATION 615* 616* Message: 617* up_sysctl_: error - event calls were masked 618* 619* S: sc (error_output) 620* 621* T: $run 622* 623* M: $err 624* The system attempts to recover and keep running. 625* 626* A: $notify 627* 628* 629* Message: 630* up_sysctl_: CONDITION installing TABLE for USER 631* 632* S: as (severity1) 633* 634* T: $run 635* 636* M: Some unexpected error occurred while installing a system 637* table. An Answering Service dump was performed. Further attempts to install 638* system tables may fail until a reset or force is done, but 639* logins and logouts should be able to proceed normally. 640* 641* A: $inform_sa 642* 643* 644* Message: 645* up_sysctl_: Error: REASON 646* 647* S: as (severity2) 648* 649* T: $run 650* 651* M: Some error occurred while installing a system table. 652* An Answering Service dump was performed. Further attempts to install 653* system tables may fail until a force or reset is done, 654* but logins and logouts should be able to proceed as usual. 655* 656* A: $inform_sa 657* 658* 659* Message: 660* up_sysctl_$init: ERROR_MESSAGE. cannot find/create >system_control_1>update 661* 662* S: as (severity2) 663* 664* T: $init 665* 666* M: The directory used to update system tables is missing and cannot be created. No 667* installations of new system tables cannot be done. Logins and logouts 668* can go on as usual. 669* 670* A: $inform_sa 671* 672* 673* Message: 674* up_sysctl_$init: ERROR_MESSAGE. Cannot make IPC channel. 675* 676* S: as (severity2) 677* 678* T: $init 679* 680* M: It was not possible to establish the IPC channel which is used 681* to allow users to indicate that an Answering Service table installation 682* is to be performed. Installations will not occur. 683* 684* A: $inform_sa 685* 686* 687* Message: 688* up_sysctl_: Unable to install TABLE for USERID. userid should be USERID1 689* 690* S: as (severity1) 691* 692* T: $run 693* 694* M: A user attempted to install a system table by pretending 695* to be some other user. 696* 697* A: $inform_sa 698* 699* 700* Message: 701* up_sysctl_: Unable to install TABLE for USERID. TEXT 702* 703* S: as (severity1) 704* 705* T: $run 706* 707* M: The user USERID attempted to change the system table 708* TABLE but something was wrong. The reason is given by TEXT. 709* 710* A: $ignore 711* 712* 713* Message: 714* up_sysctl_: installed TABLE for USERID 715* 716* S: as (severity1) 717* 718* T: $run 719* 720* M: An mgt, sat, cdt, pdt, or rtdt has been installed. 721* 722* A: $ignore 723* 724* 725* Message: 726* up_sysctl_: NAME wakeup with N installs pending 727* up_sysctl_: NAME wakeup from PERSON.PROJECT with N installs pending 728* 729* S: as (severity0) 730* 731* T: $run 732* 733* M: A request to perform a table installation was received. There were 734* N tables found ready for installation at the time of the wakeup. 735* If N is 0, the PERSON.PROJECT of the originator of the request is also 736* logged. This message is normally severity0, but the administrator may 737* cause it to be severity1. 738* 739* A: $contact 740* The administrator may request that he be notified if this occurs. If a large 741* number of these messages are logged with N = 0, it may indicate that a 742* user is harassing the installation mechanism. 743* 744* 745* Message: 746* up_sysctl_$check_acs: PATHNAME not found. It will be created. 747* 748* S: as (severity1) 749* 750* T: $run 751* 752* M: The named segment, which controls a table installation operation, 753* does not exist. The segment will be created with an ACL allowing 754* *.SysDaemon.* and *.SysAdmin.* to perform the appropriate table installation. 755* 756* A: $contact 757* The system administrator should be notified, so that the ACL of the segment 758* may be adjusted to reflect those users that may install the table. 759* 760* 761* Message: 762* up_sysctl_$check_acs: MESSAGE. Unable to create PATHNAME. 763* 764* S: as (severity1) 765* 766* T: $run 767* 768* M: The named segment does not exist, and it was not possible to 769* create it. Any table installations controlled by this segment will 770* be ignored. (The table submitted for installation will be deleted.) 771* 772* A: $notify 773* Notify the system administrator. Normal servicing of table installations 774* will not proceed until this situation is rectified. 775* 776* END MESSAGE DOCUMENTATION */ 777 778 end up_sysctl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0938.7 up_sysctl_.pl1 >special_ldd>install>MR12.2-1047>up_sysctl_.pl1 173 1 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 600 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 601 3 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 602 4 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 603 5 08/06/87 0913.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 604 6 08/06/87 0913.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 605 7 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 606 8 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 607 9 04/27/78 1504.4 send_mail_info.incl.pl1 >ldd>include>send_mail_info.incl.pl1 608 10 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 10-112 11 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 609 12 07/13/88 0903.2 user_table_entry.incl.pl1 >special_ldd>install>MR12.2-1047>user_table_entry.incl.pl1 610 13 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 612 14 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. INSTALL_METER 000103 constant fixed bin(17,0) initial dcl 6-27 set ref 180* 388* INSTALL_PRIO 000076 constant fixed bin(17,0) initial dcl 7-31 set ref 586* NO_PDT_sw 000076 internal static bit(1) initial dcl 428 set ref 285 436* 439 441* RW_ACCESS_BIN 000000 constant fixed bin(5,0) initial dcl 2-36 set ref 509* a_acs_name parameter char packed unaligned dcl 497 set ref 495 503* 508* 508* 509* 511* 511* 515* a_code parameter fixed bin(35,0) dcl 501 set ref 495 503* 504 515* a_group_id parameter char packed unaligned dcl 498 set ref 495 503* 515* a_mode parameter bit(36) dcl 500 set ref 495 503* 512* 515* a_ring parameter fixed bin(17,0) dcl 499 set ref 495 503* 515* acla 000062 internal static structure array level 1 dcl 120 set ref 245 245 addr builtin function dcl 109 ref 187 245 245 402 402 411 always_add 11(02) 000457 automatic bit(1) level 3 packed packed unaligned dcl 9-5 set ref 203* ansp 000454 automatic pointer initial dcl 3-53 set ref 177* 178 191 192 196 212 302* 554* 559 565 569 571 577 583 586 589 3-53* 412 412 anstbl based structure level 1 dcl 3-55 answer 000353 automatic char(160) initial packed unaligned dcl 147 set ref 147* 250* 267* 279* 302* 308 310* 325* 329 329* 395 395* 485* areap 000100 automatic pointer initial dcl 118 set ref 118* 206* 220* arg based char packed unaligned dcl 424 set ref 436 438 443 444 446 447* argl 000434 automatic fixed bin(17,0) dcl 424 set ref 435* 436 438 443 444 446 447 447 argno 000435 automatic fixed bin(17,0) dcl 425 set ref 434* 435* argp 000432 automatic pointer dcl 424 set ref 435* 436 438 443 444 446 447 as_add_admin_acl_$dir 000232 constant entry external dcl 538 ref 571 as_check_condition_ 000264 constant entry external dcl 470 ref 472 as_data_$acsdir 000246 external static char(168) packed unaligned dcl 4-25 set ref 503* 508* 508* 509* 511* 511* 515* as_data_$ansp 000250 external static pointer dcl 4-26 ref 177 554 as_data_$rs_ptrs 000252 external static pointer array dcl 4-49 ref 302 302 as_data_$whoptr 000254 external static pointer dcl 4-60 ref 588 588 589 589 as_dump_ 000124 constant entry external dcl 79 ref 483 as_meter_$enter 000100 constant entry external dcl 70 ref 180 as_meter_$exit 000102 constant entry external dcl 70 ref 388 as_procid 10 based bit(36) level 3 dcl 3-55 set ref 412* asu_$find_process 000104 constant entry external dcl 71 ref 223 author based structure level 2 dcl 172 bitcount 000176 automatic fixed bin(24,0) dcl 136 set ref 254* 257 565* bptr 000330 automatic pointer dcl 141 set ref 207* 220* 240 378 378* branch based structure array level 1 dcl 164 bv_msg_ptr parameter pointer dcl 66 ref 13 185 187 223 clock builtin function dcl 109 ref 178 code 000175 automatic fixed bin(35,0) dcl 135 set ref 181* 212* 213 214* 215* 220* 221 244* 245* 246 254* 262* 263 264* 265 302* 306 309* 342 342 342 342* 361* 381* 383 384* 385 402* 412* 413 413* 435* 446* 447 509* 510 511* 551* 565* 566 569* 571 571* 576 577* 583* 584 586* 587 593* 595* 596* condition parameter char packed unaligned dcl 463 set ref 460 472* 477* 480* 485 condition_ 000110 constant entry external dcl 73 ref 242 contin parameter bit(1) packed unaligned dcl 466 set ref 460 472* 473 convert_ipc_code_ 000226 constant entry external dcl 536 ref 214 593 convert_status_code_ 000114 constant entry external dcl 75 ref 309 crawlout parameter pointer dcl 464 ref 460 cu_$arg_count 000220 constant entry external dcl 422 ref 431 cu_$arg_ptr 000222 constant entry external dcl 423 ref 435 current_time 126 based fixed bin(71,0) level 2 dcl 3-55 set ref 178* cv_dec_check_ 000224 constant entry external dcl 426 ref 446 deferral_notified 11(02) based bit(1) level 3 packed packed unaligned dcl 172 set ref 286 321* deferred 000424 automatic bit(1) dcl 149 set ref 249* 291* 319 352 361 divide builtin function dcl 109 ref 257 error_table_$messages_deferred 000214 external static fixed bin(35,0) dcl 113 ref 342 error_table_$messages_off 000216 external static fixed bin(35,0) dcl 114 ref 342 error_table_$noentry 000242 external static fixed bin(35,0) dcl 545 ref 504 566 error_table_$out_of_sequence 000244 external static fixed bin(35,0) dcl 546 ref 551 event based structure level 1 dcl 155 event_message 2 based fixed bin(71,0) level 2 dcl 155 set ref 185 187 event_string based char(8) packed unaligned dcl 163 ref 187 failed 000315 automatic bit(1) initial packed unaligned dcl 139 set ref 139* 248* 306* 325 fixed builtin function dcl 109 ref 240 freen_ 000116 constant entry external dcl 76 ref 378 380 get_group_id_ 000120 constant entry external dcl 77 ref 557 get_process_id_ 000122 constant entry external dcl 78 ref 556 get_system_free_area_ 000126 constant entry external dcl 80 ref 206 group_id 000442 automatic char(32) packed unaligned dcl 530 set ref 557* 560 569* hcs_$add_dir_acl_entries 000230 constant entry external dcl 537 ref 571 571 hcs_$append_branchx 000234 constant entry external dcl 539 ref 509 569 hcs_$delentry_seg 000166 constant entry external dcl 94 ref 361 hcs_$get_access_class 000170 constant entry external dcl 95 ref 262 hcs_$get_author 000172 constant entry external dcl 96 ref 264 hcs_$get_user_access_modes 000174 constant entry external dcl 97 ref 503 515 hcs_$initiate_count 000176 constant entry external dcl 99 ref 254 hcs_$replace_acl 000164 constant entry external dcl 93 ref 245 hcs_$star_ 000200 constant entry external dcl 101 ref 220 hcs_$status_minf 000202 constant entry external dcl 102 ref 565 hcs_$wakeup 000204 constant entry external dcl 104 ref 412 header based structure level 2 dcl 3-55 his_auth 000350 automatic bit(72) packed unaligned dcl 145 set ref 262* 402* hisid 000316 automatic char(32) dcl 140 set ref 264* 266 320* 325* 329* 340 342* 402 402 hphcs_$set_ring_brackets 000206 constant entry external dcl 105 ref 244 i 000170 automatic fixed bin(17,0) dcl 134 set ref 239* 240 335* 371 383* 385* 446* 447 447 450 452 idir 000102 automatic char(168) packed unaligned dcl 130 set ref 250* 302* iname 000154 automatic char(32) packed unaligned dcl 131 set ref 250* 302* 317 317* 320* 325* 329* 342* 476 477* infoptr parameter pointer dcl 465 ref 460 installation_request_channel 116 based fixed bin(71,0) level 2 dcl 14-10 set ref 589* installation_request_pid 120 based bit(36) level 2 dcl 14-10 set ref 588* ioa_ 000132 constant entry external dcl 82 ref 385 ioa_$rsnnl 000134 constant entry external dcl 83 ref 320 325 329 354 477 480 ios_$order 000136 constant entry external dcl 84 ref 484 ip defined pointer dcl 5-21 set ref 302* ipc_$create_ev_chn 000140 constant entry external dcl 85 ref 583 ipc_$decl_ev_call_chn 000142 constant entry external dcl 86 ref 586 ipc_$drain_chn 000144 constant entry external dcl 87 ref 212 ipc_$mask_ev_calls 000146 constant entry external dcl 88 ref 181 ipc_$unmask_ev_calls 000150 constant entry external dcl 89 ref 384 iptr 000326 automatic pointer dcl 141 set ref 302* j 000171 automatic fixed bin(17,0) dcl 134 set ref 240* 241 320* 325* 329* 354* 402 402 k 000172 automatic fixed bin(17,0) dcl 134 set ref 340* 402 402 length builtin function dcl 109 ref 340 lock_count 114 based fixed bin(17,0) level 2 dcl 3-55 ref 191 long 000202 automatic char(100) dcl 137 set ref 309* 310 maildir 000010 internal static char(168) packed unaligned dcl 119 set ref 220* 244* 245* 254* 262* 264* 559* mailseg 000336 automatic char(32) packed unaligned dcl 143 set ref 205* 220* 241* 244* 245* 254* 262* 264* max_installs 000075 internal static fixed bin(17,0) initial dcl 427 set ref 285 354 364 364 373 450 452* mbuf 000100 automatic char(120) dcl 468 set ref 477* 480* 482* 483* mc_ptr parameter pointer dcl 462 ref 460 message 000233 automatic char(200) packed unaligned dcl 138 set ref 320* 325* 329* 336* 354* 402 402 mlth 000136 automatic fixed bin(17,0) dcl 468 set ref 477* 480* mode 10 000062 internal static bit(36) array level 2 dcl 120 set ref 561* n_branches 000173 automatic fixed bin(17,0) dcl 134 set ref 220* 221* 222 223 226* 228* 231 239 335 371 n_deferred 000430 automatic fixed bin(17,0) dcl 151 set ref 233* 287* 287 322* 322 335 373 373* n_installs 000423 automatic fixed bin(17,0) dcl 148 set ref 234* 298* 298 364 n_pending 000431 automatic fixed bin(17,0) dcl 151 set ref 233* 335* 336 336* name 000352 automatic char(4) dcl 146 set ref 258* 273 274 275 276 277 279 285 317 names based char(32) array dcl 170 ref 241 nargs 000436 automatic fixed bin(17,0) dcl 425 set ref 431* 432 434 nindex 0(18) based bit(18) array level 2 packed packed unaligned dcl 164 ref 240 non_local_exit 000137 automatic bit(1) packed unaligned dcl 469 set ref 472* 473 nptr 000332 automatic pointer dcl 141 set ref 207* 220* 241 380 380* null builtin function dcl 109 ref 118 207 225 226 256 378 380 393 586 586 3-53 12-76 484 484 pathname_ 000210 constant entry external dcl 106 ref 508 508 511 511 person 4 based char(24) level 2 packed packed unaligned dcl 12-78 set ref 228* proc_group_id based char(32) level 3 dcl 172 set ref 266 267 477* process_id 000452 automatic bit(36) packed unaligned dcl 530 set ref 556* 588 project 12 based char(12) level 2 packed packed unaligned dcl 12-78 set ref 228* reversion_ 000112 constant entry external dcl 74 ref 313 ring_brackets 000001 constant fixed bin(3,0) initial array dcl 126 set ref 244* 569* rings 000514 automatic fixed bin(3,0) initial array dcl 505 set ref 505* 505* 505* 509* rtrim builtin function dcl 109 ref 340 559 sat_ptr 000440 automatic pointer dcl 530 set ref 571* sc_stat_$Go_typed 000256 external static bit(1) dcl 8-62 ref 550 sc_stat_$Multics 000260 external static bit(1) dcl 8-62 ref 176 sc_stat_$Multics_typed 000262 external static bit(1) dcl 8-62 ref 550 segp 000334 automatic pointer dcl 142 set ref 254* 256 258 266 267 286 302* 321 361* 393 477 send_mail_$access_class 000212 constant entry external dcl 107 ref 402 send_mail_info 000457 automatic structure level 1 dcl 9-5 set ref 200* 402 402 send_mail_info_version_2 000456 automatic fixed bin(17,0) initial dcl 9-3 set ref 9-3* sending_process_id 4 based bit(36) level 2 dcl 155 set ref 223* sent_from 1 000457 automatic char(32) level 2 dcl 9-5 set ref 204* short 000200 automatic char(8) dcl 137 set ref 309* status 000346 automatic bit(72) dcl 144 set ref 484* sub_err_ 000236 constant entry external dcl 540 ref 596 substr builtin function dcl 109 ref 402 402 402 402 sv 000077 internal static fixed bin(17,0) initial dcl 429 set ref 193* 222 226* 228* 443* 444* switches 11 000457 automatic structure level 2 dcl 9-5 sys_log_ 000130 constant entry external dcl 81 ref 193 226 228 336 373 432 447 482 508 sys_log_$error_log 000106 constant entry external dcl 72 ref 215 342 413 511 577 595 sysdir 22 based char(64) level 2 packed packed unaligned dcl 3-55 set ref 559 565* 569* 571* 577* table 14 based char(4) level 3 dcl 172 ref 258 tbl based structure level 1 dcl 172 type 000177 automatic fixed bin(2,0) dcl 136 set ref 565* 567* 576 unspec builtin function dcl 109 set ref 200* up_cdt_ 000160 constant entry external dcl 90 ref 276 up_mgt_ 000156 constant entry external dcl 90 ref 275 up_pdt_ 000152 constant entry external dcl 90 ref 274 up_rtdt_ 000162 constant entry external dcl 90 ref 277 up_sat_ 000154 constant entry external dcl 90 ref 273 up_sysctl_$up_sysctl_ 000240 constant entry external dcl 541 ref 586 586 update_channel 116 based fixed bin(71,0) level 2 dcl 3-55 set ref 212* 412* 583* 586* 589 update_pending 115 based bit(1) level 2 dcl 3-55 set ref 192* 196* update_program 000164 automatic entry variable dcl 132 set ref 273* 274* 275* 276* 277* 302 upsysctl_msg 000512 automatic fixed bin(71,0) dcl 408 set ref 411 412* upsysctl_string based char(8) packed unaligned dcl 409 set ref 411* user_abs_attributes based structure level 1 dcl 11-25 user_attributes based structure level 1 dcl 10-21 userid 000062 internal static char(32) array level 2 dcl 120 set ref 560* ut_header based structure level 1 dcl 13-16 ute based structure level 1 dcl 12-78 utep 000472 automatic pointer initial dcl 12-76 set ref 223* 225* 226 228 228 12-76* version 000457 automatic fixed bin(17,0) level 2 dcl 9-5 set ref 201* wakeup 11 000457 automatic bit(1) level 3 packed packed unaligned dcl 9-5 set ref 202* wakeup_msg 000426 automatic char(8) packed unaligned dcl 150 set ref 185* 187* 193* 226* 228* whoptr defined pointer dcl 5-29 ref 588 589 whotab based structure level 1 dcl 14-10 wordcount 000174 automatic fixed bin(17,0) dcl 134 set ref 257* 302* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 6-28 ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 11-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 7-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 12-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-36 ABS_TRYLOG_METER internal static fixed bin(17,0) initial dcl 6-35 ACCTUP_METER internal static fixed bin(17,0) initial dcl 6-26 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 7-28 ADMIN_METER internal static fixed bin(17,0) initial dcl 6-32 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 10-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 3-51 ASINIT_METER internal static fixed bin(17,0) initial dcl 6-19 AS_METER_NAMES internal static char(8) initial array packed unaligned dcl 6-43 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 7-30 AT_NORMAL internal static char(8) initial packed unaligned dcl 3-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 3-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 3-116 AUM_METER internal static fixed bin(17,0) initial dcl 6-22 AU_METER internal static fixed bin(17,0) initial dcl 6-23 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 COMMAND_METER internal static fixed bin(17,0) initial dcl 6-30 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 7-37 CPG_METER internal static fixed bin(17,0) initial dcl 6-24 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 12-280 DIALUP_METER internal static fixed bin(17,0) initial dcl 6-20 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 12-332 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DONT_MASK internal static bit(2) initial packed unaligned dcl 12-280 DO_MASK internal static bit(2) initial packed unaligned dcl 12-280 DPG_METER internal static fixed bin(17,0) initial dcl 6-25 DUM_METER internal static fixed bin(17,0) initial dcl 6-21 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 FIXPDT_METER internal static fixed bin(17,0) initial dcl 6-34 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-32 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 12-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 12-284 MC_PRIO internal static fixed bin(17,0) initial dcl 7-25 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 7-33 MSGCORD_METER internal static fixed bin(17,0) initial dcl 6-29 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 NETUP_METER internal static fixed bin(17,0) initial dcl 6-37 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 12-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 12-261 PT_DAEMON internal static fixed bin(17,0) initial dcl 12-261 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 12-261 PW_FLAG_NAMES internal static varying char(12) initial array dcl 12-290 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SAC_METER internal static fixed bin(17,0) initial dcl 6-31 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 7-27 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SSU_METER internal static fixed bin(17,0) initial dcl 6-33 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 7-26 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 12-271 UFLAG_NAMES internal static varying char(24) initial array dcl 12-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 10-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 10-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 10-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 10-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 3-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 12-74 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 14-96 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 as_data_$BS external static char(1) dcl 4-21 as_data_$CR external static char(1) dcl 4-22 as_data_$abs_dim external static char(32) packed unaligned dcl 4-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 4-24 as_data_$as_procid external static bit(36) dcl 4-27 as_data_$as_ring external static fixed bin(3,0) dcl 4-28 as_data_$as_tty automatic char(6) packed unaligned dcl 4-29 as_data_$asmtp external static pointer dcl 4-30 as_data_$autp external static pointer dcl 4-31 as_data_$buzzardp external static pointer dcl 4-32 as_data_$cdtp external static pointer dcl 4-33 as_data_$debug_flag external static bit(1) dcl 4-84 as_data_$default_weight external static fixed bin(35,0) dcl 4-34 as_data_$devtabp external static pointer dcl 4-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 4-36 as_data_$dutp external static pointer dcl 4-37 as_data_$g115_dim external static char(32) packed unaligned dcl 4-38 as_data_$lct_initialized external static bit(1) dcl 4-39 as_data_$lct_size external static fixed bin(17,0) dcl 4-40 as_data_$login_args external static structure level 1 dcl 4-62 as_data_$login_words external static fixed bin(17,0) dcl 4-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 4-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 4-87 as_data_$ls_message_buffer_ptr external static pointer dcl 4-88 as_data_$ls_request_server_info_ptr external static pointer dcl 4-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 4-41 as_data_$mgtp external static pointer dcl 4-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 4-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 4-44 as_data_$pdtdir external static char(168) packed unaligned dcl 4-45 as_data_$pit_ptr external static pointer dcl 4-46 as_data_$rcpdir external static char(168) packed unaligned dcl 4-47 as_data_$request_priority external static fixed bin(17,0) dcl 4-48 as_data_$rtdtp external static pointer dcl 4-50 as_data_$sat_htp external static pointer dcl 4-51 as_data_$satp external static pointer dcl 4-52 as_data_$signal_types external static structure level 1 dcl 4-67 as_data_$suffix external static char(2) array packed unaligned dcl 4-53 as_data_$sysdir external static char(168) packed unaligned dcl 4-54 as_data_$system_signal_types external static structure level 1 dcl 4-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 4-55 as_data_$terminet_tabs_string external static varying char(144) dcl 4-56 as_data_$tty_dim external static char(32) packed unaligned dcl 4-57 as_data_$update_priority external static fixed bin(17,0) dcl 4-58 as_data_$version external static char(8) packed unaligned dcl 4-59 as_data_login_words based structure level 1 dcl 4-77 as_procid defined bit(36) dcl 5-17 as_tty based char(6) packed unaligned dcl 5-18 asmtp defined pointer dcl 5-19 devtabp defined pointer dcl 5-20 mgtp defined pointer dcl 5-22 pdtdir based char(168) packed unaligned dcl 5-23 recursion_possible internal static bit(18) initial packed unaligned dcl 6-39 rs_ptrs based pointer array dcl 5-24 sat_htp defined pointer dcl 5-25 satp defined pointer dcl 5-26 sc_stat_$Go external static bit(1) dcl 8-62 sc_stat_$Star_typed external static bit(1) dcl 8-62 sc_stat_$admin_listener_exit_label external static label variable dcl 8-34 sc_stat_$admin_listener_switch external static bit(1) dcl 8-62 sc_stat_$admin_log_iocb external static pointer dcl 8-45 sc_stat_$admin_log_write_ptr external static pointer dcl 8-45 sc_stat_$admin_sci_ptr external static pointer dcl 8-45 sc_stat_$as_log_write_ptr external static pointer dcl 8-45 sc_stat_$did_part1 external static bit(1) dcl 8-62 sc_stat_$did_part2 external static bit(1) dcl 8-62 sc_stat_$did_part3 external static bit(1) dcl 8-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 8-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$initzer_ttyp external static pointer dcl 8-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$master_abort_label external static label variable dcl 8-34 sc_stat_$master_channel external static char(6) dcl 8-29 sc_stat_$master_iocb external static pointer dcl 8-45 sc_stat_$master_sci_ptr external static pointer dcl 8-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$mc_ansp external static pointer dcl 8-45 sc_stat_$mc_iocb external static pointer dcl 8-45 sc_stat_$mc_is_on external static bit(1) dcl 8-62 sc_stat_$no_operator_login external static bit(1) dcl 8-62 sc_stat_$shutdown_typed external static bit(1) dcl 8-62 sc_stat_$sv1_iocb external static pointer dcl 8-45 sc_stat_$sv2_iocb external static pointer dcl 8-45 sc_stat_$sv3_iocb external static pointer dcl 8-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 8-21 sc_stat_$system_shutdown_label external static label variable dcl 8-34 sc_stat_$test_mode external static bit(1) dcl 8-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 8-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 8-62 scdtp defined pointer dcl 5-27 sysdir defined char(168) packed unaligned dcl 5-28 NAMES DECLARED BY EXPLICIT CONTEXT. check_acs 002774 constant entry external dcl 495 cleanup 002511 constant label dcl 393 ref 486 flop 001675 constant label dcl 306 ref 263 265 init 003376 constant entry external dcl 526 init_sub_error 004066 constant label dcl 596 set ref 552 578 ipc_failed 004016 constant label dcl 593 ref 584 587 more_later 002345 constant label dcl 371 ref 364 send_mail_to_installer 004116 constant entry internal dcl 400 ref 341 356 send_upsysctl_wakeup 004172 constant entry internal dcl 406 ref 371 439 450 set_max_installs 002526 constant entry external dcl 420 signal 001723 constant label dcl 313 ref 268 280 292 396 try_next 002335 constant label dcl 364 ref 246 288 ucs 004270 constant entry internal dcl 460 ref 242 242 unmask_return 002437 constant label dcl 381 set ref 194 up_sysctl_ 000540 constant entry external dcl 13 update_return 002411 constant label dcl 378 ref 231 393 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5436 5724 4544 5446 Length 6572 4544 266 631 672 70 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME up_sysctl_ 650 external procedure is an external procedure. send_mail_to_installer internal procedure shares stack frame of external procedure up_sysctl_. send_upsysctl_wakeup internal procedure shares stack frame of external procedure up_sysctl_. ucs 146 internal procedure is assigned to an entry variable. begin block on line 504 begin block shares stack frame of external procedure up_sysctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 maildir up_sysctl_ 000062 acla up_sysctl_ 000075 max_installs up_sysctl_ 000076 NO_PDT_sw up_sysctl_ 000077 sv up_sysctl_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ucs 000100 mbuf ucs 000136 mlth ucs 000137 non_local_exit ucs up_sysctl_ 000100 areap up_sysctl_ 000102 idir up_sysctl_ 000154 iname up_sysctl_ 000164 update_program up_sysctl_ 000170 i up_sysctl_ 000171 j up_sysctl_ 000172 k up_sysctl_ 000173 n_branches up_sysctl_ 000174 wordcount up_sysctl_ 000175 code up_sysctl_ 000176 bitcount up_sysctl_ 000177 type up_sysctl_ 000200 short up_sysctl_ 000202 long up_sysctl_ 000233 message up_sysctl_ 000315 failed up_sysctl_ 000316 hisid up_sysctl_ 000326 iptr up_sysctl_ 000330 bptr up_sysctl_ 000332 nptr up_sysctl_ 000334 segp up_sysctl_ 000336 mailseg up_sysctl_ 000346 status up_sysctl_ 000350 his_auth up_sysctl_ 000352 name up_sysctl_ 000353 answer up_sysctl_ 000423 n_installs up_sysctl_ 000424 deferred up_sysctl_ 000426 wakeup_msg up_sysctl_ 000430 n_deferred up_sysctl_ 000431 n_pending up_sysctl_ 000432 argp up_sysctl_ 000434 argl up_sysctl_ 000435 argno up_sysctl_ 000436 nargs up_sysctl_ 000440 sat_ptr up_sysctl_ 000442 group_id up_sysctl_ 000452 process_id up_sysctl_ 000454 ansp up_sysctl_ 000456 send_mail_info_version_2 up_sysctl_ 000457 send_mail_info up_sysctl_ 000472 utep up_sysctl_ 000512 upsysctl_msg send_upsysctl_wakeup 000514 rings begin block on line 504 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out begin_return_mac return_mac tra_ext_1 shorten_stack ext_entry ext_entry_desc int_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. as_add_admin_acl_$dir as_check_condition_ as_dump_ as_meter_$enter as_meter_$exit asu_$find_process condition_ convert_ipc_code_ convert_status_code_ cu_$arg_count cu_$arg_ptr cv_dec_check_ freen_ get_group_id_ get_process_id_ get_system_free_area_ hcs_$add_dir_acl_entries hcs_$append_branchx hcs_$delentry_seg hcs_$get_access_class hcs_$get_author hcs_$get_user_access_modes hcs_$initiate_count hcs_$replace_acl hcs_$star_ hcs_$status_minf hcs_$wakeup hphcs_$set_ring_brackets ioa_ ioa_$rsnnl ios_$order ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$drain_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls pathname_ reversion_ send_mail_$access_class sub_err_ sys_log_ sys_log_$error_log up_cdt_ up_mgt_ up_pdt_ up_rtdt_ up_sat_ up_sysctl_$up_sysctl_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$acsdir as_data_$ansp as_data_$rs_ptrs as_data_$whoptr error_table_$messages_deferred error_table_$messages_off error_table_$noentry error_table_$out_of_sequence sc_stat_$Go_typed sc_stat_$Multics sc_stat_$Multics_typed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 118 000516 139 000520 147 000522 3 53 000525 9 3 000527 12 76 000531 13 000535 176 000546 177 000551 178 000554 180 000557 181 000566 185 000575 187 000605 191 000610 192 000613 193 000615 194 000641 196 000642 200 000643 201 000646 202 000650 203 000652 204 000654 205 000657 206 000662 207 000671 212 000674 213 000706 214 000710 215 000717 220 000761 221 001026 222 001031 223 001036 225 001060 226 001062 228 001116 231 001156 233 001160 234 001162 239 001163 240 001171 241 001175 242 001203 244 001227 245 001254 246 001317 248 001321 249 001323 250 001324 254 001335 256 001377 257 001403 258 001407 262 001412 263 001437 264 001441 265 001474 266 001476 267 001503 268 001516 273 001520 274 001531 275 001541 276 001551 277 001561 279 001571 280 001604 285 001606 286 001617 287 001622 288 001623 291 001624 292 001626 298 001627 302 001630 306 001675 308 001701 309 001705 310 001720 313 001723 317 001740 319 001747 320 001751 321 002005 322 002010 323 002011 325 002012 329 002055 335 002126 336 002132 340 002173 341 002206 342 002207 352 002264 354 002266 356 002321 361 002322 364 002335 369 002343 371 002345 373 002352 378 002411 380 002424 381 002437 383 002440 384 002447 385 002456 387 002477 388 002501 389 002510 393 002511 395 002515 396 002524 420 002525 431 002534 432 002543 434 002570 435 002577 436 002614 438 002626 439 002632 441 002636 442 002640 443 002641 444 002651 446 002660 447 002711 450 002752 452 002761 455 002764 456 002766 495 002767 503 003015 504 003061 505 003066 508 003101 509 003151 510 003232 511 003234 512 003324 513 003326 515 003330 517 003374 526 003375 550 003404 551 003411 552 003413 554 003414 556 003417 557 003425 559 003434 560 003464 561 003470 565 003472 566 003532 567 003536 569 003540 571 003620 576 003670 577 003675 578 003740 583 003741 584 003753 586 003755 587 004003 588 004005 589 004012 591 004015 593 004016 595 004025 596 004066 778 004115 400 004116 402 004117 404 004170 406 004172 411 004173 412 004175 413 004222 416 004266 460 004267 472 004303 473 004323 476 004334 477 004341 479 004402 480 004403 482 004434 483 004461 484 004472 485 004526 486 004535 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved