COMPILATION LISTING OF SEGMENT up_pdt_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/07/88 1232.8 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 up_pdt_: 14 procedure (segp, wordcount, instaldir, instalname, instalp, P_ansp, ip, answer, code); 15 16 17 /* UP_PDT_ - update project definition table. 18* 19* A major rewrite of this module was done in March 1792, to provide for the 20* management of usage figures per user in the PDT entry. 21* This requires that the position of a PDT entry not change while the system is running, 22* since there are pointers in the answer table to a user's usage figures, for use by act_ctl_. 23* Initially coded by Michael J. Spier, February 13, 1970 24* Modified by J. Phillppps 6/72 to give project administrators read access to their PDT. 25* Modified 741204 by PG for AIM stuff. 26* Modified May 1976 by T. Casey to update cutoff warning thresholds. 27* Modified May 1978 by T. Casey to update pdir_quota, and issue warning msg for grace, pdir quota, or rings > project max. 28* Modified June 1978 by T. Casey to build hash table for pdt. 29* Modified November 1978 by T. Casey for MR7.0 absentee control parameters. 30* Modified July 1979 by C. Hornig to adjust user cutoff BEFORE installing new cutoff. 31* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures. (UNCA) 32* Modified by R. McDonald May 1980 to include page charges. (UNCA) 33* Modified by E. N. Kittlitz June 1981 for UNCA rate structures, page charges, bug fixes. 34* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 35* Modified December 1981, E. N. Kittlitz. add user_warn controls. 36* Modified January 1982, BIM for author changes (lock and install_time) 37* Modified February 1982, E. N. Kittlitz. part of the xxx.install.acs changes. 38* Modified September 1982, E. N. Kittlitz. ACL changes. default_ring. 39* Modified June 1983, E.N. Kittlitz. fix bumping of deleted users. 40* Modified 1984-08-27 BIM for user login ranges. 41**/ 42 43 /****^ HISTORY COMMENTS: 44* 1) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 45* audit(86-06-10,Martinson), install(86-07-11,MR12.0-1092): 46* Correct error message documentation. 47* 2) change(86-09-26,GDixon), approve(86-09-26,MCR7499), 48* audit(86-10-08,Beattie), install(86-10-13,MR12.0-1183): 49* Initialize htp pointer to null to avoid reference through unset variable 50* (phx20042). 51* 3) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 52* audit(87-07-16,Hartogs), install(87-08-04,MR12.1-1055): 53* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 54* 4) change(88-09-14,Parisek), approve(88-09-28,MCR7996), 55* audit(88-10-05,Hunter), install(88-10-07,MR12.2-1140): 56* Truncate the revised pdt to its current length which might have changed. 57* END HISTORY COMMENTS */ 58 59 /* parameters */ 60 61 dcl code fixed bin (35); 62 dcl (segp, instalp, P_ansp, ip) ptr, wordcount fixed bin; 63 dcl instaldir char (*), instalname char (*), answer char (*); 64 65 /* DECLARATION OF EXTERNAL SYMBOLS */ 66 67 dcl adjust_cutoff_ entry (ptr, fixed bin (71)); 68 dcl aim_check_$greater_or_equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 69 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 70 dcl get_group_id_ entry () returns (char (32) aligned); 71 dcl get_process_id_ entry () returns (bit (36) aligned); 72 dcl (sys_log_, sys_log_$error_log) entry options (variable); 73 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 74 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 75 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 76 dcl hcs_$set_safety_sw entry (char (*), char (*), bit (1) aligned, fixed bin (35)); 77 dcl hcs_$set_bc entry (char (*), char (*), fixed bin (24), fixed bin (35)); 78 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 79 dcl create_homedir_ entry (character (*), character (*), bit (72) aligned, character (*), character (*), 80 character (*), fixed binary (35)); 81 dcl asu_$bump_code entry (ptr, fixed bin (35), char (8), fixed bin (35), fixed bin); 82 dcl ioa_$rsnnl entry options (variable); 83 dcl hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 84 dcl hash_$in entry (ptr, char (*) aligned, fixed bin, fixed bin (35)); 85 dcl hash_$make entry (ptr, fixed bin, fixed bin (35)); 86 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 87 88 /* based */ 89 90 dcl 1 movetable based aligned, 91 2 moveary (movelen) fixed bin (35); 92 93 /* builtins */ 94 95 dcl (addr, clock, fixed, float, index, max, min, null, rel, rtrim, string, substr, verify) builtin; 96 97 /* external static */ 98 99 dcl (as_error_table_$user_deleted, as_error_table_$user_auth_excludes) 100 fixed bin (35) external static; 101 102 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 103 104 dcl LEGAL char (95) int static options (constant) init /* Printables except PAD, semicolon, but with BS */ 105 (" !""#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); 106 107 dcl 1 acla (12) aligned, 108 2 userid char (32), 109 2 mode bit (36), 110 2 xmode bit (36), 111 2 rcode fixed bin (35); 112 113 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 114 115 dcl access_ceiling bit (72) aligned; 116 dcl time_now fixed bin (71); /* clock reading */ 117 dcl n_acl fixed bin; 118 dcl n_acl_pjadmin fixed bin; 119 dcl (i, ii, j, k) fixed bin (18); 120 dcl lcode fixed bin (35); 121 dcl movelen fixed bin (24); 122 dcl anonymous_user bit (1) aligned; 123 dcl offset bit (18) aligned; 124 dcl (p, q, satp, satep, pdtp, pdtep, htp, oldp, xp, tp) ptr; 125 dcl procid bit (36) aligned; 126 dcl tempid char (30) aligned; 127 dcl debg char (8); 128 dcl (bad_lr, bad_mr, bad_pq, bad_gt) fixed bin init (0); 129 dcl (lr, mr) fixed bin; 130 131 /* ======================================================= */ 132 133 /* This first section of code checks every entry in the proposed new PDT, 134* to make sure that all entries are in a legal format and that the installer 135* is authorized to install this PDT */ 136 137 time_now = clock (); 138 procid = get_process_id_ (); 139 ansp = P_ansp; 140 if procid ^= anstbl.as_procid then return; /* privileged proc */ 141 142 access_ceiling = installation_parms.access_authorization_ceiling; 143 144 instalp = null; /* pre-set returned pointer */ 145 instaldir, instalname = " "; /* ... */ 146 if wordcount < 64 then do; /* make sure segment contains something */ 147 answer = "wordcount < 64"; 148 code = 10; 149 return; 150 end; 151 if segp -> pdt.version ^= PDT_version then do; /* Check table format */ 152 answer = "incorrect table format"; 153 code = 9; 154 return; 155 end; 156 if segp -> pdt.current_size > segp -> pdt.max_size then do; 157 answer = "current_size > max_size"; 158 code = 11; 159 return; 160 end; 161 if segp -> pdt.n_users > segp -> pdt.current_size then do; 162 answer = "n_users > current_size"; 163 code = 12; 164 return; 165 end; 166 offset = rel (addr (segp -> pdt.user (segp -> pdt.current_size + 1))); 167 if fixed (offset, 18) - 1 > wordcount then do; 168 answer = "size inconsistent with wordcount"; 169 code = 13; 170 return; 171 end; 172 if verify (segp -> pdt.project_name, LEGAL) ^= 0 then do; 173 answer = "project_name not ASCII"; 174 code = 16; 175 return; 176 end; 177 call hcs_$initiate (anstbl.sysdir, "sat", "", 0, 0, satp, code); 178 if satp = null then do; 179 answer = "cannot initiate SAT"; 180 code = 15; 181 return; 182 end; 183 184 do i = 1 to sat.current_size; 185 satep = addr (sat.project (i)); 186 if project.state = 1 then 187 if project.project_id = segp -> pdt.project_name then 188 go to project_validated; 189 end; 190 answer = "project not in SAT: " || segp -> pdt.project_name; 191 code = 21; 192 return; 193 project_validated: 194 segp -> pdt.project_dir = project.project_dir; 195 instaldir = anstbl.sysdir; 196 instaldir = rtrim (instaldir) || ">pdt"; 197 instalname = project.project_id; 198 instalname = rtrim (instalname) || ".pdt"; 199 i = index (segp -> pdt.author.proc_group_id, " "); 200 if i > 32 then i = 33; 201 if i = 0 then i = 33; 202 tempid = substr (segp -> pdt.author.proc_group_id, 1, i - 3); /* knock off instance tag */ 203 j = 1 + index (tempid, "."); /* locate projectid begin */ 204 do i = 1 to 2; /* check for system administrator */ 205 if tempid = sat.system_admin (i) then go to administrator_validated; 206 if substr (sat.system_admin (i), 1, 2) = "*." then 207 if substr (sat.system_admin (i), 3, 28) = substr (tempid, j, 31 - j) then 208 go to administrator_validated; 209 if substr (sat.system_admin (i), j) = "*" then 210 if substr (sat.system_admin (i), 1, j - 1) = substr (tempid, 1, j - 1) then 211 go to administrator_validated; 212 end; 213 do i = 1 to 4; /* check administrator's name */ 214 if tempid = project.admin (i).userid then go to administrator_validated; 215 if substr (project.admin (i).userid, 1, 2) = "*." then 216 if substr (project.admin (i).userid, 3, 28) = substr (tempid, j, 31 - j) then 217 go to administrator_validated; 218 if substr (project.admin (i).userid, j) = "*" then 219 if substr (project.admin (i).userid, 1, j - 1) = substr (tempid, 1, j - 1) then 220 go to administrator_validated; 221 end; 222 223 answer = "installer not administrator " || tempid; 224 code = 22; 225 return; 226 227 administrator_validated: 228 229 n_acl = 0; 230 do i = 1 to 4; /* put all proj. administrators on PDT ACL */ 231 if project.admin (i).userid = "" then go to x2; /* when find blank acl branch out of loop */ 232 n_acl = n_acl + 1; 233 acla (n_acl).userid = rtrim (project.admin (i).userid) || ".*"; 234 acla (n_acl).mode = "1000"b; /* set READ access */ 235 acla (n_acl).xmode = ""b; 236 end; 237 x2: n_acl_pjadmin = n_acl; /* number of project administrators */ 238 do i = 1 to 2; /* put system admin on acl too. */ 239 if sat.system_admin (i) = "" then go to x2a; 240 n_acl = n_acl + 1; 241 acla (n_acl).userid = rtrim (sat.system_admin (i)) || ".*"; 242 do ii = 1 to n_acl_pjadmin; /* dont let a projadmin term deny w to a sysadmin */ 243 call match_star_name_ ((acla (ii).userid), (acla (n_acl).userid), lcode); 244 if lcode = 0 then /* project admin is also system admin */ 245 acla (ii).mode = "1010"b; /* give proj admin rw to prevent blocking of sysadmin term */ 246 end; 247 acla (n_acl).mode = "1010"b; /* RW */ 248 acla.xmode (n_acl) = ""b; 249 end; 250 x2a: n_acl = n_acl + 1; 251 acla (n_acl).userid = get_group_id_ (); 252 acla (n_acl).mode = "1010"b; 253 acla.xmode (n_acl) = ""b; 254 255 anonymous_user = "0"b; 256 do i = 1 to segp -> pdt.current_size; 257 258 p = addr (segp -> pdt.user (i)); 259 if p -> user.state < 0 then go to bast; 260 if p -> user.state > 2 then do; /* installing state 0 or 2 entries does nothing */ 261 bast: answer = "illegal state value"; 262 code = 17; 263 return; 264 end; 265 if verify (p -> user.person_id, LEGAL) ^= 0 then do; 266 answer = "person_id not ASCII"; 267 code = 16; 268 return; 269 end; 270 do j = 1 to i - 1; 271 if addr (segp -> pdt.user (j)) -> user.person_id = p -> user.person_id then do; 272 answer = "User ID duplication " || p -> user.person_id; 273 code = 23; 274 return; 275 end; 276 end; 277 if p -> user.person_id = "*" then do; 278 if project.at.anonymous = "0"b then do; 279 answer = "anonymous user not allowed"; 280 code = 24; 281 return; 282 end; 283 anonymous_user = "1"b; 284 end; 285 if verify (p -> user.initial_procedure, LEGAL) ^= 0 then do; 286 answer = "init_proc not ASCII " || p -> user.person_id; 287 code = 16; 288 return; 289 end; 290 if verify (p -> user.home_dir, LEGAL) ^= 0 then do; 291 answer = "home_dir not ASCII " || p -> user.person_id; 292 code = 16; 293 return; 294 end; 295 if verify (p -> user.outer_module, LEGAL) ^= 0 then do; 296 answer = "outer_module not ASCII " || p -> user.person_id; 297 code = 16; 298 return; 299 end; 300 if p -> user.low_ring < project.min_ring then do; 301 bad_lr = bad_lr + 1; /* count instances of this, for warning message */ 302 lr = project.min_ring; /* this is the one the user will get when he logs in */ 303 end; 304 else lr = p -> user.low_ring; /* this is the one the user will get */ 305 if p -> user.high_ring > project.max_ring then do; 306 bad_mr = bad_mr + 1; /* count these for warning message */ 307 mr = project.max_ring; /* user gets this on login */ 308 end; 309 else mr = p -> user.high_ring; /* user gets this */ 310 if p -> user.low_ring <= 0 then do; 311 answer = "minimum ring less than 1 " || p -> user.person_id; 312 code = 25; 313 return; 314 end; 315 316 if lr > mr then do; /* if lr that user gets is > mr that he gets, he can't log in */ 317 call ioa_$rsnnl ("^[project^x^]low ring > ^[project^x^]high ring ^a", 318 answer, i, (lr = project.min_ring), (mr = project.max_ring), p -> user.person_id); 319 code = 25; 320 return; 321 end; 322 323 if p -> user.default_ring > 0 & /* have a default ring (new enough PDT) */ 324 p -> user.default_ring < lr then do; /* and it's too low */ 325 answer = "default ring is less than minimum allowed by SAT and PDT"; 326 code = 25; 327 return; 328 end; 329 330 if p -> user.default_ring > mr then do; 331 answer = "default ring is greater than maximum allowed by SAT and PDT"; 332 code = 25; 333 end; 334 335 if ^aim_check_$greater_or_equal (p -> user.user_authorization (2), 336 p -> user.user_authorization (1)) 337 then do; 338 answer = "Invalid authorization range"; 339 code = 26; 340 end; 341 if ^aim_check_$greater_or_equal (access_ceiling, p -> user.user_authorization (2)) then do; 342 answer = "authorization > access_ceiling"; 343 code = 18; 344 return; 345 end; 346 if p -> user.pdir_quota > project.pdir_quota then 347 bad_pq = bad_pq + 1; /* count these for warning message */ 348 if p -> user.bump_grace > project.grace_max then 349 bad_gt = bad_gt + 1; /* count these for warning message */ 350 end; 351 352 /* Now we will compare the new PDT with the current version, and merge the two files */ 353 354 call hcs_$initiate (instaldir, instalname, "", 0, 1, oldp, code); 355 if oldp = null then do; /* cannot locate old pdt */ 356 call hcs_$make_seg (instaldir, instalname, "", 01010b, oldp, code); 357 if oldp = null then return; /* Die if cannot create new segment. */ 358 segp -> pdt.rs_number = project.rs_number; 359 segp -> pdt.n_users = 0; /* recompute */ 360 do i = 1 to segp -> pdt.current_size; 361 p = addr (segp -> pdt.user (i)); 362 if p -> user.state ^= 1 then go to bast;/* not install new user with state 2 */ 363 segp -> pdt.n_users = segp -> pdt.n_users + 1; 364 call zero_usage_items; 365 /**** Get the alias and supply it here, someday. */ 366 call create_homedir_ ((p -> user.person_id), "", p -> user.user_authorization (1), (project.project_id), 367 (p -> user.home_dir), (project.project_dir), code); 368 end; 369 go to finish_up; /* Go clean up and set ACL */ 370 end; 371 372 /* There is an old PDT. Make up a temporary PDT which will be the merged copy. 373* We start by making it look just like the current copy, and then apply changes */ 374 375 call hcs_$make_seg (instaldir, "", "", 1011b, tp, code); 376 if tp = null then do; 377 answer = "cannot make temp"; 378 return; 379 end; 380 movelen = PDT_header_lth + oldp -> pdt.current_size * PDT_entry_lth; 381 tp -> movetable = oldp -> movetable; /* copy current pdt into temp seg */ 382 383 if tp -> pdt.version ^= PDT_version then do; /* old pdt not same version as new one */ 384 /* we checked earlier, and the new one is the correct version */ 385 /* in general, something special must be done to get the 386* information out of the old one */ 387 /* ... */ 388 /* having done what we can ... */ 389 tp -> pdt.version = PDT_version; /* put latest version number into merged copy */ 390 end; 391 392 tp -> pdt.n_users = 0; /* recalculate this */ 393 tp -> pdt.author.proc_group_id = segp -> pdt.author.proc_group_id; 394 tp -> pdt.author.lock = ""b; 395 tp -> pdt.author.last_install_time = clock (); 396 tp -> pdt.author.table = segp -> pdt.author.table; 397 tp -> pdt.author.w_dir = segp -> pdt.author.w_dir; 398 tp -> pdt.rs_number = project.rs_number; 399 400 do i = 1 to tp -> pdt.current_size; /* loop thru old copy. find any merges or deletes */ 401 p = addr (tp -> pdt.user (i)); 402 if p -> user.state = 0 then go to x1; /* skip free entries */ 403 p -> user.state = 2; 404 do j = 1 to segp -> pdt.current_size; 405 q = addr (segp -> pdt.user (j)); 406 if q -> user.state = 1 then /* not install dead users */ 407 if p -> user.person_id = q -> user.person_id then do; 408 p -> user.state = 1; /* old user still in project. merge */ 409 tp -> pdt.n_users = tp -> pdt.n_users + 1; 410 if p -> user.datof ^= 0 then do; /* returning user? */ 411 p -> user.daton = time_now; 412 p -> user.datof = 0; 413 end; 414 q -> user.state = -1; /* now mark new boy deleted, so not scan again */ 415 call adjust_cutoff_ (p, time_now); 416 call merge_admin_info; 417 if p -> user.daton = time_now /* if user was just reregistered */ 418 then call create_homedir_ ((p -> user.person_id), "", p -> user.user_authorization (1), (project.project_id), 419 (p -> user.home_dir), (project.project_dir), code); 420 go to x1; /* leave old usage figures */ 421 end; 422 end; 423 p -> user.datof = time_now; /* deleted user - state will be 2 */ 424 x1: end; 425 426 do i = 1 to segp -> pdt.current_size; /* loop thru new copy, looking for new users */ 427 q = addr (segp -> pdt.user (i)); 428 if q -> user.state = 1 then do; /* any user left in new file with state 1 is new */ 429 badx: j = tp -> pdt.freep; 430 if j = 0 then j, tp -> pdt.current_size = tp -> pdt.current_size + 1; 431 else do; 432 xp = addr (tp -> pdt.user (j)); 433 if xp -> user.state ^= 0 then do; 434 call sys_log_ (SL_LOG_BEEP, "up_pdt_: ^a ^a on free list state nonzero", 435 instalname, xp -> user.person_id); 436 tp -> pdt.freep = 0; 437 go to badx; 438 end; 439 tp -> pdt.freep = xp -> user.chain; 440 end; 441 p = addr (tp -> pdt.user (j)); 442 p -> user.state = 1; 443 tp -> pdt.n_users = tp -> pdt.n_users + 1; 444 p -> user.person_id = q -> user.person_id; 445 call merge_admin_info; /* put in limits and stuff */ 446 call zero_usage_items; 447 call create_homedir_ ((p -> user.person_id), "", p -> user.user_authorization (1), (project.project_id), 448 (p -> user.home_dir), (project.project_dir), code); 449 end; 450 end; 451 452 do i = 1 to anstbl.current_size; /* scan answer table */ 453 utep = addr (anstbl.entry (i)); 454 if ute.active >= NOW_LOGGED_IN then /* look for logged in users on this proj */ 455 if ute.project = tp -> pdt.project_name then do; 456 if ute.anonymous = 0 then /* regular user */ 457 do j = 1 to tp -> pdt.current_size; 458 q = addr (tp -> pdt.user (j)); 459 if q -> user.state = 1 then 460 if q -> user.person_id = ute.person then do; 461 if rel (ute.pdtep) ^= rel (q) then do; 462 call sys_log_ (SL_LOG_BEEP, "up_pdt_: synch error ^a.^a", 463 ute.person, ute.project); 464 end; 465 if ^aim_check_$in_range ( 466 ute.process_authorization_range (1), q -> user.user_authorization) 467 | ^aim_check_$in_range ( 468 ute.process_authorization_range (2), q -> user.user_authorization) then do; 469 call sys_log_ (SL_LOG, "up_pdt_: bumping ^a.^a, user authorization now outside range.", 470 ute.person, ute.project); 471 call asu_$bump_code (utep, as_error_table_$user_auth_excludes, 472 debg, code, (0)); 473 end; 474 go to next_entry; 475 end; 476 end; 477 else if anonymous_user then go to next_entry; 478 479 /* arrived here we have a logged-in user who is no longer accredited by his project */ 480 if ute.preempted = 0 then do; 481 call sys_log_ (SL_LOG, "up_pdt_: bumping ^a.^a, omitted from new pdt", ute.person, ute.project); 482 call asu_$bump_code (utep, as_error_table_$user_deleted, debg, code, 483 (installation_parms.warning_time)); 484 end; 485 end; 486 next_entry: 487 end; 488 489 instalp = oldp; 490 call hcs_$delentry_seg (segp, code); 491 segp = tp; 492 finish_up: 493 494 /* Build hash table. Maybe. */ 495 496 pdtp = segp; /* avoid lots of segp ->'s */ 497 pdt.ht_relp = 0; /* no hash table yet */ 498 wordcount = 0; /* length of hash table */ 499 if pdt.current_size < 8 then /* if PDT fits into 1 or 2 pages */ 500 goto finish_up_2; /* a hash table won't save us any page faults */ 501 502 code = 0; 503 htp = null; /* no hash table seg created so far. */ 504 if pdt.current_size > 956 then do; /* room for only 956 users, with hash table at end */ 505 call sys_log_ (SL_LOG, "up_pdt_: ^a has ^d users, leaving insufficient room for a hash table.", 506 instalname, pdt.current_size); 507 goto no_ht; 508 end; 509 call hcs_$make_seg (instaldir, "pdt.ht.temp", "", 1011b, htp, code); 510 if code ^= 0 then goto no_ht; 511 call hcs_$truncate_seg (htp, (0), code); 512 if code ^= 0 then goto no_ht; 513 514 /* figure out how long to make it */ 515 if pdt.n_users > 70 then /* if reasonably large number of users */ 516 i = fixed (float (pdt.n_users) / .7); /* use Knuth's recommendation of 70% */ 517 else i = min (101, max (24, fixed (float (pdt.n_users) / .5))); /* but small hash tables act funny, so make it 518* 50% full, subject to being between 1/4 and 1 page long */ 519 520 call hash_$make (htp, (i), code); 521 if code ^= 0 then goto no_ht; 522 523 do i = 1 to pdt.current_size; 524 pdtep = addr (pdt.user (i)); 525 if user.state = 1 then do; 526 call hash_$in (htp, user.person_id, (i), code); 527 if code ^= 0 then goto no_ht; 528 end; 529 end; 530 531 pdtep = addr (pdt.user (i)); /* get ptr to where to put ht - after last user */ 532 wordcount = htable.loht; /* length of table */ 533 movelen = wordcount; 534 pdtep -> movetable = htp -> movetable; /* copy table onto end of new pdt */ 535 pdt.ht_relp = fixed (rel (pdtep)); /* put relptr to it into header */ 536 call hcs_$delentry_seg (htp, (0)); /* clean up */ 537 538 finish_up_2: 539 wordcount = wordcount + segp -> pdt.current_size * PDT_entry_lth + PDT_header_lth; 540 movelen = wordcount; /* Now copy new pdt over old one. */ 541 oldp -> movetable = segp -> movetable; /* zoop. */ 542 call hcs_$truncate_seg (oldp, wordcount, code); 543 if code ^= 0 then 544 answer = "Unable to truncate pdt to current length"; 545 /* not worth stopping for though */ 546 call hcs_$add_acl_entries (instaldir, instalname, addr (acla), n_acl, code); 547 call hcs_$set_bc (instaldir, instalname, 36 * wordcount, code); 548 call hcs_$set_safety_sw (instaldir, instalname, "1"b, code); 549 code = 0; /* Succeeded. */ 550 551 if bad_lr > 0 | bad_mr > 0 | bad_pq > 0 | bad_gt > 0 then do; /* return warning if necessary */ 552 call ioa_$rsnnl ("SAT limits exceeded (will be enforced at login time): 553 ^[min_ring: ^d, ^d users;^x^;^2s^]^[max_ring: ^d, ^d users;^x^;^2s^]^[pdir_quota: ^d, ^d users;^x^;^2s^]^[grace_time: ^d, ^d users;^x^;^2s^]", 554 answer, i, (bad_lr > 0), project.min_ring, bad_lr, (bad_mr > 0), project.max_ring, bad_mr, 555 (bad_pq > 0), project.pdir_quota, bad_pq, (bad_gt > 0), project.grace_max, bad_gt); 556 substr (answer, i - 1, 1) = ""; /* get rid of last ";"; up_sysctl_ supplies a period */ 557 end; 558 559 return; 560 561 no_ht: call sys_log_$error_log (SL_LOG_BEEP, code, "up_pdt_", "^a will be installed with no hash table", instalname); 562 if htp ^= null then call hcs_$delentry_seg (htp, (0)); 563 goto finish_up_2; 564 565 /* Internal proc to copy limits and other administrator-specified data into pdt entry */ 566 567 merge_admin_info: proc; 568 569 p -> user.password = q -> user.password; 570 string (p -> user.at) = string (q -> user.at); 571 p -> user.user_authorization = q -> user.user_authorization; 572 p -> user.initial_procedure = q -> user.initial_procedure; 573 p -> user.ip_len = q -> user.ip_len; 574 p -> user.ss_len = q -> user.ss_len; 575 p -> user.home_dir = q -> user.home_dir; 576 p -> user.bump_grace = q -> user.bump_grace; 577 p -> user.high_ring = q -> user.high_ring; 578 p -> user.low_ring = q -> user.low_ring; 579 p -> user.default_ring = q -> user.default_ring; 580 p -> user.outer_module = q -> user.outer_module; 581 p -> user.lot_size = q -> user.lot_size; 582 p -> user.kst_size = q -> user.kst_size; 583 p -> user.cls_size = q -> user.cls_size; 584 p -> user.pdir_quota = q -> user.pdir_quota; 585 string (p -> user.uflags) = string (q -> user.uflags); 586 p -> user.dollar_limit = q -> user.dollar_limit; 587 p -> user.absolute_limit = q -> user.absolute_limit; 588 p -> user.absolute_cutoff = q -> user.absolute_cutoff; 589 p -> user.absolute_increm = q -> user.absolute_increm; 590 p -> user.user_warn_days = q -> user.user_warn_days; 591 p -> user.user_warn_pct = q -> user.user_warn_pct; 592 p -> user.user_warn_dollars = q -> user.user_warn_dollars; 593 p -> user.warn_days = q -> user.warn_days; 594 p -> user.warn_pct = q -> user.warn_pct; 595 p -> user.warn_dollars = q -> user.warn_dollars; 596 p -> user.group = q -> user.group; 597 p -> user.max_foreground = q -> user.max_foreground; 598 p -> user.max_background = q -> user.max_background; 599 p -> user.abs_foreground_cpu_limit = q -> user.abs_foreground_cpu_limit; 600 call adjust_cutoff_ (p, time_now); 601 do k = 0 to 7; 602 p -> user.shift_limit (k) = q -> user.shift_limit (k); 603 end; 604 605 end merge_admin_info; 606 607 /* Internal procedure to clear usage in pdt entry */ 608 609 zero_usage_items: proc; 610 611 p -> user.now_in = 0; /* not logged in because is new guy */ 612 p -> user.n_foreground = 0; 613 p -> user.n_background = 0; 614 p -> user.time_last_reset, p -> user.daton = time_now; 615 p -> user.datof = 0; 616 p -> user.dollar_charge = 0e0; 617 p -> user.absolute_spent = 0e0; 618 p -> user.last_login_time = 0; 619 p -> user.last_login_unit = ""; 620 p -> user.last_login_type = 0; 621 p -> user.last_login_line_type = 0; 622 p -> user.time_last_bump = 0; 623 do k = 0 to 7; 624 p -> user.interactive.charge (k) = 0e0; 625 p -> user.interactive.cpu (k) = 0; 626 p -> user.interactive.core (k) = 0; 627 p -> user.interactive.connect (k) = 0; 628 p -> user.interactive.io_ops (k) = 0; 629 end; 630 do k = 1 to 4; 631 p -> user.absentee.charge (k) = 0e0; 632 p -> user.absentee.jobs (k) = 0; 633 p -> user.absentee.cpu (k) = 0; 634 p -> user.absentee.memory (k) = 0; 635 end; 636 do k = 1 to 4; 637 p -> user.iod.charge (k) = 0e0; 638 p -> user.iod.pieces (k) = 0; 639 p -> user.iod.pages (k) = 0; 640 p -> user.iod.lines (k) = 0; 641 end; 642 do k = 1 to 16; 643 p -> user.devices (k) = 0e0; 644 end; 645 646 end zero_usage_items; 647 648 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The answer table has one entry per "login instance" whether completed or */ 1 6 /* not. It is connected to the Channel Definition Table by the pointer */ 1 7 /* "channel". The header is used mostly by dialup_. */ 1 8 /* */ 1 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 1 10 /* */ 1 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 15* Replace anstbl.incl.pl1. 1 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 1 17* Add anstbl.session_uid_counter. 1 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 1 19* Add anstbl.message_update_time and named constants for values of 1 20* anstbl.session, and to make all padding explicit. 1 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 1 22* Change "entry" to a placeholder so as not to require 1 23* user_table_entry.incl.pl1. 1 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 1 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 1 26* Added the flag login_server_present which indicates whether a login 1 27* server request has been received. This is used to determine whether 1 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 1 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 1 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 1 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 32* A) Moved constants for ute.pw_flags.mask_ctl into 1 33* user_table_entry.incl.pl1. 1 34* B) Added common table header to all user tables. 1 35* END HISTORY COMMENTS */ 1 36 1 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 38 /* */ 1 39 /* The anstbl structure below is divided into sections. Each section begins */ 1 40 /* with a comment describing the elements in the section. Elements are */ 1 41 /* placed within a section, based upon their function or the programs that */ 1 42 /* use them. Each section begins on a double word and is an even number of */ 1 43 /* words long. */ 1 44 /* */ 1 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* format: style4 */ 1 50 1 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 1 52 1 53 dcl ansp ptr automatic init (null); 1 54 1 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 1 56 2 header like ut_header, /* Header common to all user tables. */ 1 57 1 58 /* Counter elements. */ 1 59 2 nlin fixed bin, /* number of active lines */ 1 60 2 mxlin fixed bin, /* maximum number of active lines */ 1 61 2 n_users fixed bin, /* number of logged-in users */ 1 62 2 max_users fixed bin, /* maximum number of users allowed */ 1 63 2 n_units fixed bin, /* number of logged in units */ 1 64 2 max_units fixed bin, /* maximum number of units */ 1 65 2 n_sessions fixed bin, /* number of Multics sessions */ 1 66 2 n_pad fixed bin, 1 67 1 68 /* Name elements. */ 1 69 2 sysdir char (64) unal, /* name of main system control directory */ 1 70 2 as_tty char (8) unal, /* name of main answering service device. */ 1 71 1 72 /* Login elements. */ 1 73 2 login_word char (8) unal, /* login word if special_session=1 */ 1 74 2 session char (8) unal, /* session indicator */ 1 75 2 special_message char (128) unal, /* message to be printed for special session */ 1 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 1 77 2 message_lng fixed bin, /* length of special message */ 1 78 2 login_pad fixed bin, 1 79 1 80 /* Table update elements. */ 1 81 2 lock_count fixed bin, /* global lock for all system control tables */ 1 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 1 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 1 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 1 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 1 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 1 87 2 update_pad fixed bin, 1 88 1 89 /* dialup_ data values. */ 1 90 2 current_time fixed bin (71), /* Time of last transaction */ 1 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 1 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 1 93 1 94 /* load_ctl_ elements. */ 1 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 1 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 1 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 1 98 /* load_ctl_ load leveling desired response range: */ 1 99 2 response_high fixed bin, /* bad if user response time slower than this */ 1 100 2 response_low fixed bin, /* bad if user response time faster than this */ 1 101 2 load_ctl_pad fixed bin, 1 102 1 103 /* Login server request server data. */ 1 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 1 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 1 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 1 107 1 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 1 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 1 110 3 contents (UTE_SIZE) fixed bin; 1 111 1 112 /* constants */ 1 113 1 114 /* values for anstbl.session */ 1 115 1 116 dcl (AT_NORMAL init ("normal "), 1 117 AT_SPECIAL init ("special "), 1 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 1 119 1 120 dcl UTE_SIZE fixed bin internal static initial (300); 1 121 1 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 648 649 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 2 2 2 3 /* format: style4 */ 2 4 2 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 2 6 2 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 2 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 2 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 2 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 2 11* WAIT_DISCARD_WAKEUP 2 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 2 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 2 14**/ 2 15 2 16 /****^ HISTORY COMMENTS: 2 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 2 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 2 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 2 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 22* Add named constants for instance tags. 2 23* END HISTORY COMMENTS */ 2 24 2 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 2 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 2 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 2 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 2 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 2 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 2 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 2 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 2 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 2 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 2 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 2 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 2 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 2 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 2 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 2 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 2 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 2 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 2 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 2 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 2 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 2 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 2 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 2 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 2 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 2 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 2 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 2 52 ) fixed bin internal static options (constant); 2 53 2 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 2 55 /* names of ute.destroy_flag values */ 2 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 2 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 2 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 2 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 2 60 "wait remove"); /* -13 */ 2 61 2 62 /* Values for "cdte.state", typewriter state. */ 2 63 2 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 2 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 2 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 2 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 2 68 ) fixed bin internal static options (constant); 2 69 2 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 2 71 /* names of cdte.state values */ 2 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 2 73 2 74 /* Values for "cdte.in_use" and "ate.active" */ 2 75 2 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 2 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 2 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 2 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 2 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 2 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 2 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 2 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 2 84 ) fixed bin internal static options (constant); 2 85 2 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 2 87 /* names of ute.active values */ 2 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 2 89 2 90 2 91 /**** Values for ute.tag */ 2 92 2 93 dcl (TAG_INTERACTIVE init("a"), 2 94 TAG_UFT init("f"), 2 95 TAG_ABSENTEE init("m"), 2 96 TAG_PROXY init("p"), 2 97 TAG_DAEMON init("z") 2 98 ) char(1) int static options(constant); 2 99 2 100 2 101 /**** Following are constants used to indicate to the process termination 2 102* handler the reason for the process termination. They are used by 2 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 2 104* uc_ls_destroy_request_. */ 2 105 2 106 dcl ( 2 107 PT_FPE initial (1), 2 108 PT_LOGOUT initial (4), 2 109 PT_NEW_PROC_AUTH initial (13), 2 110 PT_HANGUP initial (20), 2 111 PT_SHUTDOWN initial (21), 2 112 PT_BUMP initial (22), 2 113 PT_ALARM initial (23), 2 114 PT_DETACH initial (24), 2 115 PT_UNBUMP initial (25), 2 116 PT_OPERATOR_TERMINATE initial (27), 2 117 PT_DESTROY_REQUEST initial (30), 2 118 PT_NEW_PROC_REQUEST initial (31) 2 119 ) fixed bin (17) internal static options (constant); 2 120 2 121 /**** Values for ute.preempted: 2 122* -1 user unbumped after term signal sent 2 123* 0 user unbumped; ignore alarm___ 2 124* 1 value internally used in load_ctl_ 2 125* 2 user bumped; when alarm___ comes in, send term signal 2 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 2 127* signals come in 2 128* 4 user bumped; process sick, so destroy without sending term signal 2 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 2 130* termsgnl). */ 2 131 2 132 dcl ( 2 133 PREEMPT_UNBUMP initial (-1), 2 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 2 135 PREEMPT_LOAD_CTL initial (1), 2 136 PREEMPT_BUMPED initial (2), 2 137 PREEMPT_TERM_SENT initial (3), 2 138 PREEMPT_BUMPED_NO_TERM initial (4), 2 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 2 140 ) fixed bin (17) internal static options(constant); 2 141 2 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 2 143 "unbumped", 2 144 "not bumped, ignore alarm___", 2 145 "load_ctl_", 2 146 "bumped", 2 147 "bumped, trm_ sent", 2 148 "bumped without trm_", 2 149 "bumped, termsgnl received"); 2 150 2 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 649 650 /* BEGIN INCLUDE FILE ... hashst.incl.pl1 */ 3 2 /* format: style4 */ 3 3 3 4 /* General Utility hash table */ 3 5 3 6 dcl 1 htable based (htp) aligned, /* hash table entries of level 2 are statistical info */ 3 7 2 nb fixed bin, /* number of buckets in hash table */ 3 8 2 ni fixed bin, /* number of entries used */ 3 9 2 np fixed bin, /* number of times hash_ called referincing this table */ 3 10 2 tnt fixed bin, /* total # of tries to find, enter, or delete an entry */ 3 11 2 id char (4), /* ht01 version 1 of hash_ */ 3 12 2 gnt fixed bin, /* greatest number of tries for search etc. */ 3 13 2 loht fixed bin (18) unsigned, /* length of hash table in words */ 3 14 2 pad bit (36) aligned, /* padding */ 3 15 2 buckets (1:hash_table_size_ refer (htable.nb)), /* 26111=((1024*255)/10 words per entry)-1 (8-word header) */ 3 16 3 name char (32) unaligned, /* identifier of entry */ 3 17 3 value bit (36) aligned, /* value corresponding to name */ 3 18 3 flags aligned, 3 19 4 ds bit (1) unal, /* deleted switch="1"b if deleted */ 3 20 4 empty bit (1) unal, 3 21 4 pad bit (34) unal, /* empty switch="1"b if empty */ 3 22 2 end_of_table bit (0) aligned; /* to get address */ 3 23 3 24 declare MAX_HT_BUCKETS_IN_SEG fixed bin init (26111) int static options (constant); 3 25 declare hash_table_size_ fixed bin; 3 26 3 27 /* END INCLUDE FILE ... hashst.incl.pl1 */ 650 651 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 4 2 4 3 /* Modified 740723 by PG to add short AIM access names */ 4 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 4 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 4 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 4 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 4 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 4 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 4 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 4 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 4 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 4 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 4 14* strict_trusted_path. */ 4 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 4 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 4 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 4 18 4 19 4 20 /****^ HISTORY COMMENTS: 4 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 4 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 4 23* added vchn_requires_accept parameter. 4 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 4 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 4 26* Correct formatting problems. 4 27* END HISTORY COMMENTS */ 4 28 4 29 4 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 4 31 4 32 4 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 4 34 2 part_1 like installation_parms_part_1 aligned, 4 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 4 36 4 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 4 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 4 39 4 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 4 41 2 installation_id char (32), /* Name printed at dialup and in who */ 4 42 2 company char (64), /* company name */ 4 43 2 department char (64), /* department */ 4 44 2 companyds char (120), /* company, double spaced */ 4 45 2 departmentds char (120), /* dpeartment double spaced */ 4 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 4 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 4 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 4 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 4 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 4 51 2 ndevices fixed bin, /* number of devices to charge */ 4 52 2 devtab (16), /* Maximum 16 */ 4 53 3 device_id char (8), /* Name of device */ 4 54 3 device_price (0: 7) float bin, /* Price by shift */ 4 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 4 56 2 warning_time fixed bin, /* seconds from warning to logout */ 4 57 2 login_time fixed bin, /* seconds in which to complete login */ 4 58 2 acct_update fixed bin, /* seconds between acct update */ 4 59 2 login_tries fixed bin, /* number of login tries allowed */ 4 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 4 61 2 registration_price float bin, /* fee per month per user */ 4 62 2 dolsign char (1), /* "dollar sign" */ 4 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 4 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 4 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 4 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 4 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 4 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 4 69* Initializer will copy the syserr_log */ 4 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 4 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 4 72 2 fatal_error_loop_count fixed bin (17) unaligned, 4 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 4 74 2 term_real_time_seconds fixed bin (17) unaligned, 4 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 4 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 4 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 4 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 4 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 4 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 4 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 4 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 4 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 4 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 4 85 2 level_names (0:7) char (32), /* Names for security levels. */ 4 86 2 category_names (18) char (32), /* Names for security categories. */ 4 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 4 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 4 89 2 ncon fixed bin, /* Number of config elements. */ 4 90 2 cona (51), /* each entry is 5 words long */ 4 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 4 92 3 shift fixed bin (5) unal, /* Shift number */ 4 93 3 x1 fixed bin (23) unal, 4 94 3 kmem fixed bin (17) unal, /* Memory size */ 4 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 4 96 3 x2 fixed bin (17) unal, 4 97 3 maxa fixed bin (11) unal, /* Max abs users */ 4 98 3 maxq fixed bin (5) unal, /* Max abs q */ 4 99 3 maxu_base fixed bin (17) unal, 4 100 3 response_high fixed bin (17) unal, 4 101 3 response_low fixed bin (17) unal, 4 102 3 x3 fixed bin (17) unal, 4 103 4 104 /* Absentee control parameters. New for MR7.0 */ 4 105 4 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 4 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 4 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 4 109 4 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 4 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 4 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 4 113 4 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 4 115 4 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 4 117 4 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 4 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 4 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 4 121 2 version fixed bin (35), /* must be 2 */ 4 122 2 nrates fixed bin, /* number of rate structures */ 4 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 4 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 4 125 2 require_operator_login bit (1) aligned, /* just what it says */ 4 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 4 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 4 128* mcacs segments for operators */ 4 129 2 password_min_length fixed bin, /* minimum length of passwords */ 4 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 4 131 2 password_change_interval fixed bin, /* number of days until must change */ 4 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 4 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 4 134* "accepted" by operator if personid is not 4 135* signed on system console */ 4 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 4 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 4 138* or someone miscounted when using part of pad2 */ 4 139 4 140 4 141 /* Entries in the following array may be accessed via system_info_$resource_price. 4 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 4 143 4 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 4 145 2 name char (32), 4 146 2 price float bin; 4 147 5 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 5 2 5 3 /* Created on 04/24/78 by Michael R. Jordan */ 5 4 /* Modified 04/10/79 by C. D. Tavares */ 5 5 5 6 dcl rifp ptr; 5 7 5 8 dcl 1 rcp_init_flags based (rifp), 5 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 5 10 2 pad1 bit (2) unaligned, /* obsolete */ 5 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 5 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 5 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 5 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 5 15 5 16 dcl (No_authentication initial (0), 5 17 Nominal_authentication initial (1), 5 18 Automatic_authentication initial (2), 5 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 5 20 5 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 5 22 ("none", "nominal", "automatic", "manual"); 5 23 5 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 4 148 4 149 4 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 651 652 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 6 2 /* Requires user_attributes.incl.pl1 */ 6 3 6 4 /* Modified 740723 by PG to add AIM info */ 6 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 6 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 6 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 6 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 6 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 6 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 6 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 6 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 6 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 6 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 6 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 6 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 6 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 6 18 6 19 dcl (PDT_version init (4), /* version of this declaration */ 6 20 PDT_header_lth init (256), /* length in words of PDT head */ 6 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 6 22 6 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 6 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 6 25 ) fixed bin internal static options (constant); 6 26 6 27 dcl 1 pdt based (pdtp) aligned, 6 28 7 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 7 2 7 3 /* the "author" items must always be the first ones in the table. The 7 4* module which moves the converted table to the System Control process 7 5* fills in these data items and assumes them to be at the head of the segment 7 6* regardless of the specific table's actual declaration. The variables 7 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 7 8* respectively. For tables installed in multiple processes, these 7 9* are to be used to lock out multiple installations. */ 7 10 7 11 /* Lock should be used as a modification lock. Since, in general, 7 12* entries may not be moved in system tables, even by installations, 7 13* it is sufficient for only installers and programs that change threads 7 14* to set or respect the lock. Simply updating data in an entry 7 15* requires no such protection. 7 16* 7 17* Last_install_time is used by readers of system tables to detect 7 18* installations or other serious modifications. By checking it before 7 19* and after copying a block of data, they can be protected against 7 20* modifications. 7 21* 7 22* Modules that set the lock should save proc_group_id, and then 7 23* put their group id there for the time they hold the lock. 7 24* if they do not actually install the, they should restore the group id. 7 25**/ 7 26 7 27 2 author aligned, /* validation data about table's author */ 7 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 7 29 3 lock bit (36), /* installation lock */ 7 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 7 31 3 update_authorization bit (1) unal, /* update only authorizations */ 7 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 7 33 3 pad bit (33) unaligned, 7 34 3 last_install_time fixed bin (71), 7 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 7 36 3 w_dir char (64), /* author's working directory */ 7 37 7 38 /* END INCLUDE FILE author.incl.pl1 */ 6 29 6 30 2 max_size fixed bin, /* max number of entries table can grow */ 6 31 2 current_size fixed bin, /* current size of table (in entries) */ 6 32 2 version fixed bin, /* table version */ 6 33 2 freep fixed bin, /* relptr to begin of free chain */ 6 34 2 n_users fixed bin, /* number of entries actually used */ 6 35 2 project_name char (28), /* name of project */ 6 36 2 project_dir char (64), /* treename of project's directory */ 6 37 2 projfile_version fixed bin, 6 38 2 projentry bit (66*36), 6 39 2 pad3 (5) bit (36) aligned, 6 40 2 reqfile_version fixed bin, 6 41 2 reqentry bit (40*36), 6 42 2 pad4 (9) fixed bin, 6 43 2 sat_version fixed bin, 6 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 6 45 2 pad5 (4) bit (36) aligned, 6 46 2 date_reqfile_copied fixed bin (71), 6 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 6 48 2 pad2l bit (27) unaligned, 6 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 6 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 6 51 2 user (1019) aligned, /* the project definition table entries */ 6 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 6 53 6 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 6 55 6 56 6 57 6 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 6 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 6 60 2 lock bit (36), /* update lock */ 6 61 2 person_id char (24) aligned, /* login name of user */ 6 62 2 now_in fixed bin, /* count of users logged in on this entry */ 6 63 2 password char (8) aligned, /* password for anonymous user */ 6 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 6 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 6 66 2 home_dir char (64) aligned, /* user's default working directory */ 6 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 6 68 2 high_ring fixed bin, /* highest ring user may use */ 6 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 6 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 6 71 2 outer_module char (32), /* outer module used if user is interactive */ 6 72 2 lot_size fixed bin, /* size of linkage offset table */ 6 73 2 kst_size fixed bin, /* size of known segment table */ 6 74 2 cls_size fixed bin, /* size of combined linkage */ 6 75 2 uflags, /* various flags */ 6 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 6 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 6 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 6 79 3 flagpad bit (33) unal, 6 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 6 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 6 82 2 dollar_limit float bin, 6 83 2 dollar_charge float bin, /* total dollars spent this month */ 6 84 2 shift_limit (0: 7) float bin, 6 85 2 daton fixed bin (71), /* date user added to system */ 6 86 2 datof fixed bin (71), /* date user deleted */ 6 87 2 last_login_time fixed bin (71), /* time of last login */ 6 88 2 last_login_unit char (4), /* terminal id last used */ 6 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 6 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 6 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 6 92 2 last_update fixed bin (71), /* time of last transaction */ 6 93 2 logins fixed bin, /* number of logins */ 6 94 2 crashes fixed bin, /* sessions abnormally terminated */ 6 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 6 96 3 charge float bin, /* total dollar charge this shift */ 6 97 3 xxx fixed bin, 6 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 6 99 3 core fixed bin (71), /* core demand in page-microseconds */ 6 100 3 connect fixed bin (71), /* total console time in microseconds */ 6 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 6 102 2 absentee (4), /* absentee use, queues 1-4 */ 6 103 3 charge float bin, /* dollar charge this queue */ 6 104 3 jobs fixed bin, /* number of jobs submitted */ 6 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 6 106 3 memory fixed bin (71), /* total memory demand */ 6 107 2 iod (4), /* io daemon use, queues 1-4 */ 6 108 3 charge float bin, /* dollar charge this queue */ 6 109 3 pieces fixed bin, /* pieces of output requested */ 6 110 3 pad fixed bin (35), 6 111 3 pages fixed bin (35), /* number of pages output */ 6 112 3 lines fixed bin (71), /* total record count of output */ 6 113 2 devices (16) float bin, /* device charges */ 6 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 6 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 6 116 2 absolute_spent float bin, /* Spending against this */ 6 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 6 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 6 119 2 pad_was_authorization bit (72) aligned, 6 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 6 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 6 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 6 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 6 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 6 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 6 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 6 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 6 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 6 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 6 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 6 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 6 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 6 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 6 134 2 user_authorization (2) bit (72) aligned, /* range */ 6 135 2 pdtupad (5) fixed bin, 6 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 6 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 6 138 2 chain fixed bin; /* free chain */ 6 139 6 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 652 653 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 8 2 8 3 8 4 8 5 8 6 /****^ HISTORY COMMENTS: 8 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 8 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 8 9* Expand comment line of project.state to include the renamed state (state = 8 10* 3). 8 11* END HISTORY COMMENTS */ 8 12 8 13 8 14 8 15 /* Modified 740723 by PG to add AIM info */ 8 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 8 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 8 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 8 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 8 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 8 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 8 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 8 23 8 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 8 25 8 26 SAT_header_lth init (466), /* length in words of SAT header */ 8 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 8 28 8 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 8 30 ) fixed bin internal static options (constant); 8 31 8 32 dcl 1 sat based (satp) aligned, 8 33 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 34 8 35 2 max_size fixed bin, /* max number of entries table can grow */ 8 36 2 current_size fixed bin, /* current size of table (in entries) */ 8 37 2 version fixed bin, /* version number of table (word 32) */ 8 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 8 39 2 n_projects fixed bin, /* number of entries actually used */ 8 40 2 pad_was_max_users bit (36) aligned, 8 41 2 max_units fixed bin, /* maximum number of login-units per session */ 8 42 2 pad_was_max_prim bit (36) aligned, 8 43 2 uwt_size fixed bin, /* size of User Weight Table */ 8 44 2 uwt (24) aligned, /* User Weight Table */ 8 45 3 initproc char (64) unaligned, /* user's initial procedure */ 8 46 3 units fixed bin, /* weight of initial procedure */ 8 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 8 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 8 49 2 project (3258), /* The SAT entries. 255K segment. */ 8 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 8 51 8 52 8 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 8 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 8 55 2 project_id char (12) unaligned, /* project's name */ 8 56 2 project_dir char (64) unaligned, /* project's directory */ 8 57 2 pdt_ptr pointer, /* pointer to current PDT */ 8 58 2 max_users fixed bin, /* maximum number of users from project */ 8 59 2 n_users fixed bin, /* current number */ 8 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 8 61 2 admin (4) aligned, /* list of project's administrators */ 8 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 8 63 3 pad char (2) unal, 8 64 2 cutoff char (1), /* if project is cut off, why. */ 8 65 2 min_ring fixed bin, /* lowest ring for project */ 8 66 2 max_ring fixed bin, /* highest ring for project */ 8 67 2 alias char (8) unal, /* project alias */ 8 68 2 group char (8) unal, /* default group for this project */ 8 69 2 grace_max fixed bin, /* maximum bump grace */ 8 70 2 audit bit (36), /* audit flags for project */ 8 71 2 project_authorization (2) bit (72), /* authorization of this project */ 8 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 8 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 8 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 8 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 8 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 8 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 8 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 8 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 8 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 8 81 2 satpad1 fixed bin (9) unsigned unaligned, 8 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 8 83 2 chain fixed bin; /* if free entry, chain */ 8 84 8 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 653 654 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 10 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 10 7* Added sl_info structure and associated named constants for use in calling 10 8* sys_log_$general. 10 9* END HISTORY COMMENTS */ 10 10 10 11 10 12 /* format: style4 */ 10 13 10 14 dcl ( 10 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 10 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 10 17 SL_TYPE init (-1), /* type message */ 10 18 SL_LOG_SILENT init (0), /* log message */ 10 19 SL_LOG init (1), /* log & type message */ 10 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 10 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 10 22 ) fixed bin internal static options (constant); 10 23 10 24 dcl 1 sl_info aligned automatic, 10 25 2 version char(8), /* structure version */ 10 26 2 arg_list_ptr ptr, /* arg_list with values */ 10 27 2 loc, 10 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 10 29 /* These flags control where the corresponding data item is found.*/ 10 30 /* -1: data appears in the corresponding structure element below */ 10 31 /* 0: data is not present anywhere */ 10 32 /* +N: data is Nth item in argument list pointed to by */ 10 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 10 34 /* corresponding structure element. */ 10 35 /* if data = +N: */ 10 36 /* argN is data_ptr, argN+1 is data_len */ 10 37 /* if ioa_msg = +N: */ 10 38 /* argN+1, ... argLAST are arguments substituted into the */ 10 39 /* ioa_msg control string. The formatted msg is returned. */ 10 40 2 flags, 10 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 10 42 3 flags_pad bit(35) unal, 10 43 2 mode fixed bin, /* as-mode, command-mode */ 10 44 2 severity fixed bin, /* error severity */ 10 45 2 code fixed bin(35), /* error table code */ 10 46 2 caller char(65) varying, /* caller refname$entryname*/ 10 47 2 data, /* binary data ptr/length */ 10 48 3 data_ptr ptr, 10 49 3 data_lth fixed bin(21), 10 50 2 class char(10) varying, /* binary data class */ 10 51 2 ioa_msg char(500) varying; /* formatted message text */ 10 52 10 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 54 /* */ 10 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 10 56 /* their data types should be as shown in the structure above, except that */ 10 57 /* character strings should be char(*) nonvarying. */ 10 58 /* */ 10 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 60 10 61 /* value for sl_info.version */ 10 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 10 63 10 64 /* values for sl_info.mode */ 10 65 dcl (SL_INFO_as_mode init(1), 10 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 10 67 10 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 10 69 dcl (SL_INFO_arg_given_in_structure init(-1), 10 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 10 71 10 72 10 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 74 /* */ 10 75 /* The following static structures are commonly used in the Login Server */ 10 76 /* user control software. */ 10 77 /* */ 10 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 79 10 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 10 81 10 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 10 83 2 version char(8) init ("sl_info1"), 10 84 2 arg_list_ptr ptr init (null), 10 85 2 loc, 10 86 3 (mode init (-1), 10 87 severity init ( 1), 10 88 code init ( 2), 10 89 caller init (-1), 10 90 data init ( 0), 10 91 class init ( 0), 10 92 ioa_msg init ( 3)) fixed bin, 10 93 2 flags, 10 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 95 3 flags_pad bit(35) unal init ("0"b), 10 96 2 mode fixed bin init ( 1), 10 97 2 severity fixed bin init ( 0), 10 98 2 code fixed bin(35) init ( 0), 10 99 2 caller char(65) varying init (""), 10 100 2 data, 10 101 3 data_ptr ptr init (null), 10 102 3 data_lth fixed bin(21) init ( 0), 10 103 2 class char(10) varying init (""), 10 104 2 ioa_msg char(500) varying init (""); 10 105 10 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 10 107 10 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 10 109 2 version char(8) init ("sl_info1"), 10 110 2 arg_list_ptr ptr init (null), 10 111 2 loc, 10 112 3 (mode init (-1), 10 113 severity init ( 1), 10 114 code init ( 0), 10 115 caller init (-1), 10 116 data init ( 0), 10 117 class init ( 0), 10 118 ioa_msg init ( 2)) fixed bin, 10 119 2 flags, 10 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 121 3 flags_pad bit(35) unal init ("0"b), 10 122 2 mode fixed bin init ( 1), 10 123 2 severity fixed bin init ( 0), 10 124 2 code fixed bin(35) init ( 0), 10 125 2 caller char(65) varying init (""), 10 126 2 data, 10 127 3 data_ptr ptr init (null), 10 128 3 data_lth fixed bin(21) init ( 0), 10 129 2 class char(10) varying init (""), 10 130 2 ioa_msg char(500) varying init (""); 10 131 10 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 10 133 10 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 10 135 2 version char(8) init ("sl_info1"), 10 136 2 arg_list_ptr ptr init (null), 10 137 2 loc, 10 138 3 (mode init (-1), 10 139 severity init ( 1), 10 140 code init ( 0), 10 141 caller init (-1), 10 142 data init ( 0), 10 143 class init ( 0), 10 144 ioa_msg init ( 2)) fixed bin, 10 145 2 flags, 10 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 10 147 3 flags_pad bit(35) unal init ("0"b), 10 148 2 mode fixed bin init ( 1), 10 149 2 severity fixed bin init ( 0), 10 150 2 code fixed bin(35) init ( 0), 10 151 2 caller char(65) varying init (""), 10 152 2 data, 10 153 3 data_ptr ptr init (null), 10 154 3 data_lth fixed bin(21) init ( 0), 10 155 2 class char(10) varying init (""), 10 156 2 ioa_msg char(500) varying init (""); 10 157 10 158 10 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 10 160 10 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 10 162 2 version char(8) init ("sl_info1"), 10 163 2 arg_list_ptr ptr init (null), 10 164 2 loc, 10 165 3 (mode init (-1), 10 166 severity init ( 1), 10 167 code init ( 2), 10 168 caller init (-1), 10 169 data init ( 0), 10 170 class init ( 0), 10 171 ioa_msg init ( 4)) fixed bin, 10 172 2 flags, 10 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 174 3 flags_pad bit(35) unal init ("0"b), 10 175 2 mode fixed bin init ( 1), 10 176 2 severity fixed bin init ( 0), 10 177 2 code fixed bin(35) init ( 0), 10 178 2 caller char(65) varying init (""), 10 179 2 data, 10 180 3 data_ptr ptr init (null), 10 181 3 data_lth fixed bin(21) init ( 0), 10 182 2 class char(10) varying init (""), 10 183 2 ioa_msg char(500) varying init (""); 10 184 10 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 10 186 10 187 dcl 1 sl_info_code_msg aligned int static options(constant), 10 188 2 version char(8) init ("sl_info1"), 10 189 2 arg_list_ptr ptr init (null), 10 190 2 loc, 10 191 3 (mode init (-1), 10 192 severity init (-1), 10 193 code init ( 1), 10 194 caller init (-1), 10 195 data init ( 0), 10 196 class init ( 0), 10 197 ioa_msg init ( 2)) fixed bin, 10 198 2 flags, 10 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 200 3 flags_pad bit(35) unal init ("0"b), 10 201 2 mode fixed bin init ( 1), 10 202 2 severity fixed bin init ( 0), 10 203 2 code fixed bin(35) init ( 0), 10 204 2 caller char(65) varying init (""), 10 205 2 data, 10 206 3 data_ptr ptr init (null), 10 207 3 data_lth fixed bin(21) init ( 0), 10 208 2 class char(10) varying init (""), 10 209 2 ioa_msg char(500) varying init (""); 10 210 10 211 10 212 /* Syntax: call Trace (ioa_ctl, args); */ 10 213 10 214 dcl 1 sl_info_msg aligned int static options(constant), 10 215 2 version char(8) init ("sl_info1"), 10 216 2 arg_list_ptr ptr init (null), 10 217 2 loc, 10 218 3 (mode init (-1), 10 219 severity init (-1), 10 220 code init ( 0), 10 221 caller init (-1), 10 222 data init ( 0), 10 223 class init ( 0), 10 224 ioa_msg init ( 1)) fixed bin, 10 225 2 flags, 10 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 10 227 3 flags_pad bit(35) unal init ("0"b), 10 228 2 mode fixed bin init ( 1), 10 229 2 severity fixed bin init ( 0), 10 230 2 code fixed bin(35) init ( 0), 10 231 2 caller char(65) varying init (""), 10 232 2 data, 10 233 3 data_ptr ptr init (null), 10 234 3 data_lth fixed bin(21) init ( 0), 10 235 2 class char(10) varying init (""), 10 236 2 ioa_msg char(500) varying init (""); 10 237 10 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 654 655 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 11 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 11 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 11 8* attribute switches. 11 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 11 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 11 12* be deleted. 11 13* B) Add constants identifying attributes that can be changed by user at 11 14* login, etc. 11 15* END HISTORY COMMENTS */ 11 16 11 17 11 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 11 19 11 20 /* format: style4 */ 11 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 11 22 (2 administrator bit (1), /* 1 system administrator privileges */ 11 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 11 24 2 nobump bit (1), /* 2 user cannot be bumped */ 11 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 11 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 11 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 11 28* . of same project (distinct from "nobump") */ 11 29 2 nolist bit (1), /* 7 don't list user on "who" */ 11 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 11 31 2 multip bit (1), /* 9 user may have several processes */ 11 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 11 33 2 brief bit (1), /* 11 no login or logout message */ 11 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 11 35 2 vhomedir bit (1), /* 13 user may change homedir */ 11 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 11 37 2 sb_ok bit (1), /* 15 user may be standby */ 11 38 2 pm_ok bit (1), /* 16 user may be primary */ 11 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 11 40 2 daemon bit (1), /* 18 user may login as daemon */ 11 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 11 42 2 no_warning bit (1), /* 20 no warning message */ 11 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 11 44* . in PDT: this user has an individual load control group */ 11 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 11 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 11 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 11 48 2 pad bit (12)) unaligned; 11 49 11 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 11 51 ("none", /* 0 */ 11 52 "administrator", /* 1 */ 11 53 "primary_line", /* 2 */ 11 54 "nobump", /* 3 */ 11 55 "guaranteed_login", /* 4 */ 11 56 "anonymous", /* 5 */ 11 57 "nopreempt", /* 6 */ 11 58 "nolist", /* 7 */ 11 59 "dialok", /* 8 */ 11 60 "multip", /* 9 */ 11 61 "bumping", /* 10 */ 11 62 "brief", /* 11 */ 11 63 "vinitproc", /* 12 */ 11 64 "vhomedir", /* 13 */ 11 65 "nostartup", /* 14 */ 11 66 "no_secondary", /* 15 */ 11 67 "no_prime", /* 16 */ 11 68 "no_eo", /* 17 */ 11 69 "daemon", /* 18 */ 11 70 "", /* 19 vdim OBSOLETE */ 11 71 "no_warning", /* 20 */ 11 72 "igroup", /* 21 */ 11 73 "save_pdir", /* 22 */ 11 74 "disconnect_ok", /* 23 */ 11 75 "save_on_disconnect"); /* 24 */ 11 76 11 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 11 78 ("null", /* 0 */ 11 79 "admin", /* 1 */ 11 80 "", "", /* 2 - 3 */ 11 81 "guar", /* 4 */ 11 82 "anon", /* 5 */ 11 83 "", "", /* 6 - 7 */ 11 84 "dial", /* 8 */ 11 85 "multi_login", /* 9 */ 11 86 "preempting", /* 10 */ 11 87 "", /* 11 */ 11 88 "v_process_overseer", /* 12 */ 11 89 "v_home_dir", /* 13 */ 11 90 "no_start_up", /* 14 */ 11 91 "no_sec", /* 15 */ 11 92 "no_primary", /* 16 */ 11 93 "no_edit_only", /* 17 */ 11 94 "op_login", /* 18 */ 11 95 "", /* 19 */ 11 96 "nowarn", /* 20 */ 11 97 "", "", "", /* 21 - 23 */ 11 98 "save"); /* 24 */ 11 99 11 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 11 101 options(constant) init("000000000010000000010000000000000000"b); 11 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 11 103 11 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 11 105 options(constant) init("000000000010000000010000000000000000"b); 11 106 /* PDT value for (brief, no_warning) is default */ 11 107 11 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 11 109 options(constant) init("000100000110010000010000000000000000"b); 11 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 11 111 12 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 12 2 12 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 4 /* */ 12 5 /* This include file describes the attributes of an absentee job. It is */ 12 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 12 7 /* and PIT.incl.pl1. */ 12 8 /* */ 12 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 10 12 11 /****^ HISTORY COMMENTS: 12 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 12 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 14* Separated abs_attributes from the request structure 12 15* (abs_message_format.incl.pl1) so that the identical structure could be 12 16* used in the ute structure (user_table_entry.incl.pl1). 12 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 12 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 19* Added ABS_ATTRIBUTE_NAMES array. 12 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 12 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 12 22* Added the no_start_up flag. SCP6367 12 23* END HISTORY COMMENTS */ 12 24 12 25 dcl 1 user_abs_attributes aligned based, 12 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 12 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 12 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 12 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 12 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 12 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 12 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 12 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 12 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 12 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 12 36 2 attributes_pad bit (26) unaligned; 12 37 12 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 12 39 "restartable", 12 40 "user_deferred_until_time", 12 41 "proxy", 12 42 "set_bit_cnt", 12 43 "time_in_gmt", 12 44 "user_deferred_indefinitely", 12 45 "secondary_ok", 12 46 "truncate_absout", 12 47 "restarted", 12 48 "no_start_up"); 12 49 12 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 12 51 11 112 11 113 11 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 655 13 1 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* This include file requires that the user include */ 13 6 /* user_attributes.incl.pl1 as well. It also includes */ 13 7 /* abs_attributes.incl.pl1 itself. */ 13 8 /* */ 13 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 13 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 13 11 /* */ 13 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 13 13 14 /****^ HISTORY COMMENTS: 13 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 13 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 13 17* This comment for hcom. 13 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 13 19* anstbl.incl.pl1, and dutbl.incl.pl1. 13 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 13 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 13 22* 84-07-12 BIM added min_process_authorization 13 23* 84-12-31 Keith Loepere added pdir_dir_quota 13 24* 85-01-16 by E. Swenson to add ute.session_uid 13 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 13 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 13 27* Added fields for DSA login server support. 13 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 13 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 13 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 13 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 13 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 13 33* Added disconnection_rel_minutes. 13 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 13 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 36* Changed structure under ute.abs_attributes to use like structure in 13 37* abs_attributes.incl.pl1. This allows the same attributes to be used 13 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 13 39* file. 13 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 13 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 13 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 13 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 45* A) Global reorganization to locate things by type of data. 13 46* B) Eliminate ute.uflags.logged_in. 13 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 13 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 49* A) Reduced overlength person and project fields to proper length. 13 50* B) Adjusted dialed-console section to begin on even word boundary. 13 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 13 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 53* Add ute.line_type. 13 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 13 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 13 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 13 57* for the storage. SCP6367 13 58* END HISTORY COMMENTS */ 13 59 13 60 /* format: style4 */ 13 61 13 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 63 /* */ 13 64 /* Each of the named sections below defines a type of data. Typing comes */ 13 65 /* from data associated with the ute entry itself, with the person, with */ 13 66 /* login argument data, from the main user of the data (eg, dialup_, */ 13 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 13 68 /* and is an even number of words long. The total structure is 300 decimal */ 13 69 /* words long. */ 13 70 /* */ 13 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 72 13 73 13 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 13 75 13 76 dcl utep pointer automatic init (null); 13 77 13 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 13 79 13 80 /* Variables which give state of this entry */ 13 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 13 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 13 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 13 84 2 next_free fixed bin, /* points to previous free entry */ 13 85 13 86 /* Information user gave about person_id associated with this entry. */ 13 87 2 person char (24) unal, /* user's name */ 13 88 2 project char (12) unal, /* project of absentee user */ 13 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 13 90 2 tag_pad bit (27) unal, 13 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 13 92 2 login_flags, /* flags for login data */ 13 93 3 cpw bit (1) unal, /* flag for wish to change password */ 13 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 13 95 3 special_pw unal, /* dial or slave */ 13 96 4 dial_pw bit (1) unal, /* true if dial -user */ 13 97 4 slave_pw bit (1) unal, /* true if slave -user */ 13 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 13 99 3 cda bit (1) unal, /* flag to change default authorization */ 13 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 13 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 13 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 13 103 3 pw_pad bit (25) unal, /* spare parts */ 13 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 13 105 /* Must remain last in pw_flags so it does not */ 13 106 /* appear in PW_FLAG_VALUES array below. */ 13 107 2 generated_pw char (8) unal, /* user must type this as new password */ 13 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 13 109 2 process_authorization bit (72), /* access_authorization of this process */ 13 110 13 111 /* Information user gave about process associated with this entry. */ 13 112 2 outer_module char (32) unal, /* Name of console dim */ 13 113 2 home_dir char (64) unal, /* initial home directory */ 13 114 2 init_proc char (64) unal, /* name of login responder */ 13 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 13 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 13 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 13 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 13 119 2 initial_ring fixed bin, /* ring process will be started in */ 13 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 13 121 2 ln_args fixed bin, /* length of string containing arguments */ 13 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 13 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 13 124 13 125 /* Most of the following information is relevant only to absentee processes */ 13 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 13 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 13 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 13 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 13 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 13 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 13 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 13 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 13 134* (but see uflags.adjust_abs_q_no). */ 13 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 13 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 13 137 2 abs_flags, 13 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 13 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 13 140 3 abs_flags_pad bit (34) unal, 13 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 13 142 2 sender char (32) unal, /* name of RJE station that job is from */ 13 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 13 144 2 proxy_project char (9) unal, 13 145 2 proxy_project_pad char (3) unal, 13 146 2 abs_pad fixed bin, 13 147 13 148 /* Information about process actually created */ 13 149 2 proc_id bit (36), /* process id of absentee process */ 13 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 13 151 2 process_authorization_range (2) bit (72) aligned, 13 152 2 audit bit (36), /* audit flags for user */ 13 153 2 lot_size fixed bin, /* Size of linkage offset table */ 13 154 2 kst_size fixed bin, /* Size of process known segment table */ 13 155 2 cls_size fixed bin, /* Size of process combined linkage */ 13 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 13 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 13 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 13 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 13 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 13 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 13 162 2 pdir_pad fixed bin(17) unal, 13 163 2 process_pad fixed bin, 13 164 13 165 /* Information about primary terminal associated with this entry */ 13 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 13 167 2 terminal_type char (32) unaligned, /* terminal type */ 13 168 2 line_type fixed bin, /* line type */ 13 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 13 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 13 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 13 172 13 173 /* Variables useful for dialed terminals */ 13 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 13 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 13 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 13 177 2 dial_server_flags, 13 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 13 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 13 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 13 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 13 182 13 183 /* Information about usage/accounting. Device usage meters are in a 13 184* separate segment, "devtab" */ 13 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 13 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 13 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 13 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 13 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 13 190 2 last_update_time fixed bin (71), /* time of last account update */ 13 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 13 192 2 ndevices fixed bin, /* Count of attached devices */ 13 193 2 device_head fixed bin, /* Table index of head of device chain */ 13 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 13 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 13 196 2 rs_number_pad bit(30) unal, 13 197 2 usage_pad fixed bin, 13 198 13 199 /* Information for dialup_ (control variables). */ 13 200 2 event fixed bin (71), /* event associated with channel or user manager */ 13 201 2 uprojp ptr, /* ptr to user project sat entry */ 13 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 13 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 13 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 13 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 13 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 13 207 2 count fixed bin, /* counter for logins and dialups */ 13 208 2 n_processes fixed bin, /* number of processes created in this session */ 13 209 2 lock_value fixed bin, /* number of locks set for this entry */ 13 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 13 211 2 login_code char (8) unal, /* login command from LOGIN line */ 13 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 13 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 13 214 2 logout_type char (4) unal, /* type of logout */ 13 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 13 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 13 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 13 218 2 work_class fixed bin, /* work class used by priority scheduler */ 13 219 2 group char (8) unal, /* party group identifier */ 13 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 13 221 13 222 2 uflags, /* Miscellaneous flags */ 13 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 13 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 13 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 13 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 13 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 13 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 13 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 13 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 13 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 13 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 13 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 13 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 13 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 13 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 13 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 13 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 13 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 13 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 13 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 13 242 3 uflags_pad bit (17) unal, 13 243 13 244 /* Information used by load_ctl_ for the process */ 13 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 13 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 13 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 13 248 13 249 13 250 /* Information for login server */ 13 251 2 login_server_info, 13 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 13 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 13 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 13 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 13 256 3 process_id bit (36) aligned, /* process_id of login server */ 13 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 13 258 13 259 /* values for ute.process_type */ 13 260 13 261 dcl (PT_INTERACTIVE initial (1), 13 262 PT_ABSENTEE initial (2), 13 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 13 264 13 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 13 266 "INVALID-TYPE", 13 267 "interactive", 13 268 "absentee", 13 269 "daemon"); 13 270 13 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 13 272 "UNKNOWN-TABLE", 13 273 "answer_table", 13 274 "absentee_user_table", 13 275 "daemon_user_table"); 13 276 13 277 13 278 /* values for ute.pw_flags.mask_ctl */ 13 279 13 280 dcl (DO_MASK init ("00"b), 13 281 DONT_MASK init ("01"b), 13 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 13 283 13 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 13 285 "do_mask", "dont_mask", "derive_mask", ""); 13 286 13 287 13 288 /* names for ute.pw_flags */ 13 289 13 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 13 291 "cpw", 13 292 "generate_pw", 13 293 "dial_pw", 13 294 "slave_pw", 13 295 "cdp", 13 296 "cda", 13 297 "auth_given", 13 298 "noprint", 13 299 "operator"); 13 300 13 301 /* names for ute.uflags */ 13 302 13 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 13 304 "dont_call_init_admin", 13 305 "ip_given", 13 306 "ss_given", 13 307 "lvs_attached", 13 308 "send_initial_string", 13 309 "adjust_abs_q_no", 13 310 "foreground_secondary_ok", 13 311 "foreground_job", 13 312 "sus_sent", 13 313 "suspended", 13 314 "ignore_cpulimit", 13 315 "deferral_logged", 13 316 "save_if_disconnected", 13 317 "disconnected", 13 318 "disconnected_list", 13 319 "proc_create_ok", 13 320 "activity_can_unbump", 13 321 "fpe_causes_logout", 13 322 "user_specified_immediate"); 13 323 13 324 /* names for ute.abs_flags */ 13 325 13 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 13 327 "abs_run", 13 328 "notify"); 13 329 13 330 /* names of ute.dial_server_flags */ 13 331 13 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 13 333 "registered", 13 334 "privileged"); 13 335 13 336 /* values of ute.login_result */ 13 337 13 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 13 339 "logged in", 13 340 "login failed, hangup", 13 341 "login failed, try again"); 13 342 13 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 656 14 1 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 14 2 14 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 4 /* */ 14 5 /* This include file declares the header shared by the answer_table, */ 14 6 /* absentee_user_table and daemon_user_table include files. */ 14 7 /* */ 14 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 9 14 10 /****^ HISTORY COMMENTS: 14 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 14 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 13* Initial coding. 14 14* END HISTORY COMMENTS */ 14 15 14 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 14 17 2 header_version fixed bin, /* version of the header (3) */ 14 18 2 entry_version fixed bin, /* version of user table entries */ 14 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 14 20 2 header_length fixed bin, /* length of the header */ 14 21 2 max_size fixed bin, /* max number of entries in this table */ 14 22 2 current_size fixed bin, /* actual size of table (in entries) */ 14 23 2 number_free fixed bin, /* number of free entries in the table. */ 14 24 2 first_free fixed bin, /* index of first entry in the free list. */ 14 25 2 as_procid bit (36), /* process ID of user table manager process */ 14 26 2 ut_header_pad fixed bin; 14 27 14 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 657 658 659 /* BEGIN MESSAGE DOCUMENTATION 660* 661* Message: 662* up_pdt_: bumping NAME.PROJ, omitted from new pdt 663* 664* S: as (severity1) 665* 666* T: $run 667* 668* M: The supervisor of project PROJ has removed the user named 669* NAME from the project while he was logged in. He is no longer 670* authorized to be logged in on that project and is bumped. 671* 672* A: $ignore 673* 674* 675* Message: 676* up_pdt_: bumping NAME.PROJ, user authorization now outside range. 677* 678* S: as (severity1) 679* 680* T: $run 681* 682* M: A project administrator has installed a new pdt that changes the 683* authorization range for the user identified by NAME on project PROJ. The 684* user NAME.PROJ is currently logged in with an authorization outside the new 685* range. Therefore, the user is being bumped from the system. 686* 687* A: $ignore 688* 689* 690* Message: 691* up_pdt_: synch error NAME.PROJ 692* 693* S: as (severity2) 694* 695* T: $run 696* 697* M: A new project definition table for PROJ is being installed. 698* The answer table entry for NAME.PROJ should contain a pointer 699* to the user's PDT entry but the pointer is incorrect. Accounting 700* figures may be scrambled. The system continues operation. 701* 702* A: $contact_sa 703* 704* 705* Message: 706* up_pdt_: PROJ.pdt NAME on free list state nonzero 707* 708* S: as (severity2) 709* 710* T: $run 711* 712* M: A new project definition table for PROJ is being installed. 713* The thread of free entries appears to include some user whose state 714* is not zero. The program abandons the free chain and continues. 715* 716* A: $inform_sa 717* 718* 719* Message: 720* up_pdt_: PROJ.pdt has N users, leaving insufficient room for a hash table. 721* 722* S: as (severity1) 723* 724* T: $run 725* 726* M: A new project definition table (PDT) for project PROJ is being installed. 727* It has so many users that there is no room in it for a hash table. 728* The PDT will be installed without a hash table. Logins on that project will 729* take longer and place an extra load on the system. 730* 731* A: $inform 732* 733* Message: 734* up_pdt_: ERROR_MESSAGE. PROJ.pdt will be installed with no hash table 735* 736* S: as (severity2) 737* 738* T: $run 739* 740* M: A new PDT is being installed for project PROJ. An error described 741* by ERROR_MESSAGE occurred while its hash table was being built. The PDT 742* will be installed without a hash table. Logins on that project will take 743* longer and place an extra load on the system. 744* 745* A: $inform 746* 747* 748* END MESSAGE DOCUMENTATION */ 749 750 end up_pdt_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/07/88 1232.8 up_pdt_.pl1 >spec>install>1140>up_pdt_.pl1 648 1 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 649 2 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 650 3 04/21/82 1211.8 hashst.incl.pl1 >ldd>include>hashst.incl.pl1 651 4 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 4-148 5 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 652 6 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 6-29 7 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 653 8 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 8-34 9 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 654 10 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 655 11 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 11-112 12 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 656 13 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 657 14 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.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. LEGAL 000000 constant char(95) initial packed unaligned dcl 104 ref 172 265 285 290 295 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 2-76 ref 454 PDT_entry_lth constant fixed bin(17,0) initial dcl 6-19 ref 380 538 PDT_header_lth constant fixed bin(17,0) initial dcl 6-19 ref 380 538 PDT_version constant fixed bin(17,0) initial dcl 6-19 ref 151 383 389 P_ansp parameter pointer dcl 62 ref 13 139 SL_LOG 000074 constant fixed bin(17,0) initial dcl 10-14 set ref 469* 481* 505* SL_LOG_BEEP 000072 constant fixed bin(17,0) initial dcl 10-14 set ref 434* 462* 561* UTE_SIZE constant fixed bin(17,0) initial dcl 1-120 ref 453 453 abs_foreground_cpu_limit 376 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 599* 599 absentee 244 based structure array level 2 dcl 6-58 absolute_cutoff 350 based fixed bin(71,0) level 2 dcl 6-58 set ref 588* 588 absolute_increm 352 based fixed bin(17,0) level 2 dcl 6-58 set ref 589* 589 absolute_limit 346 based float bin(27) level 2 dcl 6-58 set ref 587* 587 absolute_spent 347 based float bin(27) level 2 dcl 6-58 set ref 617* access_authorization_ceiling 546 based bit(72) level 3 dcl 4-33 ref 142 access_ceiling 000304 automatic bit(72) dcl 115 set ref 142* 341* acla 000100 automatic structure array level 1 dcl 107 set ref 546 546 active based fixed bin(17,0) level 2 dcl 13-78 ref 454 addr builtin function dcl 95 ref 166 185 258 271 361 401 405 427 432 441 453 458 524 531 546 546 adjust_cutoff_ 000010 constant entry external dcl 67 ref 415 600 admin 31 based structure array level 2 dcl 8-53 aim_check_$greater_or_equal 000012 constant entry external dcl 68 ref 335 341 aim_check_$in_range 000014 constant entry external dcl 69 ref 465 465 anonymous 16 based fixed bin(17,0) level 2 in structure "ute" dcl 13-78 in procedure "up_pdt_" ref 456 anonymous 30(04) based bit(1) level 3 in structure "project" packed packed unaligned dcl 8-53 in procedure "up_pdt_" ref 278 anonymous_user 000320 automatic bit(1) dcl 122 set ref 255* 283* 477 ansp 000370 automatic pointer initial dcl 1-53 set ref 139* 140 177 195 452 453 1-53* anstbl based structure level 1 dcl 1-55 answer parameter char packed unaligned dcl 63 set ref 13 147* 152* 157* 162* 168* 173* 179* 190* 223* 261* 266* 272* 279* 286* 291* 296* 311* 317* 325* 331* 338* 342* 377* 543* 552* 556* as_error_table_$user_auth_excludes 000062 external static fixed bin(35,0) dcl 99 set ref 471* as_error_table_$user_deleted 000060 external static fixed bin(35,0) dcl 99 set ref 482* as_procid 10 based bit(36) level 3 dcl 1-55 ref 140 asu_$bump_code 000044 constant entry external dcl 81 ref 471 482 at 30 based structure level 2 in structure "project" dcl 8-53 in procedure "up_pdt_" at 13 based structure level 2 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 570* 570 author based structure level 2 dcl 6-27 bad_gt 000365 automatic fixed bin(17,0) initial dcl 128 set ref 128* 348* 348 551 552 552* bad_lr 000362 automatic fixed bin(17,0) initial dcl 128 set ref 128* 301* 301 551 552 552* bad_mr 000363 automatic fixed bin(17,0) initial dcl 128 set ref 128* 306* 306 551 552 552* bad_pq 000364 automatic fixed bin(17,0) initial dcl 128 set ref 128* 346* 346 551 552 552* bump_grace 54 based fixed bin(17,0) level 2 dcl 6-58 set ref 348 576* 576 chain 377 based fixed bin(17,0) level 2 dcl 6-58 ref 439 charge 124 based float bin(27) array level 3 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 624* charge 244 based float bin(27) array level 3 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 631* charge 274 based float bin(27) array level 3 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 637* clock builtin function dcl 95 ref 137 395 cls_size 71 based fixed bin(17,0) level 2 dcl 6-58 set ref 583* 583 code parameter fixed bin(35,0) dcl 61 set ref 13 148* 153* 158* 163* 169* 174* 177* 180* 191* 224* 262* 267* 273* 280* 287* 292* 297* 312* 319* 326* 332* 339* 343* 354* 356* 366* 375* 417* 447* 471* 482* 490* 502* 509* 510 511* 512 520* 521 526* 527 542* 543 546* 547* 548* 549* 561* connect 132 based fixed bin(71,0) array level 3 dcl 6-58 set ref 627* core 130 based fixed bin(71,0) array level 3 dcl 6-58 set ref 626* cpu 246 based fixed bin(71,0) array level 3 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 633* cpu 126 based fixed bin(71,0) array level 3 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 625* create_homedir_ 000042 constant entry external dcl 79 ref 366 417 447 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 8-32 in procedure "up_pdt_" ref 184 current_size 36 based fixed bin(17,0) level 2 in structure "pdt" dcl 6-27 in procedure "up_pdt_" set ref 156 161 166 256 360 380 400 404 426 430 430* 456 499 504 505* 523 538 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 1-55 in procedure "up_pdt_" ref 452 datof 110 based fixed bin(71,0) level 2 dcl 6-58 set ref 410 412* 423* 615* daton 106 based fixed bin(71,0) level 2 dcl 6-58 set ref 411* 417 614* debg 000360 automatic char(8) packed unaligned dcl 127 set ref 471* 482* default_ring 56 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 323 323 330 579* 579 devices 324 based float bin(27) array level 2 dcl 6-58 set ref 643* dollar_charge 75 based float bin(27) level 2 dcl 6-58 set ref 616* dollar_limit 74 based float bin(27) level 2 dcl 6-58 set ref 586* 586 entry 200 based structure array level 2 dcl 1-55 set ref 453 fixed builtin function dcl 95 ref 167 515 517 535 float builtin function dcl 95 ref 515 517 freep 40 based fixed bin(17,0) level 2 dcl 6-27 set ref 429 436* 439* get_group_id_ 000016 constant entry external dcl 70 ref 251 get_process_id_ 000020 constant entry external dcl 71 ref 138 grace_max 100 based fixed bin(17,0) level 2 dcl 8-53 set ref 348 552* group 355 based char(8) level 2 dcl 6-58 set ref 596* 596 hash_$in 000052 constant entry external dcl 84 ref 526 hash_$make 000054 constant entry external dcl 85 ref 520 hcs_$add_acl_entries 000026 constant entry external dcl 73 ref 546 hcs_$delentry_seg 000032 constant entry external dcl 75 ref 490 536 562 hcs_$initiate 000030 constant entry external dcl 74 ref 177 354 hcs_$make_seg 000040 constant entry external dcl 78 ref 356 375 509 hcs_$set_bc 000036 constant entry external dcl 77 ref 547 hcs_$set_safety_sw 000034 constant entry external dcl 76 ref 548 hcs_$truncate_seg 000050 constant entry external dcl 83 ref 511 542 header based structure level 2 dcl 1-55 high_ring 55 based fixed bin(17,0) level 2 dcl 6-58 set ref 305 309 577* 577 home_dir 34 based char(64) level 2 dcl 6-58 set ref 290 366 417 447 575* 575 ht_relp 377 based fixed bin(18,0) level 2 dcl 6-27 set ref 497* 535* htable based structure level 1 dcl 3-6 htp 000336 automatic pointer dcl 124 set ref 503* 509* 511* 520* 526* 532 534 536* 562 562* i 000312 automatic fixed bin(18,0) dcl 119 set ref 184* 185* 199* 200 200* 201 201* 202 204* 205 206 206 209 209* 213* 214 215 215 218 218* 230* 231 233* 238* 239 241* 256* 258 270 317* 360* 361* 400* 401* 426* 427* 452* 453* 515* 517* 520 523* 524 526* 531 552* 556 ii 000313 automatic fixed bin(18,0) dcl 119 set ref 242* 243 244* index builtin function dcl 95 ref 199 203 initial_procedure 14 based char(64) level 2 dcl 6-58 set ref 285 572* 572 instaldir parameter char packed unaligned dcl 63 set ref 13 145* 195* 196* 196 354* 356* 375* 509* 546* 547* 548* installation_parms based structure level 1 dcl 4-33 installation_parms_part_1 based structure level 1 dcl 4-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 4-144 instalname parameter char packed unaligned dcl 63 set ref 13 145* 197* 198* 198 354* 356* 434* 505* 546* 547* 548* 561* instalp parameter pointer dcl 62 set ref 13 144* 489* interactive 124 based structure array level 2 dcl 6-58 io_ops 134 based fixed bin(71,0) array level 3 dcl 6-58 set ref 628* ioa_$rsnnl 000046 constant entry external dcl 82 ref 317 552 iod 274 based structure array level 2 dcl 6-58 ip parameter pointer dcl 62 ref 13 142 482 ip_len 73 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 573* 573 j 000314 automatic fixed bin(18,0) dcl 119 set ref 203* 206 206 209 209 209 215 215 218 218 218 270* 271* 404* 405* 429* 430 430* 432 441 456* 458* jobs 245 based fixed bin(17,0) array level 3 dcl 6-58 set ref 632* k 000315 automatic fixed bin(18,0) dcl 119 set ref 601* 602 602* 623* 624 625 626 627 628* 630* 631 632 633 634* 636* 637 638 639 640* 642* 643* kst_size 70 based fixed bin(17,0) level 2 dcl 6-58 set ref 582* 582 last_install_time 12 based fixed bin(71,0) level 3 dcl 6-27 set ref 395* last_login_line_type 115(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 621* last_login_time 112 based fixed bin(71,0) level 2 dcl 6-58 set ref 618* last_login_type 115 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 620* last_login_unit 114 based char(4) level 2 dcl 6-58 set ref 619* lcode 000316 automatic fixed bin(35,0) dcl 120 set ref 243* 244 lines 300 based fixed bin(71,0) array level 3 dcl 6-58 set ref 640* lock 10 based bit(36) level 3 dcl 6-27 set ref 394* loht 6 based fixed bin(18,0) level 2 unsigned dcl 3-6 ref 532 lot_size 67 based fixed bin(17,0) level 2 dcl 6-58 set ref 581* 581 low_ring 56(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 300 304 310 578* 578 lr 000366 automatic fixed bin(17,0) dcl 129 set ref 302* 304* 316 317 323 match_star_name_ 000056 constant entry external dcl 86 ref 243 max builtin function dcl 95 ref 517 max_background 361(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 6-58 set ref 598* 598 max_foreground 361(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 6-58 set ref 597* 597 max_ring 73 based fixed bin(17,0) level 2 dcl 8-53 set ref 305 307 317 552* max_size 35 based fixed bin(17,0) level 2 dcl 6-27 ref 156 memory 250 based fixed bin(71,0) array level 3 dcl 6-58 set ref 634* min builtin function dcl 95 ref 517 min_ring 72 based fixed bin(17,0) level 2 dcl 8-53 set ref 300 302 317 552* mode 10 000100 automatic bit(36) array level 2 dcl 107 set ref 234* 244* 247* 252* movelen 000317 automatic fixed bin(24,0) dcl 121 set ref 380* 381 533* 534 540* 541 movetable based structure level 1 dcl 90 set ref 381* 381 534* 534 541* 541 mr 000367 automatic fixed bin(17,0) dcl 129 set ref 307* 309* 316 317 330 n_acl 000310 automatic fixed bin(17,0) dcl 117 set ref 227* 232* 232 233 234 235 237 240* 240 241 243 247 248 250* 250 251 252 253 546* n_acl_pjadmin 000311 automatic fixed bin(17,0) dcl 118 set ref 237* 242 n_background 361(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 6-58 set ref 613* n_foreground 361 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 6-58 set ref 612* n_users 41 based fixed bin(17,0) level 2 dcl 6-27 set ref 161 359* 363* 363 392* 409* 409 443* 443 515 515 517 now_in 10 based fixed bin(17,0) level 2 dcl 6-58 set ref 611* null builtin function dcl 95 ref 144 178 355 357 376 503 562 1-53 13-76 offset 000321 automatic bit(18) dcl 123 set ref 166* 167 oldp 000340 automatic pointer dcl 124 set ref 354* 355 356* 357 380 381 489 541 542* outer_module 57 based char(32) level 2 dcl 6-58 set ref 295 580* 580 p 000322 automatic pointer dcl 124 set ref 258* 259 260 265 271 272 277 285 286 290 291 295 296 300 304 305 309 310 311 317 323 323 330 335 335 341 346 348 361* 362 366 366 366 401* 402 403 406 408 410 411 412 415* 417 417 417 417 423 441* 442 444 447 447 447 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600* 602 611 612 613 614 614 615 616 617 618 619 620 621 622 624 625 626 627 628 631 632 633 634 637 638 639 640 643 pages 277 based fixed bin(35,0) array level 3 dcl 6-58 set ref 639* part_1 based structure level 2 dcl 4-33 password 11 based char(8) level 2 dcl 6-58 set ref 569* 569 pdir_quota 376(18) based fixed bin(17,0) level 2 in structure "user" packed packed unaligned dcl 6-58 in procedure "up_pdt_" set ref 346 584* 584 pdir_quota 114 based fixed bin(17,0) level 2 in structure "project" packed packed unaligned dcl 8-53 in procedure "up_pdt_" set ref 346 552* pdt based structure level 1 dcl 6-27 pdtep 000334 automatic pointer dcl 124 in procedure "up_pdt_" set ref 524* 525 526 531* 534 535 pdtep 354 based pointer level 2 in structure "ute" dcl 13-78 in procedure "up_pdt_" ref 461 pdtp 000332 automatic pointer dcl 124 set ref 492* 497 499 504 505 515 515 517 523 524 531 535 person 4 based char(24) level 2 packed packed unaligned dcl 13-78 set ref 459 462* 469* 481* person_id 2 based char(24) level 2 dcl 6-58 set ref 265 271 271 272 277 286 291 296 311 317* 366 406 406 417 434* 444* 444 447 459 526* pieces 275 based fixed bin(17,0) array level 3 dcl 6-58 set ref 638* preempted 420 based fixed bin(17,0) level 2 dcl 13-78 ref 480 proc_group_id based char(32) level 3 dcl 6-27 set ref 199 202 393* 393 process_authorization_range 300 based bit(72) array level 2 dcl 13-78 set ref 465* 465* procid 000346 automatic bit(36) dcl 125 set ref 138* 140 project based structure level 1 dcl 8-53 in procedure "up_pdt_" project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 13-78 in procedure "up_pdt_" set ref 454 462* 469* 481* project 722 based structure array level 2 in structure "sat" dcl 8-32 in procedure "up_pdt_" set ref 185 project_dir 4 based char(64) level 2 in structure "project" packed packed unaligned dcl 8-53 in procedure "up_pdt_" ref 193 366 417 447 project_dir 51 based char(64) level 2 in structure "pdt" dcl 6-27 in procedure "up_pdt_" set ref 193* project_id 1 based char(12) level 2 packed packed unaligned dcl 8-53 ref 186 197 366 417 447 project_name 42 based char(28) level 2 dcl 6-27 ref 172 186 190 454 q 000324 automatic pointer dcl 124 set ref 405* 406 406 414 427* 428 444 458* 459 459 461 465 465 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 602 rcp_init_flags based structure level 1 packed packed unaligned dcl 5-8 rel builtin function dcl 95 ref 166 461 461 535 rs_number 115(18) based fixed bin(9,0) level 2 in structure "project" packed packed unsigned unaligned dcl 8-53 in procedure "up_pdt_" ref 358 398 rs_number 356 based fixed bin(9,0) level 2 in structure "pdt" packed packed unsigned unaligned dcl 6-27 in procedure "up_pdt_" set ref 358* 398* rtrim builtin function dcl 95 ref 196 198 233 241 sat based structure level 1 dcl 8-32 satep 000330 automatic pointer dcl 124 set ref 185* 186 186 193 197 214 215 215 218 218 231 233 278 300 302 305 307 317 317 346 348 358 366 366 398 417 417 447 447 552 552 552 552 satp 000326 automatic pointer dcl 124 set ref 177* 178 184 185 205 206 206 209 209 239 241 segp parameter pointer dcl 62 set ref 13 151 156 156 161 161 166 166 172 186 190 193 199 202 256 258 271 358 359 360 361 363 363 393 396 397 404 405 426 427 490* 491* 492 538 541 shift_limit 76 based float bin(27) array level 2 dcl 6-58 set ref 602* 602 ss_len 73(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 574* 574 state based fixed bin(17,0) level 2 in structure "user" dcl 6-58 in procedure "up_pdt_" set ref 259 260 362 402 403* 406 408* 414* 428 433 442* 459 525 state based fixed bin(17,0) level 2 in structure "project" dcl 8-53 in procedure "up_pdt_" ref 186 string builtin function dcl 95 set ref 570* 570 585* 585 substr builtin function dcl 95 set ref 202 206 206 206 209 209 209 215 215 215 218 218 218 556* sys_log_ 000022 constant entry external dcl 72 ref 434 462 469 481 505 sys_log_$error_log 000024 constant entry external dcl 72 ref 561 sysdir 22 based char(64) level 2 packed packed unaligned dcl 1-55 set ref 177* 195 system_admin 676 based char(32) array level 2 packed packed unaligned dcl 8-32 ref 205 206 206 209 209 239 241 table 14 based char(4) level 3 dcl 6-27 set ref 396* 396 tempid 000347 automatic char(30) dcl 126 set ref 202* 203 205 206 209 214 215 218 223 time_last_bump 116 based fixed bin(71,0) level 2 dcl 6-58 set ref 622* time_last_reset 344 based fixed bin(71,0) level 2 dcl 6-58 set ref 614* time_now 000306 automatic fixed bin(71,0) dcl 116 set ref 137* 411 415* 417 423 600* 614 tp 000344 automatic pointer dcl 124 set ref 375* 376 381 383 389 392 393 394 395 396 397 398 400 401 409 409 429 430 430 432 436 439 441 443 443 454 456 458 491 uflags 72 based structure level 2 dcl 6-58 set ref 585* 585 user 400 based structure array level 2 in structure "pdt" dcl 6-27 in procedure "up_pdt_" set ref 166 258 271 361 401 405 427 432 441 458 524 531 user based structure level 1 dcl 6-58 in procedure "up_pdt_" user_abs_attributes based structure level 1 dcl 12-25 user_attributes based structure level 1 dcl 11-21 user_authorization 365 based bit(72) array level 2 dcl 6-58 set ref 335* 335* 341* 366* 417* 447* 465* 465* 571* 571 user_warn_days 363 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 590* 590 user_warn_dollars 364 based float bin(27) level 2 dcl 6-58 set ref 592* 592 user_warn_pct 363(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 591* 591 userid 000100 automatic char(32) array level 2 in structure "acla" dcl 107 in procedure "up_pdt_" set ref 233* 241* 243 243 251* userid 31 based char(30) array level 3 in structure "project" packed packed unaligned dcl 8-53 in procedure "up_pdt_" ref 214 215 215 218 218 231 233 ut_header based structure level 1 dcl 14-16 ute based structure level 1 dcl 13-78 utep 000372 automatic pointer initial dcl 13-76 set ref 453* 454 454 456 459 461 462 462 465 465 469 469 471* 480 481 481 482* 13-76* verify builtin function dcl 95 ref 172 265 285 290 295 version 37 based fixed bin(17,0) level 2 dcl 6-27 set ref 151 383 389* w_dir 15 based char(64) level 3 dcl 6-27 set ref 397* 397 warn_days 357 based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 593* 593 warn_dollars 360 based float bin(27) level 2 dcl 6-58 set ref 595* 595 warn_pct 357(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-58 set ref 594* 594 warning_time 502 based fixed bin(17,0) level 3 dcl 4-33 ref 482 wordcount parameter fixed bin(17,0) dcl 62 set ref 13 146 167 498* 532* 533 538* 538 540 542* 547 xmode 11 000100 automatic bit(36) array level 2 dcl 107 set ref 235* 248* 253* xp 000342 automatic pointer dcl 124 set ref 432* 433 434 439 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 12-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 13-326 ACTIVE_VALUES internal static char(18) initial array dcl 2-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 11-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 AT_NORMAL internal static char(8) initial packed unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 1-116 Automatic_authentication internal static fixed bin(17,0) initial dcl 5-16 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 13-280 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 13-332 DONT_MASK internal static bit(2) initial packed unaligned dcl 13-280 DO_MASK internal static bit(2) initial packed unaligned dcl 13-280 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 13-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 13-284 MAX_HT_BUCKETS_IN_SEG internal static fixed bin(17,0) initial dcl 3-24 Manual_authentication internal static fixed bin(17,0) initial dcl 5-16 NOW_DIALED internal static fixed bin(17,0) initial dcl 2-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 2-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 2-76 NOW_FREE internal static fixed bin(17,0) initial dcl 2-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 2-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 2-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 2-76 No_authentication internal static fixed bin(17,0) initial dcl 5-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 5-16 PDT_person_id_length internal static fixed bin(17,0) initial dcl 6-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 6-19 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 2-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 2-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 13-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 13-261 PT_ALARM internal static fixed bin(17,0) initial dcl 2-106 PT_BUMP internal static fixed bin(17,0) initial dcl 2-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 13-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 2-106 PT_DETACH internal static fixed bin(17,0) initial dcl 2-106 PT_FPE internal static fixed bin(17,0) initial dcl 2-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 2-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 13-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 2-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 2-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 2-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 2-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 2-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 2-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 13-290 SAT_entry_lth internal static fixed bin(17,0) initial dcl 8-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 8-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 8-24 SAT_version internal static fixed bin(17,0) initial dcl 8-24 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 10-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 10-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 10-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 10-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 10-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 10-14 SL_LOG_SILENT internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 10-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 10-14 STATE_VALUES internal static char(15) initial array dcl 2-70 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 13-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 2-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 2-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 2-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 2-93 TAG_UFT internal static char(1) initial packed unaligned dcl 2-93 TRA_VEC_VALUES internal static char(32) initial array dcl 2-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 2-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 2-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 2-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 2-64 UFLAG_NAMES internal static varying char(24) initial array dcl 13-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 11-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 11-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 11-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 11-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 13-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 2-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 2-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 2-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 2-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 2-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 2-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 2-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 2-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 2-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 2-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 2-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 2-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 2-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 2-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 2-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 2-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 2-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 2-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 2-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 2-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 2-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 2-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 2-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 2-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 2-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 2-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 2-25 authentication_level_names internal static char(12) initial array packed unaligned dcl 5-21 hash_table_size_ automatic fixed bin(17,0) dcl 3-25 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 4-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 4-38 rifp automatic pointer dcl 5-6 sl_info automatic structure level 1 dcl 10-24 sl_info_code_msg internal static structure level 1 dcl 10-187 sl_info_msg internal static structure level 1 dcl 10-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 10-161 sl_info_sev_code_msg internal static structure level 1 dcl 10-82 sl_info_sev_coded_msg internal static structure level 1 dcl 10-134 sl_info_sev_msg internal static structure level 1 dcl 10-108 NAMES DECLARED BY EXPLICIT CONTEXT. administrator_validated 001465 constant label dcl 227 ref 205 206 209 214 215 218 badx 003301 constant label dcl 429 ref 437 bast 001756 constant label dcl 261 ref 259 362 finish_up 004010 constant label dcl 492 set ref 369 finish_up_2 004316 constant label dcl 538 ref 499 563 merge_admin_info 004711 constant entry internal dcl 567 ref 416 445 next_entry 003767 constant label dcl 486 ref 474 477 no_ht 004632 constant label dcl 561 ref 507 510 512 521 527 project_validated 001137 constant label dcl 193 set ref 186 up_pdt_ 000563 constant entry external dcl 13 x1 003254 constant label dcl 424 ref 402 420 x2 001551 constant label dcl 237 ref 231 x2a 001713 constant label dcl 250 ref 239 zero_usage_items 005047 constant entry internal dcl 609 ref 364 446 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5660 5744 5400 5670 Length 6442 5400 64 461 260 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME up_pdt_ 511 external procedure is an external procedure. merge_admin_info internal procedure shares stack frame of external procedure up_pdt_. zero_usage_items internal procedure shares stack frame of external procedure up_pdt_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME up_pdt_ 000100 acla up_pdt_ 000304 access_ceiling up_pdt_ 000306 time_now up_pdt_ 000310 n_acl up_pdt_ 000311 n_acl_pjadmin up_pdt_ 000312 i up_pdt_ 000313 ii up_pdt_ 000314 j up_pdt_ 000315 k up_pdt_ 000316 lcode up_pdt_ 000317 movelen up_pdt_ 000320 anonymous_user up_pdt_ 000321 offset up_pdt_ 000322 p up_pdt_ 000324 q up_pdt_ 000326 satp up_pdt_ 000330 satep up_pdt_ 000332 pdtp up_pdt_ 000334 pdtep up_pdt_ 000336 htp up_pdt_ 000340 oldp up_pdt_ 000342 xp up_pdt_ 000344 tp up_pdt_ 000346 procid up_pdt_ 000347 tempid up_pdt_ 000360 debg up_pdt_ 000362 bad_lr up_pdt_ 000363 bad_mr up_pdt_ 000364 bad_pq up_pdt_ 000365 bad_gt up_pdt_ 000366 lr up_pdt_ 000367 mr up_pdt_ 000370 ansp up_pdt_ 000372 utep up_pdt_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as alloc_char_temp call_ext_out_desc call_ext_out return_mac fl2_to_fx1 shorten_stack ext_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_cutoff_ aim_check_$greater_or_equal aim_check_$in_range asu_$bump_code create_homedir_ get_group_id_ get_process_id_ hash_$in hash_$make hcs_$add_acl_entries hcs_$delentry_seg hcs_$initiate hcs_$make_seg hcs_$set_bc hcs_$set_safety_sw hcs_$truncate_seg ioa_$rsnnl match_star_name_ sys_log_ sys_log_$error_log THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_error_table_$user_auth_excludes as_error_table_$user_deleted LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000554 128 000610 1 53 000614 13 76 000616 137 000617 138 000621 139 000630 140 000634 142 000637 144 000644 145 000646 146 000660 147 000663 148 000670 149 000672 151 000673 152 000700 153 000705 154 000707 156 000710 157 000713 158 000720 159 000722 161 000723 162 000725 163 000732 164 000734 166 000735 167 000741 168 000746 169 000753 170 000755 172 000756 173 000770 174 000775 175 000777 177 001000 178 001046 179 001052 180 001060 181 001062 184 001063 185 001073 186 001077 189 001111 190 001113 191 001133 192 001136 193 001137 195 001142 196 001150 197 001177 198 001206 199 001235 200 001247 201 001253 202 001257 203 001263 204 001274 205 001301 206 001310 209 001330 212 001355 213 001357 214 001365 215 001374 218 001414 221 001441 223 001443 224 001461 225 001464 227 001465 230 001466 231 001473 232 001502 233 001503 234 001543 235 001546 236 001547 237 001551 238 001553 239 001561 240 001570 241 001571 242 001631 243 001641 244 001675 246 001702 247 001704 248 001710 249 001711 250 001713 251 001714 252 001726 253 001731 255 001732 256 001733 258 001745 259 001752 260 001754 261 001756 262 001764 263 001766 265 001767 266 002001 267 002006 268 002010 270 002011 271 002021 272 002034 273 002052 274 002056 276 002057 277 002061 278 002066 279 002072 280 002100 281 002102 283 002103 285 002105 286 002117 287 002135 288 002140 290 002141 291 002153 292 002171 293 002174 295 002175 296 002207 297 002225 298 002230 300 002231 301 002240 302 002241 303 002243 304 002244 305 002245 306 002250 307 002251 308 002253 309 002254 310 002255 311 002257 312 002275 313 002300 316 002301 317 002304 319 002354 320 002357 323 002360 325 002366 326 002374 327 002376 330 002377 331 002401 332 002407 335 002411 338 002427 339 002435 341 002437 342 002456 343 002464 344 002466 346 002467 348 002502 350 002506 354 002510 355 002556 356 002562 357 002623 358 002627 359 002636 360 002637 361 002647 362 002654 363 002657 364 002661 366 002662 368 002743 369 002745 375 002746 376 003006 377 003012 378 003020 380 003021 381 003030 383 003035 389 003040 392 003042 393 003043 394 003051 395 003052 396 003054 397 003056 398 003061 400 003065 401 003075 402 003100 403 003102 404 003104 405 003117 406 003124 408 003134 409 003136 410 003140 411 003142 412 003144 414 003146 415 003150 416 003161 417 003162 420 003246 422 003247 423 003251 424 003254 426 003256 427 003271 428 003276 429 003301 430 003304 432 003312 433 003315 434 003317 436 003351 437 003353 439 003354 441 003356 442 003362 443 003364 444 003365 445 003371 446 003372 447 003373 450 003454 452 003456 453 003467 454 003474 456 003504 458 003515 459 003520 461 003530 462 003535 465 003565 469 003630 471 003661 474 003702 476 003703 477 003706 480 003710 481 003713 482 003743 486 003767 489 003771 490 003774 491 004005 492 004010 497 004014 498 004015 499 004016 502 004021 503 004022 504 004024 505 004027 507 004057 509 004060 510 004124 511 004127 512 004143 515 004146 517 004157 520 004171 521 004205 523 004210 524 004221 525 004224 526 004227 527 004257 529 004262 531 004264 532 004267 533 004273 534 004274 535 004300 536 004304 538 004316 540 004330 541 004331 542 004336 543 004351 546 004361 547 004415 548 004447 549 004500 551 004502 552 004512 556 004623 559 004631 561 004632 562 004672 563 004710 567 004711 569 004712 570 004720 571 004722 572 004725 573 004730 574 004732 575 004734 576 004737 577 004741 578 004743 579 004745 580 004747 581 004752 582 004754 583 004756 584 004760 585 004762 586 004764 587 004766 588 004770 589 004772 590 004774 591 004776 592 005000 593 005002 594 005004 595 005006 596 005010 597 005014 598 005016 599 005020 600 005022 601 005033 602 005037 603 005044 605 005046 609 005047 611 005050 612 005052 613 005054 614 005056 615 005061 616 005063 617 005065 618 005066 619 005070 620 005072 621 005074 622 005076 623 005100 624 005105 625 005112 626 005114 627 005115 628 005116 629 005117 630 005121 631 005127 632 005134 633 005135 634 005137 635 005140 636 005142 637 005147 638 005154 639 005155 640 005156 641 005160 642 005162 643 005167 644 005173 646 005175 ----------------------------------------------------------- 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