COMPILATION LISTING OF SEGMENT load_ctl_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1030.6 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 load_ctl_: proc (P_utep, P_satep, P_pdtep, P_unused1, P_unused2, P_debug, 14 P_text, P_code); 15 16 /* LOAD_CTL_ - procedure to check whether a user may log in. 17* 18* This procedure is called by lg_ctl_ in the course of every login. 19* 20* Modified 750604 by T. Casey to implement priority scheduler interface. 21* Modified May 1976 by T. Casey to allow prio sked to be turned on and off by MGT installations. 22* Modified 760819 by Roy Planalp to pass error msg up to lg_ctl_ 23* Modified October 1976 by T. Casey for version 3 MGT. 24* Modified September 1977 by T. Casey to (1) call reassign_work_classes_ even when 25* . maxu auto is off, and (2) not undo an abs stop at shift change. 26* Modified May 1978 by T. Casey to execute shift_config_change.ec at appropriate times, 27* . to improve strategy for promoting secondary users (the latter courtesy of James Dougal), 28* . and to log instances of grace time in PDTE exceeding the limit in the SATE. 29* Modified November 1978 by T. Casey for MR7.0 absentee load control. Significant change: absentee jobs are no longer 30* counted in anstbl.extra_units. They are charged to their load control groups, as primary or secondary users. 31* Modified April 1979 by T. Casey for MR7.0a to fix bugs and complete implementation of secondary foreground jobs. 32* Modified July 1979 by T. Casey for MR8.0 to fix a design flaw in daemon load control. 33* Modified June 1981 by E. N. Kittlitz for MR9.0 to make it compile again. 34* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 35* Modified December 1981, E. N. Kittlitz. whotab copy of autbl control info. 36* Modified April 1982, E. N. Kittlitz. New AS initialization. set_maxunits uses biggest config if no match. 37* 38**/ 39 40 /****^ HISTORY COMMENTS: 41* 1) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 42* audit(86-06-10,Martinson), install(86-07-11,MR12.0-1092): 43* Correct error message documentation. 44* 2) change(86-08-04,Swenson), approve(87-07-13,MCR7741), 45* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 46* A) Use login server message buffer to return informative messages 47* to MNA connections. 48* 3) change(87-04-27,GDixon), approve(87-07-13,MCR7741), 49* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 50* A) Upgraded for change to answer_table.incl.pl1 and 51* user_table_entry.incl.pl1. 52* B) Fix attempt to set parameter not supplied to 53* check_for_process_creation entrypoint. 54* 4) change(87-07-22,GDixon), approve(87-07-22,MCR7741), 55* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 56* A) Add operator message document for undocumented sys_log_ calls. 57* B) Use constants declared in sys_log_constants.incl.pl1 in sys_log_ 58* calls. 59* 5) change(87-10-04,Beattie), approve(87-10-26,MCR7785), 60* audit(87-12-04,Parisek), install(87-12-07,MR12.2-1008): 61* Accomodate changes in format of date_time strings. 62* END HISTORY COMMENTS */ 63 64 /* Parameters */ 65 66 dcl P_code fixed bin (35) parameter; /* status code */ 67 dcl P_debug char (8) aligned parameter; /* unused */ 68 dcl P_pdtep ptr parameter; /* pointer to user's PDT entry */ 69 dcl P_satep ptr parameter; /* pointer to SAT entry for project */ 70 dcl P_text char (168) varying parameter; /* text of error returned */ 71 dcl P_unused1 ptr parameter; /* unused */ 72 dcl P_unused2 fixed bin parameter; /* unused */ 73 dcl P_utep ptr parameter; /* pointer to user's user table entry */ 74 75 /* Automatic */ 76 77 dcl (absentee, background, daemon, foreground, foreground_absentee, 78 interactive)bit (1) aligned init (""b), /* what kind of user do we have? */ 79 ct1 char (16) aligned, /* scratch date temp. */ 80 ec fixed bin, /* error code */ 81 (i, j) fixed bin, /* counters */ 82 junk char (8) aligned, 83 longinfo char (100) aligned, 84 maxprim fixed bin, /* group maximum load units */ 85 mcode fixed bin (35), /* remark by load_ctl_ about preemption */ 86 mesl fixed bin, 87 msg3 char (100) aligned, /* message buffer */ 88 (ncpu, nkmem, nbulk) fixed bin, /* configuration variables */ 89 (pdtep, satep) ptr, /* ptr to pdt entry and sat entry */ 90 check_for_process_creation_ep bit(1), /* off if entered at main ep, */ 91 /* on if entered at check_for_process_creation ep */ 92 reject_abs bit (1) aligned init (""b), /* turned on if abs job can never log in */ 93 time_now fixed bin (71), /* current clock reading */ 94 unitsmax fixed bin; /* anstbl.max_units - anstbl.extra_units */ 95 96 dcl 1 wci_area like work_class_info aligned automatic; 97 98 /* Static */ 99 100 dcl ME char (32) initial ("load_ctl_") internal static options (constant); 101 dcl NL char (1) int static init (" 102 "); 103 dcl tracing bit (1) aligned init ("0"b) int static; /* Trace switch. */ 104 dcl prio_sked bit (1) aligned int static; /* = true if the priority scheduler is enabled in the mgt */ 105 dcl first_group fixed bin int static; /* = 1 for old mgt, 17 for new */ 106 107 /* External */ 108 109 dcl as_error_table_$bumped_in_group fixed bin (35) ext; 110 dcl as_error_table_$bumped_secondary fixed bin (35) ext; 111 dcl as_error_table_$no_user_to_bump fixed bin (35) ext; 112 dcl as_error_table_$groupmax fixed bin (35) ext; 113 dcl as_error_table_$gpabsmax fixed bin (35) ext; 114 dcl as_error_table_$grp_full fixed bin (35) ext; 115 dcl as_error_table_$nf_nosec fixed bin (35) ext; 116 dcl as_error_table_$no_group fixed bin (35) ext; 117 dcl as_error_table_$not_full fixed bin (35) ext; 118 dcl as_error_table_$preempt_emergency fixed bin (35) ext; 119 dcl as_error_table_$preempt_emergency_prime fixed bin (35) ext; 120 dcl as_error_table_$preempt_group fixed bin (35) ext; 121 dcl as_error_table_$preempt_secondary fixed bin (35) ext; 122 dcl as_error_table_$proj_max fixed bin (35) ext; 123 dcl as_error_table_$protec_msg fixed bin (35) ext; 124 dcl as_error_table_$protec_till_msg fixed bin (35) ext; 125 dcl as_error_table_$saturate fixed bin (35) ext; 126 dcl as_error_table_$subject fixed bin (35) ext; 127 dcl as_error_table_$sys_full fixed bin (35) ext; 128 dcl as_error_table_$sysgrpfl fixed bin (35) ext; 129 dcl error_table_$out_of_sequence fixed bin (35) ext static; 130 dcl error_table_$unimplemented_version fixed bin (35) ext static; 131 132 /* Builtins */ 133 134 dcl (addr, clock, divide, hbound, length, max, min, null, reverse, rtrim, string, substr, verify) builtin; 135 136 /* Entries */ 137 138 dcl absentee_user_manager_$update_whotab_abs_control entry; 139 dcl absentee_utility_$au_send_wakeup entry; 140 dcl admin_$abs entry options (variable); 141 dcl as_meter_$read_config entry (fixed bin, fixed bin, fixed bin); 142 dcl asu_$bump_code entry (ptr, fixed bin (35), char (8) aligned, fixed bin, fixed bin); 143 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 144 dcl date_time_$format entry (char(*), fixed bin(71), char(*), char(*)) returns(char(250) var); 145 dcl ec_shift_config_change_ entry (char (*), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin); 146 dcl hcs_$initiate entry (char (*), char (*) aligned, char (*), fixed bin (1), fixed bin (2), ptr, fixed bin); 147 dcl ioa_$rs entry options (variable); 148 dcl ioa_$rsnnl entry options (variable); 149 dcl reassign_work_classes_ entry (fixed bin); 150 dcl sub_err_ entry () options (variable); 151 dcl sys_log_ entry options (variable); 152 dcl sys_log_$error_log entry options (variable); 153 154 155 /* Program */ 156 /* 157* load_ctl_: proc (P_utep, P_satep, P_pdtep, P_unused1, P_unused2, 158* P_debug, P_text, P_code); 159**/ 160 utep = P_utep; 161 satep = P_satep; 162 pdtep = P_pdtep; 163 P_debug = ""; 164 check_for_process_creation_ep = "0"b; 165 goto COMMON; 166 167 check_for_process_creation: 168 entry (P_utep, P_code); 169 170 utep = P_utep; 171 satep = ute.uprojp; 172 pdtep = ute.pdtep; 173 check_for_process_creation_ep = "1"b; 174 175 COMMON: 176 P_code = 0; 177 time_now = clock (); 178 179 /* What kind of user are we dealing with? */ 180 181 if ute.process_type = PT_DAEMON then daemon = "1"b; 182 else if ute.process_type = PT_ABSENTEE then do; /* absentee */ 183 absentee = "1"b; 184 if ute.queue > 0 then /* if queue number > 0 */ 185 background = "1"b; /* it's a background job */ 186 else foreground, foreground_absentee = "1"b; /* it's a foreground absentee job */ 187 end; 188 else /* interactive */ 189 foreground, interactive = "1"b; 190 191 192 /* Recompute the load figures for each group */ 193 194 ansp = as_data_$ansp; 195 autp = as_data_$autp; 196 unitsmax = anstbl.max_units - anstbl.extra_units; 197 mgt.total_units = 0; /* will recompute this */ 198 do i = first_group to mgt.current_size; /* look at all groups - skip over work classes */ 199 mgtep = addr (mgt.entry (i)); 200 if group.max_prim >= 0 then do; /* recalculate maxprim */ 201 if group.denom = 0 then maxprim = 0; /* Maxprim may have a fraction of maxunits */ 202 else maxprim = divide (group.num * unitsmax, group.denom, 17, 0); 203 maxprim = maxprim + group.minu; /* Plus some constant */ 204 maxprim = 10 * divide (max (maxprim, 0), 10, 17, 0); 205 /* make nonnegative and multiple of 10 */ 206 mgt.total_units = mgt.total_units + maxprim; 207 group.max_prim = maxprim; /* also set into group table */ 208 end; 209 if group.denom1 = 0 then maxprim = 0; 210 else maxprim = divide (group.num1 * unitsmax, group.denom1, 17, 0); 211 maxprim = maxprim + group.minamax; /* Add in constant part */ 212 maxprim = 10 * divide (max (maxprim, 0), 10, 17, 0); 213 group.absolute_max = maxprim; 214 215 group.absentee_limit = min (group.absentee_max, max (group.absentee_min, 216 divide (group.absentee_pct * autbl.max_abs_users, 100, 17, 0))); 217 218 if group.absentee_limit = 0 then /* if zero, check for these new parameters not being set */ 219 if group.absentee_min = 0 & group.absentee_pct = 0 then /* if they're unset, behave in pre-MR7.0 way */ 220 group.absentee_limit = autbl.max_abs_users; /* which is to have all slots open to each group */ 221 222 end; 223 224 /* Now, assign a group to this user, checking to make sure it is valid */ 225 226 ute.group = project.group; /* start with default group for project */ 227 228 if ute.at.igroup then /* the pdt and sat attribute bits were anded together 229* in lg_ctl_ */ 230 if permitted_proj_group (user.group) then /* if group ok for project */ 231 if existing_group ((user.group)) then do; /* and it is in the mgt */ 232 ute.group = user.group; 233 goto have_good_group; /* My apologies to Dijkstra */ 234 end; 235 236 if existing_group (ute.group) then /* check existence of project's default group */ 237 goto have_good_group; 238 239 if ute.process_type = PT_ABSENTEE then /* maybe we will have better luck with an absentee group */ 240 call set_absentee_group; /* if there is one */ 241 242 if existing_group (ute.group) then /* if there was */ 243 goto have_good_group; 244 245 /* If we fall thru, there was absolutely no load control group that we could put the guy in */ 246 247 call sys_log_ (SL_LOG_BEEP, "^a: Group ^a missing for ^a.^a", ME, 248 project.group, ute.person, ute.project); 249 250 if absentee then reject_abs = "1"b; /* no group is fatal */ 251 mcode = as_error_table_$no_group; /* There is some difference of opinion about that ... */ 252 go to nolog; /* but for now, we refuse to let him log in */ 253 254 have_good_group: /* come here from above, when group successfully assigned */ 255 256 if daemon then /* daemons are not subject to load control */ 257 goto logon1; /* so skip over all the checking */ 258 259 if absentee then /* if absentee job */ 260 if ute.abs_run then /* started by abs run command */ 261 if foreground then goto onprime; /* skip the checking, but charge the group */ 262 else goto on_sec; 263 264 /* Here begins the load control decision */ 265 266 267 if group.max_prim < 0 then do; /* Negative is special flag, take all the rest */ 268 maxprim = unitsmax - mgt.total_units; 269 if maxprim <= 0 then 270 call sys_log_ (SL_LOG_BEEP, 271 "load_ctl_: maxu too small (^d), ^d units for group ^a", 272 anstbl.max_units, maxprim, group.group_id); 273 end; 274 else maxprim = group.max_prim; 275 276 /* First check if project has maximum users or group is over absolute max. 277* Somewhere, in the history of Multics, the value of project.max_users 278* became obsolete. It is set to 32767 in new_proj and is not changeable 279* in edit_proj. The print_sat command displays it as "maxprim". This 280* comment serves to document what I found when I tried to figure out 281* what was hapenning in the following code. -- Eric Swenson. */ 282 283 if project.n_users >= project.max_users then do; /* Project is at maximum. */ 284 mcode = as_error_table_$proj_max; 285 if background then goto nolog; /* background absentee can't bump anybody */ 286 if ^(ute.at.pm_ok) then go to nolog; /* If cannot be primary, forget it. */ 287 if ^(ute.at.bumping) then go to nolog; /* If cannot bump, forget it. */ 288 call findsb (2, 0, 1, -1, ec); /* Try demoting some user on same proj */ 289 call findsb (2, 1, 0, 1, ec); /* Try bumping a secondary now. */ 290 if ec > 0 then go to onprime1; /* whee. */ 291 call findsb (2, 0, 1, 2, ec); /* Try to bump primary on project. Respect grace. */ 292 if ec > 0 then go to onprime1; /* Did we get one? */ 293 go to nolog; 294 end; 295 296 if group.n_prim + group.n_sec + ute.user_weight > group.absolute_max then do; 297 mcode = as_error_table_$groupmax; 298 if background then goto nolog; 299 if ^ute.at.pm_ok then go to nolog; /* If cannot be primary, forget it. */ 300 if ^ute.at.bumping then go to nolog; /* If cannot bump, forget it. */ 301 call findsb (1, 0, 1, -1, ec); /* First demote prime if possible. */ 302 call findsb (1, 1, 0, 1, ec); /* Demoting may have made a prime slot. */ 303 if ec > 0 then go to onprime1; 304 go to fullup; 305 end; 306 307 if background then /* if background absentee */ 308 if group.n_abs >= group.absentee_limit then do; /* and group is at its background limit */ 309 mcode = as_error_table_$gpabsmax; 310 goto nolog; 311 end; 312 313 /* Is system full? If not, check group limits here. */ 314 315 if anstbl.n_units + ute.user_weight <= anstbl.max_units then 316 if anstbl.max_users > anstbl.n_users then do; 317 mcode = as_error_table_$not_full; 318 if ute.at.guaranteed_login & foreground then go to onprime; 319 if ute.at.pm_ok & foreground then /* If user may be primary, check group full */ 320 if group.n_prim + ute.user_weight <= maxprim then go to onprime; 321 else if ute.at.bumping then do; /* all primary slots in use. try to demote somebody */ 322 call findsb (1, 0, 1, -1, ec);/* .. who is now prime but whose grace expired */ 323 if ec > 0 then go to onprime; /* .. and if so, give new fellow the prime */ 324 mcode = as_error_table_$grp_full; 325 end; 326 327 if background then goto on_sec; /* background absentee job is always a secondary user */ 328 if interactive & ute.at.sb_ok then go to on_sec; /* If cannot make interactive user prime, 329* can he be secondary? */ 330 331 if foreground_absentee & ute.uflags.foreground_secondary_ok then do; /* if fg abs job can be secondary */ 332 autbl.n_sec_fg = autbl.n_sec_fg + 1; /* count secondary foreground jobs */ 333 goto on_sec; 334 end; 335 336 mcode = as_error_table_$nf_nosec; /* Sys not full, grp full, no secondary allowed */ 337 go to nolog; 338 end; 339 340 /* System is full, so we can only log this user in by bumping someone. */ 341 342 mcode = as_error_table_$sys_full; 343 if ^(ute.at.pm_ok & foreground) then go to nolog; /* If user cannot be prime, forget it */ 344 if group.n_prim + ute.user_weight <= maxprim then do; 345 mcode = as_error_table_$bumped_secondary; 346 call findsb (0, 1, 0, 1, ec); /* Must be secondary on system. Bump */ 347 if ec = 0 then 348 call sys_log_ (SL_LOG_SILENT, 349 "^a: Too many primes. ^a.^a (^a) ^d/^d", 350 ME, ute.person, ute.project, ute.group, 351 anstbl.n_units, anstbl.max_units); 352 if anstbl.max_users > anstbl.n_users then go to onprime; 353 mcode = as_error_table_$saturate; /* No APT entry available */ 354 go to nolog; /* Our fault. Sorry */ 355 end; 356 357 /* System full, group full. Can we bump some other user in the same group? */ 358 359 mcode = as_error_table_$sysgrpfl; 360 361 fullup: 362 if background then goto nolog; /* background user can't bump anybody */ 363 if ute.at.guaranteed_login then go to trybump; /* guaranteed login will try to bump */ 364 if ^(ute.at.bumping) then go to nolog; /* System is full unless someone on group can be bumped */ 365 if group.n_prim = 0 then go to nolog; /* If nobody to bump, forget it */ 366 trybump: call findsb (1, 0, 1, 2, ec); /* Search for prime in same group (respect grace) to bump */ 367 if ec = 0 then do; /* if nobody bumped.. */ 368 if ute.at.guaranteed_login then /* Did we promise a login? */ 369 if anstbl.n_users < anstbl.max_users then do; 370 mcode = 0; /* clear out error code */ 371 go to onprime; 372 end; 373 else do; /* yes, and no room. */ 374 call findsb (0, 1, 0, 3, ec); /* Emergency bump of secondary */ 375 if ec = 0 then call findsb (0, -1, 1, 4, ec); /* Uh-oh. No secondaries. Primary? */ 376 if ec = 0 then call findsb (0, -1, 0, 4, ec); /* Really in trouble. Anybody at all */ 377 if ec > 0 then go to onprime; 378 end; 379 mcode = as_error_table_$no_user_to_bump; 380 go to nolog; 381 end; 382 onprime1: mcode = as_error_table_$bumped_in_group; 383 384 /* He can be logged in as a primary user */ 385 386 onprime: ute.standby_line = 0; /* Note primary */ 387 group.n_prim = group.n_prim + ute.user_weight; 388 call check_max_grace; /* set grace time to min of PDTE and SATE values */ 389 ute.cant_bump_until = time_now + ute.bump_grace; 390 if ute.at.brief | absentee then go to logon1; /* Skip message if brief or absentee */ 391 call Write_User_Message (mcode, ""); 392 ct1 = ""; 393 mcode = as_error_table_$protec_msg; 394 if ^ute.at.nobump then 395 if ute.bump_grace < 86400000000 then do; /* Fix message to say how long he's safe. */ 396 ct1 = date_time_$format ("time", ute.cant_bump_until, "", ""); 397 mcode = as_error_table_$protec_till_msg; 398 end; 399 call convert_status_code_ (mcode, junk, longinfo); 400 if longinfo ^= "" then do; 401 call ioa_$rsnnl (rtrim (longinfo), msg3, mesl, ct1); 402 call Write_User_Message (0, (msg3)); 403 end; 404 go to logon1; 405 406 /* He can be logged in as a secondary user */ 407 408 on_sec: ute.standby_line = 1; /* Note secondary */ 409 group.n_sec = group.n_sec + ute.user_weight; 410 ute.cant_bump_until = time_now; /* true but uninteresting */ 411 call check_max_grace; /* set grace time to min of PDTE and SATE values */ 412 if ute.at.brief | absentee then go to logon1; /* skip message if brief mode or absentee */ 413 mcode = as_error_table_$subject; 414 call Write_User_Message (mcode, ""); 415 logon1: 416 417 /* Now, assign a work class based on the load control group */ 418 419 if background then do; /* if background absentee */ 420 autbl.n_background_abs = autbl.n_background_abs + 1; /* /* count total background jobs */ 421 autbl.abs_units = autbl.abs_units + ute.user_weight; /* count total background units */ 422 group.n_abs = group.n_abs + 1; /* and count background users per group, before changing group */ 423 if ^group.absentee.allowed then /* if absentees not allowed in his group */ 424 call set_absentee_group; /* try to find another group for him */ 425 else ute.abs_group = group.group_id; /* but if we can't, he stays in this group */ 426 end; 427 428 /* See if priority scheduler is supposed to be on or off */ 429 430 if ^prio_sked then do; /* if prio sked was off, see if MGT installation turned it on */ 431 if mgt.version_indicator = "VERSION" then /* if good MGT */ 432 if mgt.prio_sked_on_tape then /* and prio sked is on system tape */ 433 if mgt.prio_sked_enabled then /* and MGT says to use it */ 434 prio_sked = "1"b; /* do so */ 435 end; 436 else /* it was on - see if it still is */ 437 if ^mgt.prio_sked_enabled then /* if MGT says to turn it off */ 438 prio_sked = ""b; /* do so */ 439 440 if prio_sked then do; /* if running with priority scheduler enabled */ 441 if background then /* if background absentee */ 442 ute.work_class = group.abs_wc (anstbl.shift); 443 else ute.work_class = group.int_wc (anstbl.shift); 444 end; 445 else ute.work_class = 1; /* it is definitely necessary that this be 1, and not zero or 446* garbage, when running with the priority scheduler disabled */ 447 448 449 /* Update various counters of users and units */ 450 451 anstbl.n_users = anstbl.n_users + 1; 452 anstbl.n_units = anstbl.n_units + ute.user_weight; 453 if daemon then /* if daemon process */ 454 anstbl.extra_units = anstbl.extra_units + ute.user_weight; /* incrememnt extra units */ 455 project.n_users = project.n_users + 1; 456 457 if autbl.abs_maxu_auto then /* if operator has not set abs maxu manually, then */ 458 if installation_parms.max_abs (anstbl.shift) ^= -1 then /* unless dynamic abs maxu is disabled */ 459 call set_abs_maxu; /* go set it as function of interactive load */ 460 461 return; 462 463 /* Insert code for edit-only here if desired */ 464 465 nolog: if ^check_for_process_creation_ep then do; 466 call convert_status_code_ (mcode, (""), longinfo); 467 if longinfo ^= "" 468 then P_text = substr (longinfo, 1, length (longinfo) + 1 - verify (reverse (longinfo), " ")) || NL; 469 else P_text = NL; 470 end; 471 P_code = mcode; 472 ute.failure_reason = 3; /* 3 means load_ctl_ said no */ 473 if reject_abs then /* if absentee job with serious problem */ 474 ute.login_result = 1; /* don't let it keep trying to log in */ 475 else ute.login_result = 2; /* 2 means allow another attempt */ 476 return; 477 478 /* ************************************************************************* */ 479 480 /* ADDITIONAL ENTRY POINTS, IN ALPHABETIC ORDER */ 481 482 init: entry (); 483 484 /**** Entry called during AS initialization to initialize load control */ 485 486 if ^sc_stat_$Multics_typed | sc_stat_$Go_typed then 487 call sub_err_ (error_table_$out_of_sequence, "load_ctl_$init", 488 ACTION_CANT_RESTART); 489 wcip = addr (wci_area); 490 string (work_class_info.switches) = ""b; /* only need to clear the switches, 491* since they control what other variables are looked at */ 492 493 ansp = as_data_$ansp; 494 autp = as_data_$autp; 495 anstbl.extra_units = 0; /* Clear control variables. */ 496 call hcs_$initiate (anstbl.sysdir, "mgt", "", 0, 1, mgtp, ec); 497 if mgtp = null then 498 call sub_err_ (ec, "load_ctl_$init", ACTION_CANT_RESTART, 499 null (), (0), "mgt"); 500 501 /* The following code decides whether or not to run with the priority scheduler enabled */ 502 503 prio_sked = "0"b; /* static switch - start with it off */ 504 first_group = 1; /* static index - start by assuming old format mgt */ 505 506 if mgt.version_indicator = "VERSION " then do; /* new format mgt (version 1 had no version stored in it) */ 507 first_group = 17; /* the first 16 are work classes */ 508 509 if mgt.version = 2 then goto V2_MGT; /* accept old MGTs for a while */ 510 if mgt.version = MGT_version_3 then do; /* if this is the version that we know about */ 511 V2_MGT: 512 mgt.prio_sked_on_tape = "1"b; /* also tell them if it is there */ 513 if mgt.prio_sked_enabled then /* see if administrator turned us off */ 514 prio_sked = "1"b; /* if he didn't, then we run with the priority scheduler */ 515 end; /* end version is ok do group */ 516 else do; /* possible incompatibility, or garbaged mgt */ 517 call sys_log_ (SL_LOG_BEEP, 518 "^a: Unknown mgt version number: ^d", 519 ME, mgt.version); 520 call sub_err_ (error_table_$unimplemented_version, 521 ME, ACTION_CANT_RESTART); 522 end; 523 524 end; /* end mgt version >= 2 do group */ 525 526 maxprim = 0; /* Check for error in tables. */ 527 do i = first_group to mgt.current_size; /* .. and reset the table. */ 528 mgtep = addr (mgt.entry (i)); 529 if group.max_prim < 0 then 530 if maxprim = 0 then maxprim = i; 531 else 532 call sys_log_ (SL_LOG_BEEP, 533 "^a: more than one group has -1 max: ^a", 534 ME, group.group_id); 535 group.n_prim, group.n_sec, group.n_eo, group.n_abs = 0; /* Clear group counters. */ 536 537 end; 538 539 540 /* after act_ctl_$init has been called, and the shift is defined, 541* as_init_ will call reassign_work_classes_, to set up the initial set of 542* work classes. (work class definitions are a function of shift, and the 543* shift is not defined at this point in initialization.) */ 544 545 return; 546 547 lctraceoff: entry; 548 549 tracing = "0"b; 550 return; 551 552 553 lctraceon: entry; 554 555 tracing = "1"b; 556 return; 557 558 load_level: entry (resp, idle_pct); 559 560 dcl resp fixed bin, /* current response estimate */ 561 idle_pct float bin; /* percentage idle */ 562 563 if as_data_$ansp = null then return; 564 ansp = as_data_$ansp; 565 autp = as_data_$autp; 566 if anstbl.auto_maxu ^= 2 then return; 567 if resp < anstbl.response_low then do; 568 anstbl.max_units = max (1.1e0 * anstbl.n_units, anstbl.n_units * (1e0 / (1e0 - idle_pct))); 569 end; 570 else if resp > anstbl.response_high then do; 571 anstbl.max_units = 0.9e0 * anstbl.n_units; 572 end; 573 else do; 574 anstbl.max_units = anstbl.n_units; 575 end; 576 whotab.mxunits = anstbl.max_units; 577 578 return; 579 580 /* ****************************************************************************************************************** */ 581 582 /* These two entry points have in common that they both read the config deck 583* and search the config array for a matching configuration and shift. 584* Then they set various shift-and-configuration-dependent parameters. 585* The first only sets absentee parameters, and is called whenever the operator 586* types "abs KEYWORD auto" where KEYWORD can be one of several. 587* The second sets all parameters, including absentee, and starts the absentee 588* facility if appropriate. It is called at startup time, and shift change, 589* and whenever the operator types "maxu auto". 590**/ 591 592 set_abs_parms: entry; 593 594 dcl abs_only bit (1) aligned; 595 596 abs_only = "1"b; 597 goto maxu_common; 598 599 set_maxunits: entry (oshf); 600 601 dcl oshf fixed bin; /* previous shift, if it just changed; else current shift */ 602 603 abs_only = ""b; 604 maxu_common: 605 606 if as_data_$ansp = null then return; /* if not initialized */ 607 ansp = as_data_$ansp; 608 autp = as_data_$autp; 609 if ^abs_only then do; 610 call reassign_work_classes_ (ec); 611 if ec ^= 0 then 612 call sys_log_$error_log (SL_LOG_BEEP, ec, "load_ctl_", 613 "During work class redefinition."); 614 end; 615 616 call as_meter_$read_config (ncpu, nkmem, nbulk); /* Get current configuration. */ 617 618 if ^abs_only then 619 call ec_shift_config_change_ (anstbl.sysdir, oshf, anstbl.shift, anstbl.auto_maxu, ncpu, nkmem, nbulk); 620 621 do i = 1 to installation_parms.ncon; /* look up current configuration in config deck */ 622 if ncpu <= installation_parms.cona (i).cpu then 623 if nkmem <= installation_parms.cona (i).kmem then 624 if nbulk <= installation_parms.cona (i).kbulk then 625 if anstbl.shift <= installation_parms.cona (i).shift then go to cfnd; 626 end; 627 i = installation_parms.ncon; /* last one is used */ 628 call sys_log_ (SL_LOG_BEEP, 629 "^a: configuration not in tables. ^d cpu, ^d mem, ^d bulk, shift ^d 630 using configuaration ^d cpu, ^d mem, ^d bulk, shift ^d", 631 ME, ncpu, nkmem, nbulk, anstbl.shift, 632 installation_parms.cona (i).cpu, installation_parms.cona (i).kmem, 633 installation_parms.cona (i).kbulk, installation_parms.cona (i).shift); 634 635 cfnd: 636 if anstbl.auto_maxu ^= 0 then do; 637 anstbl.response_low = installation_parms.cona (i).response_low; 638 anstbl.response_high = installation_parms.cona (i).response_high; 639 if anstbl.auto_maxu = 1 then anstbl.max_units = installation_parms.cona (i).maxu_base; 640 whotab.mxunits = anstbl.max_units; 641 end; 642 643 if (^autbl.abs_up & ^autbl.abs_stopped) then /* if abs not up and not stopped by operator, start it */ 644 call admin_$abs ("start", "startup"); 645 646 if autbl.abs_up then do; /* if absentee up, set parms not overridden by operator */ 647 648 if autbl.abs_maxu_auto then do; 649 if installation_parms.max_abs (anstbl.shift) = -1 then /* if dynamic abs maxu disabled */ 650 whotab.max_abs_users, autbl.max_abs_users = installation_parms.cona (i).maxa; /* use per-shift constant */ 651 else call set_abs_maxu; /* else go set abs maxu as function of interactive load */ 652 end; 653 654 if autbl.abs_maxq_auto then 655 autbl.last_queue_searched = installation_parms.cona (i).maxq; 656 657 if autbl.abs_qres_auto then 658 do j = 1 to 4; 659 autbl.qres (j) = min (installation_parms.max_qres (anstbl.shift, j), 660 max (installation_parms.min_qres (anstbl.shift, j), 661 divide (installation_parms.pct_qres (anstbl.shift, j) * autbl.max_abs_users, 100, 9, 0))); 662 end; 663 664 if autbl.abs_cpu_limit_auto then 665 do j = 1 to 4; 666 autbl.cpu_limit (j) = installation_parms.abs_cpu_max_limit (anstbl.shift, j); 667 end; 668 669 call absentee_user_manager_$update_whotab_abs_control; /* update public copy */ 670 call absentee_utility_$au_send_wakeup; /* parms changed, so tell abs to look for newly-eligible job */ 671 end; 672 return; 673 674 unload: entry (P_utep, P_unused2); 675 676 ansp = as_data_$ansp; 677 autp = as_data_$autp; 678 utep = P_utep; /* copy arg */ 679 if ute.queue < 0 then do; /* if daemon */ 680 anstbl.extra_units = anstbl.extra_units - ute.user_weight; /* decrement extra units */ 681 goto off1; 682 end; 683 do i = 1 to mgt.current_size; 684 mgtep = addr (mgt.entry (i)); 685 if ute.queue > 0 then do; /* if background absentee */ 686 if ute.abs_group = group.group_id then goto gf1; 687 end; 688 else if group.group_id = ute.group then go to gf1; 689 end; 690 call sys_log_ (SL_LOG_BEEP, "^a: group ^a missing at logout", ME, 691 ute.group); 692 go to off1; 693 gf1: if ute.standby_line = 0 then do; 694 group.n_prim = group.n_prim - ute.user_weight; 695 if group.n_sec > 0 then /* If anybody needs promoting, then */ 696 if group.max_prim < 0 | group.max_prim >= group.n_prim then do; 697 time_now = clock (); /* ... promote a secondary */ 698 call findsb (1, 1, 0, 0, ec); /* ... if any qualify */ 699 end; 700 end; 701 else do; 702 group.n_sec = group.n_sec - ute.user_weight; 703 if ute.foreground_secondary_ok then /* if foreground secondary job */ 704 autbl.n_sec_fg = autbl.n_sec_fg - 1; /* decremnt counter of that kind of job */ 705 end; 706 if ute.queue > 0 then do; /* if background absentee */ 707 group.n_abs = group.n_abs - 1; /* decrement counter */ 708 autbl.abs_units = autbl.abs_units - ute.user_weight; 709 autbl.n_background_abs = autbl.n_background_abs - 1; 710 end; 711 712 /* promote edit-only users here */ 713 714 off1: anstbl.n_users = anstbl.n_users - 1; 715 anstbl.n_units = anstbl.n_units - ute.user_weight; 716 satep = ute.uprojp; 717 project.n_users = project.n_users - 1; 718 719 if autbl.abs_maxu_auto then /* if operator has not set abs maxu manually, then */ 720 if installation_parms.max_abs (anstbl.shift) ^= -1 then /* unless dynamic abs maxu is disabled */ 721 call set_abs_maxu; /* go set it as function of interactive load */ 722 723 return; 724 725 726 /* ****************************************************************************************************************** */ 727 728 729 /* INTERNAL PROCEDURES, IN ALPHABETIC ORDER */ 730 731 732 check_max_grace: proc; 733 734 if foreground_absentee & ute.standby_line = 0 then/* a primary foreground job has a cpu time limit */ 735 ute.bump_grace = 525600; /* but it is "protected from preemption" in real time terms */ 736 else do; 737 ute.bump_grace = user.bump_grace; /* give grace time specified in PDTE */ 738 if ute.bump_grace > project.grace_max then do; /* unless it exceeds the limit in the SATE */ 739 call sys_log_ (SL_LOG_SILENT, 740 "^a: reduced grace for ^a.^a from ^d (in PDTE) to ^d (in SATE)", 741 ME, ute.person, ute.project, ute.bump_grace, project.grace_max); 742 ute.bump_grace = project.grace_max; 743 end; 744 ute.bump_grace = ute.bump_grace * 60000000; /* convert it to microseconds */ 745 end; 746 747 return; 748 749 end check_max_grace; 750 751 752 /* ****************************************************************************************************************** */ 753 754 755 existing_group: proc (a_group) returns (bit (1) aligned); 756 757 dcl a_group char (8); 758 dcl i fixed bin; 759 760 do i = first_group to mgt.current_size; 761 mgtep = addr (mgt.entry (i)); 762 if group.group_id = a_group then 763 return ("1"b); /* leaving mgtep set to it */ 764 end; 765 766 call sys_log_ (SL_LOG_BEEP, 767 "^a: group ^a not found in mgt for ^a.^a", 768 ME, a_group, ute.person, ute.project); 769 return ("0"b); 770 771 end existing_group; 772 773 774 /* ****************************************************************************************************************** */ 775 776 777 /* FINDSB - internal procedure to scan answer table. 778* 779* Can bump a user, promote a user, or demote a user. 780* 781* returns number of load units bumped (or promoted) in last arg 782* 783**/ 784 785 findsb: proc (grpmatch, pmsc, respect_grace, action, n_preempted); 786 787 dcl grpmatch fixed bin, /* 1 = groups must match, 2 = projects, 0 = dnc */ 788 pmsc fixed bin, /* 1 = secondary, 0 = prime, -1 = dnc */ 789 respect_grace fixed bin, /* 1 = yes, 0 = no */ 790 action fixed bin, /* >0 = bump, 0 = promote, -1 = demote */ 791 n_preempted fixed bin; 792 793 dcl oldest_atep ptr, 794 oldest_time fixed bin (71), 795 i fixed bin, 796 xgp ptr, 797 bumpx fixed bin (35), 798 why char (8) aligned, 799 p ptr; 800 801 n_preempted = 0; /* initialize preemption counter */ 802 bump_loop: if n_preempted >= ute.user_weight then return; 803 oldest_time = time_now; /* put highest-possible value in "oldest-time" */ 804 oldest_atep = null; /* initialize pointer */ 805 806 /* Got to search abs_user_tab for secondary foreground jobs, too */ 807 808 do i = 1 to anstbl.current_size; 809 p = addr (anstbl.entry (i)); /* get pointer to answer table entry */ 810 call see_if_oldest; 811 end; 812 if autbl.n_sec_fg > 0 then /* if secondary foreground absentees are logged in */ 813 do i = 1 to autbl.current_size; 814 p = addr (autbl.entry (i)); 815 if p -> ute.foreground_secondary_ok then 816 call see_if_oldest; 817 end; 818 819 if oldest_atep = null then return; 820 821 xgp = mgtep; /* Special case if group already known. */ 822 if ute.group = oldest_atep -> ute.group then go to gf2; 823 do i = 1 to mgt.current_size; /* Not same group. must locate group of other guy */ 824 xgp = addr (mgt.entry (i)); 825 if xgp -> group.group_id = oldest_atep -> ute.group then go to gf2; 826 end; 827 call sys_log_ (SL_LOG_BEEP, "^a: group ^a missing at preempt", ME, 828 oldest_atep -> ute.group); 829 return; 830 831 /* Found oldest guy. Do we promote or bump? */ 832 833 gf2: if action = 0 then do; /* Promote the fellow to primary */ 834 if tracing then 835 call sys_log_ (SL_LOG_SILENT, "^a: promote ^a.^a.^a ^d", 836 ME, oldest_atep -> ute.person, 837 oldest_atep -> ute.project, xgp -> group.group_id, 838 xgp -> group.n_prim); 839 oldest_atep -> ute.standby_line = 0; 840 xgp -> group.n_prim = xgp -> group.n_prim + oldest_atep -> ute.user_weight; 841 xgp -> group.n_sec = xgp -> group.n_sec - oldest_atep -> ute.user_weight; 842 oldest_atep -> ute.cant_bump_until = oldest_atep -> ute.bump_grace /* give only enough grace time so */ 843 + oldest_atep -> ute.login_time; /* it expires when it would have if he had logged in as primary */ 844 i = oldest_atep -> ute.whotabx; /* Fix whotab too */ 845 if i ^= 0 then do; /* .. if he is a listed user */ 846 whotab.e (i).stby = 0; /* Mark now primary */ 847 whotab.e (i).cant_bump_until = oldest_atep -> ute.cant_bump_until; 848 end; 849 end; 850 else if action = -1 then do; /* Demote the user to secondary */ 851 if ^oldest_atep -> ute.at.sb_ok then do; /* .. oops, can't demote this guy */ 852 bumpx = as_error_table_$preempt_group; 853 go to xbmp; 854 end; 855 maksb: oldest_atep -> ute.standby_line = 1; 856 if tracing then 857 call sys_log_ (SL_LOG_SILENT, "^a: demote ^a.^a.^a ^d", ME, 858 oldest_atep -> ute.person, 859 oldest_atep -> ute.project, xgp -> group.group_id, 860 xgp -> group.n_prim); 861 xgp -> group.n_prim = xgp -> group.n_prim - oldest_atep -> ute.user_weight; 862 xgp -> group.n_sec = xgp -> group.n_sec + oldest_atep -> ute.user_weight; 863 i = oldest_atep -> ute.whotabx; 864 if i ^= 0 then whotab.e (i).stby = 1; 865 end; 866 else do; /* Bump the user */ 867 if action = 1 then bumpx = as_error_table_$preempt_secondary; 868 else if action = 2 then bumpx = as_error_table_$preempt_group; 869 else if action = 3 then bumpx = as_error_table_$preempt_emergency; 870 else bumpx = as_error_table_$preempt_emergency_prime; 871 xbmp: oldest_atep -> ute.preempted = 1; /* indicate that user has been preempted */ 872 call asu_$bump_code (oldest_atep, bumpx, why, j, installation_parms.warning_time); 873 call sys_log_ (SL_LOG, "^a: bumping ^a.^a for ^a.^a: ^a", ME, 874 oldest_atep -> ute.person, oldest_atep -> ute.project, 875 ute.person, ute.project, why); 876 if oldest_atep -> ute.standby_line = 0 then go to maksb; 877 end; 878 879 n_preempted = n_preempted + oldest_atep -> ute.user_weight; 880 go to bump_loop; /* Keep trying */ 881 882 883 see_if_oldest: proc; 884 885 if p -> ute.active >= NOW_LOGGED_IN then /* if this is a logged-in user */ 886 if p -> ute.preempted = 0 then do; /* .. and hasn't been previously bumped, THEN */ 887 if grpmatch = 1 then /* if want groups to match, check */ 888 if ute.group ^= p -> ute.group then go to nope; 889 if grpmatch = 2 then /* If projects must match, check. */ 890 if ute.project ^= p -> ute.project then go to nope; 891 if pmsc ^= -1 then /* if care about prime/secondary */ 892 if pmsc ^= p -> ute.standby_line then go to nope; 893 if action = 0 then /* Promoting? See if promotable. */ 894 if ^(p -> ute.at.pm_ok) then go to nope; 895 else ; 896 else if p -> ute.at.nobump then go to nope; 897 if respect_grace = 1 then /* does grace matter? */ 898 if (p -> ute.cant_bump_until) > time_now then go to nope; 899 if p -> ute.login_time < oldest_time then do; /* is this the oldest user? */ 900 if action = 0 then /* if we are promoting, see if user has already been logged in 901* for a time >= his grace time */ 902 if p -> ute.login_time + p -> ute.bump_grace <= time_now 903 then goto nope; /* and if so, don't promote him */ 904 oldest_time = p -> ute.login_time; 905 oldest_atep = p; 906 end; 907 end; 908 909 nope: return; 910 911 end see_if_oldest; 912 913 end findsb; 914 915 916 /* ****************************************************************************************************************** */ 917 918 919 permitted_proj_group: proc (a_group) returns (bit (1) aligned); 920 921 dcl (a_group, t_group) char (8) aligned; 922 dcl i fixed bin; 923 924 /* see if this group is legal for this project */ 925 do i = 0 to 2; 926 if i = 0 then t_group = project.group; 927 else t_group = project.groups (i); 928 if t_group = "*" then goto ok_for_pj; 929 if t_group = a_group then goto ok_for_pj; 930 end; 931 932 call sys_log_ (SL_LOG_BEEP, 933 "^a: group ^a not authorized for project ^a", ME, 934 a_group, ute.project); 935 return ("0"b); 936 937 ok_for_pj: 938 return ("1"b); 939 940 end permitted_proj_group; 941 942 943 /* ****************************************************************************************************************** */ 944 945 946 set_abs_maxu: proc; /* set abs maxu from moving average of idle units */ 947 948 dcl current_idle_units fixed bin; /* units not in use by interactives or daemons */ 949 dcl n_idle_units fixed bin; /* number of samples in average */ 950 dcl sum_of_idle_units fixed bin; /* for taking the average */ 951 dcl time_in_seconds fixed bin; /* for keeping track of how old the samples are */ 952 dcl i fixed bin; /* for do loops */ 953 954 /* STATIC VARIABLES USED FOR KEEPING MOVING AVERAGE */ 955 956 dcl average_idle_units fixed bin int static; 957 dcl first_idle_unit fixed bin int static init (1); /* first valid sample in array */ 958 dcl last_idle_unit fixed bin int static init (0); /* last valid sample in array */ 959 dcl prev_idle_units (25) fixed bin int static init ((25) 0); /* samples of idle units over specified time period */ 960 dcl sample_times (0:25) fixed bin (35) int static init ((26) 0); /* times the samples were taken */ 961 /* sample_times (0) is needed to get it started */ 962 963 /* Compute current idle units. */ 964 965 current_idle_units = anstbl.max_units /* start with total units available on the system */ 966 - anstbl.n_units /* deduct units currently in use */ 967 + autbl.abs_units; /* add back units used by absentees */ 968 969 /* See if it is time to sample idle units again and recompute the average. */ 970 971 time_in_seconds = divide (anstbl.current_time, 1000000, 35, 0); 972 973 if time_in_seconds - sample_times (last_idle_unit) > 974 /* if time since we last sampled idle units is greater than */ 975 divide (installation_parms.idle_time_constant_seconds, hbound (prev_idle_units, 1), 17, 0) 976 /* desired sample interval */ 977 then do; /* then take another sample and recompute the average */ 978 979 /* Store the current sample */ 980 981 last_idle_unit = last_idle_unit + 1; /* use next array entry */ 982 if last_idle_unit > hbound (prev_idle_units, 1) then /* wrap around if necessary */ 983 last_idle_unit = 1; 984 prev_idle_units (last_idle_unit) = current_idle_units; /* save the sample */ 985 sample_times (last_idle_unit) = time_in_seconds; /* and the time it was taken */ 986 987 /* Eliminate samples that are older than we want to include in the average. */ 988 989 do while (sample_times (first_idle_unit) < 990 time_in_seconds - installation_parms.idle_time_constant_seconds); 991 prev_idle_units (first_idle_unit) = 0; /* zero old sample */ 992 first_idle_unit = first_idle_unit + 1; /* go to next sample */ 993 if first_idle_unit > hbound (prev_idle_units, 1) then /* wrap around if necessary */ 994 first_idle_unit = 1; 995 end; 996 997 /* Add up the samples */ 998 999 sum_of_idle_units = 0; 1000 if last_idle_unit >= first_idle_unit then 1001 n_idle_units = last_idle_unit - first_idle_unit + 1; 1002 else n_idle_units = hbound (prev_idle_units, 1) - (first_idle_unit - last_idle_unit - 1); 1003 1004 do i = 1 to hbound (prev_idle_units, 1); /* old ones have been zeroed */ 1005 sum_of_idle_units = sum_of_idle_units + prev_idle_units (i); 1006 end; 1007 1008 /* Get the average */ 1009 1010 average_idle_units = divide (sum_of_idle_units, n_idle_units, 17, 0); 1011 1012 end; /* end take sample and recompute average */ 1013 1014 /* Use the smaller of the average and current value, for absentee load control */ 1015 1016 autbl.idle_units = min (current_idle_units, average_idle_units); 1017 1018 autbl.max_abs_users = min (installation_parms.max_abs (anstbl.shift), 1019 max (installation_parms.min_abs (anstbl.shift), 1020 divide (installation_parms.pct_abs (anstbl.shift) * autbl.idle_units, 1000, 17, 0))); 1021 1022 whotab.max_abs_users = autbl.max_abs_users; 1023 1024 return; 1025 1026 end set_abs_maxu; 1027 1028 1029 /* ****************************************************************************************************************** */ 1030 1031 1032 set_absentee_group: proc; 1033 1034 dcl i fixed bin; 1035 dcl save_mgtep ptr; 1036 1037 save_mgtep = mgtep; /* in case we can't find another group for him */ 1038 ute.abs_group = group.group_id; /* in either case, remember the original group */ 1039 1040 do i = first_group to mgt.current_size; 1041 mgtep = addr (mgt.entry (i)); 1042 1043 if group.absentee.default_group then 1044 if group.absentee.default_queue (ute.queue) then do; 1045 ute.group = group.group_id; 1046 return; /* leaving mgtep pointing at the new group */ 1047 end; 1048 1049 end; /* if we fall thru */ 1050 /* we could not find another group to put him in */ 1051 mgtep = save_mgtep; /* so leave him in the one he's in now */ 1052 1053 return; 1054 1055 end set_absentee_group; 1056 1057 Write_User_Message: 1058 procedure (P_code, P_message); 1059 1060 dcl P_code fixed bin (35) parameter; 1061 dcl P_message char (*) parameter; 1062 1063 dcl message char (512) automatic; 1064 dcl message_lth fixed bin automatic; 1065 dcl message_buffer_cur_lth fixed bin automatic; 1066 dcl message_buffer_max_lth fixed bin automatic; 1067 dcl message_buffer_ptr ptr automatic; 1068 dcl new_message_buffer_max_lth fixed bin automatic; 1069 dcl new_message_buffer_ptr ptr automatic; 1070 dcl system_area_ptr ptr automatic; 1071 1072 dcl status_code_string char (100) aligned automatic; 1073 1074 dcl message_buffer char (message_buffer_max_lth) 1075 based (message_buffer_ptr); 1076 dcl new_message_buffer char (new_message_buffer_max_lth) 1077 based (new_message_buffer_ptr); 1078 dcl system_area area based (system_area_ptr); 1079 1080 dcl astty_$tty_force entry (ptr, ptr, fixed bin, fixed bin (35)); 1081 dcl get_system_free_area_ entry () returns (ptr); 1082 1083 if P_code ^= 0 then 1084 call convert_status_code_ (P_code, (""), status_code_string); 1085 else status_code_string = ""; 1086 1087 /**** Handle the case were the as_error_table_ entry specifies a null message. 1088* Only skip the message if both the code string and message string are 1089* null. */ 1090 1091 if (status_code_string = "") & (P_message = "") then 1092 return; 1093 1094 call ioa_$rs ("^[^a ^;^s^]^a", message, message_lth, 1095 (status_code_string ^= ""), status_code_string, 1096 rtrim (P_message)); 1097 1098 if ute.channel ^= null () then /* user has a MCS channel */ 1099 call astty_$tty_force ((ute.channel), addr (message), 1100 message_lth, (0)); 1101 else do; 1102 message_buffer_ptr = as_data_$ls_message_buffer_ptr; 1103 message_buffer_max_lth = as_data_$ls_message_buffer_max_lth; 1104 message_buffer_cur_lth = as_data_$ls_message_buffer_cur_lth; 1105 1106 if message_buffer_cur_lth + message_lth > message_buffer_max_lth then do; 1107 new_message_buffer_max_lth = message_buffer_max_lth + 1108 min (512, message_buffer_cur_lth + message_lth); 1109 system_area_ptr = get_system_free_area_ (); 1110 allocate new_message_buffer in (system_area) 1111 set (new_message_buffer_ptr); 1112 substr (new_message_buffer, 1, message_buffer_cur_lth) = 1113 substr (message_buffer, 1, message_buffer_cur_lth); 1114 free message_buffer; 1115 as_data_$ls_message_buffer_ptr, 1116 message_buffer_ptr = new_message_buffer_ptr; 1117 as_data_$ls_message_buffer_max_lth, 1118 message_buffer_max_lth = new_message_buffer_max_lth; 1119 end; 1120 1121 substr (message_buffer, message_buffer_cur_lth + 1, 1122 message_lth) = message; 1123 as_data_$ls_message_buffer_cur_lth = message_buffer_cur_lth + 1124 message_lth; 1125 end; 1126 return; 1127 end Write_User_Message; 1128 1129 1130 /* format: off */ 1131 /* 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 */ 1131 1132 /* 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 */ 1132 1133 /* 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 ... */ 1133 1134 /* 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 ... */ 1134 1135 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 5 2 5 3 /* format: style4 */ 5 4 5 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 5 6 5 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 5 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 5 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 5 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 5 11* WAIT_DISCARD_WAKEUP 5 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 5 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 5 14**/ 5 15 5 16 /****^ HISTORY COMMENTS: 5 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 5 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 5 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 5 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 22* Add named constants for instance tags. 5 23* END HISTORY COMMENTS */ 5 24 5 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 5 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 5 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 5 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 5 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 5 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 5 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 5 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 5 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 5 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 5 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 5 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 5 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 5 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 5 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 5 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 5 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 5 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 5 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 5 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 5 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 5 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 5 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 5 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 5 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 5 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 5 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 5 52 ) fixed bin internal static options (constant); 5 53 5 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 5 55 /* names of ute.destroy_flag values */ 5 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 5 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 5 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 5 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 5 60 "wait remove"); /* -13 */ 5 61 5 62 /* Values for "cdte.state", typewriter state. */ 5 63 5 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 5 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 5 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 5 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 5 68 ) fixed bin internal static options (constant); 5 69 5 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 5 71 /* names of cdte.state values */ 5 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 5 73 5 74 /* Values for "cdte.in_use" and "ate.active" */ 5 75 5 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 5 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 5 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 5 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 5 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 5 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 5 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 5 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 5 84 ) fixed bin internal static options (constant); 5 85 5 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 5 87 /* names of ute.active values */ 5 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 5 89 5 90 5 91 /**** Values for ute.tag */ 5 92 5 93 dcl (TAG_INTERACTIVE init("a"), 5 94 TAG_UFT init("f"), 5 95 TAG_ABSENTEE init("m"), 5 96 TAG_PROXY init("p"), 5 97 TAG_DAEMON init("z") 5 98 ) char(1) int static options(constant); 5 99 5 100 5 101 /**** Following are constants used to indicate to the process termination 5 102* handler the reason for the process termination. They are used by 5 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 5 104* uc_ls_destroy_request_. */ 5 105 5 106 dcl ( 5 107 PT_FPE initial (1), 5 108 PT_LOGOUT initial (4), 5 109 PT_NEW_PROC_AUTH initial (13), 5 110 PT_HANGUP initial (20), 5 111 PT_SHUTDOWN initial (21), 5 112 PT_BUMP initial (22), 5 113 PT_ALARM initial (23), 5 114 PT_DETACH initial (24), 5 115 PT_UNBUMP initial (25), 5 116 PT_OPERATOR_TERMINATE initial (27), 5 117 PT_DESTROY_REQUEST initial (30), 5 118 PT_NEW_PROC_REQUEST initial (31) 5 119 ) fixed bin (17) internal static options (constant); 5 120 5 121 /**** Values for ute.preempted: 5 122* -1 user unbumped after term signal sent 5 123* 0 user unbumped; ignore alarm___ 5 124* 1 value internally used in load_ctl_ 5 125* 2 user bumped; when alarm___ comes in, send term signal 5 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 5 127* signals come in 5 128* 4 user bumped; process sick, so destroy without sending term signal 5 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 5 130* termsgnl). */ 5 131 5 132 dcl ( 5 133 PREEMPT_UNBUMP initial (-1), 5 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 5 135 PREEMPT_LOAD_CTL initial (1), 5 136 PREEMPT_BUMPED initial (2), 5 137 PREEMPT_TERM_SENT initial (3), 5 138 PREEMPT_BUMPED_NO_TERM initial (4), 5 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 5 140 ) fixed bin (17) internal static options(constant); 5 141 5 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 5 143 "unbumped", 5 144 "not bumped, ignore alarm___", 5 145 "load_ctl_", 5 146 "bumped", 5 147 "bumped, trm_ sent", 5 148 "bumped without trm_", 5 149 "bumped, termsgnl received"); 5 150 5 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 1135 1136 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 6 2 6 3 /* Modified 740723 by PG to add short AIM access names */ 6 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 6 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 6 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 6 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 6 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 6 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 6 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 6 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 6 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 6 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 6 14* strict_trusted_path. */ 6 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 6 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 6 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 6 18 6 19 6 20 /****^ HISTORY COMMENTS: 6 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 6 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 6 23* added vchn_requires_accept parameter. 6 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 6 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 6 26* Correct formatting problems. 6 27* END HISTORY COMMENTS */ 6 28 6 29 6 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 6 31 6 32 6 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 6 34 2 part_1 like installation_parms_part_1 aligned, 6 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 6 36 6 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 6 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 6 39 6 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 6 41 2 installation_id char (32), /* Name printed at dialup and in who */ 6 42 2 company char (64), /* company name */ 6 43 2 department char (64), /* department */ 6 44 2 companyds char (120), /* company, double spaced */ 6 45 2 departmentds char (120), /* dpeartment double spaced */ 6 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 6 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 6 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 6 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 6 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 6 51 2 ndevices fixed bin, /* number of devices to charge */ 6 52 2 devtab (16), /* Maximum 16 */ 6 53 3 device_id char (8), /* Name of device */ 6 54 3 device_price (0: 7) float bin, /* Price by shift */ 6 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 6 56 2 warning_time fixed bin, /* seconds from warning to logout */ 6 57 2 login_time fixed bin, /* seconds in which to complete login */ 6 58 2 acct_update fixed bin, /* seconds between acct update */ 6 59 2 login_tries fixed bin, /* number of login tries allowed */ 6 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 6 61 2 registration_price float bin, /* fee per month per user */ 6 62 2 dolsign char (1), /* "dollar sign" */ 6 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 6 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 6 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 6 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 6 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 6 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 6 69* Initializer will copy the syserr_log */ 6 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 6 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 6 72 2 fatal_error_loop_count fixed bin (17) unaligned, 6 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 6 74 2 term_real_time_seconds fixed bin (17) unaligned, 6 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 6 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 6 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 6 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 6 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 6 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 6 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 6 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 6 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 6 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 6 85 2 level_names (0:7) char (32), /* Names for security levels. */ 6 86 2 category_names (18) char (32), /* Names for security categories. */ 6 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 6 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 6 89 2 ncon fixed bin, /* Number of config elements. */ 6 90 2 cona (51), /* each entry is 5 words long */ 6 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 6 92 3 shift fixed bin (5) unal, /* Shift number */ 6 93 3 x1 fixed bin (23) unal, 6 94 3 kmem fixed bin (17) unal, /* Memory size */ 6 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 6 96 3 x2 fixed bin (17) unal, 6 97 3 maxa fixed bin (11) unal, /* Max abs users */ 6 98 3 maxq fixed bin (5) unal, /* Max abs q */ 6 99 3 maxu_base fixed bin (17) unal, 6 100 3 response_high fixed bin (17) unal, 6 101 3 response_low fixed bin (17) unal, 6 102 3 x3 fixed bin (17) unal, 6 103 6 104 /* Absentee control parameters. New for MR7.0 */ 6 105 6 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 6 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 6 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 6 109 6 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 6 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 6 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 6 113 6 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 6 115 6 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 6 117 6 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 6 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 6 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 6 121 2 version fixed bin (35), /* must be 2 */ 6 122 2 nrates fixed bin, /* number of rate structures */ 6 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 6 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 6 125 2 require_operator_login bit (1) aligned, /* just what it says */ 6 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 6 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 6 128* mcacs segments for operators */ 6 129 2 password_min_length fixed bin, /* minimum length of passwords */ 6 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 6 131 2 password_change_interval fixed bin, /* number of days until must change */ 6 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 6 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 6 134* "accepted" by operator if personid is not 6 135* signed on system console */ 6 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 6 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 6 138* or someone miscounted when using part of pad2 */ 6 139 6 140 6 141 /* Entries in the following array may be accessed via system_info_$resource_price. 6 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 6 143 6 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 6 145 2 name char (32), 6 146 2 price float bin; 6 147 7 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 7 2 7 3 /* Created on 04/24/78 by Michael R. Jordan */ 7 4 /* Modified 04/10/79 by C. D. Tavares */ 7 5 7 6 dcl rifp ptr; 7 7 7 8 dcl 1 rcp_init_flags based (rifp), 7 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 7 10 2 pad1 bit (2) unaligned, /* obsolete */ 7 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 7 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 7 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 7 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 7 15 7 16 dcl (No_authentication initial (0), 7 17 Nominal_authentication initial (1), 7 18 Automatic_authentication initial (2), 7 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 7 20 7 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 7 22 ("none", "nominal", "automatic", "manual"); 7 23 7 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 6 148 6 149 6 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1136 1137 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 8 2 8 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 8 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 8 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 8 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 8 7 8 8 /* At login each user process is placed in that load control group specified in either 8 9* the project's SAT entry or the user's PDT entry. This group is remembered 8 10* in the user table entry for that process (ATE, DUTE, AUTE). 8 11* 8 12* MGT groups map each process into a set of processes called a work_class 8 13* as a function of shift and whether or not the process is absentee -- 8 14* also per group limits on the number of group members are given. 8 15* 8 16* The work_class entries in the MGT specify the configuration 8 17* of the hardcore scheduler on a per shift basis. If a work_class has the 8 18* realtime attribute, member processes will be given precisely specified 8 19* response characteristics. If running in deadline_not_percent mode on 8 20* a given shift then members of other work_classes will be given approximate 8 21* response characteristics; otherwise other work_classes will be given 8 22* percentages of whatever cpu time is unused by realtime processes. 8 23* REM */ 8 24 8 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 8 26 /* versions >= 3 contain deadline info */ 8 27 8 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 8 29 8 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 8 31* and work classes */ 8 32 9 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 9 2 9 3 /* the "author" items must always be the first ones in the table. The 9 4* module which moves the converted table to the System Control process 9 5* fills in these data items and assumes them to be at the head of the segment 9 6* regardless of the specific table's actual declaration. The variables 9 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 9 8* respectively. For tables installed in multiple processes, these 9 9* are to be used to lock out multiple installations. */ 9 10 9 11 /* Lock should be used as a modification lock. Since, in general, 9 12* entries may not be moved in system tables, even by installations, 9 13* it is sufficient for only installers and programs that change threads 9 14* to set or respect the lock. Simply updating data in an entry 9 15* requires no such protection. 9 16* 9 17* Last_install_time is used by readers of system tables to detect 9 18* installations or other serious modifications. By checking it before 9 19* and after copying a block of data, they can be protected against 9 20* modifications. 9 21* 9 22* Modules that set the lock should save proc_group_id, and then 9 23* put their group id there for the time they hold the lock. 9 24* if they do not actually install the, they should restore the group id. 9 25**/ 9 26 9 27 2 author aligned, /* validation data about table's author */ 9 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 9 29 3 lock bit (36), /* installation lock */ 9 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 9 31 3 update_authorization bit (1) unal, /* update only authorizations */ 9 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 9 33 3 pad bit (33) unaligned, 9 34 3 last_install_time fixed bin (71), 9 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 9 36 3 w_dir char (64), /* author's working directory */ 9 37 9 38 /* END INCLUDE FILE author.incl.pl1 */ 8 33 8 34 /* the author structure occupies 29 words */ 8 35 2 max_size fixed bin, /* maximum size of table */ 8 36 2 current_size fixed bin, /* current number of entries */ 8 37 2 total_units fixed bin, /* total units allocated */ 8 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 8 39* (the first version of the mgt had no version number) */ 8 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 8 41 2 switches aligned, 8 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 8 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 8 44* be used by the answering service (all processes will be 8 45* put in work class 1 regardless of what the mgt says) */ 8 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 8 47* on the system tape */ 8 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 8 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 8 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 8 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 8 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 8 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 8 54 /* the above variables occupy a total of 24 words */ 8 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 8 56 8 57 2 entry (100), /* array of entries */ 8 58 3 fill (32) fixed bin; /* 32 words each */ 8 59 /* the first 16 are work classes; the rest, load control groups */ 8 60 8 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 8 62 8 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 8 64 2 group_id char (8), /* group name */ 8 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 8 66 2 n_prim fixed bin, /* current number of primary units */ 8 67 2 n_sec fixed bin, /* current number of secondary units */ 8 68 2 n_eo fixed bin, /* current number of edit-only users */ 8 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 8 70 2 minu fixed bin, /* Constant number of units in maxprim */ 8 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 8 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 8 73 2 minamax fixed bin, /* Constant part of abs max */ 8 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 8 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 8 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 8 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 8 78 /* used halfwords to avoid using up all the pad - 8 79* we might need it later */ 8 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 8 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 8 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 8 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 8 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 8 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 8 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 8 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 8 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 8 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 8 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 8 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 8 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 8 93 8 94 dcl 1 work_class based (mgtep) aligned, 8 95 2 wc_name char (8), /* overlays group.group_id, but can only be 8 96* one of the strings "1" through "16" */ 8 97 2 switches aligned, 8 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 8 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 8 100 /* ed_mgt and up_mgt_ enforce consistency between these 8 101* and the group.absentee switches */ 8 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 8 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 8 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 8 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 8 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 8 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 8 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 8 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 8 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 8 111 8 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 1137 1138 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 10 2 /* Requires user_attributes.incl.pl1 */ 10 3 10 4 /* Modified 740723 by PG to add AIM info */ 10 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 10 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 10 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 10 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 10 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 10 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 10 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 10 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 10 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 10 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 10 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 10 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 10 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 10 18 10 19 dcl (PDT_version init (4), /* version of this declaration */ 10 20 PDT_header_lth init (256), /* length in words of PDT head */ 10 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 10 22 10 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 10 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 10 25 ) fixed bin internal static options (constant); 10 26 10 27 dcl 1 pdt based (pdtp) aligned, 10 28 11 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 11 2 11 3 /* the "author" items must always be the first ones in the table. The 11 4* module which moves the converted table to the System Control process 11 5* fills in these data items and assumes them to be at the head of the segment 11 6* regardless of the specific table's actual declaration. The variables 11 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 11 8* respectively. For tables installed in multiple processes, these 11 9* are to be used to lock out multiple installations. */ 11 10 11 11 /* Lock should be used as a modification lock. Since, in general, 11 12* entries may not be moved in system tables, even by installations, 11 13* it is sufficient for only installers and programs that change threads 11 14* to set or respect the lock. Simply updating data in an entry 11 15* requires no such protection. 11 16* 11 17* Last_install_time is used by readers of system tables to detect 11 18* installations or other serious modifications. By checking it before 11 19* and after copying a block of data, they can be protected against 11 20* modifications. 11 21* 11 22* Modules that set the lock should save proc_group_id, and then 11 23* put their group id there for the time they hold the lock. 11 24* if they do not actually install the, they should restore the group id. 11 25**/ 11 26 11 27 2 author aligned, /* validation data about table's author */ 11 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 11 29 3 lock bit (36), /* installation lock */ 11 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 11 31 3 update_authorization bit (1) unal, /* update only authorizations */ 11 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 11 33 3 pad bit (33) unaligned, 11 34 3 last_install_time fixed bin (71), 11 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 11 36 3 w_dir char (64), /* author's working directory */ 11 37 11 38 /* END INCLUDE FILE author.incl.pl1 */ 10 29 10 30 2 max_size fixed bin, /* max number of entries table can grow */ 10 31 2 current_size fixed bin, /* current size of table (in entries) */ 10 32 2 version fixed bin, /* table version */ 10 33 2 freep fixed bin, /* relptr to begin of free chain */ 10 34 2 n_users fixed bin, /* number of entries actually used */ 10 35 2 project_name char (28), /* name of project */ 10 36 2 project_dir char (64), /* treename of project's directory */ 10 37 2 projfile_version fixed bin, 10 38 2 projentry bit (66*36), 10 39 2 pad3 (5) bit (36) aligned, 10 40 2 reqfile_version fixed bin, 10 41 2 reqentry bit (40*36), 10 42 2 pad4 (9) fixed bin, 10 43 2 sat_version fixed bin, 10 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 10 45 2 pad5 (4) bit (36) aligned, 10 46 2 date_reqfile_copied fixed bin (71), 10 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 10 48 2 pad2l bit (27) unaligned, 10 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 10 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 10 51 2 user (1019) aligned, /* the project definition table entries */ 10 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 10 53 10 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 10 55 10 56 10 57 10 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 10 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 10 60 2 lock bit (36), /* update lock */ 10 61 2 person_id char (24) aligned, /* login name of user */ 10 62 2 now_in fixed bin, /* count of users logged in on this entry */ 10 63 2 password char (8) aligned, /* password for anonymous user */ 10 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 10 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 10 66 2 home_dir char (64) aligned, /* user's default working directory */ 10 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 10 68 2 high_ring fixed bin, /* highest ring user may use */ 10 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 10 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 10 71 2 outer_module char (32), /* outer module used if user is interactive */ 10 72 2 lot_size fixed bin, /* size of linkage offset table */ 10 73 2 kst_size fixed bin, /* size of known segment table */ 10 74 2 cls_size fixed bin, /* size of combined linkage */ 10 75 2 uflags, /* various flags */ 10 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 10 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 10 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 10 79 3 flagpad bit (33) unal, 10 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 10 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 10 82 2 dollar_limit float bin, 10 83 2 dollar_charge float bin, /* total dollars spent this month */ 10 84 2 shift_limit (0: 7) float bin, 10 85 2 daton fixed bin (71), /* date user added to system */ 10 86 2 datof fixed bin (71), /* date user deleted */ 10 87 2 last_login_time fixed bin (71), /* time of last login */ 10 88 2 last_login_unit char (4), /* terminal id last used */ 10 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 10 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 10 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 10 92 2 last_update fixed bin (71), /* time of last transaction */ 10 93 2 logins fixed bin, /* number of logins */ 10 94 2 crashes fixed bin, /* sessions abnormally terminated */ 10 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 10 96 3 charge float bin, /* total dollar charge this shift */ 10 97 3 xxx fixed bin, 10 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 10 99 3 core fixed bin (71), /* core demand in page-microseconds */ 10 100 3 connect fixed bin (71), /* total console time in microseconds */ 10 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 10 102 2 absentee (4), /* absentee use, queues 1-4 */ 10 103 3 charge float bin, /* dollar charge this queue */ 10 104 3 jobs fixed bin, /* number of jobs submitted */ 10 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 10 106 3 memory fixed bin (71), /* total memory demand */ 10 107 2 iod (4), /* io daemon use, queues 1-4 */ 10 108 3 charge float bin, /* dollar charge this queue */ 10 109 3 pieces fixed bin, /* pieces of output requested */ 10 110 3 pad fixed bin (35), 10 111 3 pages fixed bin (35), /* number of pages output */ 10 112 3 lines fixed bin (71), /* total record count of output */ 10 113 2 devices (16) float bin, /* device charges */ 10 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 10 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 10 116 2 absolute_spent float bin, /* Spending against this */ 10 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 10 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 10 119 2 pad_was_authorization bit (72) aligned, 10 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 10 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 10 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 10 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 10 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 10 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 10 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 10 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 10 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 10 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 10 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 10 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 10 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 10 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 10 134 2 user_authorization (2) bit (72) aligned, /* range */ 10 135 2 pdtupad (5) fixed bin, 10 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 10 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 10 138 2 chain fixed bin; /* free chain */ 10 139 10 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 1138 1139 1140 dcl pdtp ptr automatic init (null); /* pdt needs it */ 1141 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 12 2 12 3 12 4 12 5 12 6 /****^ HISTORY COMMENTS: 12 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 12 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 12 9* Expand comment line of project.state to include the renamed state (state = 12 10* 3). 12 11* END HISTORY COMMENTS */ 12 12 12 13 12 14 12 15 /* Modified 740723 by PG to add AIM info */ 12 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 12 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 12 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 12 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 12 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 12 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 12 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 12 23 12 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 12 25 12 26 SAT_header_lth init (466), /* length in words of SAT header */ 12 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 12 28 12 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 12 30 ) fixed bin internal static options (constant); 12 31 12 32 dcl 1 sat based (satp) aligned, 12 33 13 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 13 2 13 3 /* the "author" items must always be the first ones in the table. The 13 4* module which moves the converted table to the System Control process 13 5* fills in these data items and assumes them to be at the head of the segment 13 6* regardless of the specific table's actual declaration. The variables 13 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 13 8* respectively. For tables installed in multiple processes, these 13 9* are to be used to lock out multiple installations. */ 13 10 13 11 /* Lock should be used as a modification lock. Since, in general, 13 12* entries may not be moved in system tables, even by installations, 13 13* it is sufficient for only installers and programs that change threads 13 14* to set or respect the lock. Simply updating data in an entry 13 15* requires no such protection. 13 16* 13 17* Last_install_time is used by readers of system tables to detect 13 18* installations or other serious modifications. By checking it before 13 19* and after copying a block of data, they can be protected against 13 20* modifications. 13 21* 13 22* Modules that set the lock should save proc_group_id, and then 13 23* put their group id there for the time they hold the lock. 13 24* if they do not actually install the, they should restore the group id. 13 25**/ 13 26 13 27 2 author aligned, /* validation data about table's author */ 13 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 13 29 3 lock bit (36), /* installation lock */ 13 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 13 31 3 update_authorization bit (1) unal, /* update only authorizations */ 13 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 13 33 3 pad bit (33) unaligned, 13 34 3 last_install_time fixed bin (71), 13 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 13 36 3 w_dir char (64), /* author's working directory */ 13 37 13 38 /* END INCLUDE FILE author.incl.pl1 */ 12 34 12 35 2 max_size fixed bin, /* max number of entries table can grow */ 12 36 2 current_size fixed bin, /* current size of table (in entries) */ 12 37 2 version fixed bin, /* version number of table (word 32) */ 12 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 12 39 2 n_projects fixed bin, /* number of entries actually used */ 12 40 2 pad_was_max_users bit (36) aligned, 12 41 2 max_units fixed bin, /* maximum number of login-units per session */ 12 42 2 pad_was_max_prim bit (36) aligned, 12 43 2 uwt_size fixed bin, /* size of User Weight Table */ 12 44 2 uwt (24) aligned, /* User Weight Table */ 12 45 3 initproc char (64) unaligned, /* user's initial procedure */ 12 46 3 units fixed bin, /* weight of initial procedure */ 12 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 12 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 12 49 2 project (3258), /* The SAT entries. 255K segment. */ 12 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 12 51 12 52 12 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 12 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 12 55 2 project_id char (12) unaligned, /* project's name */ 12 56 2 project_dir char (64) unaligned, /* project's directory */ 12 57 2 pdt_ptr pointer, /* pointer to current PDT */ 12 58 2 max_users fixed bin, /* maximum number of users from project */ 12 59 2 n_users fixed bin, /* current number */ 12 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 12 61 2 admin (4) aligned, /* list of project's administrators */ 12 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 12 63 3 pad char (2) unal, 12 64 2 cutoff char (1), /* if project is cut off, why. */ 12 65 2 min_ring fixed bin, /* lowest ring for project */ 12 66 2 max_ring fixed bin, /* highest ring for project */ 12 67 2 alias char (8) unal, /* project alias */ 12 68 2 group char (8) unal, /* default group for this project */ 12 69 2 grace_max fixed bin, /* maximum bump grace */ 12 70 2 audit bit (36), /* audit flags for project */ 12 71 2 project_authorization (2) bit (72), /* authorization of this project */ 12 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 12 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 12 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 12 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 12 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 12 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 12 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 12 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 12 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 12 81 2 satpad1 fixed bin (9) unsigned unaligned, 12 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 12 83 2 chain fixed bin; /* if free entry, chain */ 12 84 12 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 1141 1142 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 14 2 14 3 14 4 /****^ HISTORY COMMENTS: 14 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 14 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 14 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 14 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 10* Reorganized by type of data to improve readability. 14 11* END HISTORY COMMENTS */ 14 12 14 13 14 14 /* ACCESS NAMES */ 14 15 dcl ( 14 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 14 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 14 18 ) char(32) ext static; 14 19 14 20 /* PATHNAMES */ 14 21 dcl ( 14 22 sc_stat_$info_dir, /* admin info segs directory */ 14 23 sc_stat_$log_dir, /* as log segs directory */ 14 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 14 25 sc_stat_$sysdir /* system control directory */ 14 26 ) char(168) ext static; 14 27 14 28 /* OTHER CHAR STRINGS */ 14 29 dcl ( 14 30 sc_stat_$master_channel /* Master TTY channel. */ 14 31 ) char(6) aligned ext static; 14 32 14 33 /* LABELS */ 14 34 dcl ( 14 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 14 36 /* ssu_$null_label unless */ 14 37 /* admin_listener is active. */ 14 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 14 39 /* attributable to a particular */ 14 40 /* command. */ 14 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 14 42 ) label variable ext static; 14 43 14 44 /* POINTERS TO */ 14 45 dcl ( 14 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 14 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 14 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 14 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 14 50 /* by sys_log_. */ 14 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 14 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 14 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 14 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 14 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 14 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 14 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 14 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 14 59 ) ptr ext static; 14 60 14 61 /* SWITCHES */ 14 62 dcl ( 14 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 14 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 14 65 sc_stat_$Multics, /* TRUE after answering service started */ 14 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 14 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 14 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 14 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 14 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 14 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 14 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 14 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 14 74 /* if PNT not yet available. */ 14 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 14 76 sc_stat_$test_mode, /* TRUE if in test environment */ 14 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 14 78 /* by operator signed on system console*/ 14 79 ) bit(1) aligned ext static; 14 80 14 81 14 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 1142 1143 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 15 2 /* format: style3 */ 15 3 15 4 /* These constants are to be used for the flags argument of sub_err_ */ 15 5 /* They are just "string (condition_info_header.action_flags)" */ 15 6 15 7 declare ( 15 8 ACTION_CAN_RESTART init (""b), 15 9 ACTION_CANT_RESTART init ("1"b), 15 10 ACTION_DEFAULT_RESTART 15 11 init ("01"b), 15 12 ACTION_QUIET_RESTART 15 13 init ("001"b), 15 14 ACTION_SUPPORT_SIGNAL 15 15 init ("0001"b) 15 16 ) bit (36) aligned internal static options (constant); 15 17 15 18 /* End include file */ 1143 1144 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 16 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 16 7* Added sl_info structure and associated named constants for use in calling 16 8* sys_log_$general. 16 9* END HISTORY COMMENTS */ 16 10 16 11 16 12 /* format: style4 */ 16 13 16 14 dcl ( 16 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 16 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 16 17 SL_TYPE init (-1), /* type message */ 16 18 SL_LOG_SILENT init (0), /* log message */ 16 19 SL_LOG init (1), /* log & type message */ 16 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 16 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 16 22 ) fixed bin internal static options (constant); 16 23 16 24 dcl 1 sl_info aligned automatic, 16 25 2 version char(8), /* structure version */ 16 26 2 arg_list_ptr ptr, /* arg_list with values */ 16 27 2 loc, 16 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 16 29 /* These flags control where the corresponding data item is found.*/ 16 30 /* -1: data appears in the corresponding structure element below */ 16 31 /* 0: data is not present anywhere */ 16 32 /* +N: data is Nth item in argument list pointed to by */ 16 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 16 34 /* corresponding structure element. */ 16 35 /* if data = +N: */ 16 36 /* argN is data_ptr, argN+1 is data_len */ 16 37 /* if ioa_msg = +N: */ 16 38 /* argN+1, ... argLAST are arguments substituted into the */ 16 39 /* ioa_msg control string. The formatted msg is returned. */ 16 40 2 flags, 16 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 16 42 3 flags_pad bit(35) unal, 16 43 2 mode fixed bin, /* as-mode, command-mode */ 16 44 2 severity fixed bin, /* error severity */ 16 45 2 code fixed bin(35), /* error table code */ 16 46 2 caller char(65) varying, /* caller refname$entryname*/ 16 47 2 data, /* binary data ptr/length */ 16 48 3 data_ptr ptr, 16 49 3 data_lth fixed bin(21), 16 50 2 class char(10) varying, /* binary data class */ 16 51 2 ioa_msg char(500) varying; /* formatted message text */ 16 52 16 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 54 /* */ 16 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 16 56 /* their data types should be as shown in the structure above, except that */ 16 57 /* character strings should be char(*) nonvarying. */ 16 58 /* */ 16 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 60 16 61 /* value for sl_info.version */ 16 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 16 63 16 64 /* values for sl_info.mode */ 16 65 dcl (SL_INFO_as_mode init(1), 16 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 16 67 16 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 16 69 dcl (SL_INFO_arg_given_in_structure init(-1), 16 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 16 71 16 72 16 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 74 /* */ 16 75 /* The following static structures are commonly used in the Login Server */ 16 76 /* user control software. */ 16 77 /* */ 16 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 79 16 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 16 81 16 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 16 83 2 version char(8) init ("sl_info1"), 16 84 2 arg_list_ptr ptr init (null), 16 85 2 loc, 16 86 3 (mode init (-1), 16 87 severity init ( 1), 16 88 code init ( 2), 16 89 caller init (-1), 16 90 data init ( 0), 16 91 class init ( 0), 16 92 ioa_msg init ( 3)) fixed bin, 16 93 2 flags, 16 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 16 95 3 flags_pad bit(35) unal init ("0"b), 16 96 2 mode fixed bin init ( 1), 16 97 2 severity fixed bin init ( 0), 16 98 2 code fixed bin(35) init ( 0), 16 99 2 caller char(65) varying init (""), 16 100 2 data, 16 101 3 data_ptr ptr init (null), 16 102 3 data_lth fixed bin(21) init ( 0), 16 103 2 class char(10) varying init (""), 16 104 2 ioa_msg char(500) varying init (""); 16 105 16 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 16 107 16 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 16 109 2 version char(8) init ("sl_info1"), 16 110 2 arg_list_ptr ptr init (null), 16 111 2 loc, 16 112 3 (mode init (-1), 16 113 severity init ( 1), 16 114 code init ( 0), 16 115 caller init (-1), 16 116 data init ( 0), 16 117 class init ( 0), 16 118 ioa_msg init ( 2)) fixed bin, 16 119 2 flags, 16 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 16 121 3 flags_pad bit(35) unal init ("0"b), 16 122 2 mode fixed bin init ( 1), 16 123 2 severity fixed bin init ( 0), 16 124 2 code fixed bin(35) init ( 0), 16 125 2 caller char(65) varying init (""), 16 126 2 data, 16 127 3 data_ptr ptr init (null), 16 128 3 data_lth fixed bin(21) init ( 0), 16 129 2 class char(10) varying init (""), 16 130 2 ioa_msg char(500) varying init (""); 16 131 16 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 16 133 16 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 16 135 2 version char(8) init ("sl_info1"), 16 136 2 arg_list_ptr ptr init (null), 16 137 2 loc, 16 138 3 (mode init (-1), 16 139 severity init ( 1), 16 140 code init ( 0), 16 141 caller init (-1), 16 142 data init ( 0), 16 143 class init ( 0), 16 144 ioa_msg init ( 2)) fixed bin, 16 145 2 flags, 16 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 16 147 3 flags_pad bit(35) unal init ("0"b), 16 148 2 mode fixed bin init ( 1), 16 149 2 severity fixed bin init ( 0), 16 150 2 code fixed bin(35) init ( 0), 16 151 2 caller char(65) varying init (""), 16 152 2 data, 16 153 3 data_ptr ptr init (null), 16 154 3 data_lth fixed bin(21) init ( 0), 16 155 2 class char(10) varying init (""), 16 156 2 ioa_msg char(500) varying init (""); 16 157 16 158 16 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 16 160 16 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 16 162 2 version char(8) init ("sl_info1"), 16 163 2 arg_list_ptr ptr init (null), 16 164 2 loc, 16 165 3 (mode init (-1), 16 166 severity init ( 1), 16 167 code init ( 2), 16 168 caller init (-1), 16 169 data init ( 0), 16 170 class init ( 0), 16 171 ioa_msg init ( 4)) fixed bin, 16 172 2 flags, 16 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 16 174 3 flags_pad bit(35) unal init ("0"b), 16 175 2 mode fixed bin init ( 1), 16 176 2 severity fixed bin init ( 0), 16 177 2 code fixed bin(35) init ( 0), 16 178 2 caller char(65) varying init (""), 16 179 2 data, 16 180 3 data_ptr ptr init (null), 16 181 3 data_lth fixed bin(21) init ( 0), 16 182 2 class char(10) varying init (""), 16 183 2 ioa_msg char(500) varying init (""); 16 184 16 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 16 186 16 187 dcl 1 sl_info_code_msg aligned int static options(constant), 16 188 2 version char(8) init ("sl_info1"), 16 189 2 arg_list_ptr ptr init (null), 16 190 2 loc, 16 191 3 (mode init (-1), 16 192 severity init (-1), 16 193 code init ( 1), 16 194 caller init (-1), 16 195 data init ( 0), 16 196 class init ( 0), 16 197 ioa_msg init ( 2)) fixed bin, 16 198 2 flags, 16 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 16 200 3 flags_pad bit(35) unal init ("0"b), 16 201 2 mode fixed bin init ( 1), 16 202 2 severity fixed bin init ( 0), 16 203 2 code fixed bin(35) init ( 0), 16 204 2 caller char(65) varying init (""), 16 205 2 data, 16 206 3 data_ptr ptr init (null), 16 207 3 data_lth fixed bin(21) init ( 0), 16 208 2 class char(10) varying init (""), 16 209 2 ioa_msg char(500) varying init (""); 16 210 16 211 16 212 /* Syntax: call Trace (ioa_ctl, args); */ 16 213 16 214 dcl 1 sl_info_msg aligned int static options(constant), 16 215 2 version char(8) init ("sl_info1"), 16 216 2 arg_list_ptr ptr init (null), 16 217 2 loc, 16 218 3 (mode init (-1), 16 219 severity init (-1), 16 220 code init ( 0), 16 221 caller init (-1), 16 222 data init ( 0), 16 223 class init ( 0), 16 224 ioa_msg init ( 1)) fixed bin, 16 225 2 flags, 16 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 16 227 3 flags_pad bit(35) unal init ("0"b), 16 228 2 mode fixed bin init ( 1), 16 229 2 severity fixed bin init ( 0), 16 230 2 code fixed bin(35) init ( 0), 16 231 2 caller char(65) varying init (""), 16 232 2 data, 16 233 3 data_ptr ptr init (null), 16 234 3 data_lth fixed bin(21) init ( 0), 16 235 2 class char(10) varying init (""), 16 236 2 ioa_msg char(500) varying init (""); 16 237 16 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 1144 1145 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 17 2 17 3 17 4 /****^ HISTORY COMMENTS: 17 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 17 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 17 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 17 8* attribute switches. 17 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 17 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 17 12* be deleted. 17 13* B) Add constants identifying attributes that can be changed by user at 17 14* login, etc. 17 15* END HISTORY COMMENTS */ 17 16 17 17 17 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 17 19 17 20 /* format: style4 */ 17 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 17 22 (2 administrator bit (1), /* 1 system administrator privileges */ 17 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 17 24 2 nobump bit (1), /* 2 user cannot be bumped */ 17 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 17 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 17 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 17 28* . of same project (distinct from "nobump") */ 17 29 2 nolist bit (1), /* 7 don't list user on "who" */ 17 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 17 31 2 multip bit (1), /* 9 user may have several processes */ 17 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 17 33 2 brief bit (1), /* 11 no login or logout message */ 17 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 17 35 2 vhomedir bit (1), /* 13 user may change homedir */ 17 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 17 37 2 sb_ok bit (1), /* 15 user may be standby */ 17 38 2 pm_ok bit (1), /* 16 user may be primary */ 17 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 17 40 2 daemon bit (1), /* 18 user may login as daemon */ 17 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 17 42 2 no_warning bit (1), /* 20 no warning message */ 17 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 17 44* . in PDT: this user has an individual load control group */ 17 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 17 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 17 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 17 48 2 pad bit (12)) unaligned; 17 49 17 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 17 51 ("none", /* 0 */ 17 52 "administrator", /* 1 */ 17 53 "primary_line", /* 2 */ 17 54 "nobump", /* 3 */ 17 55 "guaranteed_login", /* 4 */ 17 56 "anonymous", /* 5 */ 17 57 "nopreempt", /* 6 */ 17 58 "nolist", /* 7 */ 17 59 "dialok", /* 8 */ 17 60 "multip", /* 9 */ 17 61 "bumping", /* 10 */ 17 62 "brief", /* 11 */ 17 63 "vinitproc", /* 12 */ 17 64 "vhomedir", /* 13 */ 17 65 "nostartup", /* 14 */ 17 66 "no_secondary", /* 15 */ 17 67 "no_prime", /* 16 */ 17 68 "no_eo", /* 17 */ 17 69 "daemon", /* 18 */ 17 70 "", /* 19 vdim OBSOLETE */ 17 71 "no_warning", /* 20 */ 17 72 "igroup", /* 21 */ 17 73 "save_pdir", /* 22 */ 17 74 "disconnect_ok", /* 23 */ 17 75 "save_on_disconnect"); /* 24 */ 17 76 17 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 17 78 ("null", /* 0 */ 17 79 "admin", /* 1 */ 17 80 "", "", /* 2 - 3 */ 17 81 "guar", /* 4 */ 17 82 "anon", /* 5 */ 17 83 "", "", /* 6 - 7 */ 17 84 "dial", /* 8 */ 17 85 "multi_login", /* 9 */ 17 86 "preempting", /* 10 */ 17 87 "", /* 11 */ 17 88 "v_process_overseer", /* 12 */ 17 89 "v_home_dir", /* 13 */ 17 90 "no_start_up", /* 14 */ 17 91 "no_sec", /* 15 */ 17 92 "no_primary", /* 16 */ 17 93 "no_edit_only", /* 17 */ 17 94 "op_login", /* 18 */ 17 95 "", /* 19 */ 17 96 "nowarn", /* 20 */ 17 97 "", "", "", /* 21 - 23 */ 17 98 "save"); /* 24 */ 17 99 17 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 17 101 options(constant) init("000000000010000000010000000000000000"b); 17 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 17 103 17 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 17 105 options(constant) init("000000000010000000010000000000000000"b); 17 106 /* PDT value for (brief, no_warning) is default */ 17 107 17 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 17 109 options(constant) init("000100000110010000010000000000000000"b); 17 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 17 111 18 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 18 2 18 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 4 /* */ 18 5 /* This include file describes the attributes of an absentee job. It is */ 18 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 18 7 /* and PIT.incl.pl1. */ 18 8 /* */ 18 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 10 18 11 /****^ HISTORY COMMENTS: 18 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 18 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 14* Separated abs_attributes from the request structure 18 15* (abs_message_format.incl.pl1) so that the identical structure could be 18 16* used in the ute structure (user_table_entry.incl.pl1). 18 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 18 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 19* Added ABS_ATTRIBUTE_NAMES array. 18 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 18 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 18 22* Added the no_start_up flag. SCP6367 18 23* END HISTORY COMMENTS */ 18 24 18 25 dcl 1 user_abs_attributes aligned based, 18 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 18 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 18 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 18 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 18 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 18 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 18 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 18 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 18 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 18 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 18 36 2 attributes_pad bit (26) unaligned; 18 37 18 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 18 39 "restartable", 18 40 "user_deferred_until_time", 18 41 "proxy", 18 42 "set_bit_cnt", 18 43 "time_in_gmt", 18 44 "user_deferred_indefinitely", 18 45 "secondary_ok", 18 46 "truncate_absout", 18 47 "restarted", 18 48 "no_start_up"); 18 49 18 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 18 51 17 112 17 113 17 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 1145 1146 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 19 2 19 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 4 /* */ 19 5 /* This include file requires that the user include */ 19 6 /* user_attributes.incl.pl1 as well. It also includes */ 19 7 /* abs_attributes.incl.pl1 itself. */ 19 8 /* */ 19 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 19 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 19 11 /* */ 19 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 13 19 14 /****^ HISTORY COMMENTS: 19 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 19 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 19 17* This comment for hcom. 19 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 19 19* anstbl.incl.pl1, and dutbl.incl.pl1. 19 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 19 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 19 22* 84-07-12 BIM added min_process_authorization 19 23* 84-12-31 Keith Loepere added pdir_dir_quota 19 24* 85-01-16 by E. Swenson to add ute.session_uid 19 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 19 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 19 27* Added fields for DSA login server support. 19 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 19 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 19 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 19 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 19 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 19 33* Added disconnection_rel_minutes. 19 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 19 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 36* Changed structure under ute.abs_attributes to use like structure in 19 37* abs_attributes.incl.pl1. This allows the same attributes to be used 19 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 19 39* file. 19 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 19 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 19 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 19 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 45* A) Global reorganization to locate things by type of data. 19 46* B) Eliminate ute.uflags.logged_in. 19 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 19 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 49* A) Reduced overlength person and project fields to proper length. 19 50* B) Adjusted dialed-console section to begin on even word boundary. 19 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 19 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 53* Add ute.line_type. 19 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 19 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 19 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 19 57* for the storage. SCP6367 19 58* END HISTORY COMMENTS */ 19 59 19 60 /* format: style4 */ 19 61 19 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 63 /* */ 19 64 /* Each of the named sections below defines a type of data. Typing comes */ 19 65 /* from data associated with the ute entry itself, with the person, with */ 19 66 /* login argument data, from the main user of the data (eg, dialup_, */ 19 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 19 68 /* and is an even number of words long. The total structure is 300 decimal */ 19 69 /* words long. */ 19 70 /* */ 19 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 72 19 73 19 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 19 75 19 76 dcl utep pointer automatic init (null); 19 77 19 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 19 79 19 80 /* Variables which give state of this entry */ 19 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 19 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 19 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 19 84 2 next_free fixed bin, /* points to previous free entry */ 19 85 19 86 /* Information user gave about person_id associated with this entry. */ 19 87 2 person char (24) unal, /* user's name */ 19 88 2 project char (12) unal, /* project of absentee user */ 19 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 19 90 2 tag_pad bit (27) unal, 19 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 19 92 2 login_flags, /* flags for login data */ 19 93 3 cpw bit (1) unal, /* flag for wish to change password */ 19 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 19 95 3 special_pw unal, /* dial or slave */ 19 96 4 dial_pw bit (1) unal, /* true if dial -user */ 19 97 4 slave_pw bit (1) unal, /* true if slave -user */ 19 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 19 99 3 cda bit (1) unal, /* flag to change default authorization */ 19 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 19 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 19 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 19 103 3 pw_pad bit (25) unal, /* spare parts */ 19 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 19 105 /* Must remain last in pw_flags so it does not */ 19 106 /* appear in PW_FLAG_VALUES array below. */ 19 107 2 generated_pw char (8) unal, /* user must type this as new password */ 19 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 19 109 2 process_authorization bit (72), /* access_authorization of this process */ 19 110 19 111 /* Information user gave about process associated with this entry. */ 19 112 2 outer_module char (32) unal, /* Name of console dim */ 19 113 2 home_dir char (64) unal, /* initial home directory */ 19 114 2 init_proc char (64) unal, /* name of login responder */ 19 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 19 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 19 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 19 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 19 119 2 initial_ring fixed bin, /* ring process will be started in */ 19 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 19 121 2 ln_args fixed bin, /* length of string containing arguments */ 19 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 19 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 19 124 19 125 /* Most of the following information is relevant only to absentee processes */ 19 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 19 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 19 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 19 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 19 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 19 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 19 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 19 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 19 134* (but see uflags.adjust_abs_q_no). */ 19 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 19 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 19 137 2 abs_flags, 19 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 19 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 19 140 3 abs_flags_pad bit (34) unal, 19 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 19 142 2 sender char (32) unal, /* name of RJE station that job is from */ 19 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 19 144 2 proxy_project char (9) unal, 19 145 2 proxy_project_pad char (3) unal, 19 146 2 abs_pad fixed bin, 19 147 19 148 /* Information about process actually created */ 19 149 2 proc_id bit (36), /* process id of absentee process */ 19 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 19 151 2 process_authorization_range (2) bit (72) aligned, 19 152 2 audit bit (36), /* audit flags for user */ 19 153 2 lot_size fixed bin, /* Size of linkage offset table */ 19 154 2 kst_size fixed bin, /* Size of process known segment table */ 19 155 2 cls_size fixed bin, /* Size of process combined linkage */ 19 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 19 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 19 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 19 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 19 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 19 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 19 162 2 pdir_pad fixed bin(17) unal, 19 163 2 process_pad fixed bin, 19 164 19 165 /* Information about primary terminal associated with this entry */ 19 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 19 167 2 terminal_type char (32) unaligned, /* terminal type */ 19 168 2 line_type fixed bin, /* line type */ 19 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 19 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 19 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 19 172 19 173 /* Variables useful for dialed terminals */ 19 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 19 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 19 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 19 177 2 dial_server_flags, 19 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 19 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 19 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 19 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 19 182 19 183 /* Information about usage/accounting. Device usage meters are in a 19 184* separate segment, "devtab" */ 19 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 19 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 19 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 19 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 19 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 19 190 2 last_update_time fixed bin (71), /* time of last account update */ 19 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 19 192 2 ndevices fixed bin, /* Count of attached devices */ 19 193 2 device_head fixed bin, /* Table index of head of device chain */ 19 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 19 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 19 196 2 rs_number_pad bit(30) unal, 19 197 2 usage_pad fixed bin, 19 198 19 199 /* Information for dialup_ (control variables). */ 19 200 2 event fixed bin (71), /* event associated with channel or user manager */ 19 201 2 uprojp ptr, /* ptr to user project sat entry */ 19 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 19 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 19 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 19 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 19 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 19 207 2 count fixed bin, /* counter for logins and dialups */ 19 208 2 n_processes fixed bin, /* number of processes created in this session */ 19 209 2 lock_value fixed bin, /* number of locks set for this entry */ 19 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 19 211 2 login_code char (8) unal, /* login command from LOGIN line */ 19 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 19 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 19 214 2 logout_type char (4) unal, /* type of logout */ 19 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 19 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 19 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 19 218 2 work_class fixed bin, /* work class used by priority scheduler */ 19 219 2 group char (8) unal, /* party group identifier */ 19 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 19 221 19 222 2 uflags, /* Miscellaneous flags */ 19 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 19 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 19 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 19 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 19 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 19 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 19 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 19 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 19 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 19 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 19 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 19 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 19 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 19 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 19 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 19 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 19 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 19 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 19 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 19 242 3 uflags_pad bit (17) unal, 19 243 19 244 /* Information used by load_ctl_ for the process */ 19 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 19 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 19 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 19 248 19 249 19 250 /* Information for login server */ 19 251 2 login_server_info, 19 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 19 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 19 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 19 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 19 256 3 process_id bit (36) aligned, /* process_id of login server */ 19 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 19 258 19 259 /* values for ute.process_type */ 19 260 19 261 dcl (PT_INTERACTIVE initial (1), 19 262 PT_ABSENTEE initial (2), 19 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 19 264 19 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 19 266 "INVALID-TYPE", 19 267 "interactive", 19 268 "absentee", 19 269 "daemon"); 19 270 19 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 19 272 "UNKNOWN-TABLE", 19 273 "answer_table", 19 274 "absentee_user_table", 19 275 "daemon_user_table"); 19 276 19 277 19 278 /* values for ute.pw_flags.mask_ctl */ 19 279 19 280 dcl (DO_MASK init ("00"b), 19 281 DONT_MASK init ("01"b), 19 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 19 283 19 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 19 285 "do_mask", "dont_mask", "derive_mask", ""); 19 286 19 287 19 288 /* names for ute.pw_flags */ 19 289 19 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 19 291 "cpw", 19 292 "generate_pw", 19 293 "dial_pw", 19 294 "slave_pw", 19 295 "cdp", 19 296 "cda", 19 297 "auth_given", 19 298 "noprint", 19 299 "operator"); 19 300 19 301 /* names for ute.uflags */ 19 302 19 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 19 304 "dont_call_init_admin", 19 305 "ip_given", 19 306 "ss_given", 19 307 "lvs_attached", 19 308 "send_initial_string", 19 309 "adjust_abs_q_no", 19 310 "foreground_secondary_ok", 19 311 "foreground_job", 19 312 "sus_sent", 19 313 "suspended", 19 314 "ignore_cpulimit", 19 315 "deferral_logged", 19 316 "save_if_disconnected", 19 317 "disconnected", 19 318 "disconnected_list", 19 319 "proc_create_ok", 19 320 "activity_can_unbump", 19 321 "fpe_causes_logout", 19 322 "user_specified_immediate"); 19 323 19 324 /* names for ute.abs_flags */ 19 325 19 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 19 327 "abs_run", 19 328 "notify"); 19 329 19 330 /* names of ute.dial_server_flags */ 19 331 19 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 19 333 "registered", 19 334 "privileged"); 19 335 19 336 /* values of ute.login_result */ 19 337 19 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 19 339 "logged in", 19 340 "login failed, hangup", 19 341 "login failed, try again"); 19 342 19 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 1146 1147 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 20 2 20 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 4 /* */ 20 5 /* This include file declares the header shared by the answer_table, */ 20 6 /* absentee_user_table and daemon_user_table include files. */ 20 7 /* */ 20 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 9 20 10 /****^ HISTORY COMMENTS: 20 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 20 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 13* Initial coding. 20 14* END HISTORY COMMENTS */ 20 15 20 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 20 17 2 header_version fixed bin, /* version of the header (3) */ 20 18 2 entry_version fixed bin, /* version of user table entries */ 20 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 20 20 2 header_length fixed bin, /* length of the header */ 20 21 2 max_size fixed bin, /* max number of entries in this table */ 20 22 2 current_size fixed bin, /* actual size of table (in entries) */ 20 23 2 number_free fixed bin, /* number of free entries in the table. */ 20 24 2 first_free fixed bin, /* index of first entry in the free list. */ 20 25 2 as_procid bit (36), /* process ID of user table manager process */ 20 26 2 ut_header_pad fixed bin; 20 27 20 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 1147 1148 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 21 2 21 3 /* Modified 740723 by PG to add security info */ 21 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 21 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 21 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 21 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 21 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 21 9 21 10 dcl 1 whotab based (whoptr) aligned, 21 11 2 mxusers fixed bin, /* max. number of users on system */ 21 12 2 n_users fixed bin, /* current number of users */ 21 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 21 14 2 n_units fixed bin, /* current load */ 21 15 2 timeup fixed bin (71), /* time system was started */ 21 16 2 session char (8), /* AS state, same as anstbl.session */ 21 17 2 nextsd fixed bin (71), /* time we will shutdown */ 21 18 2 until fixed bin (71), /* projected time we start up again */ 21 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 21 20 2 erfno char (8), /* if a crash, the error number */ 21 21 2 obsolete_why char (32), /* reason for last shutdown */ 21 22 2 installation_id char (32), /* name of installation */ 21 23 2 obsolete_message char (32), /* message for all users */ 21 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 21 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 21 26 2 max_abs_users fixed bin, /* max number of absentee users */ 21 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 21 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 21 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 21 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 21 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 21 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 21 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 21 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 21 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 21 36 2 pad1 bit (9) unal, 21 37 2 pad (3) fixed bin, 21 38 2 version fixed bin, /* structure version */ 21 39 2 header_size fixed bin, /* length of header in words */ 21 40 2 entry_size fixed bin, /* length of entry in words */ 21 41 /* laste_adjust is used only by Answering Service programs */ 21 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 21 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 21 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 21 45 21 46 /* whotab header extension: The header is extended from 64 words by 21 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 21 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 21 49* present. This allows existing programs to function with old definitions of 21 50* whotab. Obviously no new header field can be more than 31 contiguous words in 21 51* length. In the Answering Service, all programs using whotab must be compiled 21 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 21 53 21 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 21 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 21 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 21 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 21 58 2 abs_control, /* see absentee_user_table */ 21 59 3 mnbz bit (1) unal, /* must not be zero */ 21 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 21 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 21 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 21 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 21 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 21 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 21 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 21 67 3 control_pad bit (23) unal, 21 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 21 69 2 installation_request_pid bit (36), /* installation process identifier */ 21 70 2 sysid char (32), /* current system name */ 21 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 21 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 21 73 2 message char (124), /* message for all users */ 21 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 21 75 2 why char (124), /* reason for last shutdown */ 21 76 2 e (1000), /* offset 240o */ 21 77 3 active fixed bin, /* nonzero means logged in */ 21 78 3 person char (28) aligned, /* person name */ 21 79 3 project char (28), /* project id */ 21 80 3 anon fixed bin, /* 1 if anonymous user */ 21 81 3 padding fixed bin (71), 21 82 3 timeon fixed bin (71), /* time of login */ 21 83 3 units fixed bin, /* load units */ 21 84 3 stby fixed bin, /* 1 if stby */ 21 85 3 idcode char (4), /* tty id code */ 21 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 21 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 21 88 3 group char (8), /* party-line group */ 21 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 21 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 21 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 21 92 3 pad2 bit (33) unal, 21 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 21 94 3 process_authorization bit (72); /* access authorization of process */ 21 95 21 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 21 97 21 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 1148 1149 /* BEGIN INCLUDE FILE ... work_class_info.incl.pl1 ... Mod REM 1/76 */ 22 2 22 3 22 4 /* This include file provides the structure used to call 22 5* hphcs_$define_work_classes. The version number should be set by 22 6* the caller to WCI_version_N */ 22 7 22 8 dcl wcip ptr; /* pointer on which work_class_info is based */ 22 9 dcl WCI_version_3 fixed bin int static init (3); /* current version of the structure */ 22 10 22 11 dcl 1 work_class_info aligned based (wcip), 22 12 2 version fixed bin, /* version of this structure */ 22 13 2 switches aligned, /* one word of switches */ 22 14 3 user_wc_defined (16) bit (1) unaligned, /* which user work classes are defined ("1"b = defined) */ 22 15 3 set_system_wc bit (1) unaligned, /* = "1"b if percent of system work class to be changed */ 22 16 3 set_user_wc bit (1) unaligned, /* = "1"b if definitions of user work classes to be changed */ 22 17 3 set_sked_mode bit (1) unal, /* "1"b if setting deadline | percent mode */ 22 18 3 set_max_batch_elig bit (1) unal, /* "1"b if setting max batch elig */ 22 19 3 pad bit (16) unal, /* rest of word */ 22 20 2 system_wc_min_pct fixed bin, /* new percent for system work class */ 22 21 2 user_wc_min_pct (16) fixed bin, /* percents for the normal user work classes */ 22 22 2 error_process_id bit (36) aligned, /* returned if we tried to undefine this process's work class */ 22 23 2 error_work_class fixed bin, /* the work class that had the above process in it */ 22 24 /* Version 1 limit */ 22 25 2 flags aligned, 22 26 3 deadline_mode bit (1) unal, /* = "1"b if virtual deadline for the many */ 22 27 3 realtime (16) bit (1) unaligned, /* which user work classes are realtime */ 22 28 3 governed (16) bit (1) unal, /* which work classes are governed ("1"b = defined)*/ 22 29 3 pad bit (3) unal, 22 30 2 max_batch_elig fixed bin, /* if nonzero is max batch elig */ 22 31 2 resp1 (16) fixed bin (35), /* response time after interaction(micro_sec) */ 22 32 2 quantum1 (16) fixed bin (35), /* first time slice after interaction(micro_sec) */ 22 33 2 resp2 (16) fixed bin (35), /* time between sucessive time slices(micro_sec) */ 22 34 2 quantum2 (16) fixed bin (35), /* second and following time slices(micro_sec) */ 22 35 2 wc_max_elig (0:16) fixed bin (35), /* Added if answering service ever decides to use it */ 22 36 2 io_priority (0:16) fixed bin (35), 22 37 2 pin_weight (0:16) fixed bin (35), 22 38 2 user_wc_max_pct (16) fixed bin; /* max percent of total cpu for governed WC */ 22 39 22 40 /* structure for calling hphcs_$tune_work_class */ 22 41 22 42 dcl WCTI_version_3 fixed bin int static init (3); 22 43 22 44 dcl 1 work_class_tune_info aligned based, 22 45 2 version fixed bin, 22 46 2 wc_number fixed bin (35), /* which workclass is to be changed */ 22 47 2 resp1 fixed bin (71), /* time til quantum after interact(micro_sec) */ 22 48 2 resp2 fixed bin (71), /* time between successive quanta(micro_sec) */ 22 49 2 quantum1 fixed bin (35), /* quantum after interaction(micro_sec) */ 22 50 2 quantum2 fixed bin (35), /* successive quanta(micro_sec) */ 22 51 2 maxel fixed bin (35), /* maxeligible for this workclass */ 22 52 2 set aligned, 22 53 3 resp1 bit (1) unal, 22 54 3 resp2 bit (1) unal, 22 55 3 quantum1 bit (1) unal, 22 56 3 quantum2 bit (1) unal, 22 57 3 maxel bit (1) unal, 22 58 3 purging bit (1) unal, 22 59 3 realtime bit (1) unal, 22 60 3 pin_weight bit (1) unal, 22 61 3 io_priority bit (1) unal, 22 62 3 governed bit (1) unal, 22 63 3 interactive_q bit (1) unal, 22 64 3 pad bit (25) unal, 22 65 2 pin_weight fixed bin (35), 22 66 2 max_percent fixed bin (35), 22 67 2 flags aligned, 22 68 3 io_priority bit (1) unal, 22 69 3 purging bit (1) unal, 22 70 3 realtime bit (1) unal, 22 71 3 interactive_q bit (1) unal, 22 72 3 pad bit (33) unal; 22 73 22 74 22 75 /* END INCLUDE FILE ... work_class_info.incl.pl1 */ 1149 1150 1151 /* BEGIN MESSAGE DOCUMENTATION 1152* 1153* Message: 1154* load_ctl_: reduced grace for PERSON.PROJECT from MINUTES1 (in PDTE) to MINUTES2 (in SATE) 1155* 1156* S: $as0 1157* 1158* T: $run 1159* 1160* M: The Project Definition Table (PDT) entry for PERSON.PROJECT specifies 1161* a larger grace time (time during which a process is protected from 1162* preemption) than does the System Administrator's Table (SAT) entry for the 1163* project. The time given in the SAT entry is used. 1164* 1165* A: $ignore 1166* 1167* 1168* Message: 1169* load_ctl_: bumping NAME1.PROJ for NAME2.PROJ: REASON 1170* 1171* S: as (severity1) 1172* 1173* T: $run 1174* 1175* M: This message is typed out when a user is bumped. A 1176* user may be bumped by another member of his load control 1177* group, in which case REASON is pr_grp, which 1178* means group preemption. If a secondary user is bumped 1179* by a primary user, either from the same group or from 1180* another group, REASON is pr_sec, meaning secondary 1181* user preemption. If REASON is pr_emrg, meaning 1182* emergency preemption, a system programmer was logging 1183* in and had to bump some user. A user is usually given 1184* three minutes after this message to clean up 1185* and log out before being automatically logged out. 1186* 1187* A: $ignore 1188* 1189* 1190* Message: 1191* load_ctl_: configuration not in tables. X cpu, Y mem, W bulk, shift Z 1192* using configuartion XX cpu, YY mem, WW bulk, shift ZZ 1193* 1194* S: as (severity2) 1195* 1196* T: May occur at any time. 1197* 1198* M: The automatic setting of maxunits by the load control 1199* facility was attempted, but the configuration tables did not have 1200* a configuration defined that matched the current configuration. No 1201* change was made to the system parameters. The system continues 1202* operation, selecting the last entry in the config tables (which should 1203* correspond to the largest system described by the system administrator.) 1204* The values assumed by automatic load control are given in the second line 1205* of the message. 1206* 1207* A: Set maxunits and the absentee max manually. Inform 1208* the system administrator so that he can update the load control 1209* tables. 1210* 1211* 1212* Message: 1213* load_ctl_: demote NAME.PROJ GROUP NNN 1214* 1215* S: as (severity1) 1216* 1217* T: $run 1218* 1219* M: This is trace output. This user has been demoted to 1220* secondary status. 1221* 1222* A: $ignore 1223* To turn off this 1224* output, type load_ctl_$lctraceoff from admin mode. 1225* 1226* 1227* Message: 1228* load_ctl_: Entry not found. master_group_table 1229* 1230* S: as (severity2) 1231* 1232* T: $init 1233* 1234* M: load_ctl_ cannot find the master_group_table. The 1235* system will probably not be able to perform the bootload operation. 1236* 1237* A: $inform 1238* 1239* 1240* Message: 1241* load_ctl_: group GRPID missing at preempt 1242* 1243* S: as (severity2) 1244* 1245* T: $run 1246* 1247* M: The master_group_table entry for GRPID has vanished. 1248* The system is attempting to preempt a user from that group but 1249* cannot find the table entry for the group. The system will attempt to 1250* continue. 1251* 1252* A: $inform_sa 1253* 1254* 1255* Message: 1256* load_ctl_: group GRPID missing at logout 1257* 1258* S: as (severity2) 1259* 1260* T: $run 1261* 1262* M: The master_group_table entry for GRPID has vanished. 1263* The system is attempting to logout a user from that group but 1264* cannot find the table entry for the group. The system will attempt to 1265* continue. 1266* 1267* A: $inform_sa 1268* 1269* 1270* Message: 1271* load_ctl_: Group GRPID missing for NAME.PROJ 1272* 1273* S: as (severity2) 1274* 1275* T: $run 1276* 1277* M: The system administrator has designated that the project PROJ 1278* should be in the load control group GRPID but the entry in the 1279* master_group_table for that load control group is missing. The 1280* user cannot log in. This may be an indication that the segment 1281* master_group_table has been damaged. 1282* 1283* A: $inform_sa 1284* 1285* 1286* Message: 1287* load_ctl_: group GRPID not found in mgt for NAME.PROJ 1288* 1289* S: as (severity2) 1290* 1291* T: $run 1292* 1293* M: A system or project administrator has designated that the user 1294* NAME.PROJ should be in the load control group GRPID, but the master_group_table 1295* (mgt) has no entry for that group. An attempt will be made to log the user in, 1296* using the default group for his project. Subsequent messages will indicate 1297* the success or failure of this attempt. 1298* 1299* A: $inform_sa 1300* 1301* 1302* Message: 1303* load_ctl_: group GRPID not authorized for project PROJ 1304* 1305* S: as (severity2) 1306* 1307* T: $run 1308* 1309* M: A project administrator has designated that one of the users 1310* in project PROJ should be in the load control group GRPID, but the system 1311* administrator has not authorized that project to be in that group. An attempt 1312* will be made to log the user in, using the default group for his project. 1313* Subsequent messages will indicate the success or failure of this attempt. 1314* 1315* A: $inform_sa 1316* 1317* 1318* Message: 1319* load_ctl_: ERROR_MESSAGE During work class redefinition 1320* 1321* S: as (severity2) 1322* 1323* T: While the system is running or during system startup. 1324* 1325* M: Either some system table has been damaged or a system administrator 1326* was changing work class definitions at the time of a shift change, or when 1327* a "maxu auto" command was issued. Error messages immediately preceding this one 1328* contain more information about the exact nature of the problem. 1329* 1330* A: $contact_sa 1331* He may want you to type the 1332* "maxu auto" command to retry the operation that failed. If that command 1333* produces no error messages, the problem has been eliminated. 1334* 1335* 1336* Message: 1337* load_ctl_: Unknown mgt version number: NUMBER 1338* 1339* S: as (severity2) 1340* 1341* T: $init 1342* 1343* M: Either the master_group_table (mgt) has been damaged, 1344* or its format is incompatible with the current Answering Service. 1345* The system cannot be brought up until a correct mgt is provided. 1346* 1347* A: $contact_sa 1348* 1349* 1350* Message: 1351* load_ctl_: maxu too small (XX), YY units for group GRPID 1352* 1353* S: as (severity2) 1354* 1355* T: $run 1356* 1357* M: The system administrator has specified that the load control 1358* group GRPID is to have "all the rest" of the primary load units 1359* after all other groups have taken their allocations from maxunits. 1360* However, maxunits is less than the sum of the primary allocations, 1361* giving the group GRPID the negative allocation of YY units. The 1362* system proceeds, attempting to log the user in anyway. Of course, 1363* the user is allowed secondary status only if he is allowed to log 1364* in at all. This is often the result of the operator typing maxu 30 1365* instead of maxu 300, or some similar error. 1366* 1367* A: Check the value of maxunits and, if a mistake was made, 1368* correct it. If the maxunits value is correct, note this situation for 1369* the system administrator. 1370* 1371* 1372* Message: 1373* load_ctl_: more than one group has -1 max: GRPID 1374* 1375* S: as (severity2) 1376* 1377* T: $init 1378* 1379* M: The system administrator has accidentally given more 1380* than one group a "take all the rest" maximum primary unit 1381* allocation. The user control package cannot handle this situation. 1382* The second group with a -1 maxprim is listed. The system completes 1383* startup and users can log in but maxunits may not be obeyed. 1384* 1385* A: $contact_sa 1386* 1387* 1388* Message: 1389* load_ctl_: promote NAME.PROJ GROUP NNN 1390* 1391* S: as (severity1) 1392* 1393* T: $run 1394* 1395* M: This is trace output. This user has been promoted to 1396* primary status. 1397* 1398* A: $ignore 1399* To turn off this 1400* output, type load_ctl_$lctraceoff from admin mode. 1401* 1402* 1403* Message: 1404* load_ctl_: Too many primes. NAME.PROJ (GROUP) MM/NN 1405* 1406* S: as (severity0) 1407* 1408* T: $run 1409* 1410* M: This is trace output. The system has been committed 1411* to allow a certain number of users from group GROUP 1412* to be logged in at one time. In order to log this 1413* user in, some other user must be bumped, but all users 1414* have primary status and cannot be bumped. This situation 1415* may be a consequence of system programmers with the 1416* overloading privilege logging in when the system is 1417* full. The user is allowed to log in anyway. 1418* 1419* A: $ignore 1420* 1421* END MESSAGE DOCUMENTATION */ 1422 1423 end load_ctl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0938.0 load_ctl_.pl1 >special_ldd>install>MR12.2-1047>load_ctl_.pl1 1131 1 08/06/87 0913.4 absentee_user_table.incl.pl1 >ldd>include>absentee_user_table.incl.pl1 1132 2 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 1133 3 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 1134 4 08/06/87 0913.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 1135 5 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1136 6 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 6-148 7 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1137 8 08/10/81 1843.7 mgt.incl.pl1 >ldd>include>mgt.incl.pl1 8-33 9 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 1138 10 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 10-29 11 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 1141 12 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 12-34 13 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 1142 14 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 1143 15 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 1144 16 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 1145 17 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 17-112 18 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 1146 19 07/13/88 0903.2 user_table_entry.incl.pl1 >special_ldd>install>MR12.2-1047>user_table_entry.incl.pl1 1147 20 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 1148 21 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.incl.pl1 1149 22 06/21/82 1202.4 work_class_info.incl.pl1 >ldd>include>work_class_info.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. ACTION_CANT_RESTART 000062 constant bit(36) initial dcl 15-7 set ref 486* 497* 520* ME 000000 constant char(32) initial packed unaligned dcl 100 set ref 247* 347* 517* 520* 531* 628* 690* 739* 766* 827* 834* 856* 873* 932* MGT_version_3 constant fixed bin(17,0) initial dcl 8-25 ref 510 NL 006064 constant char(1) initial packed unaligned dcl 101 ref 467 469 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 5-76 ref 885 PT_ABSENTEE constant fixed bin(17,0) initial dcl 19-261 ref 182 239 PT_DAEMON constant fixed bin(17,0) initial dcl 19-261 ref 181 P_code parameter fixed bin(35,0) dcl 66 in procedure "load_ctl_" set ref 13 167 175* 471* P_code parameter fixed bin(35,0) dcl 1060 in procedure "Write_User_Message" set ref 1057 1083 1083* P_debug parameter char(8) dcl 67 set ref 13 163* P_message parameter char packed unaligned dcl 1061 ref 1057 1091 1094 1094 P_pdtep parameter pointer dcl 68 ref 13 162 P_satep parameter pointer dcl 69 ref 13 161 P_text parameter varying char(168) dcl 70 set ref 13 467* 469* P_unused1 parameter pointer dcl 71 ref 13 P_unused2 parameter fixed bin(17,0) dcl 72 ref 13 674 P_utep parameter pointer dcl 73 ref 13 160 167 170 674 678 SL_LOG 000112 constant fixed bin(17,0) initial dcl 16-14 set ref 873* SL_LOG_BEEP 000071 constant fixed bin(17,0) initial dcl 16-14 set ref 247* 269* 517* 531* 611* 628* 690* 766* 827* 932* SL_LOG_SILENT 000063 constant fixed bin(17,0) initial dcl 16-14 set ref 347* 739* 834* 856* UTE_SIZE constant fixed bin(17,0) initial dcl 2-120 ref 809 809 a_group parameter char(8) dcl 921 in procedure "permitted_proj_group" set ref 919 929 932* a_group parameter char(8) packed unaligned dcl 757 in procedure "existing_group" set ref 755 762 766* abs_cpu_limit_auto 56(04) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 664 abs_cpu_max_limit 1650 based fixed bin(35,0) array level 3 dcl 6-33 ref 666 abs_flags 250 based structure level 2 dcl 19-78 abs_group 251 based char(8) level 2 packed packed unaligned dcl 19-78 set ref 425* 686 1038* abs_maxq_auto 56(02) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 654 abs_maxu_auto 56(01) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 457 648 719 abs_only 000453 automatic bit(1) dcl 594 set ref 596* 603* 609 618 abs_qres_auto 56(03) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 657 abs_run 250 based bit(1) level 3 packed packed unaligned dcl 19-78 ref 259 abs_stopped 56(12) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 643 abs_units 17 based fixed bin(17,0) level 2 dcl 1-28 set ref 421* 421 708* 708 965 abs_up 56(11) based bit(1) level 3 packed packed unaligned dcl 1-28 ref 643 646 abs_wc 21 based fixed bin(17,0) array level 2 packed packed unaligned dcl 8-63 ref 441 absentee 000100 automatic bit(1) initial dcl 77 in procedure "load_ctl_" set ref 77* 183* 250 259 390 412 absentee 25 based structure level 2 in structure "group" dcl 8-63 in procedure "load_ctl_" absentee_limit 27(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 8-63 set ref 215* 218 218* 307 absentee_max 26 based fixed bin(17,0) level 2 packed packed unaligned dcl 8-63 ref 215 absentee_min 26(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 8-63 ref 215 218 absentee_pct 27 based fixed bin(17,0) level 2 packed packed unaligned dcl 8-63 ref 215 218 absentee_user_manager_$update_whotab_abs_control 000156 constant entry external dcl 138 ref 669 absentee_utility_$au_send_wakeup 000160 constant entry external dcl 139 ref 670 absolute_max 6 based fixed bin(17,0) level 2 dcl 8-63 set ref 213* 296 action parameter fixed bin(17,0) dcl 787 ref 785 833 850 867 868 869 893 900 active based fixed bin(17,0) level 2 dcl 19-78 ref 885 addr builtin function dcl 134 ref 199 489 528 684 761 809 814 824 1041 1098 1098 admin_$abs 000162 constant entry external dcl 140 ref 643 allowed 25 based bit(1) level 3 packed packed unaligned dcl 8-63 ref 423 ansp 000456 automatic pointer initial dcl 2-53 set ref 194* 196 196 269 315 315 315 315 347 347 352 352 368 368 441 443 451 451 452 452 453 453 457 493* 495 496 564* 566 567 568 568 568 570 571 571 574 574 576 607* 618 618 618 622 628 635 637 638 639 639 640 649 659 659 659 666 676* 680 680 714 714 715 715 719 2-53* 808 809 965 965 971 1018 1018 1018 anstbl based structure level 1 dcl 2-55 as_data_$ansp 000214 external static pointer dcl 3-26 ref 194 493 563 564 604 607 676 as_data_$autp 000216 external static pointer dcl 3-31 ref 195 494 565 608 677 as_data_$ls_message_buffer_cur_lth 000226 external static fixed bin(18,0) dcl 3-86 set ref 1104 1123* as_data_$ls_message_buffer_max_lth 000230 external static fixed bin(18,0) dcl 3-87 set ref 1103 1117* as_data_$ls_message_buffer_ptr 000232 external static pointer dcl 3-88 set ref 1102 1115* as_data_$mgtp 000220 external static pointer dcl 3-42 ref 197 197 198 198 199 199 206 206 206 206 268 268 431 431 431 431 431 431 436 436 496 496 497 497 506 506 509 509 510 510 511 511 513 513 517 517 527 527 528 528 683 683 684 684 760 760 761 761 823 823 824 824 1040 1040 1041 1041 as_data_$rs_ptrs 000222 external static pointer array dcl 3-49 ref 457 457 621 621 622 622 622 622 622 622 622 622 627 627 628 628 628 628 628 628 628 628 637 637 638 638 639 639 649 649 649 649 654 654 659 659 659 659 659 659 666 666 719 719 872 872 973 973 989 989 1018 1018 1018 1018 1018 1018 as_data_$whoptr 000224 external static pointer dcl 3-60 ref 576 576 640 640 649 649 846 846 847 847 864 864 1022 1022 as_error_table_$bumped_in_group 000102 external static fixed bin(35,0) dcl 109 ref 382 as_error_table_$bumped_secondary 000104 external static fixed bin(35,0) dcl 110 ref 345 as_error_table_$gpabsmax 000112 external static fixed bin(35,0) dcl 113 ref 309 as_error_table_$groupmax 000110 external static fixed bin(35,0) dcl 112 ref 297 as_error_table_$grp_full 000114 external static fixed bin(35,0) dcl 114 ref 324 as_error_table_$nf_nosec 000116 external static fixed bin(35,0) dcl 115 ref 336 as_error_table_$no_group 000120 external static fixed bin(35,0) dcl 116 ref 251 as_error_table_$no_user_to_bump 000106 external static fixed bin(35,0) dcl 111 ref 379 as_error_table_$not_full 000122 external static fixed bin(35,0) dcl 117 ref 317 as_error_table_$preempt_emergency 000124 external static fixed bin(35,0) dcl 118 ref 869 as_error_table_$preempt_emergency_prime 000126 external static fixed bin(35,0) dcl 119 ref 870 as_error_table_$preempt_group 000130 external static fixed bin(35,0) dcl 120 ref 852 868 as_error_table_$preempt_secondary 000132 external static fixed bin(35,0) dcl 121 ref 867 as_error_table_$proj_max 000134 external static fixed bin(35,0) dcl 122 ref 284 as_error_table_$protec_msg 000136 external static fixed bin(35,0) dcl 123 ref 393 as_error_table_$protec_till_msg 000140 external static fixed bin(35,0) dcl 124 ref 397 as_error_table_$saturate 000142 external static fixed bin(35,0) dcl 125 ref 353 as_error_table_$subject 000144 external static fixed bin(35,0) dcl 126 ref 413 as_error_table_$sys_full 000146 external static fixed bin(35,0) dcl 127 ref 342 as_error_table_$sysgrpfl 000150 external static fixed bin(35,0) dcl 128 ref 359 as_meter_$read_config 000164 constant entry external dcl 141 ref 616 astty_$tty_force 000240 constant entry external dcl 1080 ref 1098 asu_$bump_code 000166 constant entry external dcl 142 ref 872 at 100 based structure level 2 dcl 19-78 autbl based structure level 1 dcl 1-28 auto_maxu 133 based fixed bin(17,0) level 2 dcl 2-55 set ref 566 618* 635 639 autp 000454 automatic pointer initial dcl 1-26 set ref 195* 215 218 332 332 420 420 421 421 457 494* 565* 608* 643 643 646 648 649 654 654 657 659 659 664 666 677* 703 703 708 708 709 709 719 1-26* 812 812 814 965 1016 1018 1018 1022 average_idle_units 000013 internal static fixed bin(17,0) dcl 956 set ref 1010* 1016 background 000101 automatic bit(1) initial dcl 77 set ref 77* 184* 285 298 307 327 361 415 441 brief 100(10) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 390 412 bump_grace 54 based fixed bin(17,0) level 2 in structure "user" dcl 10-58 in procedure "load_ctl_" ref 737 bump_grace 434 based fixed bin(71,0) level 2 in structure "ute" dcl 19-78 in procedure "load_ctl_" set ref 389 394 734* 737* 738 739* 742* 744* 744 842 900 bumping 100(09) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 287 300 321 364 bumpx 000534 automatic fixed bin(35,0) dcl 793 set ref 852* 867* 868* 869* 870* 872* cant_bump_until 404 based fixed bin(71,0) level 2 in structure "ute" dcl 19-78 in procedure "load_ctl_" set ref 389* 396* 410* 842* 847 897 cant_bump_until 274 based fixed bin(71,0) array level 3 in structure "whotab" dcl 21-10 in procedure "load_ctl_" set ref 847* channel 341 based pointer level 2 packed packed unaligned dcl 19-78 ref 1098 1098 check_for_process_creation_ep 000214 automatic bit(1) packed unaligned dcl 77 set ref 164* 173* 465 clock builtin function dcl 134 ref 177 697 cona 1155 based structure array level 3 dcl 6-33 control 56 based structure level 2 dcl 1-28 convert_status_code_ 000170 constant entry external dcl 143 ref 399 466 1083 cpu 1155 based fixed bin(5,0) array level 4 packed packed unaligned dcl 6-33 set ref 622 628* cpu_limit 44 based fixed bin(35,0) array level 2 dcl 1-28 set ref 666* ct1 000106 automatic char(16) dcl 77 set ref 392* 396* 401* current_idle_units 000574 automatic fixed bin(17,0) dcl 948 set ref 965* 984 1016 current_size 5 based fixed bin(17,0) level 3 in structure "autbl" dcl 1-28 in procedure "load_ctl_" ref 812 current_size 36 based fixed bin(17,0) level 2 in structure "mgt" dcl 8-30 in procedure "load_ctl_" ref 198 527 683 760 823 1040 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" ref 808 current_time 126 based fixed bin(71,0) level 2 dcl 2-55 ref 971 daemon 000102 automatic bit(1) initial dcl 77 set ref 77* 181* 254 453 date_time_$format 000172 constant entry external dcl 144 ref 396 default_group 25(01) based bit(1) level 3 packed packed unaligned dcl 8-63 ref 1043 default_queue 25(02) based bit(1) array level 3 packed packed unaligned dcl 8-63 ref 1043 denom 11 based fixed bin(17,0) level 2 dcl 8-63 ref 201 202 denom1 14 based fixed bin(17,0) level 2 dcl 8-63 ref 209 210 divide builtin function dcl 134 ref 202 204 210 212 215 659 971 973 1010 1018 e 240 based structure array level 2 dcl 21-10 ec 000112 automatic fixed bin(17,0) dcl 77 set ref 288* 289* 290 291* 292 301* 302* 303 322* 323 346* 347 366* 367 374* 375 375* 376 376* 377 496* 497* 610* 611 611* 698* ec_shift_config_change_ 000174 constant entry external dcl 145 ref 618 entry 200 based structure array level 2 in structure "autbl" dcl 1-28 in procedure "load_ctl_" set ref 814 entry 100 based structure array level 2 in structure "mgt" dcl 8-30 in procedure "load_ctl_" set ref 199 528 684 761 824 1041 entry 200 based structure array level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" set ref 809 error_table_$out_of_sequence 000152 external static fixed bin(35,0) dcl 129 set ref 486* error_table_$unimplemented_version 000154 external static fixed bin(35,0) dcl 130 set ref 520* extra_units 134 based fixed bin(17,0) level 2 dcl 2-55 set ref 196 453* 453 495* 680* 680 failure_reason 411 based fixed bin(17,0) level 2 dcl 19-78 set ref 472* first_group 000012 internal static fixed bin(17,0) dcl 105 set ref 198 504* 507* 527 760 1040 first_idle_unit 000014 internal static fixed bin(17,0) initial dcl 957 set ref 989 991 992* 992 993 993* 1000 1000 1002 foreground 000103 automatic bit(1) initial dcl 77 set ref 77* 186* 188* 259 318 319 343 foreground_absentee 000104 automatic bit(1) initial dcl 77 set ref 77* 186* 331 734 foreground_secondary_ok 431(06) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 331 703 815 get_system_free_area_ 000242 constant entry external dcl 1081 ref 1109 grace_max 100 based fixed bin(17,0) level 2 dcl 12-53 set ref 738 739* 742 group 355 based char(8) level 2 in structure "user" dcl 10-58 in procedure "load_ctl_" set ref 228* 228 232 group 426 based char(8) level 2 in structure "ute" packed packed unaligned dcl 19-78 in procedure "load_ctl_" set ref 226* 232* 236* 242* 347* 688 690* 822 822 825 827* 887 887 1045* group 76 based char(8) level 2 in structure "project" packed packed unaligned dcl 12-53 in procedure "load_ctl_" set ref 226 247* 926 group based structure level 1 dcl 8-63 in procedure "load_ctl_" group_id based char(8) level 2 dcl 8-63 set ref 269* 425 531* 686 688 762 825 834* 856* 1038 1045 groups 106 based char(8) array level 2 packed packed unaligned dcl 12-53 ref 927 grpmatch parameter fixed bin(17,0) dcl 787 ref 785 887 889 guaranteed_login 100(03) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 318 363 368 hbound builtin function dcl 134 ref 973 982 993 1002 1004 hcs_$initiate 000176 constant entry external dcl 146 ref 496 header based structure level 2 in structure "autbl" dcl 1-28 in procedure "load_ctl_" header based structure level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" i 000600 automatic fixed bin(17,0) dcl 952 in procedure "set_abs_maxu" set ref 1004* 1005* i 000564 automatic fixed bin(17,0) dcl 922 in procedure "permitted_proj_group" set ref 925* 926 927* i 000113 automatic fixed bin(17,0) dcl 77 in procedure "load_ctl_" set ref 198* 199* 527* 528 529* 621* 622 622 622 622* 627* 628 628 628 628 637 638 639 649 654 683* 684* i 000514 automatic fixed bin(17,0) dcl 758 in procedure "existing_group" set ref 760* 761* i 000610 automatic fixed bin(17,0) dcl 1034 in procedure "set_absentee_group" set ref 1040* 1041* i 000530 automatic fixed bin(17,0) dcl 793 in procedure "findsb" set ref 808* 809* 812* 814* 823* 824* 844* 845 846 847 863* 864 864 idle_pct parameter float bin(27) dcl 560 ref 558 568 idle_time_constant_seconds 543(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 6-33 ref 973 989 idle_units 16 based fixed bin(17,0) level 2 dcl 1-28 set ref 1016* 1018 igroup 100(20) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 228 installation_parms based structure level 1 dcl 6-33 installation_parms_part_1 based structure level 1 dcl 6-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 6-144 int_wc 15 based fixed bin(17,0) array level 2 packed packed unaligned dcl 8-63 ref 443 interactive 000105 automatic bit(1) initial dcl 77 set ref 77* 188* 328 ioa_$rs 000200 constant entry external dcl 147 ref 1094 ioa_$rsnnl 000202 constant entry external dcl 148 ref 401 ip defined pointer dcl 4-21 ref 457 621 622 622 622 622 627 628 628 628 628 637 638 639 649 649 654 659 659 659 666 719 872 973 989 1018 1018 1018 j 000114 automatic fixed bin(17,0) dcl 77 set ref 657* 659 659 659 659* 664* 666 666* 872* junk 000116 automatic char(8) dcl 77 set ref 399* kbulk 1156(18) based fixed bin(17,0) array level 4 packed packed unaligned dcl 6-33 set ref 622 628* kmem 1156 based fixed bin(17,0) array level 4 packed packed unaligned dcl 6-33 set ref 622 628* last_idle_unit 000015 internal static fixed bin(17,0) initial dcl 958 set ref 973 981* 981 982 982* 984 985 1000 1000 1002 last_queue_searched 54 based fixed bin(17,0) level 2 dcl 1-28 set ref 654* length builtin function dcl 134 ref 467 login_result 415 based fixed bin(17,0) level 2 dcl 19-78 set ref 473* 475* login_time 402 based fixed bin(71,0) level 2 dcl 19-78 ref 842 899 900 904 longinfo 000120 automatic char(100) dcl 77 set ref 399* 400 401 401 466* 467 467 467 467 max builtin function dcl 134 ref 204 212 215 568 659 1018 max_abs 1554 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 457 649 719 1018 max_abs_users 13 based fixed bin(17,0) level 2 in structure "autbl" dcl 1-28 in procedure "load_ctl_" set ref 215 218 649* 659 1018* 1022 max_abs_users 53 based fixed bin(17,0) level 2 in structure "whotab" dcl 21-10 in procedure "load_ctl_" set ref 649* 1022* max_prim 2 based fixed bin(17,0) level 2 dcl 8-63 set ref 200 207* 267 274 529 695 695 max_qres 1570 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 659 max_units 17 based fixed bin(17,0) level 2 dcl 2-55 set ref 196 269* 315 347* 568* 571* 574* 576 639* 640 965 max_users 26 based fixed bin(17,0) level 2 in structure "project" dcl 12-53 in procedure "load_ctl_" ref 283 max_users 15 based fixed bin(17,0) level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" ref 315 352 368 maxa 1157(18) based fixed bin(11,0) array level 4 packed packed unaligned dcl 6-33 ref 649 maxprim 000151 automatic fixed bin(17,0) dcl 77 set ref 201* 202* 203* 203 204* 204 206 207 209* 210* 211* 211 212* 212 213 268* 269 269* 274* 319 344 526* 529 529* maxq 1157(30) based fixed bin(5,0) array level 4 packed packed unaligned dcl 6-33 ref 654 maxu_base 1160 based fixed bin(17,0) array level 4 packed packed unaligned dcl 6-33 ref 639 mcode 000152 automatic fixed bin(35,0) dcl 77 set ref 251* 284* 297* 309* 317* 324* 336* 342* 345* 353* 359* 370* 379* 382* 391* 393* 397* 399* 413* 414* 466* 471 mesl 000153 automatic fixed bin(17,0) dcl 77 set ref 401* message 000624 automatic char(512) packed unaligned dcl 1063 set ref 1094* 1098 1098 1121 message_buffer based char packed unaligned dcl 1074 set ref 1112 1114 1121* message_buffer_cur_lth 001025 automatic fixed bin(17,0) dcl 1065 set ref 1104* 1106 1107 1112 1112 1121 1123 message_buffer_max_lth 001026 automatic fixed bin(17,0) dcl 1066 set ref 1103* 1106 1107 1112 1114 1114 1117* 1121 message_buffer_ptr 001030 automatic pointer dcl 1067 set ref 1102* 1112 1114 1115* 1121 message_lth 001024 automatic fixed bin(17,0) dcl 1064 set ref 1094* 1098* 1106 1107 1121 1123 mgt based structure level 1 dcl 8-30 mgtep 000460 automatic pointer dcl 8-61 set ref 199* 200 201 202 202 203 207 209 210 210 211 213 215 215 215 215 218 218 218 218 267 269 274 296 296 296 307 307 319 344 365 387 387 409 409 422 422 423 425 441 443 528* 529 531 535 535 535 535 684* 686 688 694 694 695 695 695 695 702 702 707 707 761* 762 821 1037 1038 1041* 1043 1043 1045 1051* mgtp defined pointer dcl 4-22 set ref 197 198 199 206 206 268 431 431 431 436 496* 497 506 509 510 511 513 517 527 528 683 684 760 761 823 824 1040 1041 min builtin function dcl 134 ref 215 659 1016 1018 1107 min_abs 1560 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 1018 min_qres 1610 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 659 minamax 12 based fixed bin(17,0) level 2 dcl 8-63 ref 211 minu 7 based fixed bin(17,0) level 2 dcl 8-63 ref 203 msg3 000154 automatic char(100) dcl 77 set ref 401* 402 mxunits 2 based fixed bin(17,0) level 2 dcl 21-10 set ref 576* 640* n_abs 30 based fixed bin(17,0) level 2 packed packed unaligned dcl 8-63 set ref 307 422* 422 535* 707* 707 n_background_abs 14 based fixed bin(17,0) level 2 dcl 1-28 set ref 420* 420 709* 709 n_eo 5 based fixed bin(17,0) level 2 dcl 8-63 set ref 535* n_idle_units 000575 automatic fixed bin(17,0) dcl 949 set ref 1000* 1002* 1010 n_preempted parameter fixed bin(17,0) dcl 787 set ref 785 801* 802 879* 879 n_prim 3 based fixed bin(17,0) level 2 dcl 8-63 set ref 296 319 344 365 387* 387 535* 694* 694 695 834* 840* 840 856* 861* 861 n_sec 4 based fixed bin(17,0) level 2 dcl 8-63 set ref 296 409* 409 535* 695 702* 702 841* 841 862* 862 n_sec_fg 15 based fixed bin(17,0) level 2 dcl 1-28 set ref 332* 332 703* 703 812 n_units 16 based fixed bin(17,0) level 2 dcl 2-55 set ref 315 347* 452* 452 568 568 571 574 715* 715 965 n_users 27 based fixed bin(17,0) level 2 in structure "project" dcl 12-53 in procedure "load_ctl_" set ref 283 455* 455 717* 717 n_users 14 based fixed bin(17,0) level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" set ref 315 352 368 451* 451 714* 714 nbulk 000207 automatic fixed bin(17,0) dcl 77 set ref 616* 618* 622 628* ncon 1154 based fixed bin(17,0) level 3 dcl 6-33 ref 621 627 ncpu 000205 automatic fixed bin(17,0) dcl 77 set ref 616* 618* 622 628* new_message_buffer based char packed unaligned dcl 1076 set ref 1110 1112* new_message_buffer_max_lth 001032 automatic fixed bin(17,0) dcl 1068 set ref 1107* 1110 1110 1112 1117 new_message_buffer_ptr 001034 automatic pointer dcl 1069 set ref 1110* 1112 1115 nkmem 000206 automatic fixed bin(17,0) dcl 77 set ref 616* 618* 622 628* nobump 100(02) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 394 896 null builtin function dcl 134 ref 497 497 497 563 604 1-26 2-53 1140 19-76 804 819 1098 num 10 based fixed bin(17,0) level 2 dcl 8-63 ref 202 num1 13 based fixed bin(17,0) level 2 dcl 8-63 ref 210 oldest_atep 000524 automatic pointer dcl 793 set ref 804* 819 822 825 827 834 834 839 840 841 842 842 842 844 847 851 855 856 856 861 862 863 871 872* 873 873 876 879 905* oldest_time 000526 automatic fixed bin(71,0) dcl 793 set ref 803* 899 904* oshf parameter fixed bin(17,0) dcl 601 set ref 599 618* p 000540 automatic pointer dcl 793 set ref 809* 814* 815 885 885 887 889 891 893 896 897 899 900 900 904 905 part_1 based structure level 2 dcl 6-33 pct_abs 1564 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 1018 pct_qres 1630 based fixed bin(17,0) array level 3 packed packed unaligned dcl 6-33 ref 659 pdtep 000210 automatic pointer dcl 77 in procedure "load_ctl_" set ref 162* 172* 228 228 232 737 pdtep 354 based pointer level 2 in structure "ute" dcl 19-78 in procedure "load_ctl_" ref 172 pdtp 000462 automatic pointer initial dcl 1140 set ref 1140* person 4 based char(24) level 2 packed packed unaligned dcl 19-78 set ref 247* 347* 739* 766* 834* 856* 873* 873* pm_ok 100(15) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 286 299 319 343 893 pmsc parameter fixed bin(17,0) dcl 787 ref 785 891 891 preempted 420 based fixed bin(17,0) level 2 dcl 19-78 set ref 871* 885 prev_idle_units 000016 internal static fixed bin(17,0) initial array dcl 959 set ref 973 982 984* 991* 993 1002 1004 1005 prio_sked 000011 internal static bit(1) dcl 104 set ref 430 431* 436* 440 503* 513* prio_sked_enabled 43(01) based bit(1) level 3 packed packed unaligned dcl 8-30 ref 431 436 513 prio_sked_on_tape 43(02) based bit(1) level 3 packed packed unaligned dcl 8-30 set ref 431 511* process_type 1 based fixed bin(17,0) level 2 dcl 19-78 ref 181 182 239 project based structure level 1 dcl 12-53 in procedure "load_ctl_" project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 19-78 in procedure "load_ctl_" set ref 247* 347* 739* 766* 834* 856* 873* 873* 889 889 932* qres 24 based fixed bin(17,0) array level 2 dcl 1-28 set ref 659* queue 245 based fixed bin(17,0) level 2 dcl 19-78 ref 184 679 685 706 1043 rcp_init_flags based structure level 1 packed packed unaligned dcl 7-8 reassign_work_classes_ 000204 constant entry external dcl 149 ref 610 reject_abs 000215 automatic bit(1) initial dcl 77 set ref 77* 250* 473 resp parameter fixed bin(17,0) dcl 560 ref 558 567 570 respect_grace parameter fixed bin(17,0) dcl 787 ref 785 897 response_high 135 based fixed bin(17,0) level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" set ref 570 638* response_high 1160(18) based fixed bin(17,0) array level 4 in structure "installation_parms" packed packed unaligned dcl 6-33 in procedure "load_ctl_" ref 638 response_low 136 based fixed bin(17,0) level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" set ref 567 637* response_low 1161 based fixed bin(17,0) array level 4 in structure "installation_parms" packed packed unaligned dcl 6-33 in procedure "load_ctl_" ref 637 reverse builtin function dcl 134 ref 467 rtrim builtin function dcl 134 ref 401 401 1094 1094 sample_times 000047 internal static fixed bin(35,0) initial array dcl 960 set ref 973 985* 989 satep 000212 automatic pointer dcl 77 set ref 161* 171* 226 247 283 283 455 455 716* 717 717 738 739 742 926 927 save_mgtep 000612 automatic pointer dcl 1035 set ref 1037* 1051 sb_ok 100(14) based bit(1) level 3 packed packed unaligned dcl 19-78 ref 328 851 sc_stat_$Go_typed 000234 external static bit(1) dcl 14-62 ref 486 sc_stat_$Multics_typed 000236 external static bit(1) dcl 14-62 ref 486 shift 132 based fixed bin(17,0) level 2 in structure "anstbl" dcl 2-55 in procedure "load_ctl_" set ref 441 443 457 618* 622 628* 649 659 659 659 666 719 1018 1018 1018 shift 1155(06) based fixed bin(5,0) array level 4 in structure "installation_parms" packed packed unaligned dcl 6-33 in procedure "load_ctl_" set ref 622 628* standby_line 433 based fixed bin(17,0) level 2 dcl 19-78 set ref 386* 408* 693 734 839* 855* 876 891 status_code_string 001040 automatic char(100) dcl 1072 set ref 1083* 1085* 1091 1094 1094* stby 265 based fixed bin(17,0) array level 3 dcl 21-10 set ref 846* 864* string builtin function dcl 134 set ref 490* sub_err_ 000206 constant entry external dcl 150 ref 486 497 520 substr builtin function dcl 134 set ref 467 1112* 1112 1121* sum_of_idle_units 000576 automatic fixed bin(17,0) dcl 950 set ref 999* 1005* 1005 1010 switches 1 based structure level 2 in structure "work_class_info" dcl 22-11 in procedure "load_ctl_" set ref 490* switches 43 based structure level 2 in structure "mgt" dcl 8-30 in procedure "load_ctl_" sys_log_ 000210 constant entry external dcl 151 ref 247 269 347 517 531 628 690 739 766 827 834 856 873 932 sys_log_$error_log 000212 constant entry external dcl 152 ref 611 sysdir 22 based char(64) level 2 packed packed unaligned dcl 2-55 set ref 496* 618* system_area based area(1024) dcl 1078 ref 1110 system_area_ptr 001036 automatic pointer dcl 1070 set ref 1109* 1110 t_group 000562 automatic char(8) dcl 921 set ref 926* 927* 928 929 time_in_seconds 000577 automatic fixed bin(17,0) dcl 951 set ref 971* 973 985 989 time_now 000216 automatic fixed bin(71,0) dcl 77 set ref 177* 389 410 697* 803 897 900 total_units 37 based fixed bin(17,0) level 2 dcl 8-30 set ref 197* 206* 206 268 tracing 000010 internal static bit(1) initial dcl 103 set ref 549* 555* 834 856 uflags 431 based structure level 2 dcl 19-78 unitsmax 000220 automatic fixed bin(17,0) dcl 77 set ref 196* 202 210 268 uprojp 400 based pointer level 2 dcl 19-78 ref 171 716 user based structure level 1 dcl 10-58 user_abs_attributes based structure level 1 dcl 18-25 user_attributes based structure level 1 dcl 17-21 user_weight 432 based fixed bin(17,0) level 2 dcl 19-78 ref 296 315 319 344 387 409 421 452 453 680 694 702 708 715 802 840 841 861 862 879 ut_header based structure level 1 dcl 20-16 ute based structure level 1 dcl 19-78 utep 000464 automatic pointer initial dcl 19-76 set ref 160* 170* 171 172 181 182 184 226 228 232 236 239 242 247 247 259 286 287 296 299 300 315 318 319 319 321 328 331 343 344 347 347 347 363 364 368 386 387 389 389 390 394 394 396 408 409 410 412 421 425 441 443 445 452 453 472 473 475 678* 679 680 685 686 688 690 693 694 702 703 706 708 715 716 19-76* 734 734 737 738 739 739 739 742 744 744 766 766 802 822 873 873 887 889 932 1038 1043 1045 1098 1098 verify builtin function dcl 134 ref 467 version 42 based fixed bin(17,0) level 2 dcl 8-30 set ref 509 510 517* version_indicator 40 based char(8) level 2 dcl 8-30 ref 431 506 warning_time 502 based fixed bin(17,0) level 3 dcl 6-33 set ref 872* wci_area 000221 automatic structure level 1 dcl 96 set ref 489 wcip 000466 automatic pointer dcl 22-8 set ref 489* 490 whoptr defined pointer dcl 4-29 ref 576 640 649 846 847 864 1022 whotab based structure level 1 dcl 21-10 whotabx 430 based fixed bin(17,0) level 2 dcl 19-78 ref 844 863 why 000536 automatic char(8) dcl 793 set ref 872* 873* work_class 425 based fixed bin(17,0) level 2 dcl 19-78 set ref 441* 443* 445* work_class_info based structure level 1 dcl 22-11 xgp 000532 automatic pointer dcl 793 set ref 821* 824* 825 834 834 840 840 841 841 856 856 861 861 862 862 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 18-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 19-326 ACTION_CAN_RESTART internal static bit(36) initial dcl 15-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 15-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 15-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 15-7 ACTIVE_VALUES internal static char(18) initial array dcl 5-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 17-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 2-51 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 AUTBL_version_4 internal static fixed bin(17,0) initial dcl 1-24 Automatic_authentication internal static fixed bin(17,0) initial dcl 7-16 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 19-280 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 19-332 DONT_MASK internal static bit(2) initial packed unaligned dcl 19-280 DO_MASK internal static bit(2) initial packed unaligned dcl 19-280 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 19-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 19-284 Manual_authentication internal static fixed bin(17,0) initial dcl 7-16 NOW_DIALED internal static fixed bin(17,0) initial dcl 5-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 5-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 5-76 NOW_FREE internal static fixed bin(17,0) initial dcl 5-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 5-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 5-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 5-76 No_authentication internal static fixed bin(17,0) initial dcl 7-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 7-16 PDT_entry_lth internal static fixed bin(17,0) initial dcl 10-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 10-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 10-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 10-19 PDT_version internal static fixed bin(17,0) initial dcl 10-19 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 5-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 5-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 19-265 PT_ALARM internal static fixed bin(17,0) initial dcl 5-106 PT_BUMP internal static fixed bin(17,0) initial dcl 5-106 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 5-106 PT_DETACH internal static fixed bin(17,0) initial dcl 5-106 PT_FPE internal static fixed bin(17,0) initial dcl 5-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 5-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 19-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 5-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 5-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 5-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 5-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 5-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 5-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 19-290 SAT_entry_lth internal static fixed bin(17,0) initial dcl 12-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 12-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 12-24 SAT_version internal static fixed bin(17,0) initial dcl 12-24 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 16-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 16-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 16-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 16-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 16-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 16-14 SL_TYPE internal static fixed bin(17,0) initial dcl 16-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 16-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 16-14 STATE_VALUES internal static char(15) initial array dcl 5-70 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 19-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 5-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 5-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 5-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 5-93 TAG_UFT internal static char(1) initial packed unaligned dcl 5-93 TRA_VEC_VALUES internal static char(32) initial array dcl 5-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 5-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 5-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 5-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 5-64 UFLAG_NAMES internal static varying char(24) initial array dcl 19-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 17-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 17-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 17-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 17-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 19-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 5-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 5-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 5-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 5-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 5-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 5-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 5-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 5-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 5-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 5-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 5-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 5-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 5-25 WCI_version_3 internal static fixed bin(17,0) initial dcl 22-9 WCTI_version_3 internal static fixed bin(17,0) initial dcl 22-42 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 21-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_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_$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_$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_$signal_types external static structure level 1 dcl 3-67 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 7-21 devtabp defined pointer dcl 4-20 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 6-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 6-38 pdt based structure level 1 dcl 10-27 pdtdir based char(168) packed unaligned dcl 4-23 rifp automatic pointer dcl 7-6 rs_ptrs based pointer array dcl 4-24 sat based structure level 1 dcl 12-32 sat_htp defined pointer dcl 4-25 satp defined pointer dcl 4-26 sc_stat_$Go external static bit(1) dcl 14-62 sc_stat_$Multics external static bit(1) dcl 14-62 sc_stat_$Star_typed external static bit(1) dcl 14-62 sc_stat_$admin_listener_exit_label external static label variable dcl 14-34 sc_stat_$admin_listener_switch external static bit(1) dcl 14-62 sc_stat_$admin_log_iocb external static pointer dcl 14-45 sc_stat_$admin_log_write_ptr external static pointer dcl 14-45 sc_stat_$admin_sci_ptr external static pointer dcl 14-45 sc_stat_$as_log_write_ptr external static pointer dcl 14-45 sc_stat_$did_part1 external static bit(1) dcl 14-62 sc_stat_$did_part2 external static bit(1) dcl 14-62 sc_stat_$did_part3 external static bit(1) dcl 14-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 14-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 14-21 sc_stat_$initzer_ttyp external static pointer dcl 14-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 14-21 sc_stat_$master_abort_label external static label variable dcl 14-34 sc_stat_$master_channel external static char(6) dcl 14-29 sc_stat_$master_iocb external static pointer dcl 14-45 sc_stat_$master_sci_ptr external static pointer dcl 14-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 14-21 sc_stat_$mc_ansp external static pointer dcl 14-45 sc_stat_$mc_iocb external static pointer dcl 14-45 sc_stat_$mc_is_on external static bit(1) dcl 14-62 sc_stat_$no_operator_login external static bit(1) dcl 14-62 sc_stat_$shutdown_typed external static bit(1) dcl 14-62 sc_stat_$sv1_iocb external static pointer dcl 14-45 sc_stat_$sv2_iocb external static pointer dcl 14-45 sc_stat_$sv3_iocb external static pointer dcl 14-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 14-21 sc_stat_$system_shutdown_label external static label variable dcl 14-34 sc_stat_$test_mode external static bit(1) dcl 14-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 14-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 14-62 scdtp defined pointer dcl 4-27 sl_info automatic structure level 1 dcl 16-24 sl_info_code_msg internal static structure level 1 dcl 16-187 sl_info_msg internal static structure level 1 dcl 16-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 16-161 sl_info_sev_code_msg internal static structure level 1 dcl 16-82 sl_info_sev_coded_msg internal static structure level 1 dcl 16-134 sl_info_sev_msg internal static structure level 1 dcl 16-108 sysdir defined char(168) packed unaligned dcl 4-28 work_class based structure level 1 dcl 8-94 work_class_tune_info based structure level 1 dcl 22-44 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000504 constant label dcl 175 ref 165 V2_MGT 002532 constant label dcl 511 ref 509 Write_User_Message 005466 constant entry internal dcl 1057 ref 391 402 414 bump_loop 004266 constant label dcl 802 ref 880 cfnd 003342 constant label dcl 635 ref 622 check_for_process_creation 000461 constant entry external dcl 167 check_max_grace 004061 constant entry internal dcl 732 ref 388 411 existing_group 004161 constant entry internal dcl 755 ref 228 236 242 findsb 004263 constant entry internal dcl 785 ref 288 289 291 301 302 322 346 366 374 375 376 698 fullup 001502 constant label dcl 361 ref 304 gf1 003753 constant label dcl 693 ref 686 688 gf2 004450 constant label dcl 833 ref 822 825 have_good_group 001052 constant label dcl 254 ref 233 236 242 init 002313 constant entry external dcl 482 lctraceoff 002703 constant entry external dcl 547 lctraceon 002715 constant entry external dcl 553 load_ctl_ 000422 constant entry external dcl 13 load_level 002733 constant entry external dcl 558 logon1 002030 constant label dcl 415 ref 254 390 404 412 maksb 004562 constant label dcl 855 ref 876 maxu_common 003050 constant label dcl 604 ref 597 nolog 002203 constant label dcl 465 ref 252 285 286 287 293 298 299 300 310 337 343 354 361 364 365 380 nope 005075 constant label dcl 909 ref 887 889 891 893 896 897 900 off1 004025 constant label dcl 714 ref 681 692 ok_for_pj 005200 constant label dcl 937 ref 928 929 on_sec 002003 constant label dcl 408 ref 262 327 328 333 onprime 001610 constant label dcl 386 ref 259 318 319 323 352 371 377 onprime1 001605 constant label dcl 382 ref 290 292 303 permitted_proj_group 005076 constant entry internal dcl 919 ref 228 see_if_oldest 005003 constant entry internal dcl 883 ref 810 815 set_abs_maxu 005204 constant entry internal dcl 946 ref 457 651 719 set_abs_parms 003025 constant entry external dcl 592 set_absentee_group 005412 constant entry internal dcl 1032 ref 239 423 set_maxunits 003041 constant entry external dcl 599 trybump 001516 constant label dcl 366 ref 363 unload 003625 constant entry external dcl 674 xbmp 004701 constant label dcl 871 ref 853 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6760 7224 6066 6770 Length 10244 6066 244 1004 671 72 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME load_ctl_ 986 external procedure is an external procedure. check_max_grace internal procedure shares stack frame of external procedure load_ctl_. existing_group internal procedure shares stack frame of external procedure load_ctl_. findsb internal procedure shares stack frame of external procedure load_ctl_. see_if_oldest internal procedure shares stack frame of external procedure load_ctl_. permitted_proj_group internal procedure shares stack frame of external procedure load_ctl_. set_abs_maxu internal procedure shares stack frame of external procedure load_ctl_. set_absentee_group internal procedure shares stack frame of external procedure load_ctl_. Write_User_Message internal procedure shares stack frame of external procedure load_ctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 tracing load_ctl_ 000011 prio_sked load_ctl_ 000012 first_group load_ctl_ 000013 average_idle_units set_abs_maxu 000014 first_idle_unit set_abs_maxu 000015 last_idle_unit set_abs_maxu 000016 prev_idle_units set_abs_maxu 000047 sample_times set_abs_maxu STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME load_ctl_ 000100 absentee load_ctl_ 000101 background load_ctl_ 000102 daemon load_ctl_ 000103 foreground load_ctl_ 000104 foreground_absentee load_ctl_ 000105 interactive load_ctl_ 000106 ct1 load_ctl_ 000112 ec load_ctl_ 000113 i load_ctl_ 000114 j load_ctl_ 000116 junk load_ctl_ 000120 longinfo load_ctl_ 000151 maxprim load_ctl_ 000152 mcode load_ctl_ 000153 mesl load_ctl_ 000154 msg3 load_ctl_ 000205 ncpu load_ctl_ 000206 nkmem load_ctl_ 000207 nbulk load_ctl_ 000210 pdtep load_ctl_ 000212 satep load_ctl_ 000214 check_for_process_creation_ep load_ctl_ 000215 reject_abs load_ctl_ 000216 time_now load_ctl_ 000220 unitsmax load_ctl_ 000221 wci_area load_ctl_ 000453 abs_only load_ctl_ 000454 autp load_ctl_ 000456 ansp load_ctl_ 000460 mgtep load_ctl_ 000462 pdtp load_ctl_ 000464 utep load_ctl_ 000466 wcip load_ctl_ 000514 i existing_group 000524 oldest_atep findsb 000526 oldest_time findsb 000530 i findsb 000532 xgp findsb 000534 bumpx findsb 000536 why findsb 000540 p findsb 000562 t_group permitted_proj_group 000564 i permitted_proj_group 000574 current_idle_units set_abs_maxu 000575 n_idle_units set_abs_maxu 000576 sum_of_idle_units set_abs_maxu 000577 time_in_seconds set_abs_maxu 000600 i set_abs_maxu 000610 i set_absentee_group 000612 save_mgtep set_absentee_group 000624 message Write_User_Message 001024 message_lth Write_User_Message 001025 message_buffer_cur_lth Write_User_Message 001026 message_buffer_max_lth Write_User_Message 001030 message_buffer_ptr Write_User_Message 001032 new_message_buffer_max_lth Write_User_Message 001034 new_message_buffer_ptr Write_User_Message 001036 system_area_ptr Write_User_Message 001040 status_code_string Write_User_Message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_ne_as alloc_char_temp call_ext_out_desc call_ext_out return_mac fl2_to_fx1 mpfx2 shorten_stack ext_entry divide_fx3 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absentee_user_manager_$update_whotab_abs_control absentee_utility_$au_send_wakeup admin_$abs as_meter_$read_config astty_$tty_force asu_$bump_code convert_status_code_ date_time_$format ec_shift_config_change_ get_system_free_area_ hcs_$initiate ioa_$rs ioa_$rsnnl reassign_work_classes_ sub_err_ sys_log_ sys_log_$error_log THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$ansp as_data_$autp as_data_$ls_message_buffer_cur_lth as_data_$ls_message_buffer_max_lth as_data_$ls_message_buffer_ptr as_data_$mgtp as_data_$rs_ptrs as_data_$whoptr as_error_table_$bumped_in_group as_error_table_$bumped_secondary as_error_table_$gpabsmax as_error_table_$groupmax as_error_table_$grp_full as_error_table_$nf_nosec as_error_table_$no_group as_error_table_$no_user_to_bump as_error_table_$not_full as_error_table_$preempt_emergency as_error_table_$preempt_emergency_prime as_error_table_$preempt_group as_error_table_$preempt_secondary as_error_table_$proj_max as_error_table_$protec_msg as_error_table_$protec_till_msg as_error_table_$saturate as_error_table_$subject as_error_table_$sys_full as_error_table_$sysgrpfl error_table_$out_of_sequence error_table_$unimplemented_version sc_stat_$Go_typed sc_stat_$Multics_typed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 77 000375 1 26 000404 2 53 000406 1140 000407 19 76 000410 13 000413 160 000435 161 000441 162 000444 163 000447 164 000453 165 000454 167 000455 170 000472 171 000476 172 000500 173 000502 175 000504 177 000505 181 000507 182 000516 183 000520 184 000522 186 000526 187 000530 188 000531 194 000534 195 000540 196 000543 197 000547 198 000552 199 000561 200 000567 201 000571 202 000575 203 000601 204 000603 206 000612 207 000613 209 000614 210 000620 211 000624 212 000626 213 000635 215 000636 218 000661 222 000674 226 000676 228 000704 232 000734 233 000742 236 000743 239 000757 242 000764 247 001000 250 001042 251 001046 252 001051 254 001052 259 001054 262 001064 267 001065 268 001070 269 001076 273 001131 274 001132 283 001133 284 001137 285 001142 286 001144 287 001150 288 001153 289 001164 290 001174 291 001176 292 001207 293 001211 296 001212 297 001221 298 001224 299 001226 300 001231 301 001234 302 001244 303 001253 304 001255 307 001256 309 001270 310 001273 315 001274 317 001304 318 001307 319 001314 321 001325 322 001330 323 001340 324 001342 327 001345 328 001347 331 001355 332 001363 333 001365 336 001366 337 001370 342 001371 343 001374 344 001401 345 001405 346 001407 347 001416 352 001470 353 001474 354 001477 359 001500 361 001502 363 001504 364 001510 365 001513 366 001516 367 001526 368 001530 370 001540 371 001541 374 001542 375 001552 376 001565 377 001577 379 001601 380 001604 382 001605 386 001610 387 001612 388 001615 389 001616 390 001622 391 001627 392 001632 393 001635 394 001640 396 001647 397 001704 399 001707 400 001721 401 001725 402 001772 404 002002 408 002003 409 002006 410 002011 411 002013 412 002014 413 002022 414 002025 415 002030 420 002032 421 002034 422 002037 423 002045 425 002052 430 002056 431 002061 435 002101 436 002102 440 002110 441 002112 443 002130 444 002143 445 002144 451 002147 452 002151 453 002154 455 002160 457 002162 461 002202 465 002203 466 002205 467 002222 469 002266 471 002275 472 002277 473 002302 475 002307 476 002311 482 002312 486 002321 489 002354 490 002356 493 002357 494 002363 495 002366 496 002370 497 002435 503 002511 504 002513 506 002515 507 002523 509 002525 510 002530 511 002532 513 002534 515 002541 517 002542 520 002570 526 002611 527 002612 528 002625 529 002633 531 002642 535 002671 537 002677 545 002701 547 002702 549 002711 550 002713 553 002714 555 002723 556 002726 558 002727 563 002741 564 002746 565 002751 566 002754 567 002760 568 002764 569 003004 570 003005 571 003007 572 003014 574 003015 576 003017 578 003023 592 003024 596 003033 597 003035 599 003036 603 003047 604 003050 607 003055 608 003060 609 003063 610 003067 611 003075 616 003132 618 003145 621 003205 622 003217 626 003250 627 003252 628 003257 635 003342 637 003345 638 003356 639 003362 640 003371 643 003375 646 003422 648 003426 649 003431 651 003460 654 003461 657 003476 659 003507 662 003556 664 003560 666 003571 667 003604 669 003606 670 003613 672 003620 674 003621 676 003636 677 003642 678 003645 679 003651 680 003653 681 003656 683 003657 684 003671 685 003677 686 003702 687 003710 688 003711 689 003717 690 003721 692 003752 693 003753 694 003755 695 003757 697 003765 698 003767 700 003776 702 003777 703 004001 706 004007 707 004012 708 004020 709 004023 714 004025 715 004030 716 004033 717 004035 719 004037 723 004060 732 004061 734 004062 737 004072 738 004077 739 004104 742 004147 744 004154 747 004160 755 004161 760 004163 761 004175 762 004203 764 004214 766 004216 769 004260 785 004263 801 004265 802 004266 803 004274 804 004276 808 004300 809 004311 810 004316 811 004317 812 004321 814 004333 815 004337 817 004343 819 004345 821 004352 822 004354 823 004364 824 004377 825 004405 826 004414 827 004416 829 004447 833 004450 834 004453 839 004522 840 004524 841 004527 842 004531 844 004534 845 004536 846 004537 847 004544 849 004547 850 004550 851 004552 852 004556 853 004561 855 004562 856 004565 861 004633 862 004637 863 004641 864 004643 865 004653 867 004654 868 004662 869 004670 870 004676 871 004701 872 004704 873 004724 876 004774 879 004777 880 005002 883 005003 885 005004 887 005012 889 005025 891 005035 893 005042 895 005047 896 005050 897 005053 899 005061 900 005064 904 005072 905 005074 909 005075 919 005076 925 005100 926 005105 927 005114 928 005121 929 005126 930 005135 932 005137 935 005175 937 005200 946 005204 965 005205 971 005213 973 005220 981 005242 982 005243 984 005250 985 005253 989 005255 991 005272 992 005273 993 005274 995 005301 999 005302 1000 005303 1002 005312 1004 005321 1005 005327 1006 005332 1010 005334 1016 005340 1018 005346 1022 005406 1024 005411 1032 005412 1037 005413 1038 005415 1040 005422 1041 005435 1043 005443 1045 005454 1046 005460 1049 005461 1051 005463 1053 005465 1057 005466 1083 005477 1085 005520 1091 005523 1094 005537 1098 005632 1102 005662 1103 005666 1104 005670 1106 005672 1107 005676 1109 005703 1110 005711 1112 005720 1114 005725 1115 005732 1117 005736 1121 005741 1123 005747 1126 005752 ----------------------------------------------------------- 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