COMPILATION LISTING OF SEGMENT absentee_user_manager_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 08/29/88 0921.9 mst Mon 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 absentee_user_manager_: proc (ev_msg_ptr); 14 15 /* main answering service procedure of absentee facility */ 16 /* coded by E. Stone and modified 9/71 */ 17 /* Modified many times since 1971. */ 18 /* Modified April 1976 by T. Casey to check for "initxxxx" process termination event message */ 19 /* Modified 7/76 by THVV to send mail and get rid of gotos and little arrows */ 20 /* Modified September 1977 by T. Casey to log all ignored wakeups and make error message buffer longer. */ 21 /* Modified May 1978 by T. Casey for resource reservations, per-queue reserved slots, and check for lost stopstop wakeup */ 22 /* Modified November 1978 by T. Casey for MR7.0 absentee control parameters */ 23 /* Modified March 1979 by T. Casey for MR7.0a absentee process suspension and trm_ signalling. */ 24 /* Modified March 1980 by Tom Casey to add metering. */ 25 /* Modified December 1980 by E. N. Kittlitz for bugfixes */ 26 /* Modified June 1981 by T. Casey for MR9.0 for absentee load control perf. improvements, and do only one login per wakeup */ 27 /* Modified September 22, 1981 by T. Casey for MR9.0 to fix bug in handling of termstop wakeup. */ 28 /* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. */ 29 /* Modified December 1981, E. N. Kittlitz. copy abs control values to whotab. */ 30 /* Modified April 1982, E. N. Kittlitz. New AS initialization. bugfixes. */ 31 /* Modified October 1982, E. N. Kittlitz. Fix cancellation validation, check cancellation by person only */ 32 /* Modified November 1982, E. N. Kittlitz. Fix validate_user_cancellation null pointer on notify_ca_sender */ 33 /* Modified 1984-07-20 BIM for version 2 UTE */ 34 /* Modified 1984-11-27 by E. Swenson for IPC event channel validation. 35* Modified 1985-01-16 by E. Swenson to set ute.tag before calling lg_ctl_. 36* Modified 1985-04-19 by E. Swenson to fix any other handler. 37**/ 38 39 /****^ HISTORY COMMENTS: 40* 1) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 41* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 42* Correct error message documentation. 43* 2) change(86-05-19,Gilcrease), approve(86-05-20,MCR7370), 44* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 45* Change UTE version, for -truncate absout, SCP6297. 46* 3) change(86-05-19,Lippard), approve(85-12-30,MCR7326), 47* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 48* Modified 07 November 1985 (above date to satisfy picky hcom) 49* by Jim Lippard to add entry points login_any_absentee and 50* cancel_absentee, and remove code for user IPC messages. 51* 4) change(87-04-26,GDixon), approve(87-07-12,MCR7741), 52* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 53* A) Upgraded for change to answer_table.incl.pl1 and 54* user_table_entry.incl.pl1. 55* B) Note new user-signalled event for the disconnect command (disconn). 56* Although the command cannot be used in absentee processes, if the user 57* attempts to call terminate_process_ for a disconnection, we will 58* instead destroy the process. 59* C) Replace calls to lg_ctl_$reset with user_table_mgr_$reset. (dsa 214) 60* 5) change(87-05-04,GDixon), approve(87-07-12,MCR7741), 61* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 62* A) Remove one more call to lg_ctl_$reset. 63* B) Avoid setting ute.ute_index; let user_table_mgr_ do this. 64* C) Avoid setting ute.active = NOW_FREE; let user_table_mgr_$free do 65* this. 66* 6) change(87-05-10,GDixon), approve(87-07-12,MCR7741), 67* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 68* A) Correct absN field in LOGIN/LOGOUT messages. It should reference 69* the ute_index. 70* 7) change(87-05-11,GDixon), approve(87-07-12,MCR7741), 71* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 72* Changes to more properly maintain anstbl.n_abs_run: 73* A) Don't set autbl.n_abs_run, since user_table_mgr_ is doing that. 74* B) Change any_other strategy to ensure that user_table_mgr_$free always 75* gets called when error occurs after user_table_mgr_$allocate. 76* 8) change(87-05-14,GDixon), approve(87-07-12,MCR7741), 77* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 78* Use constants to set ute.tag. 79* 9) change(87-05-20,Lippard), approve(87-07-12,MCR7709), 80* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 81* A) Modified to not attempt to process absentee logins when absentee has 82* been stopped. 83* B) Don't create ute.event channel, since user_table_mgr_$allocate does 84* this. 85* 10) change(87-07-12,GDixon), approve(87-07-12,MCR7741), 86* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 87* A) Remove windows in cleanup handling. 88* B) Change cleanup handler to call user_table_mgr_$free to release the 89* UTE if an error occurs. 90* C) Establish cleanup and any_other handlers at $cancel_absentee, 91* $login_any_absentee and $aum_abs_run entrypoints. 92* D) Remove call to dial_ctl_$dial_broom, since dpg_ now calls this 93* routine. 94* 11) change(87-08-18,GDixon), approve(87-08-18,MCR7741), 95* audit(87-08-19,Brunelle), install(87-08-20,MR12.1-1092): 96* A) Changed handler for rlse signal (sent by abs release command) to 97* send a wakeup to the suspended absentee process after calling 98* asu_$release_suspended_process. asu_ used to send this wakeup, but 99* no longer does due to a change for MNA. 100* 12) change(87-12-08,GDixon), approve(88-08-15,MCR7969), 101* audit(88-08-03,Lippard), install(88-08-29,MR12.2-1093): 102* A) Change alarm___ code to handle alarm sent by asu_$bump_user to bump 103* an absentee process. Absentee jobs can be bumped for many reasons 104* (eg, locking of the user's password). asu_$bump_user should work 105* for absentee jobs, whatever the reason. The real reason for bumping 106* is in the as log, put there by the caller of asu_$bump_user. 107* END HISTORY COMMENTS */ 108 109 dcl absentee_rq_chn fixed bin (71) int static, /* channel used to signal new requests. */ 110 termstop char (8) aligned int static options (constant) init ("termstop"), 111 termstop_msg fixed bin (71) based (addr (termstop)), 112 STOPstop char (8) aligned int static options (constant) init ("STOPstop"), 113 STOPstop_msg fixed bin (71) based (addr (STOPstop)), 114 slack fixed bin int static options (constant) init (2),/* slack to allow 2 interactive processes to get in */ 115 absentee_procid bit (36) aligned int static, /* process id of absentee user manager */ 116 static_label label int static, /* error transfer */ 117 trace bit (1) aligned int static init ("0"b); 118 119 dcl unlock_msg int static fixed bin (71); /* message sent by unlock procedure */ 120 dcl unlock_string char (8) int static options (constant) init ("unlock"); /* contents of that message */ 121 122 dcl abs_stop_before_startup bit (1) aligned int static init (""b); 123 dcl job_term_reasons (13) char (64) int static options (constant) init 124 ("Job terminated.", 125 "Job executed new_proc command.", 126 "", 127 "", 128 "", 129 "", 130 "Process initialization error.", 131 "Process could not attach I/O streams.", 132 "Process could not locate initial procedure.", 133 "Process requested disconnect, which is not allowed.", 134 "error.", 135 "error.", 136 "Job executed new_proc command."); 137 138 dcl common_channel_signals (8) char (4) int static options (constant) init ( 139 "alar", /* 1 */ 140 "inac", /* 2 */ 141 "bump", /* 3 */ 142 "term", /* 4 */ 143 "canc", /* 5 */ 144 "caxx", /* 6 */ 145 "susp", /* 7 */ 146 "rlse"); /* 8 */ 147 148 dcl bump_reasons (9) char (64) int static options (constant) init ( 149 "Job exceeded cpu limit.", 150 "Process inactive too long.", 151 "Operator bumped job.", 152 "Operator terminated process.", 153 "Operator canceled job.", 154 "Job bumped at user's request.", 155 "Process ignored sus_ signal.", 156 "Process used too much cpu time while suspended.", 157 "System bumped job."); 158 159 160 dcl (i, j) fixed bin, /* temp & useful counter */ 161 code fixed bin (35), /* error code */ 162 ignore_code fixed bin (35), /* cross ref. will show where we deliberately ignore error code */ 163 ix fixed bin, 164 cpu fixed bin (71), 165 old_cpu fixed bin (71), 166 pp fixed bin, 167 pf fixed bin, 168 secs float bin, 169 aborting bit (1) aligned init ("0"b); /* set TRUE by ucs handler. */ 170 171 dcl cpu_time_limit fixed bin (71); 172 dcl absentee_tty_name char (32); 173 dcl wakeup_over_common_channel bit (1) aligned init (""b); 174 dcl wakeup_from_as bit (1) aligned init (""b); 175 dcl wakeup_from_user bit (1) aligned init (""b); 176 dcl wakeup_from_ring_zero bit (1) aligned init (""b); 177 dcl abs_run_sw bit (1) aligned init (""b); 178 dcl abs_arg_ptr ptr init (null); 179 dcl (code_mask_ev_calls, code_unmask_ev_calls) fixed bin (35); 180 dcl status char (100) aligned, /* reason for failure to login absentee user */ 181 reason char (256) varying init ("ERROR"), 182 hisid char (32), 183 abort_message char (256), 184 shxx char (8) aligned, /* short version of error code. */ 185 loxx char (100) aligned, /* long ditto */ 186 id char (24) int static init ("absentee_user_manager_") options (constant), 187 initid char (32) int static init ("absentee_user_manager_$init") options (constant), 188 error_message_2 char (36) aligned int static 189 init ("Don't bring up absentee facility."), 190 error_message_3 char (32) aligned int static 191 init ("Error in initializing absentee."); 192 193 dcl ev_msg_ptr ptr; /* parameter - pointer to entire event message */ 194 195 dcl 1 ev_msg aligned based (ev_msg_ptr), 196 2 ev_chan fixed bin (71), 197 2 ev_message bit (72), 198 2 from_proc bit (36) aligned, 199 2 origin aligned, 200 3 dev_signal bit (18) unaligned, 201 3 sender_ring bit (18) unaligned, 202 2 datap ptr; /* ptr to AUT entry. */ 203 204 dcl 1 ev_msg1 aligned based (ev_msg_ptr), 205 2 ev_chan fixed bin (71), 206 2 signal char (8), 207 2 origin, 208 3 dev_signal bit (18) unal, 209 3 sender_ring bit (18) unal, 210 2 datap ptr; 211 212 dcl 1 ev_msg2 aligned based (ev_msg_ptr), 213 2 ev_chan fixed bin (71), 214 2 what char (4), 215 2 ix fixed bin (35), 216 2 origin, 217 3 dev_signal bit (18) unal, 218 3 sender_ring bit (18) unal, 219 2 datap ptr; 220 221 222 dcl absentee_user_manager_$absentee_user_manager_ entry; 223 dcl absentee_utility_ entry (ptr, ptr, fixed bin (35)); 224 dcl absentee_utility_$au_send_ctl_wakeup entry; 225 dcl absentee_utility_$clear_lc_list entry; 226 dcl absentee_utility_$delete_message entry (ptr); 227 dcl absentee_utility_$init_au entry (fixed bin (35)); 228 dcl absentee_utility_$mark_request_running entry (ptr); 229 dcl absentee_utility_$set_resource_timer entry; 230 dcl absentee_utility_$term_au entry; 231 dcl act_ctl_$close_account entry (ptr); 232 dcl act_ctl_$cp entry (ptr); 233 dcl act_ctl_$dp entry (ptr); 234 dcl act_ctl_$open_account entry (ptr); 235 dcl as_dump_ entry (char (*) aligned); 236 dcl (as_meter_$enter, as_meter_$exit) entry (fixed bin); 237 dcl asu_$check_for_stopped_process entry (ptr, char (*)) returns (bit (1) aligned); 238 dcl asu_$find_process entry (bit (*) aligned, fixed bin, ptr); 239 dcl asu_$release_suspended_process entry (ptr); 240 dcl asu_$send_term_signal entry (ptr, fixed bin) returns (bit (1) aligned); 241 dcl asu_$start_process entry (ptr); /* used to start a process running */ 242 dcl asu_$suspend_process entry (ptr); 243 dcl available_slots_ entry (fixed bin, fixed bin, (4) fixed bin, (4) fixed bin) returns (fixed bin); 244 dcl clock_ entry returns (fixed bin (71)); 245 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 246 dcl cpg_$cpg_abs entry (ptr, fixed bin (35)); 247 dcl dpg_ entry (ptr, char (*)); 248 dcl dpg_$finish entry (ptr); 249 dcl condition_ entry (char (*), entry); 250 dcl freen_ entry (ptr); 251 dcl get_process_id_ entry (bit (36) aligned); 252 dcl hcs_$get_usage_values entry (fixed bin, fixed bin (71), fixed bin); 253 dcl hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 254 dcl hphcs_$set_cpu_monitor entry (bit (36) aligned, fixed bin (71), fixed bin (35)); 255 dcl hcs_$wakeup entry (bit (*) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 256 dcl ioa_$rsnnl entry options (variable); 257 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 258 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 259 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 260 dcl ipc_$mask_ev_calls entry (fixed bin (35)); 261 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 262 dcl lg_ctl_$abs_in entry (ptr, char (*) aligned, fixed bin (35)); 263 dcl lg_ctl_$abs_out entry (ptr); 264 dcl lv_request_$cleanup_process entry (bit (36) aligned); 265 dcl rcp_sys_$cancel_id entry (fixed bin (71), char (*), fixed bin (35)); 266 dcl rcp_sys_$pre_claim entry (fixed bin (71), char (*), bit (36) aligned, fixed bin (35)); 267 dcl rcp_sys_$unassign_process entry (bit (36) aligned, fixed bin (35)); 268 dcl request_id_ entry (fixed bin (71)) returns (char (19)); 269 dcl send_mail_$access_class entry (char (*), char (*), ptr, bit (72) aligned, fixed bin (35)); 270 dcl sub_err_ entry () options (variable); 271 dcl sys_log_ entry options (variable); 272 dcl sys_log_$error_log entry options (variable); 273 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 274 dcl user_table_mgr_$allocate entry (fixed bin) returns(ptr); 275 dcl user_table_mgr_$free entry (ptr); 276 277 dcl as_error_table_$illegal_signal ext fixed bin (35); 278 dcl error_table_$messages_deferred ext fixed bin (35); 279 dcl error_table_$messages_off ext fixed bin (35); 280 dcl error_table_$noentry ext fixed bin (35); 281 dcl error_table_$out_of_sequence fixed bin (35) ext; 282 dcl sys_info$max_seg_size fixed bin (35) ext static; 283 284 dcl (addr, baseno, divide, fixed, hbound, max, null, rel, rtrim, size, string, substr, unspec) builtin; 285 286 /* MAIN ENTRY POINT absentee_user_manager_: proc (ev_msg_ptr); MAIN ENTRY POINT */ 287 288 289 /* Initialize */ 290 291 autp = as_data_$autp; 292 ansp = as_data_$ansp; 293 code_mask_ev_calls, code_unmask_ev_calls = -1; 294 295 utep = null; /* Cause fault if bug. */ 296 call condition_ ("cleanup", cleaner_up); 297 298 anstbl.current_time = clock_ (); 299 absentee_tty_name = "unknown absentee"; /* never did find the absentee job... */ 300 301 if trace then do; 302 call hcs_$get_usage_values (pf, old_cpu, pp); 303 end; 304 305 static_label = retr; /* Set up error exit label. */ 306 call condition_ ("any_other", ucs); /* Set up a handler in case of fault. */ 307 call as_meter_$enter (AUM_METER); 308 309 /* Decode the ipc message. 310* The interprocess message which invoked absentee_user_manager_ (via event call) 311* may come from any of several sources. 312* a) login from admin, in answering service, if abs maxu has changed 313* b) aum_ctl, which we send ourselves before returning after a login 314* c) FUNCxxxx from admin or answering service, requesting action on slot xxxx 315* d) others from absentee process, reporting problems logging in, or reporting finish 316* 317**/ 318 319 if ev_msg.from_proc = absentee_procid then /* remember if message is from answering service * */ 320 wakeup_from_as = "1"b; 321 if ev_msg.origin.sender_ring = ""b then /* and whether from ring zero or outer ring */ 322 wakeup_from_ring_zero = "1"b; 323 324 /* See if message was sent over common absentee request channel */ 325 326 if ev_msg.ev_chan = absentee_rq_chn then do; /* If message sent over common absentee request channel */ 327 wakeup_over_common_channel = "1"b; /* remember what channel the wakeup came over */ 328 if ev_msg1.signal = "login " then /* Someone suggests that we check queues for a job to log in */ 329 goto lg; /* do so */ 330 /* not "login" */ 331 332 if ev_msg1.signal = "aum_ctl" then do; /* we sent ourselves this one */ 333 if ^wakeup_from_as then goto evil; /* or did we? If not, complain and exit */ 334 if ^autbl.aum_ctl then /* if we did but we don't need it any more */ 335 goto retr; /* exit quickly */ 336 337 goto lg; /* we wanted to see if we could log in any more absentees, 338* but we went blocked to give higher priority work a chance 339* to get done ahead of absentee logins. */ 340 end; 341 342 if ^wakeup_from_as then /* if wakeup is not from answering service */ 343 goto evil; /* then it is illegal */ 344 345 /* Second word of message is index of aute. Check its validity before using it. */ 346 347 if (ev_msg2.ix <= 0 | ev_msg2.ix > autbl.current_size) then 348 /* if index is garbage, decide what complaint to make */ 349 if wakeup_from_as then goto inval_mess; /* we sent ourselves a bad one. log it for debugging */ 350 else goto evil; /* user sent bad one. log to detect playful or malicious users */ 351 352 ix = ev_msg2.ix; /* Get index of entry */ 353 utep = addr (autbl.entry (ix)); /* get address of entry in absentee user table */ 354 absentee_tty_name = ute.tty_name; /* for errors, which absentee channel */ 355 356 /* First word of message is reason for bumping the job. Check its validity and then take the appropriate action */ 357 358 do i = 1 to hbound (common_channel_signals, 1) 359 while (ev_msg2.what ^= common_channel_signals (i)); end; 360 361 if i > hbound (common_channel_signals, 1) then do; /* if signal unrecognized */ 362 if wakeup_from_as then goto inval_mess; /* report that we sent ourselves a bad one */ 363 else goto evil; /* unknown message from unknown source */ 364 end; /* end message not recognized */ 365 366 /* Signals from abs suspend and abs release commands get special processing, here. */ 367 368 if i = 7 then do; /* susp */ 369 call asu_$suspend_process (utep); 370 goto retr; 371 end; 372 if i = 8 then do; /* rlse */ 373 call asu_$release_suspended_process (utep); 374 /**** Now send the process a wakeup over the event channel setup by the 375* sus_ signal handler, to kick the process into action again. */ 376 call hcs_$wakeup (ute.proc_id, ute.sus_channel, (0), code); 377 if code ^= 0 then 378 call sys_log_$error_log (SL_LOG_SILENT, code, id, 379 "Trying to wakeup ^a.^a.^a process after abs release.", 380 ute.person, ute.project, ute.tag); 381 goto retr; 382 end; 383 384 /* The rest of the signals are various kinds of bumps. They all end up destroying the absentee process */ 385 386 ute.logout_type = ev_msg2.what; /* brief reason for bumping is first 4 chars of signal */ 387 if asu_$send_term_signal (utep, i) then /* if we send trm_, to give process a chance to clean up */ 388 goto retr; /* wait for it to do so. It will send termsgnl when it's done */ 389 reason = bump_reasons (i); /* if we don't send trm_, continue logging it out */ 390 end; /* end message sent over common channel */ 391 392 /* If not common channel, message must have been sent over a running job's event channel */ 393 394 else do; /* message over running job's channel */ 395 utep = ev_msg.datap; /* Extract ptr to AUT entry. */ 396 if baseno (utep) ^= baseno (autp) then go to evil; /* WOOPS */ 397 398 if ev_msg.from_proc = ute.proc_id then /* remember whether wakeup is from absentee user */ 399 wakeup_from_user = "1"b; 400 401 ix = ute.ute_index; /* Will need this for queue threading. */ 402 403 /* See what the message is. Then either take some special action, or set reason and logout type and destroy the process. */ 404 405 reason = ev_msg1.signal; /* Default reason */ 406 if ute.destroy_flag = WAIT_LOGOUT_SIG & ute.preempted ^= PREEMPT_TERM_SENT then 407 /* if brief reason not already set */ 408 ute.logout_type = ev_msg2.what; /* do it now */ 409 410 /* Scan table of user signals for match with this message. */ 411 412 do i = 1 to n_signals while (ev_msg1.signal ^= signals (i)); end; 413 414 /* But before checking for a match, see if it was one of the few system signals, 415* such as alarm___, cpulimit, and termstop, that absentee jobs can generate */ 416 417 if ev_msg1.signal = "alarm___" then do; /* alarm timer - process ignored sus_ or trm_ signal */ 418 if ^wakeup_from_as then goto evil; /* alarm___ not valid unless from a.s. */ 419 if ute.preempted = PREEMPT_TERM_SENT then do; 420 /* it was trm_ */ 421 ignored_term: 422 call wakeup_error ("Process ignored trm_ signal."); 423 reason = rtrim (bump_reasons (ute.logout_index)); 424 reason = reason || " Process ignored trm_ signal."; 425 goto destroy; 426 end; 427 else if ute.sus_sent then do; /* it was sus_ */ 428 ignored_sus: 429 ute.logout_type = "isus"; /* brief reason for bump */ 430 reason = bump_reasons (7); /* long reason */ 431 call wakeup_error (reason); /* tell operator why we're bumping it */ 432 if asu_$send_term_signal (utep, 7) then goto retr; /* maybe let it signal finish first */ 433 else goto destroy; /* but if not, bump it now */ 434 end; 435 else if ute.preempted = PREEMPT_BUMPED /* asu_$bump_user was called for this proc */ 436 then do; 437 ute.logout_type = "sbmp"; 438 reason = bump_reasons (9); 439 if asu_$send_term_signal (utep, 9) then goto retr; 440 else goto destroy; 441 end; 442 else do; /* we were not expecting an alarm___ */ 443 call wakeup_error ("Ignoring unexpected alarm___ for"); /* log it */ 444 goto retr; /* and ignore it */ 445 end; 446 end; /* end alarm___ */ 447 448 else if ev_msg1.signal = "cpulimit" then do; /* process used too much cpu time 449* after sus_ or trm_, or while running */ 450 if ^wakeup_from_ring_zero then goto evil; /* cpulimit can only come from ring zero */ 451 if ute.ignore_cpulimit then do; /* cpulimit timer can't be turned off */ 452 ute.ignore_cpulimit = ""b; /* so we turn on this switch when we want to turn it off */ 453 goto retr; /* and if it goes off with the switch on, we ignore it */ 454 end; 455 call reset_alarm; /* turn off the alarm timer */ 456 if ute.preempted = PREEMPT_TERM_SENT then 457 /* it was trm_ that the process ignored */ 458 goto ignored_term; /* code to handle that condition already exists above */ 459 else if ute.sus_sent then do; /* it was sus_ */ 460 if ^ute.suspended then /* if process ignored it completely */ 461 goto ignored_sus; /* code to handle that is also found above */ 462 ute.logout_type = "csus"; /* brief reason for bump */ 463 reason = bump_reasons (8); /* explain exactly what happened */ 464 call wakeup_error (reason); /* tell operator why we're bumping it */ 465 if asu_$send_term_signal (utep, 8) then goto retr; /* maybe let it signal finish */ 466 else goto destroy; /* but if not, bump it now */ 467 end; 468 else do; /* user-specified cpu time limit ran out */ 469 ute.logout_type = "cpul"; /* brief reason for bumping job */ 470 if asu_$send_term_signal (utep, 1) /* maybe send trm_ signal and give job a chance to clean up */ 471 /* 1 is index of "too much cpu time" in reason lists */ 472 then goto retr; /* if signal sent, wait for job to log out */ 473 474 /* if signal not sent */ 475 reason = bump_reasons (1); /* set reason */ 476 goto destroy; /* and go destroy the process immediately */ 477 end; 478 end; /* end cpulimit */ 479 480 /* Check for termstop wakeup. 481* That wakeup means that the original wakeup, giving the reason for the process termination, 482* never arrived; a stopstop wakeup arrived out of sequence, and we sent ourselves 483* a termstop and a STOPstop to get back in sequence. 484* We have no way of knowing what the original reason was. */ 485 486 else if ev_msg1.signal = "termstop" then do; 487 ute.logout_type = "tstp"; /* try to say termstop in 4 letters */ 488 reason = "termstop"; 489 goto destroy; 490 end; 491 492 /* it was not one of the system signals. See if it's one of the user signals from the table we scanned above. */ 493 494 else if i <= n_signals then do; /* if it was */ 495 if ^wakeup_from_user then goto evil; /* reject it if it's not from the owner of the aute */ 496 if i = 14 then do; /* termsgnl gets special processing */ 497 if ute.preempted = PREEMPT_TERM_SENT then do; 498 /* if we were expecting it */ 499 call reset_alarm; /* turn off alarm timer */ 500 reason = bump_reasons (ute.logout_index); /* get original reason for bump */ 501 goto destroy; /* Sorry Edsger, but I'm in a hurry */ 502 end; 503 else do; /* we weren't expecting it */ 504 call wakeup_error ("Unexpected termsgnl from"); /* log it */ 505 ev_msg2.ix = as_error_table_$illegal_signal; 506 goto convert_term_code; /* report error and terminate process */ 507 end; 508 end; /* end termsgnl */ 509 else if i <= hbound (job_term_reasons, 1) then reason = job_term_reasons (i); 510 else reason = "error."; 511 end; 512 513 /* Signal not in table. See if it is fatal process error, with code in second word */ 514 515 else if ev_msg2.what = "term" | ev_msg2.what = "init" then do; /* User process got fatal error. */ 516 if ^wakeup_from_user then goto evil; /* reject it if it's not from this user */ 517 convert_term_code: call convert_status_code_ (ev_msg2.ix, shxx, loxx); 518 reason = loxx; 519 call sys_log_ (0, "^a: process terminated ^a.^a abs^d ^a", id, 520 ute.person, ute.project, ix, shxx); 521 end; 522 523 /* No. Maybe it is stopstop */ 524 525 else if ev_msg1.signal = "stopstop" then reason = ""; /* Process finished dying */ 526 else if ev_msg1.signal = "STOPstop" then reason = ""; /* Re-synch wakeup. */ 527 528 /* It is none of the known ASCII messages. It might be the event channel that a suspended process has gone blocked on. */ 529 530 else if ute.sus_sent & ^ute.suspended then do; /* if waiting for response to sus_ signal, this must be it */ 531 if ^wakeup_from_user then goto evil; /* reject it if it's from some other user */ 532 unspec (ute.sus_channel) = ev_msg.ev_message; /* save the event channel that the process is blocked on */ 533 if ute.ignore_cpulimit then do; /* if process was released before it responded to sus_ */ 534 ute.sus_sent = ""b; /* clear the suspended flag */ 535 call hcs_$wakeup (ute.proc_id, ute.sus_channel, (0), (0)); /* tell process it may run */ 536 end; /* leave the ignore_cpulimit switch on */ 537 else do; /* if not released already */ 538 ute.suspended = "1"b; /* remember that it's suspended */ 539 call reset_alarm; /* turn off the alarm timer */ 540 goto retr; /* that's all. get out immediately */ 541 end; 542 end; 543 544 /* None of the above. Log it and reject it. */ 545 else go to evil; /* a hacker */ 546 547 /* See if we were expecting termsgnl but got something else from the user process. 548* (If we had gotten termsgnl, we would have gone directly to destroy, and not ended up here.) */ 549 550 if ute.preempted = PREEMPT_TERM_SENT then do;/* if waiting for termsgnl */ 551 call reset_alarm; /* turn off alarm so it won't go off at an awkward time */ 552 if reason ^= "" then do; /* reason says why termsgnl didn't come - f.p.e. maybe */ 553 reason = rtrim (reason); /* add some further explanation of what happened */ 554 reason = reason || " while handling trm_ signal after: "; 555 reason = reason || rtrim (bump_reasons (ute.logout_index)); 556 end; 557 else do; /* reason is blank, so construct an explanation */ 558 reason = rtrim (bump_reasons (ute.logout_index)); 559 reason = reason || " Process did not respond properly to trm_ signal."; 560 end; 561 end; 562 563 end; /* end message over running job's channel */ 564 565 /* This section destroys an absentee process. Pointer "autp" points to the absentee_user_table entry. */ 566 567 destroy: 568 if ev_msg1.signal ^= "stopstop" then do; /* First or second pass? */ 569 if ev_msg1.signal = "STOPstop" then do; /* STOPstop is a.s.'s simulation of stopstop */ 570 if ^wakeup_from_as then goto evil; /* reject it if not from a.s. */ 571 else if ute.destroy_flag ^= WAIT_LOGOUT then goto log_ignored_msg; 572 else go to kill; /* STOPstop used to re-synchronize */ 573 end; 574 if ev_msg1.signal = "termstop" then 575 if ute.destroy_flag ^= WAIT_LOGOUT_SIG then goto log_ignored_msg; 576 if ute.active < NOW_LOGGED_IN then go to evil; 577 578 /* Validate origin of wakeup before destroying process */ 579 580 if ^wakeup_from_user then /* if wakeup not from the absentee process itself */ 581 if ^wakeup_from_as then /* and not from answering service */ 582 if ^wakeup_from_ring_zero then /* and not from ring zero */ 583 goto evil; /* log and reject the wakeup */ 584 585 586 if ute.destroy_flag >= WAIT_LOGOUT then /* if apparently waiting for stopstop */ 587 if asu_$check_for_stopped_process (utep, id) then /* and process is, in fact, stopped */ 588 goto kill; /* go finish its destruction */ 589 590 destroy1: /* come here if fault between creating and starting process */ 591 ute.active = NOW_LOGGED_IN; /* Indicate there is no process. */ 592 ute.destroy_flag = WAIT_LOGOUT; /* .. and set up to finish destroying. */ 593 call rcp_sys_$unassign_process (ute.proc_id, ignore_code); 594 if ute.lvs_attached then 595 call lv_request_$cleanup_process (ute.proc_id); 596 call dpg_ (utep, (ev_msg2.what)); /* First pass. Request destruction. */ 597 598 if reason ^= "" then do; 599 call ioa_$rsnnl ("Absentee job ^a ^a terminated. ^a", 600 abort_message, j, ute.input_seg, request_id_ (ute.request_id), reason); 601 call notify_request_owner (abort_message); 602 end; 603 else if ute.notify then /* if user requested notification */ 604 call notify ("logged out"); /* tell him the job logged out */ 605 go to retr; /* And that's all for now. We'll wait for the stopstop. */ 606 end; 607 608 /* The process must run a bit to destroy itself. it will send a "stopstop" when it is really dead. */ 609 610 if substr (anstbl.sysdir, 1, 4) = ">sys" then /* Unless testing, ... */ 611 if ev_msg.origin.sender_ring then go to evil;/* stopstop must come from ring 0 */ 612 613 if ute.destroy_flag = WAIT_LOGOUT_SIG then do; /* oops. */ 614 call sys_log_ (0, "^a: premature stopstop for ^a", id, ute.tty_name); 615 call hcs_$wakeup (whotab.abs_procid, ute.event, termstop_msg, code); 616 call hcs_$wakeup (whotab.abs_procid, ute.event, STOPstop_msg, code); 617 return; 618 end; 619 620 /* Here we really finish killing the process */ 621 622 kill: static_label = no_go; /* In case of fault. */ 623 call dpg_$finish (utep); /* Now finish the process destruct. */ 624 call act_ctl_$dp (utep); /* Sign process off accounting. */ 625 626 if ute.queue > 0 then /* track background jobs */ 627 autbl.n_abs (ute.queue) = autbl.n_abs (ute.queue) - 1; 628 629 cleanup: ute.active = NOW_LOGGED_IN; /* Make sure it says "no process" */ 630 631 anstbl.lock_count = anstbl.lock_count + 1; /* lock answer table */ 632 call act_ctl_$close_account (utep); /* Close out account */ 633 call lg_ctl_$abs_out (utep); /* tell system that absentee user not logged in */ 634 no_go: static_label = free; /* If fault here just get out fast */ 635 636 if ute.reservation_id ^= 0 then do; /* if job had a reservation */ 637 call rcp_sys_$cancel_id (ute.reservation_id, 638 rtrim (ute.person) || "." || rtrim (ute.project) || ".*", code); 639 if code ^= 0 then /* badcall = reservation doesn't belong to this user */ 640 if code ^= error_table_$noentry then /* noentry = no such reservation, i.e., it was canceled already */ 641 call sys_log_$error_log (1, code, id, "attempting to cancel reservation ^a for ^a.^a ^a", 642 request_id_ (ute.reservation_id), ute.person, ute.project, ute.tty_name); 643 end; 644 645 call unlock; /* unlock answer table */ 646 647 if ^(ute.abs_attributes.restartable & ute.logout_type = "bump") then do; /* if not bump of restartable request */ 648 call ipc_$mask_ev_calls (code_mask_ev_calls); 649 call absentee_utility_$delete_message (utep);/* delete the request from the queue */ 650 if code_mask_ev_calls = 0 & code_unmask_ev_calls ^= 0 then do; 651 call ipc_$unmask_ev_calls (code_unmask_ev_calls); 652 code_mask_ev_calls, code_unmask_ev_calls = -1; 653 end; 654 end; 655 656 free: static_label = retr; 657 call user_table_mgr_$free (utep); /* clear out abs user table entry */ 658 659 if aborting then go to retr; /* If unclaimed signal in progress give up. */ 660 661 /* Fall through and try to log in another process */ 662 663 /* But before we do ... 664* We just did a logout. So maybe a request on the load control list could log in now. 665* So clear the list and give them all a chance to try loging in. */ 666 667 if autbl.lc_list then /* if there is a non-empty list */ 668 call absentee_utility_$clear_lc_list; 669 670 /* ------------------------------------------------------- */ 671 672 /* This section is entered if a user has just queued a job or if admin has signalled that 673* it has increased max absentees. We will try to log in an absentee job if possible. */ 674 675 lg: 676 677 if ^autbl.abs_up | autbl.abs_stopped then /* don't allow absentee logins if */ 678 goto retr; /* absentee facility is stopped. */ 679 680 if anstbl.n_users > 0 then /* absentee not to take last APT entry */ 681 if (anstbl.n_users + slack) >= anstbl.max_users then do; 682 if abs_run_sw then 683 call sys_log_ (-1, "^a (abs run): System too full; no absentee jobs can be started now.", id); 684 goto retr; 685 end; 686 687 static_label = lgfail; /* in case blow in message seg stuff */ 688 689 utep = user_table_mgr_$allocate (PT_ABSENTEE); 690 if utep = null then go to retr; 691 ix = ute.ute_index; 692 693 code = 0; /* clear error code */ 694 695 ute.logout_type = "logi"; /* logout reason, in case of fault while logging in */ 696 697 call_au: /* come here when load control says no, 698* to defer request and get another */ 699 /* NOTE that code contains load control deferral reason */ 700 701 if abs_run_sw then /* if called by abs run command */ 702 ute.abs_run = "1"b; /* tell AU to find and run a particular job */ 703 704 call ipc_$mask_ev_calls (code_mask_ev_calls); 705 /* if a job is being deferred, code contains the deferral reason - 706* THUS code MIGHT BE AN INPUT VARIABLE HERE - BE CAREFUL */ 707 call absentee_utility_ (utep, abs_arg_ptr, code); /* get next candidate for absentee process */ 708 if code_mask_ev_calls = 0 & code_unmask_ev_calls ^= 0 then do; 709 call ipc_$unmask_ev_calls (code_unmask_ev_calls); 710 code_mask_ev_calls, code_unmask_ev_calls = -1; 711 end; 712 713 if code ^= 0 then do; /* if no job can log in now, we'll eventually go blocked */ 714 lgfail: static_label = retr; 715 call user_table_mgr_$free (utep); /* clear abs user table entry */ 716 autbl.aum_ctl = ""b; /* tell everyone that we quit 'cause there's nothing to do */ 717 if autbl.lc_list then /* if there's an lc list */ 718 call absentee_utility_$clear_lc_list; /* clear it, so we'll start fresh at next login wakeup */ 719 /* NOTE: if we only clear it when there's an absentee logout, 720* then foreground jobs waiting for slots to be vacated 721* by interactive logouts could be delayed unnecessarily. */ 722 go to retr; 723 end; 724 725 /* Call user control */ 726 727 ute.tty_id_code = "none"; 728 ute.tag = TAG_ABSENTEE; 729 call ioa_$rsnnl ("abs^d", ute.tty_name, i, ix); 730 731 anstbl.lock_count = anstbl.lock_count + 1; /* lock answer table */ 732 733 static_label = cleanup; /* In case of fault. */ 734 call as_meter_$enter (ABS_TRYLOG_METER); /* meter number and cost of login attempts */ 735 736 call lg_ctl_$abs_in (utep, status, code); /* try to login absentee user */ 737 /* if code is nonzero, it says why job couldn't log in */ 738 call as_meter_$exit (ABS_TRYLOG_METER); 739 740 if ute.login_result ^= 0 then do; /* if job cannot be logged in */ 741 if ute.args_ptr ^= null then call freen_ (ute.args_ptr); /* first, free its argument storage */ 742 if ute.arg_lengths_ptr ^= null then call freen_ (ute.arg_lengths_ptr); 743 744 if ute.login_result = 2 then do; /* if it could log in later */ 745 call unlock; /* unlock answer table before we forget we had it locked */ 746 goto call_au; /* go defer it and get another request */ 747 /* NOTE that deferral reason is being passed to AU in code */ 748 end; 749 /* else send user a message and then dispose of the request */ 750 call ioa_$rsnnl ("Unable to login job ^a. ^a", abort_message, j, ute.input_seg, status); 751 call notify_request_owner (abort_message); 752 go to no_go; 753 end; 754 755 /* Fill in absentee user table entry. lg_ctl_ and act_ctl_ will fill in standard part */ 756 757 ute.n_processes = 1; /* constants */ 758 call ipc_$decl_ev_call_chn (ute.event, absentee_user_manager_$absentee_user_manager_, 759 utep, ABS_LOGIN_PRIO, ignore_code); 760 761 ute.active = NOW_LOGGED_IN; /* Indicate that slot is in use. */ 762 763 call act_ctl_$open_account (utep); /* open account for absentee user session */ 764 call cpg_$cpg_abs (utep, code); /* create absentee process */ 765 if code ^= 0 then do; /* Oh, ick */ 766 call sys_log_$error_log (1, code, id, "Creating proc for ^a.^a", 767 ute.person, ute.project); 768 call convert_status_code_ (code, shxx, loxx); 769 call ioa_$rsnnl ("Unable to create process for job ^a. ^a", abort_message, j, ute.input_seg, loxx); 770 call notify_request_owner (abort_message); 771 go to cleanup; 772 end; 773 774 static_label = destroy1; /* In case of fault, kill process. */ 775 if ute.queue > 0 then /* count background jobs */ 776 autbl.n_abs (ute.queue) = autbl.n_abs (ute.queue) + 1; 777 778 call act_ctl_$cp (utep); /* start process accounting */ 779 ute.active = NOW_HAS_PROCESS; /* Indicate that there is now a process. */ 780 ute.destroy_flag = WAIT_LOGOUT_SIG; /* And that the next thing to happen is logout. */ 781 call unlock; /* unlock answer table */ 782 783 if ute.args_ptr ^= null then call freen_ (ute.args_ptr); /* Free args .. copied into PIT */ 784 if ute.arg_lengths_ptr ^= null then call freen_ (ute.arg_lengths_ptr); 785 786 if ute.reservation_id ^= 0 then do; /* if this job has a reservation */ 787 call rcp_sys_$pre_claim (ute.reservation_id, /* tell RCP the process id to which it belongs */ 788 rtrim (ute.person) || "." || rtrim (ute.project) || ".*", ute.proc_id, code); 789 if code ^= 0 then /* noentry = no such reservation; 790* badcall = reservation doesn't belong to this user */ 791 call sys_log_$error_log (1, code, id, "attempting to pre-claim reservation ^a for ^a.^a ^a", 792 request_id_ (ute.reservation_id), ute.person, ute.project, ute.tty_name); 793 end; 794 795 /* Set cpu monitor to limit the cpu time this process can use. */ 796 797 cpu_time_limit = ute.max_cpu_time * 1000000; /* convert seconds to usec. */ 798 call hphcs_$set_cpu_monitor (ute.proc_id, cpu_time_limit, ignore_code); 799 800 /**** Now kick the process out of its initially blocked state */ 801 802 call asu_$start_process (utep); 803 804 /* Notify user, if requested, and rewrite job in queue to show that it's running. */ 805 806 if ute.notify then /* if user asked for notification */ 807 call notify ("logged in"); /* tell him it logged in */ 808 call absentee_utility_$mark_request_running (utep); /* do what the name implies */ 809 810 /* We're all finished logging in one absentee request. There might be others that could log in. 811* Instead of trying to log more in now, we'll go blocked and give other answering service work, of higher 812* priority (e.g., interactive logins) a chance to get done. But we'll send ourselves a wakeup ("aum_ctl") over 813* the login event channel, so that we'll get a chance to run again when there's nothing of higher priority to be done. 814* 815* (If we're here because of an operator "abs run" command, we don't bother sending the wakeup.) */ 816 817 if ^abs_run_sw then /* if not abs run command */ 818 call absentee_utility_$au_send_ctl_wakeup; /* then go send the wakeup */ 819 820 retr: 821 static_label = retr1; 822 do i = -1 to 4; /* see if we need to set a resource timer */ 823 if autbl.rsc_waiting (i) > 0 then /* if there are jobs waiting for resources */ 824 if available_slots_ (max (1, i), autbl.max_abs_users, (autbl.qres), (autbl.n_abs)) > 0 then do; 825 /* and there are slots available to them */ 826 call absentee_utility_$set_resource_timer; /* check for resource availability periodically */ 827 i = 4; /* get out of the loop */ 828 end; 829 end; 830 831 if code_mask_ev_calls = 0 & code_unmask_ev_calls ^= 0 then 832 call ipc_$unmask_ev_calls (code_unmask_ev_calls); /* event calls should not be masked now; we have no reason to 833* believe they are, but we're just being cautious */ 834 835 if trace & ^abs_run_sw then do; 836 static_label = retr1; 837 call hcs_$get_usage_values (pf, cpu, pp); 838 secs = (cpu - old_cpu) * 1e-6; 839 call sys_log_ (1, "^a: Trace ^.3f ^a ^w ^w", id, secs, ev_msg2.what, 840 ev_msg2.ix, ev_msg.from_proc); 841 end; 842 843 retr1: static_label = return_immediately; 844 call as_meter_$exit (AUM_METER); 845 846 return_immediately: 847 return; 848 849 inval_mess: call sys_log_ (1, "^a: Strange event message ^w^w from Initializer", id, ev_msg2.what, ev_msg2.ix); 850 go to retr; 851 852 evil: call asu_$find_process (ev_msg.from_proc, i, utep); 853 if utep = null then 854 call sys_log_ (1, "^a: Strange event message ^24.3b from user proc ^w", 855 id, ev_msg.ev_message, ev_msg.from_proc); 856 else 857 call sys_log_ (1, "^a: Strange event message ^24.3b from ^a.^a ^a", 858 id, ev_msg.ev_message, ute.person, ute.project, ute.tty_name); 859 go to retr; 860 861 log_ignored_msg: 862 call sys_log_ (0, "^a: ignored wakeup ^24.3b from ^w for ^a", 863 id, ev_msg.ev_message, ev_msg.from_proc, absentee_tty_name); 864 goto retr; 865 866 /* ENTRY: cancel_absentee 867* This entry point cancels a specified job. It is called by 868* asr_abs_command_server_ after the canceller has already been validated. 869* 870* This entry hacks up the information aum_ requires. In the future, when 871* all the IPC garbage has been removed from this module, this can be made 872* much cleaner. */ 873 874 cancel_absentee: entry (P_job_ptr); 875 dcl (P_job_ptr) ptr; 876 dcl 1 hack_event_message aligned like ev_msg; 877 878 autp = as_data_$autp; 879 ansp = as_data_$ansp; 880 881 call as_meter_$enter (AUM_METER); 882 883 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 884 /* */ 885 /* Do NOT establish a cleanup on unit here. Since UTEp is input, we may not */ 886 /* free it if an error occurs. Also, since what failed is the cancellation */ 887 /* attempt and the job is still running, we shouldn't free its UTE. */ 888 /* */ 889 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 890 891 code_mask_ev_calls, code_unmask_ev_calls = -1; 892 utep = P_job_ptr; 893 call condition_ ("any_other", ucs); 894 static_label = retr; 895 896 /* bump_reasons (6) = User bump. This code will have to change if 897* admin_$abs is modified to call this entry point to bump or cancel 898* a specific absentee. */ 899 reason = bump_reasons (6); 900 901 /* This is needed solely for the call to dpg_. */ 902 ev_msg_ptr = addr (hack_event_message); 903 ev_msg2.what, ute.logout_type = "canc"; 904 goto destroy1; 905 906 /* ENTRY POINT to log in any absentee. It is called by asr_abs_command_server_ 907* to wakeup AUM to see if a newly-entered job can be run. It just branches 908* to lg. */ 909 910 login_any_absentee: entry; 911 912 autp = as_data_$autp; 913 ansp = as_data_$ansp; 914 call as_meter_$enter (AUM_METER); 915 utep = null; 916 code_mask_ev_calls, code_unmask_ev_calls = -1; 917 call condition_ ("cleanup", cleaner_up); 918 call condition_ ("any_other", ucs); 919 static_label = retr; 920 go to lg; 921 922 /* ENTRY POINT to log in a specified job. Called by admin when abs run command is given. */ 923 924 aum_abs_run: entry (a_arg_ptr); 925 926 dcl a_arg_ptr ptr; /* ptr to structure describing job to be run */ 927 928 autp = as_data_$autp; 929 ansp = as_data_$ansp; 930 call as_meter_$enter (AUM_METER); 931 utep = null; 932 static_label = retr; 933 code_mask_ev_calls, code_unmask_ev_calls = -1; 934 call condition_ ("cleanup", cleaner_up); 935 call condition_ ("any_other", ucs); 936 abs_run_sw = "1"b; /* remember where we came in */ 937 abs_arg_ptr = a_arg_ptr; /* copy ptr to arg structure */ 938 goto lg; /* go get an aute and call AU to get the job from the Q */ 939 940 941 abs_as_init: entry; 942 943 /* entry called when system is brought up */ 944 945 autp = as_data_$autp; 946 ansp = as_data_$ansp; 947 code_mask_ev_calls, code_unmask_ev_calls = -1; 948 949 if ^sc_stat_$Multics_typed | sc_stat_$Go_typed then do /* no! */ 950 code = error_table_$out_of_sequence; 951 init_error: call sub_err_ (code, initid, "s"); 952 return; 953 end; 954 call hcs_$truncate_seg (autp, 0, code); /* truncate absentee user table */ 955 if code ^= 0 then do; 956 call sys_log_$error_log (1, code, initid, "Cannot truncate absentee_user_table."); 957 go to init_error; 958 end; 959 autbl.mnbz = "1"b; /* cause records used > 0 */ 960 /* now those having r access can read header */ 961 autbl.header_version = AUTBL_version_4; /* set up some other bumf */ 962 autbl.entry_version = UTE_version_4; 963 autbl.user_table_type = PT_ABSENTEE; /* absentee table */ 964 autbl.header_length = fixed (rel (addr (autbl.entry (1)))); 965 autbl.max_size = divide (sys_info$max_seg_size - autbl.header_length, size (ute), 17, 0); 966 autbl.number_free, autbl.first_free = 0; 967 968 if abs_stop_before_startup then /* abs stop command given before startup */ 969 autbl.abs_stopped = "1"b; /* this means don't start absentee */ 970 call update_whotab_abs_copy; /* just like it says */ 971 return; 972 973 974 init_aum: entry (a_code); 975 976 dcl a_code fixed bin (35); 977 978 /* entry called when absentee facility is brought up */ 979 980 autp = as_data_$autp; 981 ansp = as_data_$ansp; 982 code_mask_ev_calls, code_unmask_ev_calls = -1; 983 984 unspec (unlock_msg) = unspec (unlock_string); /* initialize message sent by unlock procedure */ 985 call ipc_$create_ev_chn (absentee_rq_chn, a_code);/* Create event channels. */ 986 if a_code ^= 0 then go to chn_error; 987 988 call ipc_$decl_ev_call_chn (absentee_rq_chn, absentee_user_manager_$absentee_user_manager_, 989 (null), ABS_LOGIN_PRIO, a_code); 990 if a_code ^= 0 then do; 991 chn_error: call sys_log_$error_log (2, a_code, id, "Cannot create absentee event channel."); 992 return; 993 end; 994 995 call get_process_id_ (absentee_procid); /* get process id of absentee user manager */ 996 autbl.as_procid = absentee_procid; /* copy process id into absentee_user_table */ 997 whotab.abs_procid = absentee_procid; /* copy process id and event channel into whotable */ 998 whotab.abs_event = absentee_rq_chn; /* so that ear can send wakeup to absentee */ 999 1000 call absentee_utility_$init_au (a_code); 1001 /* initialize utility which handles message segment */ 1002 if a_code ^= 0 then do; 1003 call sys_log_ (1, "^a: ^a ^a", id, error_message_2, error_message_3); 1004 return; 1005 end; 1006 call update_whotab_abs_copy; 1007 1008 return; 1009 1010 term_aum: entry; 1011 1012 /* entry call when absentee facility is shutdown */ 1013 1014 autp = as_data_$autp; 1015 ansp = as_data_$ansp; 1016 code_mask_ev_calls, code_unmask_ev_calls = -1; 1017 1018 if ^sc_stat_$Go_typed then do; /* abs stop command given before startup */ 1019 abs_stop_before_startup = "1"b; /* remember this in int static since startup truncates AUTBL */ 1020 return; 1021 end; 1022 1023 call ipc_$delete_ev_chn (absentee_rq_chn, code); 1024 1025 whotab.abs_procid = (36)"0"b; 1026 whotab.abs_event = 0; 1027 1028 call absentee_utility_$term_au; 1029 call update_whotab_abs_copy; 1030 1031 return; 1032 1033 aum_trace: entry; 1034 1035 trace = "1"b; 1036 1037 return; 1038 1039 aum_no_trace: entry; 1040 1041 trace = "0"b; 1042 1043 return; 1044 1045 update_whotab_abs_control: entry; 1046 1047 autp = as_data_$autp; 1048 ansp = as_data_$ansp; 1049 call update_whotab_abs_copy; /* call internal procedure to do work */ 1050 return; 1051 1052 /* INTERNAL PROCEDURES, IN ALPHABETIC ORDER */ 1053 1054 cleaner_up: proc; 1055 if utep = null then return; 1056 call user_table_mgr_$free (utep); 1057 end cleaner_up; 1058 1059 notify: proc (message); /* user said ear -notify, so do so */ 1060 1061 dcl message char (*); 1062 1063 call ioa_$rsnnl ("Absentee job ^a ^a ^a.", 1064 abort_message, j, ute.input_seg, request_id_ (ute.request_id), message); 1065 call notify_request_owner (abort_message); 1066 return; 1067 1068 end notify; 1069 1070 notify_request_owner: proc (message); /* send message to owner of absentee request in aute */ 1071 1072 dcl message char (*); 1073 1074 if ute.proxy then 1075 call ioa_$rsnnl ("^a.^a", hisid, (0), ute.proxy_person, ute.proxy_project); 1076 else call ioa_$rsnnl ("^a.^a", hisid, (0), ute.person, ute.project); 1077 call send_mail (hisid, ute.process_authorization, rtrim (message)); 1078 return; 1079 1080 end notify_request_owner; 1081 1082 reset_alarm: proc; 1083 1084 call timer_manager_$reset_alarm_wakeup (ute.event); 1085 return; 1086 1087 end reset_alarm; 1088 1089 send_mail: proc (user_id, auth, message); 1090 1091 dcl user_id char (32); 1092 dcl auth bit (72) aligned; 1093 dcl message char (*); 1094 1095 unspec (send_mail_info) = "0"b; 1096 send_mail_info.version = 1; 1097 send_mail_info.wakeup = "1"b; 1098 send_mail_info.always_add = "1"b; 1099 send_mail_info.sent_from = "absentee"; 1100 1101 call send_mail_$access_class (user_id, message, addr (send_mail_info), auth, code); 1102 if code ^= 0 1103 & code ^= error_table_$messages_deferred 1104 & code ^= error_table_$messages_off then 1105 call sys_log_$error_log (0, code, id, "Unable to notify user ^a of absentee event", user_id); 1106 return; 1107 1108 end send_mail; 1109 1110 ucs: proc (mcptr, condname, coptr, infoptr, continue); 1111 1112 dcl mcptr ptr parameter; 1113 dcl condname char (*) parameter; 1114 dcl coptr ptr parameter; 1115 dcl infoptr ptr parameter; 1116 dcl continue bit (1) parameter; 1117 dcl mbuf char (256) aligned; 1118 dcl mlth fixed bin; 1119 dcl non_local_exit bit (1); 1120 dcl as_check_condition_ entry (char (*), bit (1), bit (1)); 1121 1122 call as_check_condition_ (condname, continue, non_local_exit); 1123 if continue | non_local_exit then 1124 return; 1125 1126 call ioa_$rsnnl ("^a: Error: ^a", mbuf, mlth, id, condname); 1127 call sys_log_ (2, "^a", mbuf); 1128 call as_dump_ (mbuf); 1129 1130 aborting = "1"b; /* don't try to log any more guys in */ 1131 go to static_label; 1132 1133 end ucs; 1134 1135 unlock: procedure; 1136 1137 /* internal procedure to unlock answer table lock */ 1138 /* copied from dialup_ */ 1139 1140 dcl code fixed bin (35); 1141 anstbl.lock_count = anstbl.lock_count - 1; 1142 if anstbl.lock_count < 0 then anstbl.lock_count = 0; 1143 if anstbl.lock_count = 0 then 1144 if code_mask_ev_calls = 0 & code_unmask_ev_calls ^= 0 then 1145 call ipc_$unmask_ev_calls (code_unmask_ev_calls); 1146 1147 if anstbl.lock_count = 0 then if anstbl.update_pending = "1"b then 1148 do; 1149 anstbl.update_pending = "0"b; 1150 call hcs_$wakeup (anstbl.as_procid, anstbl.update_channel, unlock_msg, code); 1151 end; 1152 1153 end unlock; 1154 1155 update_whotab_abs_copy: proc; 1156 1157 /* procedure called when something in absentee_user_table has changed that should 1158* be reflected in the whotab published copy. */ 1159 1160 if whoptr = null then return; /* cover our posterior */ 1161 if autp = null then return; /* ditto */ 1162 whotab.n_abs (*) = autbl.n_abs (*); /* number in each queue */ 1163 whotab.abs_qres (*) = autbl.qres (*); /* background queue information */ 1164 whotab.abs_cpu_limit (*) = autbl.cpu_limit (*); /* auto or operator set cpu max */ 1165 string (whotab.abs_control) = string (autbl.control); /* little bitties */ 1166 return; /* all done */ 1167 end; 1168 1169 wakeup_error: proc (msg); 1170 1171 dcl msg char (*) varying; 1172 1173 call sys_log_ (0, "^a: ^a ^a.^a ^a", id, msg, ute.person, ute.project, ute.tty_name); 1174 return; 1175 1176 end wakeup_error; 1177 /* BEGIN INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The absentee user table is the control data base for the absentee */ 1 6 /* facility. It has a header, with scheduling parameters, then one user */ 1 7 /* table entry for each logged-in absentee job. */ 1 8 /* */ 1 9 /* Programs which use this table must also include */ 1 10 /* user_table_header.incl.pl1 and user_table_entry.incl.pl1. */ 1 11 /* */ 1 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 13 1 14 1 15 /****^ HISTORY COMMENTS: 1 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 17* Replace abs_user_tab.incl.pl1. 1 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 1 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 20* Use ut_header common to all user control tables. 1 21* END HISTORY COMMENTS */ 1 22 1 23 1 24 dcl AUTBL_version_4 fixed bin int static options (constant) init (4); 1 25 1 26 dcl autp ptr automatic init (null); 1 27 1 28 dcl 1 autbl based (autp) aligned, /* a per system table to store info on absentee processes */ 1 29 2 header like ut_header, /* Header common to all user tables. */ 1 30 1 31 /* Counter elements */ 1 32 2 n_abs_run fixed bin, /* actual number of absentee processes current */ 1 33 2 max_abs_users fixed bin, /* max number of background absentee processes permitted */ 1 34 2 n_background_abs fixed bin, /* number of absentee processes not from foreground queue */ 1 35 2 n_sec_fg fixed bin, /* number of secondary foreground absentee jobs */ 1 36 2 idle_units fixed bin, /* used in adjusting abs_maxu dynamically */ 1 37 2 abs_units fixed bin, /* part of anstbl.n_units used by background absentees */ 1 38 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 1 39 2 qres (4) fixed bin, /* number of slots reserved for each background queue */ 1 40 2 rsc_waiting (-1:4) fixed bin, /* number of requests waiting for resources, from each queue */ 1 41 2 qerr (-1:4) fixed bin, /* number of consecutive errors for q (dropped if > QERR_MAX) */ 1 42 2 cpu_limit (4) fixed bin (35), /* current per-queue cpu time limits */ 1 43 1 44 /* absentee user manager values. */ 1 45 2 defer_channel fixed bin (71), /* IPC for time-defered queue entries */ 1 46 2 absentee_rq_chn fixed bin (71), /* IPC channel for absentee requests */ 1 47 2 last_queue_searched fixed bin, /* highest queue looked at by scheduler */ 1 48 2 debugging fixed bin, /* take asdumps at strategic places */ 1 49 2 control, /* see also whotab.incl.pl1 */ 1 50 3 mnbz bit (1) unal, /* must not be zero */ 1 51 3 abs_maxu_auto bit (1) unal, /* 1 if abs maxu has not been set by operator command */ 1 52 3 abs_maxq_auto bit (1) unal, /* 1 if abs maxq has not been set by operator command */ 1 53 3 abs_qres_auto bit (1) unal, /* 1 if abs qres has not been set by operator command */ 1 54 3 abs_cpu_limit_auto bit (1) unal, /* 1 if abs cpu_limit has not been set by operator command */ 1 55 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue has been dropped because of errors */ 1 56 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 1 57 3 abs_stopped bit (1) unal, /* 1 if abs stop command was issued */ 1 58 /* both 1 if we're waiting for the last jobs to log out */ 1 59 3 aum_ctl bit (1) unal, /* for AUM to tell AU to start a new sequence */ 1 60 3 lc_list bit (1) unal, /* for AU to tell AUM that the lc list is non-empty */ 1 61 /* comments in AU and AUM explain aum_ctl and lc_list */ 1 62 3 control_pad (21) bit (1) unal, /* fill out rest of word */ 1 63 2 aum_pad fixed bin, 1 64 1 65 2 entry_pad (80) fixed bin, /* pad table header to 128 words */ 1 66 2 entry (0 refer (autbl.current_size)) like ute; 1 67 1 68 dcl AUTBL_CONTROL_NAMES (15) char(20) varying int static options(constant) init( 1 69 "mnbz", 1 70 "abs_maxu_auto", 1 71 "abs_maxq_auto", 1 72 "abs_qres_auto", 1 73 "abs_cpu_limit_auto", 1 74 "queue_dropped(-1)", 1 75 "queue_dropped( 0)", 1 76 "queue_dropped( 1)", 1 77 "queue_dropped( 2)", 1 78 "queue_dropped( 3)", 1 79 "queue_dropped( 4)", 1 80 "abs_up", 1 81 "abs_stopped", 1 82 "aum_ctl", 1 83 "lc_list"); 1 84 1 85 /* END INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1177 1178 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* The answer table has one entry per "login instance" whether completed or */ 2 6 /* not. It is connected to the Channel Definition Table by the pointer */ 2 7 /* "channel". The header is used mostly by dialup_. */ 2 8 /* */ 2 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 2 10 /* */ 2 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 12 2 13 /****^ HISTORY COMMENTS: 2 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 2 15* Replace anstbl.incl.pl1. 2 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 2 17* Add anstbl.session_uid_counter. 2 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 2 19* Add anstbl.message_update_time and named constants for values of 2 20* anstbl.session, and to make all padding explicit. 2 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 2 22* Change "entry" to a placeholder so as not to require 2 23* user_table_entry.incl.pl1. 2 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 2 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 2 26* Added the flag login_server_present which indicates whether a login 2 27* server request has been received. This is used to determine whether 2 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 2 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 2 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 2 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 32* A) Moved constants for ute.pw_flags.mask_ctl into 2 33* user_table_entry.incl.pl1. 2 34* B) Added common table header to all user tables. 2 35* END HISTORY COMMENTS */ 2 36 2 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 38 /* */ 2 39 /* The anstbl structure below is divided into sections. Each section begins */ 2 40 /* with a comment describing the elements in the section. Elements are */ 2 41 /* placed within a section, based upon their function or the programs that */ 2 42 /* use them. Each section begins on a double word and is an even number of */ 2 43 /* words long. */ 2 44 /* */ 2 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 46 2 47 2 48 2 49 /* format: style4 */ 2 50 2 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 2 52 2 53 dcl ansp ptr automatic init (null); 2 54 2 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 2 56 2 header like ut_header, /* Header common to all user tables. */ 2 57 2 58 /* Counter elements. */ 2 59 2 nlin fixed bin, /* number of active lines */ 2 60 2 mxlin fixed bin, /* maximum number of active lines */ 2 61 2 n_users fixed bin, /* number of logged-in users */ 2 62 2 max_users fixed bin, /* maximum number of users allowed */ 2 63 2 n_units fixed bin, /* number of logged in units */ 2 64 2 max_units fixed bin, /* maximum number of units */ 2 65 2 n_sessions fixed bin, /* number of Multics sessions */ 2 66 2 n_pad fixed bin, 2 67 2 68 /* Name elements. */ 2 69 2 sysdir char (64) unal, /* name of main system control directory */ 2 70 2 as_tty char (8) unal, /* name of main answering service device. */ 2 71 2 72 /* Login elements. */ 2 73 2 login_word char (8) unal, /* login word if special_session=1 */ 2 74 2 session char (8) unal, /* session indicator */ 2 75 2 special_message char (128) unal, /* message to be printed for special session */ 2 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 2 77 2 message_lng fixed bin, /* length of special message */ 2 78 2 login_pad fixed bin, 2 79 2 80 /* Table update elements. */ 2 81 2 lock_count fixed bin, /* global lock for all system control tables */ 2 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 2 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 2 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 2 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 2 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 2 87 2 update_pad fixed bin, 2 88 2 89 /* dialup_ data values. */ 2 90 2 current_time fixed bin (71), /* Time of last transaction */ 2 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 2 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 2 93 2 94 /* load_ctl_ elements. */ 2 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 2 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 2 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 2 98 /* load_ctl_ load leveling desired response range: */ 2 99 2 response_high fixed bin, /* bad if user response time slower than this */ 2 100 2 response_low fixed bin, /* bad if user response time faster than this */ 2 101 2 load_ctl_pad fixed bin, 2 102 2 103 /* Login server request server data. */ 2 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 2 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 2 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 2 107 2 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 2 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 2 110 3 contents (UTE_SIZE) fixed bin; 2 111 2 112 /* constants */ 2 113 2 114 /* values for anstbl.session */ 2 115 2 116 dcl (AT_NORMAL init ("normal "), 2 117 AT_SPECIAL init ("special "), 2 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 2 119 2 120 dcl UTE_SIZE fixed bin internal static initial (300); 2 121 2 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 1178 1179 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 3 2 3 3 /* format: style4 */ 3 4 3 5 /* This file must be kept in sync with as_data_.alm */ 3 6 3 7 /****^ HISTORY COMMENTS: 3 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 3 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 3 10* Remove references to the 963 and 029 preaccess commands and remove support 3 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 3 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 3 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 3 14* Add references to as_data_ entrypoints added for Login Server. 3 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 3 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 3 17* Added new user signal field of inacrcvd (14) to handle inactivity response 3 18* from user. 3 19* END HISTORY COMMENTS */ 3 20 3 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 3 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 3 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 3 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 3 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 3 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 3 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 3 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 3 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 3 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 3 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 3 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 3 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 3 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 3 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 3 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 3 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 3 38 dcl as_data_$g115_dim char (32) ext static; 3 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 3 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 3 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 3 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 3 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 3 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 3 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 3 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 3 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 3 48 dcl as_data_$request_priority fixed bin ext static; 3 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 3 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 3 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 3 52 dcl as_data_$satp ptr ext static; /* SAT */ 3 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 3 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 3 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 3 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 3 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 3 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 3 59 dcl as_data_$version char (8) ext static; /* AS version */ 3 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 3 61 3 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 3 63 2 n_login_args fixed bin, 3 64 2 pad fixed bin, 3 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 3 66 3 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 3 68 2 n_signals fixed bin, 3 69 2 pad fixed bin, 3 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 3 71 3 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 3 73 2 n_system_signals fixed bin, 3 74 2 pad fixed bin, 3 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 3 76 3 77 dcl as_data_$login_words fixed bin ext static aligned, 3 78 /* interactive login words */ 3 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 3 80 2 n_words fixed bin, 3 81 2 pad fixed bin, 3 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 3 83 3 84 dcl as_data_$debug_flag bit (1) aligned external static; 3 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 3 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 3 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 3 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 3 89 3 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 1179 1180 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 4 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 7* Removed ansp, autp and dutp from this include file, adding them to 4 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 4 9* daemon_user_table.incl.pl1. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* This include file requires as_data_.incl.pl1 */ 4 14 4 15 /* format: style4 */ 4 16 4 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 4 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 4 19 dcl asmtp ptr defined (as_data_$asmtp); 4 20 dcl devtabp ptr defined (as_data_$devtabp); 4 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 4 22 dcl mgtp ptr defined (as_data_$mgtp); 4 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 4 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 4 25 dcl sat_htp ptr defined (as_data_$sat_htp); 4 26 dcl satp ptr defined (as_data_$satp); 4 27 dcl scdtp ptr defined (as_data_$cdtp); 4 28 dcl sysdir char (168) defined (as_data_$sysdir); 4 29 dcl whoptr ptr defined (as_data_$whoptr); 4 30 4 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 1180 1181 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 5 2 5 3 /* These are the names and numbers of the slots in as_meter_table 5 4* (see as_meter_table.incl.pl1). 5 5* 5 6* Written March 1980 by Tom Casey 5 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 5 8**/ 5 9 5 10 5 11 /****^ HISTORY COMMENTS: 5 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 5 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 5 14* A) Add NETUP_METER. 5 15* B) Add AS_METER_NAMES array. 5 16* END HISTORY COMMENTS */ 5 17 5 18 5 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 5 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 5 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 5 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 5 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 5 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 5 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 5 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 5 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 5 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 5 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 5 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 5 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 5 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 5 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 5 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 5 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 5 36* (the attempts might fail because of load control limits) */ 5 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 5 38 5 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 5 40 5 41 /* Bit length of recursion_possible equals highest slot number given above. */ 5 42 5 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 5 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 5 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 5 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 5 47 "FIXPDT", "TRYABSLG", "NETUP"); 5 48 5 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 1181 1182 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 6 2 6 3 /* This include file defines the priorities of all of the event channels used by the answering service. 6 4* 6 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 6 6* The names correspond to the functions of the event call handlers. 6 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 6 8* 6 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 6 10* See the code in those procedures for information on the handlers themselves 6 11* (which are entry variables in some cases, and thus could not be documented in this file). 6 12* 6 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 6 14* 6 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 6 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 6 17* 6 18* Written June 1981 by T. Casey for MR9.0 6 19* Modified 1984-10-15 BIM for sac -> as_request. 6 20* as_request is above login, since sac is important and 6 21* dial requests for already logged in users can take 6 22* first dibs over new logins. 6 23**/ 6 24 6 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 6 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 6 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 6 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 6 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 6 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 6 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 6 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 6 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 6 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 6 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 6 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 6 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 6 38 6 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 1182 1183 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 7 2 7 3 /* format: style4 */ 7 4 7 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 7 6 7 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 7 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 7 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 7 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 7 11* WAIT_DISCARD_WAKEUP 7 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 7 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 7 14**/ 7 15 7 16 /****^ HISTORY COMMENTS: 7 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 7 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 7 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 7 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 22* Add named constants for instance tags. 7 23* END HISTORY COMMENTS */ 7 24 7 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 7 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 7 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 7 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 7 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 7 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 7 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 7 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 7 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 7 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 7 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 7 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 7 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 7 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 7 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 7 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 7 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 7 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 7 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 7 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 7 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 7 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 7 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 7 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 7 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 7 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 7 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 7 52 ) fixed bin internal static options (constant); 7 53 7 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 7 55 /* names of ute.destroy_flag values */ 7 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 7 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 7 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 7 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 7 60 "wait remove"); /* -13 */ 7 61 7 62 /* Values for "cdte.state", typewriter state. */ 7 63 7 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 7 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 7 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 7 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 7 68 ) fixed bin internal static options (constant); 7 69 7 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 7 71 /* names of cdte.state values */ 7 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 7 73 7 74 /* Values for "cdte.in_use" and "ate.active" */ 7 75 7 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 7 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 7 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 7 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 7 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 7 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 7 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 7 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 7 84 ) fixed bin internal static options (constant); 7 85 7 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 7 87 /* names of ute.active values */ 7 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 7 89 7 90 7 91 /**** Values for ute.tag */ 7 92 7 93 dcl (TAG_INTERACTIVE init("a"), 7 94 TAG_UFT init("f"), 7 95 TAG_ABSENTEE init("m"), 7 96 TAG_PROXY init("p"), 7 97 TAG_DAEMON init("z") 7 98 ) char(1) int static options(constant); 7 99 7 100 7 101 /**** Following are constants used to indicate to the process termination 7 102* handler the reason for the process termination. They are used by 7 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 7 104* uc_ls_destroy_request_. */ 7 105 7 106 dcl ( 7 107 PT_FPE initial (1), 7 108 PT_LOGOUT initial (4), 7 109 PT_NEW_PROC_AUTH initial (13), 7 110 PT_HANGUP initial (20), 7 111 PT_SHUTDOWN initial (21), 7 112 PT_BUMP initial (22), 7 113 PT_ALARM initial (23), 7 114 PT_DETACH initial (24), 7 115 PT_UNBUMP initial (25), 7 116 PT_OPERATOR_TERMINATE initial (27), 7 117 PT_DESTROY_REQUEST initial (30), 7 118 PT_NEW_PROC_REQUEST initial (31) 7 119 ) fixed bin (17) internal static options (constant); 7 120 7 121 /**** Values for ute.preempted: 7 122* -1 user unbumped after term signal sent 7 123* 0 user unbumped; ignore alarm___ 7 124* 1 value internally used in load_ctl_ 7 125* 2 user bumped; when alarm___ comes in, send term signal 7 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 7 127* signals come in 7 128* 4 user bumped; process sick, so destroy without sending term signal 7 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 7 130* termsgnl). */ 7 131 7 132 dcl ( 7 133 PREEMPT_UNBUMP initial (-1), 7 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 7 135 PREEMPT_LOAD_CTL initial (1), 7 136 PREEMPT_BUMPED initial (2), 7 137 PREEMPT_TERM_SENT initial (3), 7 138 PREEMPT_BUMPED_NO_TERM initial (4), 7 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 7 140 ) fixed bin (17) internal static options(constant); 7 141 7 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 7 143 "unbumped", 7 144 "not bumped, ignore alarm___", 7 145 "load_ctl_", 7 146 "bumped", 7 147 "bumped, trm_ sent", 7 148 "bumped without trm_", 7 149 "bumped, termsgnl received"); 7 150 7 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 1183 1184 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 8 2 8 3 /* Modified 740723 by PG to add short AIM access names */ 8 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 8 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 8 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 8 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 8 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 8 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 8 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 8 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 8 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 8 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 8 14* strict_trusted_path. */ 8 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 8 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 8 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 8 18 8 19 8 20 /****^ HISTORY COMMENTS: 8 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 8 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 8 23* added vchn_requires_accept parameter. 8 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 8 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 26* Correct formatting problems. 8 27* END HISTORY COMMENTS */ 8 28 8 29 8 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 8 31 8 32 8 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 8 34 2 part_1 like installation_parms_part_1 aligned, 8 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 8 36 8 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 8 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 8 39 8 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 8 41 2 installation_id char (32), /* Name printed at dialup and in who */ 8 42 2 company char (64), /* company name */ 8 43 2 department char (64), /* department */ 8 44 2 companyds char (120), /* company, double spaced */ 8 45 2 departmentds char (120), /* dpeartment double spaced */ 8 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 8 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 8 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 8 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 8 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 8 51 2 ndevices fixed bin, /* number of devices to charge */ 8 52 2 devtab (16), /* Maximum 16 */ 8 53 3 device_id char (8), /* Name of device */ 8 54 3 device_price (0: 7) float bin, /* Price by shift */ 8 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 8 56 2 warning_time fixed bin, /* seconds from warning to logout */ 8 57 2 login_time fixed bin, /* seconds in which to complete login */ 8 58 2 acct_update fixed bin, /* seconds between acct update */ 8 59 2 login_tries fixed bin, /* number of login tries allowed */ 8 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 8 61 2 registration_price float bin, /* fee per month per user */ 8 62 2 dolsign char (1), /* "dollar sign" */ 8 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 8 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 8 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 8 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 8 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 8 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 8 69* Initializer will copy the syserr_log */ 8 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 8 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 8 72 2 fatal_error_loop_count fixed bin (17) unaligned, 8 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 8 74 2 term_real_time_seconds fixed bin (17) unaligned, 8 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 8 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 8 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 8 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 8 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 8 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 8 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 8 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 8 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 8 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 8 85 2 level_names (0:7) char (32), /* Names for security levels. */ 8 86 2 category_names (18) char (32), /* Names for security categories. */ 8 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 8 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 8 89 2 ncon fixed bin, /* Number of config elements. */ 8 90 2 cona (51), /* each entry is 5 words long */ 8 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 8 92 3 shift fixed bin (5) unal, /* Shift number */ 8 93 3 x1 fixed bin (23) unal, 8 94 3 kmem fixed bin (17) unal, /* Memory size */ 8 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 8 96 3 x2 fixed bin (17) unal, 8 97 3 maxa fixed bin (11) unal, /* Max abs users */ 8 98 3 maxq fixed bin (5) unal, /* Max abs q */ 8 99 3 maxu_base fixed bin (17) unal, 8 100 3 response_high fixed bin (17) unal, 8 101 3 response_low fixed bin (17) unal, 8 102 3 x3 fixed bin (17) unal, 8 103 8 104 /* Absentee control parameters. New for MR7.0 */ 8 105 8 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 8 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 8 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 8 109 8 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 8 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 8 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 8 113 8 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 8 115 8 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 8 117 8 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 8 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 8 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 8 121 2 version fixed bin (35), /* must be 2 */ 8 122 2 nrates fixed bin, /* number of rate structures */ 8 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 8 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 8 125 2 require_operator_login bit (1) aligned, /* just what it says */ 8 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 8 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 8 128* mcacs segments for operators */ 8 129 2 password_min_length fixed bin, /* minimum length of passwords */ 8 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 8 131 2 password_change_interval fixed bin, /* number of days until must change */ 8 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 8 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 8 134* "accepted" by operator if personid is not 8 135* signed on system console */ 8 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 8 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 8 138* or someone miscounted when using part of pad2 */ 8 139 8 140 8 141 /* Entries in the following array may be accessed via system_info_$resource_price. 8 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 8 143 8 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 8 145 2 name char (32), 8 146 2 price float bin; 8 147 9 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 9 2 9 3 /* Created on 04/24/78 by Michael R. Jordan */ 9 4 /* Modified 04/10/79 by C. D. Tavares */ 9 5 9 6 dcl rifp ptr; 9 7 9 8 dcl 1 rcp_init_flags based (rifp), 9 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 9 10 2 pad1 bit (2) unaligned, /* obsolete */ 9 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 9 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 9 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 9 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 9 15 9 16 dcl (No_authentication initial (0), 9 17 Nominal_authentication initial (1), 9 18 Automatic_authentication initial (2), 9 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 9 20 9 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 9 22 ("none", "nominal", "automatic", "manual"); 9 23 9 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 8 148 8 149 8 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1184 1185 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 10 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 10 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 10 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 10 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 10 10* Reorganized by type of data to improve readability. 10 11* END HISTORY COMMENTS */ 10 12 10 13 10 14 /* ACCESS NAMES */ 10 15 dcl ( 10 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 10 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 10 18 ) char(32) ext static; 10 19 10 20 /* PATHNAMES */ 10 21 dcl ( 10 22 sc_stat_$info_dir, /* admin info segs directory */ 10 23 sc_stat_$log_dir, /* as log segs directory */ 10 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 10 25 sc_stat_$sysdir /* system control directory */ 10 26 ) char(168) ext static; 10 27 10 28 /* OTHER CHAR STRINGS */ 10 29 dcl ( 10 30 sc_stat_$master_channel /* Master TTY channel. */ 10 31 ) char(6) aligned ext static; 10 32 10 33 /* LABELS */ 10 34 dcl ( 10 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 10 36 /* ssu_$null_label unless */ 10 37 /* admin_listener is active. */ 10 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 10 39 /* attributable to a particular */ 10 40 /* command. */ 10 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 10 42 ) label variable ext static; 10 43 10 44 /* POINTERS TO */ 10 45 dcl ( 10 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 10 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 10 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 10 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 10 50 /* by sys_log_. */ 10 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 10 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 10 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 10 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 10 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 10 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 10 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 10 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 10 59 ) ptr ext static; 10 60 10 61 /* SWITCHES */ 10 62 dcl ( 10 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 10 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 10 65 sc_stat_$Multics, /* TRUE after answering service started */ 10 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 10 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 10 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 10 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 10 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 10 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 10 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 10 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 10 74 /* if PNT not yet available. */ 10 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 10 76 sc_stat_$test_mode, /* TRUE if in test environment */ 10 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 10 78 /* by operator signed on system console*/ 10 79 ) bit(1) aligned ext static; 10 80 10 81 10 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 1185 1186 /* BEGIN send_mail_info include file */ 11 2 11 3 dcl send_mail_info_version_2 fixed bin init(2); 11 4 11 5 dcl 1 send_mail_info aligned, 11 6 2 version fixed bin, /* = 2 */ 11 7 2 sent_from char(32) aligned, 11 8 2 switches, 11 9 3 wakeup bit(1) unal, 11 10 3 mbz1 bit(1) unal, 11 11 3 always_add bit(1) unal, 11 12 3 never_add bit(1) unal, 11 13 3 notify bit(1) unal, 11 14 3 acknowledge bit(1) unal, 11 15 3 mbz bit(30) unal; 11 16 11 17 /* END send_mail_info include file */ 1186 1187 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 12 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 12 7* Added sl_info structure and associated named constants for use in calling 12 8* sys_log_$general. 12 9* END HISTORY COMMENTS */ 12 10 12 11 12 12 /* format: style4 */ 12 13 12 14 dcl ( 12 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 12 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 12 17 SL_TYPE init (-1), /* type message */ 12 18 SL_LOG_SILENT init (0), /* log message */ 12 19 SL_LOG init (1), /* log & type message */ 12 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 12 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 12 22 ) fixed bin internal static options (constant); 12 23 12 24 dcl 1 sl_info aligned automatic, 12 25 2 version char(8), /* structure version */ 12 26 2 arg_list_ptr ptr, /* arg_list with values */ 12 27 2 loc, 12 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 12 29 /* These flags control where the corresponding data item is found.*/ 12 30 /* -1: data appears in the corresponding structure element below */ 12 31 /* 0: data is not present anywhere */ 12 32 /* +N: data is Nth item in argument list pointed to by */ 12 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 12 34 /* corresponding structure element. */ 12 35 /* if data = +N: */ 12 36 /* argN is data_ptr, argN+1 is data_len */ 12 37 /* if ioa_msg = +N: */ 12 38 /* argN+1, ... argLAST are arguments substituted into the */ 12 39 /* ioa_msg control string. The formatted msg is returned. */ 12 40 2 flags, 12 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 12 42 3 flags_pad bit(35) unal, 12 43 2 mode fixed bin, /* as-mode, command-mode */ 12 44 2 severity fixed bin, /* error severity */ 12 45 2 code fixed bin(35), /* error table code */ 12 46 2 caller char(65) varying, /* caller refname$entryname*/ 12 47 2 data, /* binary data ptr/length */ 12 48 3 data_ptr ptr, 12 49 3 data_lth fixed bin(21), 12 50 2 class char(10) varying, /* binary data class */ 12 51 2 ioa_msg char(500) varying; /* formatted message text */ 12 52 12 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 54 /* */ 12 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 12 56 /* their data types should be as shown in the structure above, except that */ 12 57 /* character strings should be char(*) nonvarying. */ 12 58 /* */ 12 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 60 12 61 /* value for sl_info.version */ 12 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 12 63 12 64 /* values for sl_info.mode */ 12 65 dcl (SL_INFO_as_mode init(1), 12 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 12 67 12 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 12 69 dcl (SL_INFO_arg_given_in_structure init(-1), 12 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 12 71 12 72 12 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 74 /* */ 12 75 /* The following static structures are commonly used in the Login Server */ 12 76 /* user control software. */ 12 77 /* */ 12 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 79 12 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 12 81 12 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 12 83 2 version char(8) init ("sl_info1"), 12 84 2 arg_list_ptr ptr init (null), 12 85 2 loc, 12 86 3 (mode init (-1), 12 87 severity init ( 1), 12 88 code init ( 2), 12 89 caller init (-1), 12 90 data init ( 0), 12 91 class init ( 0), 12 92 ioa_msg init ( 3)) fixed bin, 12 93 2 flags, 12 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 12 95 3 flags_pad bit(35) unal init ("0"b), 12 96 2 mode fixed bin init ( 1), 12 97 2 severity fixed bin init ( 0), 12 98 2 code fixed bin(35) init ( 0), 12 99 2 caller char(65) varying init (""), 12 100 2 data, 12 101 3 data_ptr ptr init (null), 12 102 3 data_lth fixed bin(21) init ( 0), 12 103 2 class char(10) varying init (""), 12 104 2 ioa_msg char(500) varying init (""); 12 105 12 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 12 107 12 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 12 109 2 version char(8) init ("sl_info1"), 12 110 2 arg_list_ptr ptr init (null), 12 111 2 loc, 12 112 3 (mode init (-1), 12 113 severity init ( 1), 12 114 code init ( 0), 12 115 caller init (-1), 12 116 data init ( 0), 12 117 class init ( 0), 12 118 ioa_msg init ( 2)) fixed bin, 12 119 2 flags, 12 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 12 121 3 flags_pad bit(35) unal init ("0"b), 12 122 2 mode fixed bin init ( 1), 12 123 2 severity fixed bin init ( 0), 12 124 2 code fixed bin(35) init ( 0), 12 125 2 caller char(65) varying init (""), 12 126 2 data, 12 127 3 data_ptr ptr init (null), 12 128 3 data_lth fixed bin(21) init ( 0), 12 129 2 class char(10) varying init (""), 12 130 2 ioa_msg char(500) varying init (""); 12 131 12 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 12 133 12 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 12 135 2 version char(8) init ("sl_info1"), 12 136 2 arg_list_ptr ptr init (null), 12 137 2 loc, 12 138 3 (mode init (-1), 12 139 severity init ( 1), 12 140 code init ( 0), 12 141 caller init (-1), 12 142 data init ( 0), 12 143 class init ( 0), 12 144 ioa_msg init ( 2)) fixed bin, 12 145 2 flags, 12 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 12 147 3 flags_pad bit(35) unal init ("0"b), 12 148 2 mode fixed bin init ( 1), 12 149 2 severity fixed bin init ( 0), 12 150 2 code fixed bin(35) init ( 0), 12 151 2 caller char(65) varying init (""), 12 152 2 data, 12 153 3 data_ptr ptr init (null), 12 154 3 data_lth fixed bin(21) init ( 0), 12 155 2 class char(10) varying init (""), 12 156 2 ioa_msg char(500) varying init (""); 12 157 12 158 12 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 12 160 12 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 12 162 2 version char(8) init ("sl_info1"), 12 163 2 arg_list_ptr ptr init (null), 12 164 2 loc, 12 165 3 (mode init (-1), 12 166 severity init ( 1), 12 167 code init ( 2), 12 168 caller init (-1), 12 169 data init ( 0), 12 170 class init ( 0), 12 171 ioa_msg init ( 4)) fixed bin, 12 172 2 flags, 12 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 12 174 3 flags_pad bit(35) unal init ("0"b), 12 175 2 mode fixed bin init ( 1), 12 176 2 severity fixed bin init ( 0), 12 177 2 code fixed bin(35) init ( 0), 12 178 2 caller char(65) varying init (""), 12 179 2 data, 12 180 3 data_ptr ptr init (null), 12 181 3 data_lth fixed bin(21) init ( 0), 12 182 2 class char(10) varying init (""), 12 183 2 ioa_msg char(500) varying init (""); 12 184 12 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 12 186 12 187 dcl 1 sl_info_code_msg aligned int static options(constant), 12 188 2 version char(8) init ("sl_info1"), 12 189 2 arg_list_ptr ptr init (null), 12 190 2 loc, 12 191 3 (mode init (-1), 12 192 severity init (-1), 12 193 code init ( 1), 12 194 caller init (-1), 12 195 data init ( 0), 12 196 class init ( 0), 12 197 ioa_msg init ( 2)) fixed bin, 12 198 2 flags, 12 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 12 200 3 flags_pad bit(35) unal init ("0"b), 12 201 2 mode fixed bin init ( 1), 12 202 2 severity fixed bin init ( 0), 12 203 2 code fixed bin(35) init ( 0), 12 204 2 caller char(65) varying init (""), 12 205 2 data, 12 206 3 data_ptr ptr init (null), 12 207 3 data_lth fixed bin(21) init ( 0), 12 208 2 class char(10) varying init (""), 12 209 2 ioa_msg char(500) varying init (""); 12 210 12 211 12 212 /* Syntax: call Trace (ioa_ctl, args); */ 12 213 12 214 dcl 1 sl_info_msg aligned int static options(constant), 12 215 2 version char(8) init ("sl_info1"), 12 216 2 arg_list_ptr ptr init (null), 12 217 2 loc, 12 218 3 (mode init (-1), 12 219 severity init (-1), 12 220 code init ( 0), 12 221 caller init (-1), 12 222 data init ( 0), 12 223 class init ( 0), 12 224 ioa_msg init ( 1)) fixed bin, 12 225 2 flags, 12 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 12 227 3 flags_pad bit(35) unal init ("0"b), 12 228 2 mode fixed bin init ( 1), 12 229 2 severity fixed bin init ( 0), 12 230 2 code fixed bin(35) init ( 0), 12 231 2 caller char(65) varying init (""), 12 232 2 data, 12 233 3 data_ptr ptr init (null), 12 234 3 data_lth fixed bin(21) init ( 0), 12 235 2 class char(10) varying init (""), 12 236 2 ioa_msg char(500) varying init (""); 12 237 12 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 1187 1188 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 13 2 13 3 13 4 /****^ HISTORY COMMENTS: 13 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 13 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 13 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 13 8* attribute switches. 13 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 13 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 13 12* be deleted. 13 13* B) Add constants identifying attributes that can be changed by user at 13 14* login, etc. 13 15* END HISTORY COMMENTS */ 13 16 13 17 13 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 13 19 13 20 /* format: style4 */ 13 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 13 22 (2 administrator bit (1), /* 1 system administrator privileges */ 13 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 13 24 2 nobump bit (1), /* 2 user cannot be bumped */ 13 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 13 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 13 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 13 28* . of same project (distinct from "nobump") */ 13 29 2 nolist bit (1), /* 7 don't list user on "who" */ 13 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 13 31 2 multip bit (1), /* 9 user may have several processes */ 13 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 13 33 2 brief bit (1), /* 11 no login or logout message */ 13 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 13 35 2 vhomedir bit (1), /* 13 user may change homedir */ 13 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 13 37 2 sb_ok bit (1), /* 15 user may be standby */ 13 38 2 pm_ok bit (1), /* 16 user may be primary */ 13 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 13 40 2 daemon bit (1), /* 18 user may login as daemon */ 13 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 13 42 2 no_warning bit (1), /* 20 no warning message */ 13 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 13 44* . in PDT: this user has an individual load control group */ 13 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 13 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 13 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 13 48 2 pad bit (12)) unaligned; 13 49 13 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 13 51 ("none", /* 0 */ 13 52 "administrator", /* 1 */ 13 53 "primary_line", /* 2 */ 13 54 "nobump", /* 3 */ 13 55 "guaranteed_login", /* 4 */ 13 56 "anonymous", /* 5 */ 13 57 "nopreempt", /* 6 */ 13 58 "nolist", /* 7 */ 13 59 "dialok", /* 8 */ 13 60 "multip", /* 9 */ 13 61 "bumping", /* 10 */ 13 62 "brief", /* 11 */ 13 63 "vinitproc", /* 12 */ 13 64 "vhomedir", /* 13 */ 13 65 "nostartup", /* 14 */ 13 66 "no_secondary", /* 15 */ 13 67 "no_prime", /* 16 */ 13 68 "no_eo", /* 17 */ 13 69 "daemon", /* 18 */ 13 70 "", /* 19 vdim OBSOLETE */ 13 71 "no_warning", /* 20 */ 13 72 "igroup", /* 21 */ 13 73 "save_pdir", /* 22 */ 13 74 "disconnect_ok", /* 23 */ 13 75 "save_on_disconnect"); /* 24 */ 13 76 13 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 13 78 ("null", /* 0 */ 13 79 "admin", /* 1 */ 13 80 "", "", /* 2 - 3 */ 13 81 "guar", /* 4 */ 13 82 "anon", /* 5 */ 13 83 "", "", /* 6 - 7 */ 13 84 "dial", /* 8 */ 13 85 "multi_login", /* 9 */ 13 86 "preempting", /* 10 */ 13 87 "", /* 11 */ 13 88 "v_process_overseer", /* 12 */ 13 89 "v_home_dir", /* 13 */ 13 90 "no_start_up", /* 14 */ 13 91 "no_sec", /* 15 */ 13 92 "no_primary", /* 16 */ 13 93 "no_edit_only", /* 17 */ 13 94 "op_login", /* 18 */ 13 95 "", /* 19 */ 13 96 "nowarn", /* 20 */ 13 97 "", "", "", /* 21 - 23 */ 13 98 "save"); /* 24 */ 13 99 13 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 13 101 options(constant) init("000000000010000000010000000000000000"b); 13 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 13 103 13 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 13 105 options(constant) init("000000000010000000010000000000000000"b); 13 106 /* PDT value for (brief, no_warning) is default */ 13 107 13 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 13 109 options(constant) init("000100000110010000010000000000000000"b); 13 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 13 111 14 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 14 2 14 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 4 /* */ 14 5 /* This include file describes the attributes of an absentee job. It is */ 14 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 14 7 /* and PIT.incl.pl1. */ 14 8 /* */ 14 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 10 14 11 /****^ HISTORY COMMENTS: 14 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 14 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 14* Separated abs_attributes from the request structure 14 15* (abs_message_format.incl.pl1) so that the identical structure could be 14 16* used in the ute structure (user_table_entry.incl.pl1). 14 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 14 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 19* Added ABS_ATTRIBUTE_NAMES array. 14 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 14 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 14 22* Added the no_start_up flag. SCP6367 14 23* END HISTORY COMMENTS */ 14 24 14 25 dcl 1 user_abs_attributes aligned based, 14 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 14 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 14 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 14 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 14 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 14 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 14 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 14 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 14 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 14 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 14 36 2 attributes_pad bit (26) unaligned; 14 37 14 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 14 39 "restartable", 14 40 "user_deferred_until_time", 14 41 "proxy", 14 42 "set_bit_cnt", 14 43 "time_in_gmt", 14 44 "user_deferred_indefinitely", 14 45 "secondary_ok", 14 46 "truncate_absout", 14 47 "restarted", 14 48 "no_start_up"); 14 49 14 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 14 51 13 112 13 113 13 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 1188 1189 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 15 2 15 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 4 /* */ 15 5 /* This include file requires that the user include */ 15 6 /* user_attributes.incl.pl1 as well. It also includes */ 15 7 /* abs_attributes.incl.pl1 itself. */ 15 8 /* */ 15 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 15 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 15 11 /* */ 15 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 13 15 14 /****^ HISTORY COMMENTS: 15 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 15 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 15 17* This comment for hcom. 15 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 15 19* anstbl.incl.pl1, and dutbl.incl.pl1. 15 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 15 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 15 22* 84-07-12 BIM added min_process_authorization 15 23* 84-12-31 Keith Loepere added pdir_dir_quota 15 24* 85-01-16 by E. Swenson to add ute.session_uid 15 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 15 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 15 27* Added fields for DSA login server support. 15 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 15 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 15 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 15 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 15 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 15 33* Added disconnection_rel_minutes. 15 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 15 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 36* Changed structure under ute.abs_attributes to use like structure in 15 37* abs_attributes.incl.pl1. This allows the same attributes to be used 15 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 15 39* file. 15 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 15 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 15 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 15 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 45* A) Global reorganization to locate things by type of data. 15 46* B) Eliminate ute.uflags.logged_in. 15 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 15 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 49* A) Reduced overlength person and project fields to proper length. 15 50* B) Adjusted dialed-console section to begin on even word boundary. 15 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 15 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 53* Add ute.line_type. 15 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 15 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 15 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 15 57* for the storage. SCP6367 15 58* END HISTORY COMMENTS */ 15 59 15 60 /* format: style4 */ 15 61 15 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 63 /* */ 15 64 /* Each of the named sections below defines a type of data. Typing comes */ 15 65 /* from data associated with the ute entry itself, with the person, with */ 15 66 /* login argument data, from the main user of the data (eg, dialup_, */ 15 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 15 68 /* and is an even number of words long. The total structure is 300 decimal */ 15 69 /* words long. */ 15 70 /* */ 15 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 72 15 73 15 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 15 75 15 76 dcl utep pointer automatic init (null); 15 77 15 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 15 79 15 80 /* Variables which give state of this entry */ 15 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 15 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 15 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 15 84 2 next_free fixed bin, /* points to previous free entry */ 15 85 15 86 /* Information user gave about person_id associated with this entry. */ 15 87 2 person char (24) unal, /* user's name */ 15 88 2 project char (12) unal, /* project of absentee user */ 15 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 15 90 2 tag_pad bit (27) unal, 15 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 15 92 2 login_flags, /* flags for login data */ 15 93 3 cpw bit (1) unal, /* flag for wish to change password */ 15 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 15 95 3 special_pw unal, /* dial or slave */ 15 96 4 dial_pw bit (1) unal, /* true if dial -user */ 15 97 4 slave_pw bit (1) unal, /* true if slave -user */ 15 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 15 99 3 cda bit (1) unal, /* flag to change default authorization */ 15 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 15 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 15 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 15 103 3 pw_pad bit (25) unal, /* spare parts */ 15 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 15 105 /* Must remain last in pw_flags so it does not */ 15 106 /* appear in PW_FLAG_VALUES array below. */ 15 107 2 generated_pw char (8) unal, /* user must type this as new password */ 15 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 15 109 2 process_authorization bit (72), /* access_authorization of this process */ 15 110 15 111 /* Information user gave about process associated with this entry. */ 15 112 2 outer_module char (32) unal, /* Name of console dim */ 15 113 2 home_dir char (64) unal, /* initial home directory */ 15 114 2 init_proc char (64) unal, /* name of login responder */ 15 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 15 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 15 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 15 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 15 119 2 initial_ring fixed bin, /* ring process will be started in */ 15 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 15 121 2 ln_args fixed bin, /* length of string containing arguments */ 15 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 15 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 15 124 15 125 /* Most of the following information is relevant only to absentee processes */ 15 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 15 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 15 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 15 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 15 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 15 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 15 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 15 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 15 134* (but see uflags.adjust_abs_q_no). */ 15 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 15 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 15 137 2 abs_flags, 15 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 15 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 15 140 3 abs_flags_pad bit (34) unal, 15 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 15 142 2 sender char (32) unal, /* name of RJE station that job is from */ 15 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 15 144 2 proxy_project char (9) unal, 15 145 2 proxy_project_pad char (3) unal, 15 146 2 abs_pad fixed bin, 15 147 15 148 /* Information about process actually created */ 15 149 2 proc_id bit (36), /* process id of absentee process */ 15 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 15 151 2 process_authorization_range (2) bit (72) aligned, 15 152 2 audit bit (36), /* audit flags for user */ 15 153 2 lot_size fixed bin, /* Size of linkage offset table */ 15 154 2 kst_size fixed bin, /* Size of process known segment table */ 15 155 2 cls_size fixed bin, /* Size of process combined linkage */ 15 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 15 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 15 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 15 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 15 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 15 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 15 162 2 pdir_pad fixed bin(17) unal, 15 163 2 process_pad fixed bin, 15 164 15 165 /* Information about primary terminal associated with this entry */ 15 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 15 167 2 terminal_type char (32) unaligned, /* terminal type */ 15 168 2 line_type fixed bin, /* line type */ 15 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 15 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 15 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 15 172 15 173 /* Variables useful for dialed terminals */ 15 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 15 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 15 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 15 177 2 dial_server_flags, 15 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 15 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 15 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 15 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 15 182 15 183 /* Information about usage/accounting. Device usage meters are in a 15 184* separate segment, "devtab" */ 15 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 15 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 15 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 15 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 15 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 15 190 2 last_update_time fixed bin (71), /* time of last account update */ 15 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 15 192 2 ndevices fixed bin, /* Count of attached devices */ 15 193 2 device_head fixed bin, /* Table index of head of device chain */ 15 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 15 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 15 196 2 rs_number_pad bit(30) unal, 15 197 2 usage_pad fixed bin, 15 198 15 199 /* Information for dialup_ (control variables). */ 15 200 2 event fixed bin (71), /* event associated with channel or user manager */ 15 201 2 uprojp ptr, /* ptr to user project sat entry */ 15 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 15 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 15 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 15 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 15 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 15 207 2 count fixed bin, /* counter for logins and dialups */ 15 208 2 n_processes fixed bin, /* number of processes created in this session */ 15 209 2 lock_value fixed bin, /* number of locks set for this entry */ 15 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 15 211 2 login_code char (8) unal, /* login command from LOGIN line */ 15 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 15 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 15 214 2 logout_type char (4) unal, /* type of logout */ 15 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 15 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 15 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 15 218 2 work_class fixed bin, /* work class used by priority scheduler */ 15 219 2 group char (8) unal, /* party group identifier */ 15 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 15 221 15 222 2 uflags, /* Miscellaneous flags */ 15 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 15 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 15 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 15 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 15 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 15 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 15 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 15 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 15 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 15 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 15 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 15 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 15 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 15 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 15 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 15 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 15 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 15 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 15 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 15 242 3 uflags_pad bit (17) unal, 15 243 15 244 /* Information used by load_ctl_ for the process */ 15 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 15 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 15 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 15 248 15 249 15 250 /* Information for login server */ 15 251 2 login_server_info, 15 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 15 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 15 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 15 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 15 256 3 process_id bit (36) aligned, /* process_id of login server */ 15 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 15 258 15 259 /* values for ute.process_type */ 15 260 15 261 dcl (PT_INTERACTIVE initial (1), 15 262 PT_ABSENTEE initial (2), 15 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 15 264 15 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 15 266 "INVALID-TYPE", 15 267 "interactive", 15 268 "absentee", 15 269 "daemon"); 15 270 15 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 15 272 "UNKNOWN-TABLE", 15 273 "answer_table", 15 274 "absentee_user_table", 15 275 "daemon_user_table"); 15 276 15 277 15 278 /* values for ute.pw_flags.mask_ctl */ 15 279 15 280 dcl (DO_MASK init ("00"b), 15 281 DONT_MASK init ("01"b), 15 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 15 283 15 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 15 285 "do_mask", "dont_mask", "derive_mask", ""); 15 286 15 287 15 288 /* names for ute.pw_flags */ 15 289 15 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 15 291 "cpw", 15 292 "generate_pw", 15 293 "dial_pw", 15 294 "slave_pw", 15 295 "cdp", 15 296 "cda", 15 297 "auth_given", 15 298 "noprint", 15 299 "operator"); 15 300 15 301 /* names for ute.uflags */ 15 302 15 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 15 304 "dont_call_init_admin", 15 305 "ip_given", 15 306 "ss_given", 15 307 "lvs_attached", 15 308 "send_initial_string", 15 309 "adjust_abs_q_no", 15 310 "foreground_secondary_ok", 15 311 "foreground_job", 15 312 "sus_sent", 15 313 "suspended", 15 314 "ignore_cpulimit", 15 315 "deferral_logged", 15 316 "save_if_disconnected", 15 317 "disconnected", 15 318 "disconnected_list", 15 319 "proc_create_ok", 15 320 "activity_can_unbump", 15 321 "fpe_causes_logout", 15 322 "user_specified_immediate"); 15 323 15 324 /* names for ute.abs_flags */ 15 325 15 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 15 327 "abs_run", 15 328 "notify"); 15 329 15 330 /* names of ute.dial_server_flags */ 15 331 15 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 15 333 "registered", 15 334 "privileged"); 15 335 15 336 /* values of ute.login_result */ 15 337 15 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 15 339 "logged in", 15 340 "login failed, hangup", 15 341 "login failed, try again"); 15 342 15 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 1189 1190 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 16 2 16 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 4 /* */ 16 5 /* This include file declares the header shared by the answer_table, */ 16 6 /* absentee_user_table and daemon_user_table include files. */ 16 7 /* */ 16 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 9 16 10 /****^ HISTORY COMMENTS: 16 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 16 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 13* Initial coding. 16 14* END HISTORY COMMENTS */ 16 15 16 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 16 17 2 header_version fixed bin, /* version of the header (3) */ 16 18 2 entry_version fixed bin, /* version of user table entries */ 16 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 16 20 2 header_length fixed bin, /* length of the header */ 16 21 2 max_size fixed bin, /* max number of entries in this table */ 16 22 2 current_size fixed bin, /* actual size of table (in entries) */ 16 23 2 number_free fixed bin, /* number of free entries in the table. */ 16 24 2 first_free fixed bin, /* index of first entry in the free list. */ 16 25 2 as_procid bit (36), /* process ID of user table manager process */ 16 26 2 ut_header_pad fixed bin; 16 27 16 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 1190 1191 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 17 2 17 3 /* Modified 740723 by PG to add security info */ 17 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 17 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 17 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 17 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 17 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 17 9 17 10 dcl 1 whotab based (whoptr) aligned, 17 11 2 mxusers fixed bin, /* max. number of users on system */ 17 12 2 n_users fixed bin, /* current number of users */ 17 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 17 14 2 n_units fixed bin, /* current load */ 17 15 2 timeup fixed bin (71), /* time system was started */ 17 16 2 session char (8), /* AS state, same as anstbl.session */ 17 17 2 nextsd fixed bin (71), /* time we will shutdown */ 17 18 2 until fixed bin (71), /* projected time we start up again */ 17 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 17 20 2 erfno char (8), /* if a crash, the error number */ 17 21 2 obsolete_why char (32), /* reason for last shutdown */ 17 22 2 installation_id char (32), /* name of installation */ 17 23 2 obsolete_message char (32), /* message for all users */ 17 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 17 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 17 26 2 max_abs_users fixed bin, /* max number of absentee users */ 17 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 17 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 17 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 17 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 17 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 17 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 17 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 17 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 17 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 17 36 2 pad1 bit (9) unal, 17 37 2 pad (3) fixed bin, 17 38 2 version fixed bin, /* structure version */ 17 39 2 header_size fixed bin, /* length of header in words */ 17 40 2 entry_size fixed bin, /* length of entry in words */ 17 41 /* laste_adjust is used only by Answering Service programs */ 17 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 17 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 17 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 17 45 17 46 /* whotab header extension: The header is extended from 64 words by 17 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 17 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 17 49* present. This allows existing programs to function with old definitions of 17 50* whotab. Obviously no new header field can be more than 31 contiguous words in 17 51* length. In the Answering Service, all programs using whotab must be compiled 17 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 17 53 17 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 17 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 17 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 17 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 17 58 2 abs_control, /* see absentee_user_table */ 17 59 3 mnbz bit (1) unal, /* must not be zero */ 17 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 17 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 17 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 17 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 17 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 17 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 17 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 17 67 3 control_pad bit (23) unal, 17 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 17 69 2 installation_request_pid bit (36), /* installation process identifier */ 17 70 2 sysid char (32), /* current system name */ 17 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 17 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 17 73 2 message char (124), /* message for all users */ 17 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 17 75 2 why char (124), /* reason for last shutdown */ 17 76 2 e (1000), /* offset 240o */ 17 77 3 active fixed bin, /* nonzero means logged in */ 17 78 3 person char (28) aligned, /* person name */ 17 79 3 project char (28), /* project id */ 17 80 3 anon fixed bin, /* 1 if anonymous user */ 17 81 3 padding fixed bin (71), 17 82 3 timeon fixed bin (71), /* time of login */ 17 83 3 units fixed bin, /* load units */ 17 84 3 stby fixed bin, /* 1 if stby */ 17 85 3 idcode char (4), /* tty id code */ 17 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 17 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 17 88 3 group char (8), /* party-line group */ 17 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 17 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 17 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 17 92 3 pad2 bit (33) unal, 17 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 17 94 3 process_authorization bit (72); /* access authorization of process */ 17 95 17 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 17 97 17 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 1191 1192 1193 /* BEGIN MESSAGE DOCUMENTATION 1194* 1195* Message: 1196* absentee_user_manager_$init: MESSAGE. Cannot truncate absentee_user_table. 1197* 1198* S: as (severity1) 1199* 1200* T: $init 1201* 1202* M: It was not possible to clear the absentee_user_table segment. 1203* 1204* A: $contact 1205* 1206* 1207* Message: 1208* absentee_user_manager_: ERROR_MESSAGE. Trying to wakeup PERSON.PROJECT.TAG 1209* process after abs release. 1210* 1211* S: $as0 1212* 1213* T: Called in response to an operator abs release command. 1214* 1215* M: A failure occurred while sending a wakeup to the absentee process 1216* being released. ERROR_MESSAGE is the text associated with the 1217* error code returned by hcs_$wakeup. 1218* 1219* A: $ignore 1220* 1221* 1222* Message: 1223* absentee_user_manager_: event calls were masked. 1224* 1225* S: sc (user_output) 1226* 1227* T: $run 1228* 1229* M: This message indicates a serious error in the Initializer 1230* programs. The system attempts to recover and keep running. 1231* 1232* A: $notify 1233* 1234* 1235* Message: 1236* absentee_user_manager_: Error in initializing absentee. Don't bring up absentee facility 1237* 1238* S: as (severity1) 1239* 1240* T: $run 1241* 1242* M: The absentee mechanism will not initialize. 1243* 1244* A: $inform 1245* Do _n_o_t try to 1246* initialize the absentee facility. 1247* 1248* 1249* Message: 1250* absentee_user_manager_: Error: CONDITION 1251* 1252* S: as (severity2) 1253* 1254* T: $run 1255* 1256* M: An unexpected fault has occurred while performing some 1257* absentee function such as logging in a new absentee user. The 1258* system automatically performs an Answering Service dump and 1259* attempts to recover. 1260* 1261* A: No action is required unless the condition persists. 1262* If this message occurs repeatedly, try stopping the absentee 1263* facility; inform the programming staff. 1264* 1265* 1266* Message: 1267* absentee_user_manager_: ERROR_MESSAGE. Cannot create absentee event channel 1268* 1269* S: as (severity2) 1270* 1271* T: $init 1272* 1273* M: The absentee facility could not create part of its 1274* communications mechanism. No absentee process can be logged in. 1275* 1276* A: Try the abs start command again. If the absentee 1277* facility still fails, inform the programming staff. 1278* 1279* 1280* Message: 1281* absentee_user_manager_: ERROR_MESSAGE. Creating proc for NAME.PROJ 1282* 1283* S: as (severity2) 1284* 1285* T: $run 1286* 1287* M: A storage system error prevented the absentee user from 1288* logging in. This is due to some error in the process 1289* creating mechanism. The user is not logged in. 1290* 1291* A: $inform 1292* Shut down the 1293* absentee facility with an abs bump * * and an abs stop 1294* if this message occurs repeatedly. 1295* 1296* 1297* Message: 1298* absentee_user_manager_: Premature stopstop for ID 1299* 1300* S: as (severity0) 1301* 1302* T: $run 1303* 1304* M: An error has occurred while trying to destroy the absentee process ID. The system recovers and continues. 1305* 1306* A: $ignore 1307* 1308* 1309* Message: 1310* absentee_user_manager_: Process terminated USER.PROJ ID MESSAGE. 1311* 1312* S: as (severity0) 1313* 1314* T: $run 1315* 1316* M: The absentee process ID of USER.PROJ has terminated for the reason specified, and will be logged out. 1317* 1318* A: $ignore 1319* 1320* 1321* Message: 1322* absentee_user_manager_: Strange event message WWWWWWWWWWWW WWWWWWWWWWWW from Initializer 1323* 1324* S: as (severity1) 1325* 1326* T: $run 1327* 1328* M: An unrecognizable event message has been received from 1329* the Answering Service. Its value is printed in octal. 1330* Usually, the first word is the function code and the second 1331* word is the index in the absentee user table. This condition is 1332* due to a error in the Answering Service or absentee programs. The 1333* system ignores the signal and goes on. The absentee facility may 1334* cease to operate. 1335* 1336* A: If absentee jobs will no longer run, try an abs stop 1337* and an abs start. Inform the system programming staff. 1338* 1339* 1340* Message: 1341* absentee_user_manager_: Strange event message WWWWWWWWWWWW WWWWWWWWWWWW from user proc WWWWWWWWWWWW 1342* 1343* S: as (severity1) 1344* 1345* T: $run 1346* 1347* M: This message is similar to the preceding message described 1348* above, except that the signal does not come from the Initializer but 1349* from some other process. The process ID of the sending process is printed 1350* in octal. The event message was not a valid item. The system ignores 1351* the signal and goes on. 1352* 1353* A: If absentee jobs will no longer run, try an abs stop and an abs start. 1354* Inform the system programming staff. 1355* 1356* 1357* Message: 1358* absentee_user_manager_: Strange event message WWWWWWWWWWWW WWWWWWWWWWWW from NAME.PROJ TTY 1359* 1360* S: as (severity1) 1361* 1362* T: $run 1363* 1364* M: This message is similar to the preceding message, except that the name, project, and tty name of the user sending 1365* the wakeup are printed. The system ignores the signal and goes on. 1366* 1367* A: $ignore 1368* 1369* 1370* Message: 1371* absentee_user_manager_: Trace .... 1372* 1373* S: as (severity1) 1374* 1375* T: $run 1376* 1377* M: This is trace output. It begins coming out about every 1378* five minutes after absentee_user_manager_$aum_trace_on is called. 1379* 1380* A: $ignore 1381* To shut this message off, type: absentee_user_manager_$aum_trace_off 1382* while in admin mode. 1383* 1384* 1385* Message: 1386* absentee_user_manager_: ERROR attempting to cancel reservation R for USER.PROJ absN 1387* 1388* S: as (severity1) 1389* 1390* T: $run 1391* 1392* M: The system was unable to cancel a resource reservation for an 1393* absentee process that is being destroyed. The resource(s) might remain 1394* unavailable to other users. There is some problem in the resource reservation mechanism. 1395* 1396* A: $inform 1397* 1398* 1399* Message: 1400* absentee_user_manager_: ERROR attempting to pre-claim reservation R for USER.PROJ absN 1401* 1402* S: as (severity1) 1403* 1404* T: $run 1405* 1406* M: The system was unable to assign a resource reservation to an 1407* absentee job that is being logged in. The job will be run, but it 1408* might fail if the resources it needs happen to be unavailable when it 1409* requests them. There is some problem in the resource reservation mechanism. 1410* 1411* A: $inform 1412* 1413* 1414* Message: 1415* absentee_user_manager_ (abs run): System too full; no absentee jobs can be started now. 1416* 1417* S: as (severity1) 1418* 1419* T: In response to an abs run command. 1420* 1421* M: The system is too near the upper limit on logged in users to start any absentee jobs. 1422* 1423* A: If the immediate running of the job is essential, use "abs stop queue all" 1424* to halt all other absentee logins, change the login word to halt all interactive logins, 1425* and either wait for a process to log out, or bump one, before repeating the abs run command. 1426* 1427* 1428* END MESSAGE DOCUMENTATION */ 1429 1430 end absentee_user_manager_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/29/88 0858.8 absentee_user_manager_.pl1 >spec>install>1093>absentee_user_manager_.pl1 1177 1 08/06/87 0913.4 absentee_user_table.incl.pl1 >ldd>include>absentee_user_table.incl.pl1 1178 2 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 1179 3 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 1180 4 08/06/87 0913.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 1181 5 08/06/87 0913.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 1182 6 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 1183 7 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1184 8 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 8-148 9 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1185 10 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 1186 11 04/27/78 1504.4 send_mail_info.incl.pl1 >ldd>include>send_mail_info.incl.pl1 1187 12 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 1188 13 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 13-112 14 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 1189 15 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 1190 16 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 1191 17 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. ABS_LOGIN_PRIO 000000 constant fixed bin(17,0) initial dcl 6-36 set ref 758* 988* ABS_TRYLOG_METER 000612 constant fixed bin(17,0) initial dcl 5-35 set ref 734* 738* AUM_METER 000677 constant fixed bin(17,0) initial dcl 5-22 set ref 307* 844* 881* 914* 930* AUTBL_version_4 constant fixed bin(17,0) initial dcl 1-24 ref 961 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 7-76 ref 779 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 7-76 ref 576 590 629 761 PREEMPT_BUMPED constant fixed bin(17,0) initial dcl 7-132 ref 435 PREEMPT_TERM_SENT constant fixed bin(17,0) initial dcl 7-132 ref 406 419 456 497 550 PT_ABSENTEE 000700 constant fixed bin(17,0) initial dcl 15-261 set ref 689* 963 P_job_ptr parameter pointer dcl 875 ref 874 892 SL_LOG_SILENT 000673 constant fixed bin(17,0) initial dcl 12-14 set ref 377* STOPstop 000572 constant char(8) initial dcl 109 set ref 616 STOPstop_msg based fixed bin(71,0) dcl 109 set ref 616* TAG_ABSENTEE constant char(1) initial packed unaligned dcl 7-93 ref 728 UTE_version_4 constant fixed bin(17,0) initial dcl 15-74 ref 962 WAIT_LOGOUT constant fixed bin(17,0) initial dcl 7-25 ref 571 586 592 WAIT_LOGOUT_SIG constant fixed bin(17,0) initial dcl 7-25 ref 406 574 613 780 a_arg_ptr parameter pointer dcl 926 ref 924 937 a_code parameter fixed bin(35,0) dcl 976 set ref 974 985* 986 988* 990 991* 1000* 1002 abort_message 000304 automatic char(256) packed unaligned dcl 180 set ref 599* 601* 750* 751* 769* 770* 1063* 1065* aborting 000115 automatic bit(1) initial dcl 160 set ref 160* 659 1130* abs_arg_ptr 000136 automatic pointer initial dcl 178 set ref 178* 707* 937* abs_attributes 247 based structure level 2 dcl 15-78 abs_control 115 based structure level 2 dcl 17-10 set ref 1165* abs_cpu_limit 111 based fixed bin(35,0) array level 2 dcl 17-10 set ref 1164* abs_event 50 based fixed bin(71,0) level 2 dcl 17-10 set ref 998* 1026* abs_flags 250 based structure level 2 dcl 15-78 abs_procid 52 based bit(36) level 2 dcl 17-10 set ref 615* 616* 997* 1025* abs_qres 105 based fixed bin(17,0) array level 2 dcl 17-10 set ref 1163* abs_run 250 based bit(1) level 3 packed packed unaligned dcl 15-78 set ref 697* abs_run_sw 000134 automatic bit(1) initial dcl 177 set ref 177* 682 697 817 835 936* abs_stop_before_startup 000024 internal static bit(1) initial dcl 122 set ref 968 1019* abs_stopped 56(12) based bit(1) level 3 packed packed unaligned dcl 1-28 set ref 675 968* abs_up 56(11) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 675 absentee_procid 000012 internal static bit(36) dcl 109 set ref 319 995* 996 997 absentee_rq_chn 000010 internal static fixed bin(71,0) dcl 109 set ref 326 985* 988* 998 1023* absentee_tty_name 000120 automatic char(32) packed unaligned dcl 172 set ref 299* 354* 861* absentee_user_manager_$absentee_user_manager_ 000046 constant entry external dcl 222 ref 758 758 988 988 absentee_utility_ 000050 constant entry external dcl 223 ref 707 absentee_utility_$au_send_ctl_wakeup 000052 constant entry external dcl 224 ref 817 absentee_utility_$clear_lc_list 000054 constant entry external dcl 225 ref 667 717 absentee_utility_$delete_message 000056 constant entry external dcl 226 ref 649 absentee_utility_$init_au 000060 constant entry external dcl 227 ref 1000 absentee_utility_$mark_request_running 000062 constant entry external dcl 228 ref 808 absentee_utility_$set_resource_timer 000064 constant entry external dcl 229 ref 826 absentee_utility_$term_au 000066 constant entry external dcl 230 ref 1028 act_ctl_$close_account 000070 constant entry external dcl 231 ref 632 act_ctl_$cp 000072 constant entry external dcl 232 ref 778 act_ctl_$dp 000074 constant entry external dcl 233 ref 624 act_ctl_$open_account 000076 constant entry external dcl 234 ref 763 active based fixed bin(17,0) level 2 dcl 15-78 set ref 576 590* 629* 761* 779* addr builtin function dcl 284 ref 353 615 616 902 964 1101 1101 always_add 11(02) 000455 automatic bit(1) level 3 packed packed unaligned dcl 11-5 set ref 1098* ansp 000452 automatic pointer initial dcl 2-53 set ref 292* 298 610 631 631 680 680 680 731 731 879* 913* 929* 946* 981* 1015* 1048* 2-53* 1141 1141 1142 1142 1143 1147 1147 1149 1150 1150 anstbl based structure level 1 dcl 2-55 arg_lengths_ptr 104 based pointer level 2 dcl 15-78 set ref 742 742* 784 784* args_ptr 106 based pointer level 2 dcl 15-78 set ref 741 741* 783 783* as_check_condition_ 000254 constant entry external dcl 1120 ref 1122 as_data_$ansp 000240 external static pointer dcl 3-26 ref 292 879 913 929 946 981 1015 1048 as_data_$autp 000242 external static pointer dcl 3-31 ref 291 878 912 928 945 980 1014 1047 as_data_$signal_types 000246 external static structure level 1 dcl 3-67 as_data_$whoptr 000244 external static pointer dcl 3-60 ref 615 615 616 616 997 997 998 998 1025 1025 1026 1026 1160 1160 1162 1162 1163 1163 1164 1164 1165 1165 as_dump_ 000100 constant entry external dcl 235 ref 1128 as_error_table_$illegal_signal 000224 external static fixed bin(35,0) dcl 277 ref 505 as_meter_$enter 000102 constant entry external dcl 236 ref 307 734 881 914 930 as_meter_$exit 000104 constant entry external dcl 236 ref 738 844 as_procid 10 based bit(36) level 3 in structure "anstbl" dcl 2-55 in procedure "absentee_user_manager_" set ref 1150* as_procid 10 based bit(36) level 3 in structure "autbl" dcl 1-28 in procedure "absentee_user_manager_" set ref 996* asu_$check_for_stopped_process 000106 constant entry external dcl 237 ref 586 asu_$find_process 000110 constant entry external dcl 238 ref 852 asu_$release_suspended_process 000112 constant entry external dcl 239 ref 373 asu_$send_term_signal 000114 constant entry external dcl 240 ref 387 432 439 465 470 asu_$start_process 000116 constant entry external dcl 241 ref 802 asu_$suspend_process 000120 constant entry external dcl 242 ref 369 aum_ctl 56(13) based bit(1) level 3 packed packed unaligned dcl 1-28 set ref 334 716* autbl based structure level 1 dcl 1-28 auth parameter bit(72) dcl 1092 set ref 1089 1101* autp 000450 automatic pointer initial dcl 1-26 set ref 291* 334 347 353 396 626 626 667 675 675 716 717 775 775 823 823 823 823 878* 912* 928* 945* 954* 959 961 962 963 964 964 965 965 966 966 968 980* 996 1014* 1047* 1-26* 1161 1162 1163 1164 1165 available_slots_ 000122 constant entry external dcl 243 ref 823 baseno builtin function dcl 284 ref 396 396 bump_reasons 000017 constant char(64) initial array packed unaligned dcl 148 ref 389 423 430 438 463 475 500 555 558 899 clock_ 000124 constant entry external dcl 244 ref 298 code 000102 automatic fixed bin(35,0) dcl 160 in procedure "absentee_user_manager_" set ref 376* 377 377* 615* 616* 637* 639 639 639* 693* 707* 713 736* 764* 765 766* 768* 787* 789 789* 949* 951* 954* 955 956* 1023* 1101* 1102 1102 1102 1102* code 000524 automatic fixed bin(35,0) dcl 1140 in procedure "unlock" set ref 1150* code_mask_ev_calls 000140 automatic fixed bin(35,0) dcl 179 set ref 293* 648* 650 652* 704* 708 710* 831 891* 916* 933* 947* 982* 1016* 1143 code_unmask_ev_calls 000141 automatic fixed bin(35,0) dcl 179 set ref 293* 650 651* 652* 708 709* 710* 831 831* 891* 916* 933* 947* 982* 1016* 1143 1143* common_channel_signals 000237 constant char(4) initial array packed unaligned dcl 138 ref 358 358 361 condition_ 000136 constant entry external dcl 249 ref 296 306 893 917 918 934 935 condname parameter char packed unaligned dcl 1113 set ref 1110 1122* 1126* continue parameter bit(1) packed unaligned dcl 1116 set ref 1110 1122* 1123 control 56 based structure level 2 dcl 1-28 set ref 1165 convert_status_code_ 000126 constant entry external dcl 245 ref 517 768 coptr parameter pointer dcl 1114 ref 1110 cpg_$cpg_abs 000130 constant entry external dcl 246 ref 764 cpu 000106 automatic fixed bin(71,0) dcl 160 set ref 837* 838 cpu_limit 44 based fixed bin(35,0) array level 2 dcl 1-28 ref 1164 cpu_time_limit 000116 automatic fixed bin(71,0) dcl 171 set ref 797* 798* current_size 5 based fixed bin(17,0) level 3 dcl 1-28 ref 347 current_time 126 based fixed bin(71,0) level 2 dcl 2-55 set ref 298* datap 6 based pointer level 2 dcl 195 ref 395 destroy_flag 421 based fixed bin(17,0) level 2 dcl 15-78 set ref 406 571 574 586 592* 613 780* divide builtin function dcl 284 ref 965 dpg_ 000132 constant entry external dcl 247 ref 596 dpg_$finish 000134 constant entry external dcl 248 ref 623 entry 200 based structure array level 2 dcl 1-28 set ref 353 964 entry_version 1 based fixed bin(17,0) level 3 dcl 1-28 set ref 962* error_message_2 000025 internal static char(36) initial dcl 180 set ref 1003* error_message_3 000036 internal static char(32) initial dcl 180 set ref 1003* error_table_$messages_deferred 000226 external static fixed bin(35,0) dcl 278 ref 1102 error_table_$messages_off 000230 external static fixed bin(35,0) dcl 279 ref 1102 error_table_$noentry 000232 external static fixed bin(35,0) dcl 280 ref 639 error_table_$out_of_sequence 000234 external static fixed bin(35,0) dcl 281 ref 949 ev_chan based fixed bin(71,0) level 2 dcl 195 ref 326 ev_message 2 based bit(72) level 2 dcl 195 set ref 532 853* 856* 861* ev_msg based structure level 1 dcl 195 ev_msg1 based structure level 1 dcl 204 ev_msg2 based structure level 1 dcl 212 ev_msg_ptr parameter pointer dcl 193 set ref 13 319 321 326 328 332 347 347 352 358 386 395 398 405 406 412 417 448 486 505 515 515 517 525 526 532 567 569 574 596 610 839 839 839 849 849 852 853 853 856 861 861 902* 903 event 376 based fixed bin(71,0) level 2 dcl 15-78 set ref 615* 616* 758* 1084* first_free 7 based fixed bin(17,0) level 3 dcl 1-28 set ref 966* fixed builtin function dcl 284 ref 964 freen_ 000140 constant entry external dcl 250 ref 741 742 783 784 from_proc 4 based bit(36) level 2 dcl 195 set ref 319 398 839* 852* 853* 861* get_process_id_ 000142 constant entry external dcl 251 ref 995 hack_event_message 000440 automatic structure level 1 dcl 876 set ref 902 hbound builtin function dcl 284 ref 358 361 509 hcs_$get_usage_values 000144 constant entry external dcl 252 ref 302 837 hcs_$truncate_seg 000146 constant entry external dcl 253 ref 954 hcs_$wakeup 000152 constant entry external dcl 255 ref 376 535 615 616 1150 header based structure level 2 in structure "anstbl" dcl 2-55 in procedure "absentee_user_manager_" header based structure level 2 in structure "autbl" dcl 1-28 in procedure "absentee_user_manager_" header_length 3 based fixed bin(17,0) level 3 dcl 1-28 set ref 964* 965 header_version based fixed bin(17,0) level 3 dcl 1-28 set ref 961* hisid 000274 automatic char(32) packed unaligned dcl 180 set ref 1074* 1076* 1077* hphcs_$set_cpu_monitor 000150 constant entry external dcl 254 ref 798 i 000100 automatic fixed bin(17,0) dcl 160 set ref 358* 358* 361 368 372 387* 389 412* 412* 494 496 509 509 729* 822* 823 823 823 827* 852* id 000011 constant char(24) initial packed unaligned dcl 180 set ref 377* 519* 586* 614* 639* 682* 766* 789* 839* 849* 853* 856* 861* 991* 1003* 1102* 1126* 1173* ignore_code 000103 automatic fixed bin(35,0) dcl 160 set ref 593* 758* 798* ignore_cpulimit 431(10) based bit(1) level 3 packed packed unaligned dcl 15-78 set ref 451 452* 533 infoptr parameter pointer dcl 1115 ref 1110 initid 000001 constant char(32) initial packed unaligned dcl 180 set ref 951* 956* input_seg 110 based char(168) level 2 packed packed unaligned dcl 15-78 set ref 599* 750* 769* 1063* installation_parms_part_1 based structure level 1 dcl 8-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 8-144 ioa_$rsnnl 000154 constant entry external dcl 256 ref 599 729 750 769 1063 1074 1076 1126 ipc_$create_ev_chn 000156 constant entry external dcl 257 ref 985 ipc_$decl_ev_call_chn 000160 constant entry external dcl 258 ref 758 988 ipc_$delete_ev_chn 000162 constant entry external dcl 259 ref 1023 ipc_$mask_ev_calls 000164 constant entry external dcl 260 ref 648 704 ipc_$unmask_ev_calls 000166 constant entry external dcl 261 ref 651 709 831 1143 ix 000104 automatic fixed bin(17,0) dcl 160 in procedure "absentee_user_manager_" set ref 352* 353 401* 519* 691* 729* ix 3 based fixed bin(35,0) level 2 in structure "ev_msg2" dcl 212 in procedure "absentee_user_manager_" set ref 347 347 352 505* 517* 839* 849* j 000101 automatic fixed bin(17,0) dcl 160 set ref 599* 750* 769* 1063* job_term_reasons 000247 constant char(64) initial array packed unaligned dcl 123 ref 509 509 lc_list 56(14) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 667 717 lg_ctl_$abs_in 000170 constant entry external dcl 262 ref 736 lg_ctl_$abs_out 000172 constant entry external dcl 263 ref 633 lock_count 114 based fixed bin(17,0) level 2 dcl 2-55 set ref 631* 631 731* 731 1141* 1141 1142 1142* 1143 1147 login_result 415 based fixed bin(17,0) level 2 dcl 15-78 ref 740 744 logout_index 423 based fixed bin(17,0) level 2 dcl 15-78 ref 423 500 555 558 logout_type 422 based char(4) level 2 packed packed unaligned dcl 15-78 set ref 386* 406* 428* 437* 462* 469* 487* 647 695* 903* loxx 000406 automatic char(100) dcl 180 set ref 517* 518 768* 769* lv_request_$cleanup_process 000174 constant entry external dcl 264 ref 594 lvs_attached 431(03) based bit(1) level 3 packed packed unaligned dcl 15-78 ref 594 max builtin function dcl 284 ref 823 823 max_abs_users 13 based fixed bin(17,0) level 2 dcl 1-28 set ref 823* max_cpu_time 244 based fixed bin(35,0) level 2 dcl 15-78 ref 797 max_size 4 based fixed bin(17,0) level 3 dcl 1-28 set ref 965* max_users 15 based fixed bin(17,0) level 2 dcl 2-55 ref 680 mbuf 000100 automatic char(256) dcl 1117 set ref 1126* 1127* 1128* mcptr parameter pointer dcl 1112 ref 1110 message parameter char packed unaligned dcl 1093 in procedure "send_mail" set ref 1089 1101* message parameter char packed unaligned dcl 1061 in procedure "notify" set ref 1059 1063* message parameter char packed unaligned dcl 1072 in procedure "notify_request_owner" ref 1070 1077 1077 mlth 000200 automatic fixed bin(17,0) dcl 1118 set ref 1126* mnbz 56 based bit(1) level 3 packed packed unaligned dcl 1-28 set ref 959* msg parameter varying char dcl 1171 set ref 1169 1173* n_abs 101 based fixed bin(17,0) array level 2 in structure "whotab" dcl 17-10 in procedure "absentee_user_manager_" set ref 1162* n_abs 20 based fixed bin(17,0) array level 2 in structure "autbl" dcl 1-28 in procedure "absentee_user_manager_" set ref 626* 626 775* 775 823 1162 n_processes 413 based fixed bin(17,0) level 2 dcl 15-78 set ref 757* n_signals 000246 external static fixed bin(17,0) level 2 dcl 3-67 ref 412 494 n_users 14 based fixed bin(17,0) level 2 dcl 2-55 ref 680 680 non_local_exit 000201 automatic bit(1) packed unaligned dcl 1119 set ref 1122* 1123 notify 250(01) based bit(1) level 3 packed packed unaligned dcl 15-78 ref 603 806 null builtin function dcl 284 ref 178 295 690 741 742 783 784 853 915 931 988 1-26 2-53 15-76 1055 1160 1161 number_free 6 based fixed bin(17,0) level 3 dcl 1-28 set ref 966* old_cpu 000110 automatic fixed bin(71,0) dcl 160 set ref 302* 838 origin 5 based structure level 2 dcl 195 person 4 based char(24) level 2 packed packed unaligned dcl 15-78 set ref 377* 519* 637 639* 766* 787 789* 856* 1076* 1173* pf 000113 automatic fixed bin(17,0) dcl 160 set ref 302* 837* pp 000112 automatic fixed bin(17,0) dcl 160 set ref 302* 837* preempted 420 based fixed bin(17,0) level 2 dcl 15-78 ref 406 419 435 456 497 550 proc_id 276 based bit(36) level 2 dcl 15-78 set ref 376* 398 535* 593* 594* 787* 798* process_authorization 24 based bit(72) level 2 dcl 15-78 set ref 1077* project 12 based char(12) level 2 packed packed unaligned dcl 15-78 set ref 377* 519* 637 639* 766* 787 789* 856* 1076* 1173* proxy 247(02) based bit(1) level 3 packed packed unaligned dcl 15-78 ref 1074 proxy_person 263 based char(28) level 2 packed packed unaligned dcl 15-78 set ref 1074* proxy_project 272 based char(9) level 2 packed packed unaligned dcl 15-78 set ref 1074* qres 24 based fixed bin(17,0) array level 2 dcl 1-28 ref 823 1163 queue 245 based fixed bin(17,0) level 2 dcl 15-78 ref 626 626 626 775 775 775 rcp_init_flags based structure level 1 packed packed unaligned dcl 9-8 rcp_sys_$cancel_id 000176 constant entry external dcl 265 ref 637 rcp_sys_$pre_claim 000200 constant entry external dcl 266 ref 787 rcp_sys_$unassign_process 000202 constant entry external dcl 267 ref 593 reason 000173 automatic varying char(256) initial dcl 180 set ref 180* 389* 405* 423* 424* 424 430* 431* 438* 463* 464* 475* 488* 500* 509* 510* 518* 525* 526* 552 553* 553 554* 554 555* 555 558* 559* 559 598 599* 899* rel builtin function dcl 284 ref 964 request_id 234 based fixed bin(71,0) level 2 dcl 15-78 set ref 599* 599* 1063* 1063* request_id_ 000204 constant entry external dcl 268 ref 599 599 639 639 789 789 1063 1063 reservation_id 236 based fixed bin(71,0) level 2 dcl 15-78 set ref 636 637* 639* 639* 786 787* 789* 789* restartable 247 based bit(1) level 3 packed packed unaligned dcl 15-78 ref 647 rsc_waiting 30 based fixed bin(17,0) array level 2 dcl 1-28 ref 823 rtrim builtin function dcl 284 ref 423 553 555 558 637 637 787 787 1077 1077 sc_stat_$Go_typed 000250 external static bit(1) dcl 10-62 ref 949 1018 sc_stat_$Multics_typed 000252 external static bit(1) dcl 10-62 ref 949 secs 000114 automatic float bin(27) dcl 160 set ref 838* 839* send_mail_$access_class 000206 constant entry external dcl 269 ref 1101 send_mail_info 000455 automatic structure level 1 dcl 11-5 set ref 1095* 1101 1101 send_mail_info_version_2 000454 automatic fixed bin(17,0) initial dcl 11-3 set ref 11-3* sender_ring 5(18) based bit(18) level 3 packed packed unaligned dcl 195 ref 321 610 sent_from 1 000455 automatic char(32) level 2 dcl 11-5 set ref 1099* shxx 000404 automatic char(8) dcl 180 set ref 517* 519* 768* signal 2 based char(8) level 2 dcl 204 ref 328 332 405 412 417 448 486 525 526 567 569 574 signals 2 000246 external static char(8) array level 2 packed packed unaligned dcl 3-67 ref 412 size builtin function dcl 284 ref 965 slack constant fixed bin(17,0) initial dcl 109 ref 680 static_label 000014 internal static label variable dcl 109 set ref 305* 622* 634* 656* 687* 714* 733* 774* 820* 836* 843* 894* 919* 932* 1131 status 000142 automatic char(100) dcl 180 set ref 736* 750* string builtin function dcl 284 set ref 1165* 1165 sub_err_ 000210 constant entry external dcl 270 ref 951 substr builtin function dcl 284 ref 610 sus_channel 310 based fixed bin(71,0) level 2 dcl 15-78 set ref 376* 532* 535* sus_sent 431(08) based bit(1) level 3 packed packed unaligned dcl 15-78 set ref 427 459 530 534* suspended 431(09) based bit(1) level 3 packed packed unaligned dcl 15-78 set ref 460 530 538* switches 11 000455 automatic structure level 2 dcl 11-5 sys_info$max_seg_size 000236 external static fixed bin(35,0) dcl 282 ref 965 sys_log_ 000212 constant entry external dcl 271 ref 519 614 682 839 849 853 856 861 1003 1127 1173 sys_log_$error_log 000214 constant entry external dcl 272 ref 377 639 766 789 956 991 1102 sysdir 22 based char(64) level 2 packed packed unaligned dcl 2-55 ref 610 tag 15 based char(1) level 2 packed packed unaligned dcl 15-78 set ref 377* 728* termstop 000574 constant char(8) initial dcl 109 set ref 615 termstop_msg based fixed bin(71,0) dcl 109 set ref 615* timer_manager_$reset_alarm_wakeup 000216 constant entry external dcl 273 ref 1084 trace 000020 internal static bit(1) initial dcl 109 set ref 301 835 1035* 1041* tty_id_code 337 based char(4) level 2 packed packed unaligned dcl 15-78 set ref 727* tty_name 316 based char(32) level 2 packed packed unaligned dcl 15-78 set ref 354 614* 639* 729* 789* 856* 1173* uflags 431 based structure level 2 dcl 15-78 unlock_msg 000022 internal static fixed bin(71,0) dcl 119 set ref 984* 1150* unlock_string 000570 constant char(8) initial packed unaligned dcl 120 ref 984 unspec builtin function dcl 284 set ref 532* 984* 984 1095* update_channel 116 based fixed bin(71,0) level 2 dcl 2-55 set ref 1150* update_pending 115 based bit(1) level 2 dcl 2-55 set ref 1147 1149* user_abs_attributes based structure level 1 dcl 14-25 user_attributes based structure level 1 dcl 13-21 user_id parameter char(32) packed unaligned dcl 1091 set ref 1089 1101* 1102* user_table_mgr_$allocate 000220 constant entry external dcl 274 ref 689 user_table_mgr_$free 000222 constant entry external dcl 275 ref 657 715 1056 user_table_type 2 based fixed bin(17,0) level 3 dcl 1-28 set ref 963* ut_header based structure level 1 dcl 16-16 ute based structure level 1 dcl 15-78 set ref 965 ute_index 2 based fixed bin(17,0) level 2 dcl 15-78 ref 401 691 utep 000470 automatic pointer initial dcl 15-76 set ref 295* 353* 354 369* 373* 376 376 377 377 377 386 387* 395* 396 398 401 406 406 406 419 423 427 428 432* 435 437 439* 451 452 456 459 460 462 465* 469 470* 487 497 500 519 519 530 530 532 533 534 535 535 538 550 555 558 571 574 576 586 586* 590 592 593 594 594 596* 599 599 599 603 613 614 615 616 623* 624* 626 626 626 629 632* 633* 636 637 637 637 639 639 639 639 639 647 647 649* 657* 689* 690 691 695 697 707* 715* 727 728 729 736* 740 741 741 742 742 744 750 757 758 758* 761 763* 764* 766 766 769 775 775 775 778* 779 780 783 783 784 784 786 787 787 787 787 789 789 789 789 789 797 798 802* 806 808* 852* 853 856 856 856 892* 903 915* 931* 965 15-76* 1055 1056* 1063 1063 1063 1074 1074 1074 1076 1076 1077 1084 1173 1173 1173 version 000455 automatic fixed bin(17,0) level 2 dcl 11-5 set ref 1096* wakeup 11 000455 automatic bit(1) level 3 packed packed unaligned dcl 11-5 set ref 1097* wakeup_from_as 000131 automatic bit(1) initial dcl 174 set ref 174* 319* 333 342 347 362 418 570 580 wakeup_from_ring_zero 000133 automatic bit(1) initial dcl 176 set ref 176* 321* 450 580 wakeup_from_user 000132 automatic bit(1) initial dcl 175 set ref 175* 398* 495 516 531 580 wakeup_over_common_channel 000130 automatic bit(1) initial dcl 173 set ref 173* 327* what 2 based char(4) level 2 dcl 212 set ref 358 386 406 515 515 596 839* 849* 903* whoptr defined pointer dcl 4-29 ref 615 616 997 998 1025 1026 1160 1162 1163 1164 1165 whotab based structure level 1 dcl 17-10 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 5-28 ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 14-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 6-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 15-326 ACCTUP_METER internal static fixed bin(17,0) initial dcl 5-26 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 6-28 ACTIVE_VALUES internal static char(18) initial array dcl 7-86 ADMIN_METER internal static fixed bin(17,0) initial dcl 5-32 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 13-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 2-51 ASINIT_METER internal static fixed bin(17,0) initial dcl 5-19 AS_METER_NAMES internal static char(8) initial array packed unaligned dcl 5-43 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 6-30 AT_NORMAL internal static char(8) initial packed unaligned dcl 2-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 2-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 2-116 AUTBL_CONTROL_NAMES internal static varying char(20) initial array dcl 1-68 AU_METER internal static fixed bin(17,0) initial dcl 5-23 Automatic_authentication internal static fixed bin(17,0) initial dcl 9-16 COMMAND_METER internal static fixed bin(17,0) initial dcl 5-30 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 6-37 CPG_METER internal static fixed bin(17,0) initial dcl 5-24 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 6-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 15-280 DIALUP_METER internal static fixed bin(17,0) initial dcl 5-20 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 15-332 DONT_MASK internal static bit(2) initial packed unaligned dcl 15-280 DO_MASK internal static bit(2) initial packed unaligned dcl 15-280 DPG_METER internal static fixed bin(17,0) initial dcl 5-25 DUM_METER internal static fixed bin(17,0) initial dcl 5-21 FIXPDT_METER internal static fixed bin(17,0) initial dcl 5-34 INSTALL_METER internal static fixed bin(17,0) initial dcl 5-27 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 6-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 6-32 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 15-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 15-284 MC_PRIO internal static fixed bin(17,0) initial dcl 6-25 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 6-33 MSGCORD_METER internal static fixed bin(17,0) initial dcl 5-29 Manual_authentication internal static fixed bin(17,0) initial dcl 9-16 NETUP_METER internal static fixed bin(17,0) initial dcl 5-37 NOW_DIALED internal static fixed bin(17,0) initial dcl 7-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 7-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 7-76 NOW_FREE internal static fixed bin(17,0) initial dcl 7-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 7-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 7-76 No_authentication internal static fixed bin(17,0) initial dcl 9-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 9-16 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 7-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 7-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 7-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 7-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 7-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 7-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 15-265 PT_ALARM internal static fixed bin(17,0) initial dcl 7-106 PT_BUMP internal static fixed bin(17,0) initial dcl 7-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 15-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 7-106 PT_DETACH internal static fixed bin(17,0) initial dcl 7-106 PT_FPE internal static fixed bin(17,0) initial dcl 7-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 7-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 15-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 7-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 7-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 7-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 7-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 7-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 7-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 15-290 SAC_METER internal static fixed bin(17,0) initial dcl 5-31 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 6-27 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 12-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 12-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 12-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 12-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 12-62 SL_LOG internal static fixed bin(17,0) initial dcl 12-14 SL_LOG_BEEP internal static fixed bin(17,0) initial dcl 12-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 12-14 SL_TYPE internal static fixed bin(17,0) initial dcl 12-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 12-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 12-14 SSU_METER internal static fixed bin(17,0) initial dcl 5-33 STATE_VALUES internal static char(15) initial array dcl 7-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 6-26 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 15-271 TAG_DAEMON internal static char(1) initial packed unaligned dcl 7-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 7-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 7-93 TAG_UFT internal static char(1) initial packed unaligned dcl 7-93 TRA_VEC_VALUES internal static char(32) initial array dcl 7-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 7-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 7-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 7-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 7-64 UFLAG_NAMES internal static varying char(24) initial array dcl 15-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 13-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 13-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 13-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 13-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 2-120 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 7-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 7-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 7-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 7-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 7-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 7-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 7-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 7-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 7-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 7-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 7-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 7-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 7-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 7-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 7-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 7-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 7-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 7-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 7-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 7-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 7-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 7-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 7-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 7-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 7-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 17-96 as_data_$BS external static char(1) dcl 3-21 as_data_$CR external static char(1) dcl 3-22 as_data_$abs_dim external static char(32) packed unaligned dcl 3-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 3-24 as_data_$acsdir external static char(168) packed unaligned dcl 3-25 as_data_$as_procid external static bit(36) dcl 3-27 as_data_$as_ring external static fixed bin(3,0) dcl 3-28 as_data_$as_tty automatic char(6) packed unaligned dcl 3-29 as_data_$asmtp external static pointer dcl 3-30 as_data_$buzzardp external static pointer dcl 3-32 as_data_$cdtp external static pointer dcl 3-33 as_data_$debug_flag external static bit(1) dcl 3-84 as_data_$default_weight external static fixed bin(35,0) dcl 3-34 as_data_$devtabp external static pointer dcl 3-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 3-36 as_data_$dutp external static pointer dcl 3-37 as_data_$g115_dim external static char(32) packed unaligned dcl 3-38 as_data_$lct_initialized external static bit(1) dcl 3-39 as_data_$lct_size external static fixed bin(17,0) dcl 3-40 as_data_$login_args external static structure level 1 dcl 3-62 as_data_$login_words external static fixed bin(17,0) dcl 3-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 3-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 3-87 as_data_$ls_message_buffer_ptr external static pointer dcl 3-88 as_data_$ls_request_server_info_ptr external static pointer dcl 3-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 3-41 as_data_$mgtp external static pointer dcl 3-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 3-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 3-44 as_data_$pdtdir external static char(168) packed unaligned dcl 3-45 as_data_$pit_ptr external static pointer dcl 3-46 as_data_$rcpdir external static char(168) packed unaligned dcl 3-47 as_data_$request_priority external static fixed bin(17,0) dcl 3-48 as_data_$rs_ptrs external static pointer array dcl 3-49 as_data_$rtdtp external static pointer dcl 3-50 as_data_$sat_htp external static pointer dcl 3-51 as_data_$satp external static pointer dcl 3-52 as_data_$suffix external static char(2) array packed unaligned dcl 3-53 as_data_$sysdir external static char(168) packed unaligned dcl 3-54 as_data_$system_signal_types external static structure level 1 dcl 3-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 3-55 as_data_$terminet_tabs_string external static varying char(144) dcl 3-56 as_data_$tty_dim external static char(32) packed unaligned dcl 3-57 as_data_$update_priority external static fixed bin(17,0) dcl 3-58 as_data_$version external static char(8) packed unaligned dcl 3-59 as_data_login_words based structure level 1 dcl 3-77 as_procid defined bit(36) dcl 4-17 as_tty based char(6) packed unaligned dcl 4-18 asmtp defined pointer dcl 4-19 authentication_level_names internal static char(12) initial array packed unaligned dcl 9-21 devtabp defined pointer dcl 4-20 installation_parms based structure level 1 dcl 8-33 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 8-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 8-38 ip defined pointer dcl 4-21 mgtp defined pointer dcl 4-22 pdtdir based char(168) packed unaligned dcl 4-23 recursion_possible internal static bit(18) initial packed unaligned dcl 5-39 rifp automatic pointer dcl 9-6 rs_ptrs based pointer array dcl 4-24 sat_htp defined pointer dcl 4-25 satp defined pointer dcl 4-26 sc_stat_$Go external static bit(1) dcl 10-62 sc_stat_$Multics external static bit(1) dcl 10-62 sc_stat_$Star_typed external static bit(1) dcl 10-62 sc_stat_$admin_listener_exit_label external static label variable dcl 10-34 sc_stat_$admin_listener_switch external static bit(1) dcl 10-62 sc_stat_$admin_log_iocb external static pointer dcl 10-45 sc_stat_$admin_log_write_ptr external static pointer dcl 10-45 sc_stat_$admin_sci_ptr external static pointer dcl 10-45 sc_stat_$as_log_write_ptr external static pointer dcl 10-45 sc_stat_$did_part1 external static bit(1) dcl 10-62 sc_stat_$did_part2 external static bit(1) dcl 10-62 sc_stat_$did_part3 external static bit(1) dcl 10-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 10-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 10-21 sc_stat_$initzer_ttyp external static pointer dcl 10-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 10-21 sc_stat_$master_abort_label external static label variable dcl 10-34 sc_stat_$master_channel external static char(6) dcl 10-29 sc_stat_$master_iocb external static pointer dcl 10-45 sc_stat_$master_sci_ptr external static pointer dcl 10-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 10-21 sc_stat_$mc_ansp external static pointer dcl 10-45 sc_stat_$mc_iocb external static pointer dcl 10-45 sc_stat_$mc_is_on external static bit(1) dcl 10-62 sc_stat_$no_operator_login external static bit(1) dcl 10-62 sc_stat_$shutdown_typed external static bit(1) dcl 10-62 sc_stat_$sv1_iocb external static pointer dcl 10-45 sc_stat_$sv2_iocb external static pointer dcl 10-45 sc_stat_$sv3_iocb external static pointer dcl 10-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 10-21 sc_stat_$system_shutdown_label external static label variable dcl 10-34 sc_stat_$test_mode external static bit(1) dcl 10-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 10-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 10-62 scdtp defined pointer dcl 4-27 sl_info automatic structure level 1 dcl 12-24 sl_info_code_msg internal static structure level 1 dcl 12-187 sl_info_msg internal static structure level 1 dcl 12-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 12-161 sl_info_sev_code_msg internal static structure level 1 dcl 12-82 sl_info_sev_coded_msg internal static structure level 1 dcl 12-134 sl_info_sev_msg internal static structure level 1 dcl 12-108 sysdir defined char(168) packed unaligned dcl 4-28 NAMES DECLARED BY EXPLICIT CONTEXT. abs_as_init 006140 constant entry external dcl 941 absentee_user_manager_ 001414 constant entry external dcl 13 aum_abs_run 006026 constant entry external dcl 924 aum_no_trace 006631 constant entry external dcl 1039 aum_trace 006616 constant entry external dcl 1033 call_au 004101 constant label dcl 697 ref 746 cancel_absentee 005617 constant entry external dcl 874 chn_error 006413 constant label dcl 991 ref 986 cleaner_up 006663 constant entry internal dcl 1054 ref 296 296 917 917 934 934 cleanup 003471 constant label dcl 629 ref 733 771 convert_term_code 002533 constant label dcl 517 ref 506 destroy 003054 constant label dcl 567 ref 425 433 440 466 476 489 501 destroy1 003143 constant label dcl 590 ref 774 904 evil 005407 constant label dcl 852 ref 333 342 350 363 396 418 450 495 516 530 531 570 576 580 610 free 003760 constant label dcl 656 ref 634 ignored_sus 002213 constant label dcl 428 ref 460 ignored_term 002133 constant label dcl 421 ref 456 init_aum 006325 constant entry external dcl 974 init_error 006166 constant label dcl 951 ref 957 inval_mess 005345 constant label dcl 849 set ref 347 362 kill 003441 constant label dcl 622 set ref 572 586 lg 004005 constant label dcl 675 ref 328 337 920 938 lgfail 004150 constant label dcl 714 ref 687 log_ignored_msg 005553 constant label dcl 861 ref 571 574 login_any_absentee 005720 constant entry external dcl 910 no_go 003513 constant label dcl 634 ref 622 752 notify 006704 constant entry internal dcl 1059 ref 603 806 notify_request_owner 007001 constant entry internal dcl 1070 ref 601 751 770 1065 reset_alarm 007155 constant entry internal dcl 1082 ref 455 499 539 551 retr 005124 constant label dcl 820 ref 305 334 370 381 387 432 439 444 453 465 470 540 605 656 659 675 684 690 714 722 850 859 864 894 919 932 retr1 005332 constant label dcl 843 set ref 820 836 return_immediately 005344 constant label dcl 846 ref 843 send_mail 007170 constant entry internal dcl 1089 ref 1077 term_aum 006544 constant entry external dcl 1010 ucs 007322 constant entry internal dcl 1110 ref 306 306 893 893 918 918 935 935 unlock 007470 constant entry internal dcl 1135 ref 645 745 781 update_whotab_abs_control 006643 constant entry external dcl 1045 update_whotab_abs_copy 007550 constant entry internal dcl 1155 ref 970 1006 1029 1049 wakeup_error 007603 constant entry internal dcl 1169 ref 421 431 443 464 504 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11100 11356 7753 11110 Length 12370 7753 256 776 1124 36 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME absentee_user_manager_ 608 external procedure is an external procedure. cleaner_up 68 internal procedure is assigned to an entry variable. notify internal procedure shares stack frame of external procedure absentee_user_manager_. notify_request_owner internal procedure shares stack frame of external procedure absentee_user_manager_. reset_alarm internal procedure shares stack frame of external procedure absentee_user_manager_. send_mail 112 internal procedure is called during a stack extension. ucs 169 internal procedure is assigned to an entry variable. unlock internal procedure shares stack frame of external procedure absentee_user_manager_. update_whotab_abs_copy internal procedure shares stack frame of external procedure absentee_user_manager_. wakeup_error internal procedure shares stack frame of external procedure absentee_user_manager_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 absentee_rq_chn absentee_user_manager_ 000012 absentee_procid absentee_user_manager_ 000014 static_label absentee_user_manager_ 000020 trace absentee_user_manager_ 000022 unlock_msg absentee_user_manager_ 000024 abs_stop_before_startup absentee_user_manager_ 000025 error_message_2 absentee_user_manager_ 000036 error_message_3 absentee_user_manager_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME absentee_user_manager_ 000100 i absentee_user_manager_ 000101 j absentee_user_manager_ 000102 code absentee_user_manager_ 000103 ignore_code absentee_user_manager_ 000104 ix absentee_user_manager_ 000106 cpu absentee_user_manager_ 000110 old_cpu absentee_user_manager_ 000112 pp absentee_user_manager_ 000113 pf absentee_user_manager_ 000114 secs absentee_user_manager_ 000115 aborting absentee_user_manager_ 000116 cpu_time_limit absentee_user_manager_ 000120 absentee_tty_name absentee_user_manager_ 000130 wakeup_over_common_channel absentee_user_manager_ 000131 wakeup_from_as absentee_user_manager_ 000132 wakeup_from_user absentee_user_manager_ 000133 wakeup_from_ring_zero absentee_user_manager_ 000134 abs_run_sw absentee_user_manager_ 000136 abs_arg_ptr absentee_user_manager_ 000140 code_mask_ev_calls absentee_user_manager_ 000141 code_unmask_ev_calls absentee_user_manager_ 000142 status absentee_user_manager_ 000173 reason absentee_user_manager_ 000274 hisid absentee_user_manager_ 000304 abort_message absentee_user_manager_ 000404 shxx absentee_user_manager_ 000406 loxx absentee_user_manager_ 000440 hack_event_message absentee_user_manager_ 000450 autp absentee_user_manager_ 000452 ansp absentee_user_manager_ 000454 send_mail_info_version_2 absentee_user_manager_ 000455 send_mail_info absentee_user_manager_ 000470 utep absentee_user_manager_ 000524 code unlock ucs 000100 mbuf ucs 000200 mlth ucs 000201 non_local_exit ucs THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc return_mac tra_ext_2 shorten_stack ext_entry int_entry int_entry_desc divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absentee_user_manager_$absentee_user_manager_ absentee_utility_ absentee_utility_$au_send_ctl_wakeup absentee_utility_$clear_lc_list absentee_utility_$delete_message absentee_utility_$init_au absentee_utility_$mark_request_running absentee_utility_$set_resource_timer absentee_utility_$term_au act_ctl_$close_account act_ctl_$cp act_ctl_$dp act_ctl_$open_account as_check_condition_ as_dump_ as_meter_$enter as_meter_$exit asu_$check_for_stopped_process asu_$find_process asu_$release_suspended_process asu_$send_term_signal asu_$start_process asu_$suspend_process available_slots_ clock_ condition_ convert_status_code_ cpg_$cpg_abs dpg_ dpg_$finish freen_ get_process_id_ hcs_$get_usage_values hcs_$truncate_seg hcs_$wakeup hphcs_$set_cpu_monitor ioa_$rsnnl ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls lg_ctl_$abs_in lg_ctl_$abs_out lv_request_$cleanup_process rcp_sys_$cancel_id rcp_sys_$pre_claim rcp_sys_$unassign_process request_id_ send_mail_$access_class sub_err_ sys_log_ sys_log_$error_log timer_manager_$reset_alarm_wakeup user_table_mgr_$allocate user_table_mgr_$free THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$ansp as_data_$autp as_data_$signal_types as_data_$whoptr as_error_table_$illegal_signal error_table_$messages_deferred error_table_$messages_off error_table_$noentry error_table_$out_of_sequence sc_stat_$Go_typed sc_stat_$Multics_typed sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 160 001364 173 001365 174 001366 175 001367 176 001370 177 001371 178 001372 180 001374 1 26 001400 2 53 001402 11 3 001403 15 76 001405 13 001411 291 001422 292 001426 293 001431 296 001434 298 001455 299 001465 301 001470 302 001473 305 001505 306 001511 307 001535 319 001544 321 001555 326 001562 327 001565 328 001567 332 001573 333 001601 334 001603 337 001607 342 001610 347 001612 350 001621 352 001622 353 001623 354 001626 358 001631 359 001645 361 001647 362 001651 363 001653 368 001654 369 001656 370 001665 372 001666 373 001670 376 001677 377 001726 381 001774 386 001775 387 002003 389 002021 390 002032 395 002033 396 002035 398 002044 401 002051 405 002053 406 002060 412 002067 412 002114 417 002116 418 002125 419 002127 421 002133 423 002143 424 002175 425 002207 427 002210 428 002213 430 002216 431 002223 432 002226 433 002246 435 002247 437 002251 438 002253 439 002260 440 002300 443 002301 444 002311 448 002312 450 002314 451 002316 452 002322 453 002324 455 002325 456 002326 459 002332 460 002335 462 002340 463 002342 464 002347 465 002352 466 002372 469 002373 470 002375 475 002415 476 002422 486 002423 487 002425 488 002430 489 002434 494 002435 495 002441 496 002443 497 002445 499 002451 500 002452 501 002464 504 002465 505 002475 506 002503 509 002504 510 002517 511 002523 515 002524 516 002531 517 002533 518 002547 519 002554 521 002621 525 002622 526 002630 530 002634 531 002643 532 002645 533 002651 534 002654 535 002656 536 002704 538 002705 539 002707 540 002710 550 002711 551 002715 552 002716 553 002723 554 002741 555 002753 556 003007 558 003010 559 003042 567 003054 569 003063 570 003065 571 003067 572 003073 574 003074 576 003102 580 003105 586 003113 590 003143 592 003145 593 003150 594 003161 596 003174 598 003216 599 003223 601 003276 602 003301 603 003302 605 003315 610 003316 613 003325 614 003331 615 003362 616 003411 617 003440 622 003441 623 003445 624 003453 626 003462 629 003471 631 003473 632 003475 633 003504 634 003513 636 003517 637 003522 639 003623 645 003714 647 003715 648 003724 649 003733 650 003742 651 003746 652 003755 656 003760 657 003764 659 003772 667 003774 675 004005 680 004014 682 004022 684 004052 687 004053 689 004057 690 004067 691 004073 693 004076 695 004077 697 004101 704 004106 707 004115 708 004130 709 004134 710 004143 713 004146 714 004150 715 004154 716 004162 717 004165 722 004175 727 004176 728 004201 729 004203 731 004231 733 004233 734 004237 736 004245 738 004266 740 004275 741 004300 742 004313 744 004327 745 004333 746 004334 750 004335 751 004371 752 004374 757 004375 758 004377 761 004422 763 004424 764 004433 765 004444 766 004446 768 004513 769 004526 770 004563 771 004566 774 004567 775 004573 778 004600 779 004606 780 004610 781 004613 783 004614 784 004630 786 004644 787 004647 789 004755 797 005044 798 005050 802 005063 806 005072 808 005106 817 005115 820 005124 822 005130 823 005135 826 005202 827 005207 829 005211 831 005213 835 005226 836 005233 837 005236 838 005250 839 005256 843 005332 844 005336 846 005344 849 005345 850 005406 852 005407 853 005433 856 005501 859 005552 861 005553 864 005614 874 005615 878 005625 879 005631 881 005634 891 005642 892 005645 893 005651 894 005676 899 005702 902 005707 903 005712 904 005716 910 005717 912 005726 913 005732 914 005735 915 005743 916 005745 917 005750 918 005772 919 006017 920 006023 924 006024 928 006034 929 006040 930 006043 931 006051 932 006053 933 006057 934 006062 935 006103 936 006130 937 006132 938 006136 941 006137 945 006146 946 006152 947 006155 949 006160 951 006166 952 006211 954 006212 955 006225 956 006227 957 006261 959 006262 961 006265 962 006267 963 006271 964 006273 965 006277 966 006311 968 006313 970 006320 971 006321 974 006322 980 006333 981 006337 982 006342 984 006345 985 006347 986 006360 988 006363 990 006410 991 006413 992 006445 995 006446 996 006455 997 006461 998 006465 1000 006467 1002 006476 1003 006501 1004 006540 1006 006541 1008 006542 1010 006543 1014 006552 1015 006556 1016 006561 1018 006564 1019 006566 1020 006570 1023 006571 1025 006601 1026 006605 1028 006607 1029 006613 1031 006614 1033 006615 1035 006624 1037 006627 1039 006630 1041 006637 1043 006641 1045 006642 1047 006651 1048 006655 1049 006660 1050 006661 1054 006662 1055 006670 1056 006675 1057 006703 1059 006704 1063 006715 1065 006775 1066 007000 1070 007001 1074 007012 1076 007053 1077 007107 1078 007153 1082 007155 1084 007156 1085 007166 1089 007167 1095 007203 1096 007207 1097 007211 1098 007213 1099 007215 1101 007220 1102 007253 1106 007320 1110 007321 1122 007335 1123 007355 1126 007366 1127 007424 1128 007451 1130 007462 1131 007465 1135 007470 1141 007471 1142 007474 1143 007477 1147 007514 1149 007522 1150 007523 1153 007547 1155 007550 1160 007551 1161 007557 1162 007564 1163 007572 1164 007575 1165 007600 1166 007602 1169 007603 1173 007614 1174 007664 ----------------------------------------------------------- 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