COMPILATION LISTING OF SEGMENT up_mgt_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1930.34_Mon_mdt 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_mgt_: procedure (mgtp, wordcount, instaldir, instalname, instalp, P_ansp, 14 ip, answer, code); 15 16 /* 17* up_mgt_ - update master_group_table 18* Initially coded by T. Casey, June 1975 19* Modified by T. Casey, October 1976 for version 3 MGT. 20* Modified by T. Casey, Sept 1977 to allow deletion of group if no processes or projects in it. 21* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct). 22* Modified by J. Bongiovanni, July 1981, for governed work classes. 23* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 24* Modified January 1982, BIM, for author changes (lock and install time). 25* Modified February 1982, E. N. Kittlitz. xxx.install.acs change. 26* Modified: 27* 10/05/84 by R. Michael Tague: up_sysctl_$check_acs now returns a bit (36) 28* mode string instead of a fixed bin (5) and no longer takes a directoy arg. 29**/ 30 31 /****^ HISTORY COMMENTS: 32* 1) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 33* audit(86-06-10,Martinson), install(86-07-11,MR12.0-1092): 34* Correct error message documentation. 35* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 36* audit(87-07-16,Hartogs), install(87-08-04,MR12.1-1055): 37* Upgraded for change to answer_table.incl.pl1. 38* END HISTORY COMMENTS */ 39 40 /* DECLARATION OF PARAMETERS */ 41 dcl (mgtp, instalp, P_ansp, ip) pointer; 42 dcl wordcount fixed bin; 43 dcl code fixed bin (35); 44 dcl (instaldir char (*), instalname char (*), answer char (*)); 45 46 47 /* DECLARATION OF EXTERNAL SYMBOLS */ 48 49 dcl up_sysctl_$check_acs entry (char (*), char (*), fixed bin, bit (36) aligned, fixed bin (35)); 50 dcl get_process_id_ entry () returns (bit (36)); 51 dcl hcs_$set_safety_sw entry (char (*), char (*), bit (1), fixed bin (35)); 52 dcl hcs_$set_bc entry (char (*), char (*), fixed bin (24), fixed bin (35)); 53 dcl cu_$level_get entry (fixed bin); 54 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 55 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 56 dcl sys_log_$error_log entry options (variable); 57 dcl reassign_work_classes_ entry (fixed bin (35)); 58 dcl ioa_$rsnnl entry options (variable); 59 60 dcl error_table_$action_not_performed ext fixed bin (35); 61 62 dcl (addr, clock, fixed, null, rel, string) builtin; 63 64 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 65 66 dcl acs_name char (32) int static options (constant) init ("mgt.install.acs"); 67 /* dcl LEGAL char (95) int static init /* Printables except PAD, semicolon, but with BS */ 68 /* (" !""#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~");/* */ 69 70 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 71 72 dcl (i, j, rslen, bad_wc) fixed bin; /* counters */ 73 dcl first_group fixed bin; 74 dcl omgtp ptr; /* ptr to current mgt */ 75 dcl omgtep ptr; /* ptr to entries in current mgt */ 76 dcl (satp, satep) ptr; /* satep not used - but referenced in sat.incl */ 77 dcl notables bit (1); /* switch to indicate that an old table doesn't exist */ 78 dcl no_words fixed bin (24); 79 dcl offset bit (18) aligned; /* for wordcount. */ 80 dcl syacn fixed bin init (1); 81 dcl ring fixed bin; 82 dcl mode bit (36) aligned; 83 dcl pct_is_used bit (1) aligned; 84 85 dcl shift fixed bin; 86 dcl shift_used (0:7) bit (1) aligned; 87 dcl shift_pct fixed bin; 88 dcl wcp ptr; 89 dcl no_abs bit (1) aligned; 90 dcl dflt_q (4) bit (1) unaligned; 91 92 dcl char8 char (8) varying; 93 dcl digits (4) char (1) unaligned int static init ("1", "2", "3", "4"); 94 95 dcl rq_problem bit (3) unaligned; 96 dcl resp bit (1) unaligned defined (rq_problem) pos (1); 97 dcl int bit (1) unaligned defined (rq_problem) pos (2); 98 99 100 /* DECLARATION OF BASED STRUCTURES */ 101 102 dcl 1 dum aligned based, 103 2 array (no_words) fixed bin; 104 105 ansp = P_ansp; 106 if anstbl.as_procid ^= get_process_id_ () then return; 107 108 instalp = null; /* pre-set returned pointer */ 109 instaldir = anstbl.sysdir; /* Make name of place to put copy. */ 110 instalname = "mgt"; /* Make segment name. */ 111 call hcs_$initiate (instaldir, instalname, "", 0, 0, omgtp, code); 112 if omgtp = null then notables = "1"b; /* no old MGT. How about that? */ 113 else notables = "0"b; 114 115 if wordcount < 64 then do; /* make sure segment contains something */ 116 answer = "wordcount < 64"; 117 goto mgt_error; 118 end; 119 if mgt.version_indicator ^= "VERSION " then goto badversn; 120 if mgt.version ^= MGT_version_3 then do; 121 badversn: answer = "incorrect table format"; 122 goto mgt_error; 123 end; 124 if mgt.current_size > mgt.max_size then do; 125 answer = "current_size > max_size"; 126 goto mgt_error; 127 end; 128 offset = rel (addr (mgt.entry (mgt.current_size + 1))); 129 if fixed (offset, 18) - 1 > wordcount then do; /* Check size vs file system. */ 130 answer = "size inconsistent with wordcount"; 131 goto mgt_error; 132 end; 133 call cu_$level_get (ring); 134 call up_sysctl_$check_acs (acs_name, (mgt.author.proc_group_id), ring, mode, code); 135 if (code ^= 0) | ((mode & RW_ACCESS) ^= RW_ACCESS) then do; 136 answer = "access violation"; 137 goto mgt_error; 138 end; 139 140 call hcs_$initiate (instaldir, "sat", "", 0, 1, satp, code); 141 if satp = null then do; 142 answer = "cannot initiate SAT"; 143 goto mgt_error; 144 end; 145 146 /* Now, verify the correctness of the new MGT */ 147 148 149 do shift = 0 to 7; /* check consistency on each shift */ 150 151 shift_used (shift) = ""b; /* remember which shifts are used */ 152 shift_pct = 0; /* sum of percentages */ 153 no_abs = ""b; 154 string (dflt_q) = ""b; /* keep track of absentee groups */ 155 156 do i = 1 to 16; /* first go thru work classes */ 157 /* checking if defined, and adding up percentages */ 158 wcp = addr (mgt.entry (i)); 159 if wcp -> work_class.switches.defined (shift) then do; /* if defined */ 160 shift_used (shift) = "1"b; /* at least one is, on this shift */ 161 162 if mgt.switches.deadline_mode (shift) | wcp -> work_class.switches.realtime (shift) then 163 /* if realtime or deadline */ 164 pct_is_used = ""b; /* percent is ignored */ 165 else pct_is_used = "1"b; /* otherwise it is used */ 166 167 if pct_is_used & wcp -> work_class.min_pct (shift) <= 0 then do; 168 call ioa_$rsnnl ("zero or negative work class percentage: work class ^d, shift ^d", 169 answer, rslen, i, shift); 170 goto mgt_error; 171 end; 172 if pct_is_used & (wcp -> work_class.max_pct (shift) < 0 173 | wcp -> work_class.max_pct (shift) > 100) then do; 174 call ioa_$rsnnl ("invalid work class max percent: work class ^d, shift ^d", 175 answer, rslen, i, shift); 176 goto mgt_error; 177 end; 178 if pct_is_used then /* except for realtime workclasses */ 179 shift_pct = shift_pct + wcp -> work_class.min_pct (shift); /* add up percentages */ 180 181 /* RESPONSE AND QUANTUM CHECKS: 182* * work_class.int_quantum(shift) and work_class.quantum(shift) must be > 0; 183* * work_class.int_response(shift) and work_class.response(shift) must be >= 0 184* * but ONLY if work_class.switches.realtime(shift) = "1"b; 185* 186**/ 187 188 rq_problem = "000"b; /* no problem */ 189 if wcp -> work_class.int_quantum (shift) <= 0 then 190 rq_problem = "011"b; /* resp=0;int=1 */ 191 else if wcp -> work_class.quantum (shift) <= 0 then 192 rq_problem = "001"b; /* resp=0;int=0 */ 193 else if wcp -> work_class.switches.realtime (shift) then 194 if wcp -> work_class.int_response (shift) < 0 then 195 rq_problem = "111"b; /* resp=1;int=1 */ 196 else if wcp -> work_class.response (shift) < 0 then 197 rq_problem = "101"b; /* resp=1;int=0 */ 198 199 if rq_problem ^= "000"b then do; /* if one of the above problems was found */ 200 call ioa_$rsnnl ("^[^;zero or ^]negative ^[int_^]^[response^;quantum^] for ^[realtime ^]work class ^d, shift ^d", 201 answer, rslen, resp, int, resp, resp, i, shift); 202 goto mgt_error; 203 end; 204 205 206 end; 207 end; /* end loop on work classes */ 208 if shift_pct > 100 then do; 209 call ioa_$rsnnl ("sum of work class percentages > 100 on shift ^d", answer, rslen, shift); 210 goto mgt_error; 211 end; 212 213 do i = 17 to mgt.current_size; /* now go thru all groups */ 214 mgtep = addr (mgt.entry (i)); 215 216 if ^shift_used (shift) then do; /* if no work classes defined on this shift */ 217 if group.int_wc (shift) ^= 0 then do; 218 bad_wc = group.int_wc (shift); 219 goto shift_err; /* there better be no work classes used */ 220 end; 221 222 if group.abs_wc (shift) ^= 0 then do; 223 bad_wc = group.abs_wc (shift); 224 shift_err: call ioa_$rsnnl ("work class ^d used on shift ^d (for which it is undefined)", 225 answer, rslen, bad_wc, shift); 226 goto mgt_error; 227 end; 228 end; 229 230 else do; /* some work classes are defined */ 231 wcp = addr (mgt.entry (group.int_wc (shift))); 232 if ^wcp -> work_class.switches.defined (shift) then do; /* see if this one is */ 233 bad_wc = group.int_wc (shift); 234 goto shift_err; /* and complain if not */ 235 end; 236 237 if group.absentee.allowed then do; /* if absentees allowed in this group */ 238 wcp = addr (mgt.entry (group.abs_wc (shift))); 239 if ^wcp -> work_class.switches.defined (shift) then do; 240 /* make sure their work class is defined */ 241 bad_wc = group.abs_wc (shift); 242 goto shift_err; /* and complain if not */ 243 end; 244 if ^wcp -> work_class.switches.absentee_allowed (shift) then do; 245 call ioa_$rsnnl ("absentees are in work class ^d, which does not allow them", 246 answer, rslen, group.abs_wc (shift)); 247 goto mgt_error; 248 end; 249 250 if group.absentee.default_group then do; /* if this is a default group for some queue(s) */ 251 do j = 1 to 4; /* go thru queues */ 252 if group.absentee.default_queue (j) then /* if it is for this queue */ 253 if dflt_q (j) then do; /* but there already is one */ 254 call ioa_$rsnnl ("more than one default group for absentee queue ^d; 255 second is ""^a""", answer, rslen, j, group.group_id); 256 goto mgt_error; 257 end; 258 259 else dflt_q (j) = "1"b; 260 /* otherwise, just remember that we have a default for this queue */ 261 end; 262 end; 263 264 end; /* end absentee allowed */ 265 266 else do; /* absentee not allowed in this group */ 267 no_abs = "1"b; /* remember that there is such a group */ 268 if group.absentee.default_group then do; 269 call ioa_$rsnnl ("inconsistency: default absentee group ""^a"" does not permit absentees", 270 answer, rslen, group.group_id); 271 goto mgt_error; 272 end; 273 end; /* end absentees not allowed */ 274 end; /* end some work classes defined on this shift */ 275 end; /* end loop thru all groups */ 276 277 if no_abs then /* if a no-absentee group exists */ 278 if string (dflt_q) ^= "1111"b then do; /* and there are not default groups for all queues */ 279 char8 = ""; 280 do j = 1 to 4; /* build string listing queues for which */ 281 if ^dflt_q (j) then /* there is no default group */ 282 char8 = char8 || digits (j) || " "; 283 end; 284 call ioa_$rsnnl ("no default group for absentee queue(s) ^a", answer, rslen, char8); 285 goto mgt_error; 286 end; 287 288 end; /* end loop on shifts */ 289 290 do i = 17 to mgt.current_size; /* check on per-group parameters */ 291 mgtep = addr (mgt.entry (i)); 292 if group.absentee_pct < 0 293 | group.absentee_pct > 100 then do; 294 call ioa_$rsnnl ("illegal absentee_pct (^d%) for group ""^a""", 295 answer, rslen, group.absentee_pct, group.group_id); 296 goto mgt_error; 297 end; 298 299 if group.absentee_min > group.absentee_max then do; 300 call ioa_$rsnnl ("absentee_min (^d) greater than absentee_max (^d) for group ""^a""", 301 answer, rslen, group.absentee_min, group.absentee_max, group.group_id); 302 goto mgt_error; 303 end; 304 305 if group.absentee_max < 0 then do; 306 call ioa_$rsnnl ("absentee_max (^d) for group ""^a"" is negative", 307 answer, rslen, group.absentee_max, group.group_id); 308 goto mgt_error; 309 end; 310 end; /* end check of per-group parameters */ 311 312 /* shift_used(*) tells us which shifts were used. later, add code to check this against 313* which shifts are defined in installation parms - but got to write an up_ip_ first ... */ 314 315 /* If we fall thru here, the mgt was probably ok */ 316 317 318 /* If there was an old MGT, copy the current load figures into the new one */ 319 320 if ^notables then do; 321 322 first_group = 1; /* old mgt might be version 1 format */ 323 if omgtp -> mgt.version_indicator = "VERSION " then 324 if omgtp -> mgt.version >= 2 then 325 first_group = 17; /* it is version 2 or greater */ 326 327 mgt.total_units = omgtp -> mgt.total_units; /* in either case, copy current total_units from header */ 328 329 if first_group = 17 then do; /* if version 2, also copy current work class information */ 330 mgt.switches.prio_sked_on_tape = omgtp -> mgt.switches.prio_sked_on_tape; 331 mgt.user_wc_defined (*) = omgtp -> mgt.user_wc_defined (*); 332 mgt.user_wc_min_pct (*) = omgtp -> mgt.user_wc_min_pct (*); 333 end; 334 335 do i = first_group to omgtp -> mgt.current_size; /* now, copy the figures for each load control group */ 336 omgtep = addr (omgtp -> mgt.entry (i)); 337 338 do j = 17 to mgt.current_size /* look up this group in the new mgt */ 339 while (omgtep -> group.group_id ^= addr (mgt.entry (j)) -> group.group_id); end; 340 mgtep = addr (mgt.entry (j)); /* remember address of entry in case we need it */ 341 if j = mgt.current_size + 1 then do; /* was this group deleted? */ 342 343 /* If we get here, this group got deleted from the new mgt. 344* We can only allow this if the group is not used. See if it is */ 345 346 j = omgtep -> group.n_prim + omgtep -> group.n_sec + omgtep -> group.n_eo; 347 if j ^= 0 then do; 348 call ioa_$rsnnl ("attempt to delete load control group ""^a"", which has ^d users in it", 349 answer, rslen, group.group_id, j); 350 goto mgt_error; 351 end; 352 353 /* See if the SAT references it */ 354 355 do j = 1 to sat.current_size; 356 satep = addr (sat.project (j)); 357 if project.state = 1 then do; /* if this project entry is used */ 358 if project.group = omgtep -> group.group_id then do; 359 call ioa_$rsnnl ("attempt to delete load control group ""^a"", which is the default group for project ""^a""", 360 answer, rslen, group.group_id, project.project_id); 361 goto mgt_error; 362 end; 363 364 if project.groups (1) = omgtep -> group.group_id 365 | project.groups (2) = omgtep -> group.group_id then do; 366 call ioa_$rsnnl ("attempt to delete load control group ""^a"", which is an authorized group for project ""^a""", 367 answer, rslen, group.group_id, project.project_id); 368 goto mgt_error; 369 end; 370 end; /* end project state = 1 */ 371 end; /* end loop thru SAT */ 372 end; /* if we get here, it is ok to delete the group */ 373 /* naturally, we skip the copying of the old group into the new MGT */ 374 else do; /* if group not deleted, copy its current load values */ 375 if group.max_prim ^= -1 then /* if not a special value being installed */ 376 group.max_prim = omgtep -> group.max_prim; /* save the computed one in the current mgt */ 377 group.n_prim = omgtep -> group.n_prim; 378 group.n_sec = omgtep -> group.n_sec; 379 group.n_eo = omgtep -> group.n_eo; 380 group.absolute_max = omgtep -> group.absolute_max; 381 group.absentee_limit = omgtep -> group.absentee_limit; 382 group.n_abs = omgtep -> group.n_abs; 383 end; 384 end; 385 386 387 end; 388 389 /* If no old mgt, just create a segment to hold the new one */ 390 391 else do; 392 call hcs_$make_seg (instaldir, instalname, "", 01010b, omgtp, code); 393 if code ^= 0 then do; 394 answer = "unable to create new MGT"; 395 goto mgt_error; 396 end; 397 end; 398 /* if there was an old MGT, we leave its acl unchanged */ 399 400 /* now, copy the new mgt, with the current load figures in it, over the old one */ 401 402 no_words = wordcount; /* length of move, in words */ 403 omgtp -> dum = mgtp -> dum; 404 405 omgtp -> mgt.author.last_install_time = clock (); 406 omgtp -> mgt.author.lock = ""b; 407 408 /* and set the bitcount to the (possibly new) value */ 409 410 call hcs_$set_bc (instaldir, instalname, 36 * wordcount, code); 411 call hcs_$set_safety_sw (instaldir, instalname, "1"b, code); 412 413 414 /* Now, go reassign everyone to their new work classes */ 415 416 call reassign_work_classes_ (code); 417 if code ^= 0 then do; 418 /* We will try this twice, in case another privileged process is 419* trying to alter the work class definitions at the same time 420* that we are. Doing it twice is not foolproof, but it decreases 421* the probability of ultimate failure by orders of magnitude */ 422 call reassign_work_classes_ (code); 423 if code ^= 0 then do; 424 call sys_log_$error_log (2, code, "up_mgt_", "during work class reassignment"); 425 return; 426 end; 427 end; 428 429 code = 0; 430 431 instalp = omgtp; /* return pointer to merged mgt */ 432 433 return; 434 435 mgt_error: 436 code = error_table_$action_not_performed; /* MGT not installed */ 437 return; 438 439 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 439 440 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* The answer table has one entry per "login instance" whether completed or */ 2 6 /* not. It is connected to the Channel Definition Table by the pointer */ 2 7 /* "channel". The header is used mostly by dialup_. */ 2 8 /* */ 2 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 2 10 /* */ 2 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 12 2 13 /****^ HISTORY COMMENTS: 2 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 2 15* Replace anstbl.incl.pl1. 2 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 2 17* Add anstbl.session_uid_counter. 2 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 2 19* Add anstbl.message_update_time and named constants for values of 2 20* anstbl.session, and to make all padding explicit. 2 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 2 22* Change "entry" to a placeholder so as not to require 2 23* user_table_entry.incl.pl1. 2 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 2 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 2 26* Added the flag login_server_present which indicates whether a login 2 27* server request has been received. This is used to determine whether 2 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 2 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 2 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 2 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 32* A) Moved constants for ute.pw_flags.mask_ctl into 2 33* user_table_entry.incl.pl1. 2 34* B) Added common table header to all user tables. 2 35* END HISTORY COMMENTS */ 2 36 2 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 38 /* */ 2 39 /* The anstbl structure below is divided into sections. Each section begins */ 2 40 /* with a comment describing the elements in the section. Elements are */ 2 41 /* placed within a section, based upon their function or the programs that */ 2 42 /* use them. Each section begins on a double word and is an even number of */ 2 43 /* words long. */ 2 44 /* */ 2 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 46 2 47 2 48 2 49 /* format: style4 */ 2 50 2 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 2 52 2 53 dcl ansp ptr automatic init (null); 2 54 2 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 2 56 2 header like ut_header, /* Header common to all user tables. */ 2 57 2 58 /* Counter elements. */ 2 59 2 nlin fixed bin, /* number of active lines */ 2 60 2 mxlin fixed bin, /* maximum number of active lines */ 2 61 2 n_users fixed bin, /* number of logged-in users */ 2 62 2 max_users fixed bin, /* maximum number of users allowed */ 2 63 2 n_units fixed bin, /* number of logged in units */ 2 64 2 max_units fixed bin, /* maximum number of units */ 2 65 2 n_sessions fixed bin, /* number of Multics sessions */ 2 66 2 n_pad fixed bin, 2 67 2 68 /* Name elements. */ 2 69 2 sysdir char (64) unal, /* name of main system control directory */ 2 70 2 as_tty char (8) unal, /* name of main answering service device. */ 2 71 2 72 /* Login elements. */ 2 73 2 login_word char (8) unal, /* login word if special_session=1 */ 2 74 2 session char (8) unal, /* session indicator */ 2 75 2 special_message char (128) unal, /* message to be printed for special session */ 2 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 2 77 2 message_lng fixed bin, /* length of special message */ 2 78 2 login_pad fixed bin, 2 79 2 80 /* Table update elements. */ 2 81 2 lock_count fixed bin, /* global lock for all system control tables */ 2 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 2 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 2 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 2 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 2 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 2 87 2 update_pad fixed bin, 2 88 2 89 /* dialup_ data values. */ 2 90 2 current_time fixed bin (71), /* Time of last transaction */ 2 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 2 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 2 93 2 94 /* load_ctl_ elements. */ 2 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 2 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 2 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 2 98 /* load_ctl_ load leveling desired response range: */ 2 99 2 response_high fixed bin, /* bad if user response time slower than this */ 2 100 2 response_low fixed bin, /* bad if user response time faster than this */ 2 101 2 load_ctl_pad fixed bin, 2 102 2 103 /* Login server request server data. */ 2 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 2 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 2 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 2 107 2 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 2 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 2 110 3 contents (UTE_SIZE) fixed bin; 2 111 2 112 /* constants */ 2 113 2 114 /* values for anstbl.session */ 2 115 2 116 dcl (AT_NORMAL init ("normal "), 2 117 AT_SPECIAL init ("special "), 2 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 2 119 2 120 dcl UTE_SIZE fixed bin internal static initial (300); 2 121 2 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 440 441 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 3 2 3 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 3 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 3 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 3 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 3 7 3 8 /* At login each user process is placed in that load control group specified in either 3 9* the project's SAT entry or the user's PDT entry. This group is remembered 3 10* in the user table entry for that process (ATE, DUTE, AUTE). 3 11* 3 12* MGT groups map each process into a set of processes called a work_class 3 13* as a function of shift and whether or not the process is absentee -- 3 14* also per group limits on the number of group members are given. 3 15* 3 16* The work_class entries in the MGT specify the configuration 3 17* of the hardcore scheduler on a per shift basis. If a work_class has the 3 18* realtime attribute, member processes will be given precisely specified 3 19* response characteristics. If running in deadline_not_percent mode on 3 20* a given shift then members of other work_classes will be given approximate 3 21* response characteristics; otherwise other work_classes will be given 3 22* percentages of whatever cpu time is unused by realtime processes. 3 23* REM */ 3 24 3 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 3 26 /* versions >= 3 contain deadline info */ 3 27 3 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 3 29 3 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 3 31* and work classes */ 3 32 4 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 4 2 4 3 /* the "author" items must always be the first ones in the table. The 4 4* module which moves the converted table to the System Control process 4 5* fills in these data items and assumes them to be at the head of the segment 4 6* regardless of the specific table's actual declaration. The variables 4 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 4 8* respectively. For tables installed in multiple processes, these 4 9* are to be used to lock out multiple installations. */ 4 10 4 11 /* Lock should be used as a modification lock. Since, in general, 4 12* entries may not be moved in system tables, even by installations, 4 13* it is sufficient for only installers and programs that change threads 4 14* to set or respect the lock. Simply updating data in an entry 4 15* requires no such protection. 4 16* 4 17* Last_install_time is used by readers of system tables to detect 4 18* installations or other serious modifications. By checking it before 4 19* and after copying a block of data, they can be protected against 4 20* modifications. 4 21* 4 22* Modules that set the lock should save proc_group_id, and then 4 23* put their group id there for the time they hold the lock. 4 24* if they do not actually install the, they should restore the group id. 4 25**/ 4 26 4 27 2 author aligned, /* validation data about table's author */ 4 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 4 29 3 lock bit (36), /* installation lock */ 4 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 4 31 3 update_authorization bit (1) unal, /* update only authorizations */ 4 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 4 33 3 pad bit (33) unaligned, 4 34 3 last_install_time fixed bin (71), 4 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 4 36 3 w_dir char (64), /* author's working directory */ 4 37 4 38 /* END INCLUDE FILE author.incl.pl1 */ 3 33 3 34 /* the author structure occupies 29 words */ 3 35 2 max_size fixed bin, /* maximum size of table */ 3 36 2 current_size fixed bin, /* current number of entries */ 3 37 2 total_units fixed bin, /* total units allocated */ 3 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 3 39* (the first version of the mgt had no version number) */ 3 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 3 41 2 switches aligned, 3 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 3 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 3 44* be used by the answering service (all processes will be 3 45* put in work class 1 regardless of what the mgt says) */ 3 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 3 47* on the system tape */ 3 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 3 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 3 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 3 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 3 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 3 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 3 54 /* the above variables occupy a total of 24 words */ 3 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 3 56 3 57 2 entry (100), /* array of entries */ 3 58 3 fill (32) fixed bin; /* 32 words each */ 3 59 /* the first 16 are work classes; the rest, load control groups */ 3 60 3 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 3 62 3 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 3 64 2 group_id char (8), /* group name */ 3 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 3 66 2 n_prim fixed bin, /* current number of primary units */ 3 67 2 n_sec fixed bin, /* current number of secondary units */ 3 68 2 n_eo fixed bin, /* current number of edit-only users */ 3 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 3 70 2 minu fixed bin, /* Constant number of units in maxprim */ 3 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 3 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 3 73 2 minamax fixed bin, /* Constant part of abs max */ 3 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 3 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 3 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 3 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 3 78 /* used halfwords to avoid using up all the pad - 3 79* we might need it later */ 3 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 3 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 3 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 3 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 3 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 3 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 3 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 3 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 3 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 3 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 3 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 3 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 3 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 3 93 3 94 dcl 1 work_class based (mgtep) aligned, 3 95 2 wc_name char (8), /* overlays group.group_id, but can only be 3 96* one of the strings "1" through "16" */ 3 97 2 switches aligned, 3 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 3 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 3 100 /* ed_mgt and up_mgt_ enforce consistency between these 3 101* and the group.absentee switches */ 3 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 3 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 3 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 3 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 3 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 3 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 3 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 3 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 3 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 3 111 3 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 441 442 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 5 2 5 3 5 4 5 5 5 6 /****^ HISTORY COMMENTS: 5 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 5 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 5 9* Expand comment line of project.state to include the renamed state (state = 5 10* 3). 5 11* END HISTORY COMMENTS */ 5 12 5 13 5 14 5 15 /* Modified 740723 by PG to add AIM info */ 5 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 5 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 5 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 5 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 5 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 5 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 5 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 5 23 5 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 5 25 5 26 SAT_header_lth init (466), /* length in words of SAT header */ 5 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 5 28 5 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 5 30 ) fixed bin internal static options (constant); 5 31 5 32 dcl 1 sat based (satp) aligned, 5 33 6 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 6 2 6 3 /* the "author" items must always be the first ones in the table. The 6 4* module which moves the converted table to the System Control process 6 5* fills in these data items and assumes them to be at the head of the segment 6 6* regardless of the specific table's actual declaration. The variables 6 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 6 8* respectively. For tables installed in multiple processes, these 6 9* are to be used to lock out multiple installations. */ 6 10 6 11 /* Lock should be used as a modification lock. Since, in general, 6 12* entries may not be moved in system tables, even by installations, 6 13* it is sufficient for only installers and programs that change threads 6 14* to set or respect the lock. Simply updating data in an entry 6 15* requires no such protection. 6 16* 6 17* Last_install_time is used by readers of system tables to detect 6 18* installations or other serious modifications. By checking it before 6 19* and after copying a block of data, they can be protected against 6 20* modifications. 6 21* 6 22* Modules that set the lock should save proc_group_id, and then 6 23* put their group id there for the time they hold the lock. 6 24* if they do not actually install the, they should restore the group id. 6 25**/ 6 26 6 27 2 author aligned, /* validation data about table's author */ 6 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 6 29 3 lock bit (36), /* installation lock */ 6 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 6 31 3 update_authorization bit (1) unal, /* update only authorizations */ 6 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 6 33 3 pad bit (33) unaligned, 6 34 3 last_install_time fixed bin (71), 6 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 6 36 3 w_dir char (64), /* author's working directory */ 6 37 6 38 /* END INCLUDE FILE author.incl.pl1 */ 5 34 5 35 2 max_size fixed bin, /* max number of entries table can grow */ 5 36 2 current_size fixed bin, /* current size of table (in entries) */ 5 37 2 version fixed bin, /* version number of table (word 32) */ 5 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 5 39 2 n_projects fixed bin, /* number of entries actually used */ 5 40 2 pad_was_max_users bit (36) aligned, 5 41 2 max_units fixed bin, /* maximum number of login-units per session */ 5 42 2 pad_was_max_prim bit (36) aligned, 5 43 2 uwt_size fixed bin, /* size of User Weight Table */ 5 44 2 uwt (24) aligned, /* User Weight Table */ 5 45 3 initproc char (64) unaligned, /* user's initial procedure */ 5 46 3 units fixed bin, /* weight of initial procedure */ 5 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 5 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 5 49 2 project (3258), /* The SAT entries. 255K segment. */ 5 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 5 51 5 52 5 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 5 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 5 55 2 project_id char (12) unaligned, /* project's name */ 5 56 2 project_dir char (64) unaligned, /* project's directory */ 5 57 2 pdt_ptr pointer, /* pointer to current PDT */ 5 58 2 max_users fixed bin, /* maximum number of users from project */ 5 59 2 n_users fixed bin, /* current number */ 5 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 5 61 2 admin (4) aligned, /* list of project's administrators */ 5 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 5 63 3 pad char (2) unal, 5 64 2 cutoff char (1), /* if project is cut off, why. */ 5 65 2 min_ring fixed bin, /* lowest ring for project */ 5 66 2 max_ring fixed bin, /* highest ring for project */ 5 67 2 alias char (8) unal, /* project alias */ 5 68 2 group char (8) unal, /* default group for this project */ 5 69 2 grace_max fixed bin, /* maximum bump grace */ 5 70 2 audit bit (36), /* audit flags for project */ 5 71 2 project_authorization (2) bit (72), /* authorization of this project */ 5 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 5 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 5 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 5 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 5 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 5 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 5 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 5 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 5 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 5 81 2 satpad1 fixed bin (9) unsigned unaligned, 5 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 5 83 2 chain fixed bin; /* if free entry, chain */ 5 84 5 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 442 443 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 7 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 7 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 7 8* attribute switches. 7 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 7 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 7 12* be deleted. 7 13* B) Add constants identifying attributes that can be changed by user at 7 14* login, etc. 7 15* END HISTORY COMMENTS */ 7 16 7 17 7 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 7 19 7 20 /* format: style4 */ 7 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 7 22 (2 administrator bit (1), /* 1 system administrator privileges */ 7 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 7 24 2 nobump bit (1), /* 2 user cannot be bumped */ 7 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 7 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 7 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 7 28* . of same project (distinct from "nobump") */ 7 29 2 nolist bit (1), /* 7 don't list user on "who" */ 7 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 7 31 2 multip bit (1), /* 9 user may have several processes */ 7 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 7 33 2 brief bit (1), /* 11 no login or logout message */ 7 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 7 35 2 vhomedir bit (1), /* 13 user may change homedir */ 7 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 7 37 2 sb_ok bit (1), /* 15 user may be standby */ 7 38 2 pm_ok bit (1), /* 16 user may be primary */ 7 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 7 40 2 daemon bit (1), /* 18 user may login as daemon */ 7 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 7 42 2 no_warning bit (1), /* 20 no warning message */ 7 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 7 44* . in PDT: this user has an individual load control group */ 7 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 7 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 7 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 7 48 2 pad bit (12)) unaligned; 7 49 7 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 7 51 ("none", /* 0 */ 7 52 "administrator", /* 1 */ 7 53 "primary_line", /* 2 */ 7 54 "nobump", /* 3 */ 7 55 "guaranteed_login", /* 4 */ 7 56 "anonymous", /* 5 */ 7 57 "nopreempt", /* 6 */ 7 58 "nolist", /* 7 */ 7 59 "dialok", /* 8 */ 7 60 "multip", /* 9 */ 7 61 "bumping", /* 10 */ 7 62 "brief", /* 11 */ 7 63 "vinitproc", /* 12 */ 7 64 "vhomedir", /* 13 */ 7 65 "nostartup", /* 14 */ 7 66 "no_secondary", /* 15 */ 7 67 "no_prime", /* 16 */ 7 68 "no_eo", /* 17 */ 7 69 "daemon", /* 18 */ 7 70 "", /* 19 vdim OBSOLETE */ 7 71 "no_warning", /* 20 */ 7 72 "igroup", /* 21 */ 7 73 "save_pdir", /* 22 */ 7 74 "disconnect_ok", /* 23 */ 7 75 "save_on_disconnect"); /* 24 */ 7 76 7 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 7 78 ("null", /* 0 */ 7 79 "admin", /* 1 */ 7 80 "", "", /* 2 - 3 */ 7 81 "guar", /* 4 */ 7 82 "anon", /* 5 */ 7 83 "", "", /* 6 - 7 */ 7 84 "dial", /* 8 */ 7 85 "multi_login", /* 9 */ 7 86 "preempting", /* 10 */ 7 87 "", /* 11 */ 7 88 "v_process_overseer", /* 12 */ 7 89 "v_home_dir", /* 13 */ 7 90 "no_start_up", /* 14 */ 7 91 "no_sec", /* 15 */ 7 92 "no_primary", /* 16 */ 7 93 "no_edit_only", /* 17 */ 7 94 "op_login", /* 18 */ 7 95 "", /* 19 */ 7 96 "nowarn", /* 20 */ 7 97 "", "", "", /* 21 - 23 */ 7 98 "save"); /* 24 */ 7 99 7 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 7 101 options(constant) init("000000000010000000010000000000000000"b); 7 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 7 103 7 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 7 105 options(constant) init("000000000010000000010000000000000000"b); 7 106 /* PDT value for (brief, no_warning) is default */ 7 107 7 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 7 109 options(constant) init("000100000110010000010000000000000000"b); 7 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 7 111 8 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 8 2 8 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 8 4 /* */ 8 5 /* This include file describes the attributes of an absentee job. It is */ 8 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 8 7 /* and PIT.incl.pl1. */ 8 8 /* */ 8 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 8 10 8 11 /****^ HISTORY COMMENTS: 8 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 8 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 14* Separated abs_attributes from the request structure 8 15* (abs_message_format.incl.pl1) so that the identical structure could be 8 16* used in the ute structure (user_table_entry.incl.pl1). 8 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 8 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 19* Added ABS_ATTRIBUTE_NAMES array. 8 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 8 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 8 22* Added the no_start_up flag. SCP6367 8 23* END HISTORY COMMENTS */ 8 24 8 25 dcl 1 user_abs_attributes aligned based, 8 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 8 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 8 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 8 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 8 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 8 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 8 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 8 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 8 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 8 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 8 36 2 attributes_pad bit (26) unaligned; 8 37 8 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 8 39 "restartable", 8 40 "user_deferred_until_time", 8 41 "proxy", 8 42 "set_bit_cnt", 8 43 "time_in_gmt", 8 44 "user_deferred_indefinitely", 8 45 "secondary_ok", 8 46 "truncate_absout", 8 47 "restarted", 8 48 "no_start_up"); 8 49 8 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 8 51 7 112 7 113 7 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 443 444 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 9 2 9 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 4 /* */ 9 5 /* This include file declares the header shared by the answer_table, */ 9 6 /* absentee_user_table and daemon_user_table include files. */ 9 7 /* */ 9 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 9 9 10 /****^ HISTORY COMMENTS: 9 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 9 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 13* Initial coding. 9 14* END HISTORY COMMENTS */ 9 15 9 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 9 17 2 header_version fixed bin, /* version of the header (3) */ 9 18 2 entry_version fixed bin, /* version of user table entries */ 9 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 9 20 2 header_length fixed bin, /* length of the header */ 9 21 2 max_size fixed bin, /* max number of entries in this table */ 9 22 2 current_size fixed bin, /* actual size of table (in entries) */ 9 23 2 number_free fixed bin, /* number of free entries in the table. */ 9 24 2 first_free fixed bin, /* index of first entry in the free list. */ 9 25 2 as_procid bit (36), /* process ID of user table manager process */ 9 26 2 ut_header_pad fixed bin; 9 27 9 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 444 445 446 /* BEGIN MESSAGE DOCUMENTATION 447* 448* Message: 449* up_mgt_: ERROR_MESSAGE During work class reassignment 450* 451* S: as (severity2) 452* 453* T: $run 454* 455* M: The error described by ERROR_MESSAGE occurred while 456* a system administrator was attempting to install a new mgt. The 457* operation was tried twice and failed both times. More detailed 458* reasons for the failure are given in messages immediately 459* preceding this one. The new mgt has been installed. Hardcore 460* is operating with a set of parameters inconsistent with the new mgt. 461* 462* A: $notify_sa 463* 464* END MESSAGE DOCUMENTATION */ 465 466 end up_mgt_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1930.3 up_mgt_.pl1 >udd>sm>ds>w>ml>up_mgt_.pl1 439 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 440 2 08/06/87 1013.0 answer_table.incl.pl1 >ldd>incl>answer_table.incl.pl1 441 3 08/10/81 1943.7 mgt.incl.pl1 >ldd>incl>mgt.incl.pl1 3-33 4 04/21/82 1311.8 author.incl.pl1 >ldd>incl>author.incl.pl1 442 5 08/06/87 1516.6 sat.incl.pl1 >ldd>incl>sat.incl.pl1 5-34 6 04/21/82 1311.8 author.incl.pl1 >ldd>incl>author.incl.pl1 443 7 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>incl>user_attributes.incl.pl1 7-112 8 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>incl>user_abs_attributes.incl.pl1 444 9 08/06/87 1013.6 user_table_header.incl.pl1 >ldd>incl>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. MGT_version_3 constant fixed bin(17,0) initial dcl 3-25 ref 120 P_ansp parameter pointer dcl 41 ref 13 105 RW_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 135 135 abs_wc 21 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-63 set ref 222 223 238 241 245* absentee 25 based structure level 2 dcl 3-63 absentee_allowed 2(08) based bit(1) array level 3 packed packed unaligned dcl 3-94 ref 244 absentee_limit 27(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-63 set ref 381* 381 absentee_max 26 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-63 set ref 299 300* 305 306* absentee_min 26(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-63 set ref 299 300* absentee_pct 27 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-63 set ref 292 292 294* absolute_max 6 based fixed bin(17,0) level 2 dcl 3-63 set ref 380* 380 acs_name 000001 constant char(32) initial packed unaligned dcl 66 set ref 134* addr builtin function dcl 62 ref 128 158 214 231 238 291 336 338 340 356 allowed 25 based bit(1) level 3 packed packed unaligned dcl 3-63 ref 237 ansp 000150 automatic pointer initial dcl 2-53 set ref 105* 106 109 2-53* anstbl based structure level 1 dcl 2-55 answer parameter char packed unaligned dcl 44 set ref 13 116* 121* 125* 130* 136* 142* 168* 174* 200* 209* 224* 245* 254* 269* 284* 294* 300* 306* 348* 359* 366* 394* as_procid 10 based bit(36) level 3 dcl 2-55 ref 106 author based structure level 2 dcl 3-30 bad_wc 000103 automatic fixed bin(17,0) dcl 72 set ref 218* 223* 224* 233* 241* char8 000144 automatic varying char(8) dcl 92 set ref 279* 281* 281 284* clock builtin function dcl 62 ref 405 code parameter fixed bin(35,0) dcl 43 set ref 13 111* 134* 135 140* 392* 393 410* 411* 416* 417 422* 423 424* 429* 435* cu_$level_get 000020 constant entry external dcl 53 ref 133 current_size 36 based fixed bin(17,0) level 2 in structure "mgt" dcl 3-30 in procedure "up_mgt_" ref 124 128 213 290 335 338 341 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 5-32 in procedure "up_mgt_" ref 355 deadline_mode 43(03) based bit(1) array level 3 packed packed unaligned dcl 3-30 ref 162 default_group 25(01) based bit(1) level 3 packed packed unaligned dcl 3-63 ref 250 268 default_queue 25(02) based bit(1) array level 3 packed packed unaligned dcl 3-63 ref 252 defined 2 based bit(1) array level 3 packed packed unaligned dcl 3-94 ref 159 232 239 dflt_q 000143 automatic bit(1) array packed unaligned dcl 90 set ref 154* 252 259* 277 281 digits 000000 constant char(1) initial array packed unaligned dcl 93 ref 281 dum based structure level 1 dcl 102 set ref 403* 403 entry 100 based structure array level 2 dcl 3-30 set ref 128 158 214 231 238 291 336 338 340 error_table_$action_not_performed 000034 external static fixed bin(35,0) dcl 60 ref 435 first_group 000104 automatic fixed bin(17,0) dcl 73 set ref 322* 323* 329 335 fixed builtin function dcl 62 ref 129 get_process_id_ 000012 constant entry external dcl 50 ref 106 group based structure level 1 dcl 3-63 in procedure "up_mgt_" group 76 based char(8) level 2 in structure "project" packed packed unaligned dcl 5-53 in procedure "up_mgt_" ref 358 group_id based char(8) level 2 dcl 3-63 set ref 254* 269* 294* 300* 306* 338 338 348* 358 359* 364 364 366* groups 106 based char(8) array level 2 packed packed unaligned dcl 5-53 ref 364 364 hcs_$initiate 000024 constant entry external dcl 55 ref 111 140 hcs_$make_seg 000022 constant entry external dcl 54 ref 392 hcs_$set_bc 000016 constant entry external dcl 52 ref 410 hcs_$set_safety_sw 000014 constant entry external dcl 51 ref 411 header based structure level 2 dcl 2-55 i 000100 automatic fixed bin(17,0) dcl 72 set ref 156* 158 168* 174* 200* 213* 214* 290* 291* 335* 336* instaldir parameter char packed unaligned dcl 44 set ref 13 109* 111* 140* 392* 410* 411* instalname parameter char packed unaligned dcl 44 set ref 13 110* 111* 392* 410* 411* instalp parameter pointer dcl 41 set ref 13 108* 431* int defined bit(1) packed unaligned dcl 97 set ref 200* int_quantum 17 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-94 ref 189 int_response 13 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-94 ref 193 int_wc 15 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-63 ref 217 218 231 233 ioa_$rsnnl 000032 constant entry external dcl 58 ref 168 174 200 209 224 245 254 269 284 294 300 306 348 359 366 ip parameter pointer dcl 41 ref 13 j 000101 automatic fixed bin(17,0) dcl 72 set ref 251* 252 252 254* 259* 280* 281 281* 338* 338* 340 341 346* 347 348* 355* 356* last_install_time 12 based fixed bin(71,0) level 3 dcl 3-30 set ref 405* lock 10 based bit(36) level 3 dcl 3-30 set ref 406* max_pct 33 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-94 ref 172 172 max_prim 2 based fixed bin(17,0) level 2 dcl 3-63 set ref 375 375* 375 max_size 35 based fixed bin(17,0) level 2 dcl 3-30 ref 124 mgt based structure level 1 dcl 3-30 mgtep 000152 automatic pointer dcl 3-61 set ref 214* 217 218 222 223 231 233 237 238 241 245 250 252 254 268 269 291* 292 292 294 294 299 299 300 300 300 305 306 306 340* 348 359 366 375 375 377 378 379 380 381 382 mgtp parameter pointer dcl 41 ref 13 119 120 124 124 128 128 134 158 162 213 214 231 238 290 291 327 330 331 332 338 338 340 341 403 min_pct 3 based fixed bin(17,0) array level 2 dcl 3-94 ref 167 178 mode 000123 automatic bit(36) dcl 82 set ref 134* 135 n_abs 30 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-63 set ref 382* 382 n_eo 5 based fixed bin(17,0) level 2 dcl 3-63 set ref 346 379* 379 n_prim 3 based fixed bin(17,0) level 2 dcl 3-63 set ref 346 377* 377 n_sec 4 based fixed bin(17,0) level 2 dcl 3-63 set ref 346 378* 378 no_abs 000142 automatic bit(1) dcl 89 set ref 153* 267* 277 no_words 000117 automatic fixed bin(24,0) dcl 78 set ref 402* 403 notables 000116 automatic bit(1) packed unaligned dcl 77 set ref 112* 113* 320 null builtin function dcl 62 ref 108 112 141 2-53 offset 000120 automatic bit(18) dcl 79 set ref 128* 129 omgtep 000110 automatic pointer dcl 75 set ref 336* 338 346 346 346 358 364 364 375 377 378 379 380 381 382 omgtp 000106 automatic pointer dcl 74 set ref 111* 112 323 323 327 330 331 332 335 336 392* 403 405 406 431 pct_is_used 000124 automatic bit(1) dcl 83 set ref 162* 165* 167 172 178 prio_sked_on_tape 43(02) based bit(1) level 3 packed packed unaligned dcl 3-30 set ref 330* 330 proc_group_id based char(32) level 3 dcl 3-30 ref 134 project 722 based structure array level 2 in structure "sat" dcl 5-32 in procedure "up_mgt_" set ref 356 project based structure level 1 dcl 5-53 in procedure "up_mgt_" project_id 1 based char(12) level 2 packed packed unaligned dcl 5-53 set ref 359* 366* quantum 27 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-94 ref 191 realtime 2(16) based bit(1) array level 3 packed packed unaligned dcl 3-94 ref 162 193 reassign_work_classes_ 000030 constant entry external dcl 57 ref 416 422 rel builtin function dcl 62 ref 128 resp defined bit(1) packed unaligned dcl 96 set ref 200* 200* 200* response 23 based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-94 ref 196 ring 000122 automatic fixed bin(17,0) dcl 81 set ref 133* 134* rq_problem 000147 automatic bit(3) packed unaligned dcl 95 set ref 188* 189* 191* 193* 196* 199 200 200 200 200 200 200 200 200 rslen 000102 automatic fixed bin(17,0) dcl 72 set ref 168* 174* 200* 209* 224* 245* 254* 269* 284* 294* 300* 306* 348* 359* 366* sat based structure level 1 dcl 5-32 satep 000114 automatic pointer dcl 76 set ref 356* 357 358 359 364 364 366 satp 000112 automatic pointer dcl 76 set ref 140* 141 355 356 shift 000125 automatic fixed bin(17,0) dcl 85 set ref 149* 151 159 160 162 162 167 168* 172 172 174* 178 189 191 193 193 196 200* 209* 216 217 218 222 223 224* 231 232 233 238 239 241 244 245* shift_pct 000136 automatic fixed bin(17,0) dcl 87 set ref 152* 178* 178 208 shift_used 000126 automatic bit(1) array dcl 86 set ref 151* 160* 216 state based fixed bin(17,0) level 2 dcl 5-53 ref 357 string builtin function dcl 62 set ref 154* 277 switches 2 based structure level 2 in structure "work_class" dcl 3-94 in procedure "up_mgt_" switches 43 based structure level 2 in structure "mgt" dcl 3-30 in procedure "up_mgt_" syacn 000121 automatic fixed bin(17,0) initial dcl 80 set ref 80* sys_log_$error_log 000026 constant entry external dcl 56 ref 424 sysdir 22 based char(64) level 2 packed packed unaligned dcl 2-55 ref 109 total_units 37 based fixed bin(17,0) level 2 dcl 3-30 set ref 327* 327 up_sysctl_$check_acs 000010 constant entry external dcl 49 ref 134 user_attributes based structure level 1 dcl 7-21 user_wc_defined 44 based bit(1) array level 2 packed packed unaligned dcl 3-30 set ref 331* 331 user_wc_min_pct 45 based fixed bin(17,0) array level 2 dcl 3-30 set ref 332* 332 ut_header based structure level 1 dcl 9-16 version 42 based fixed bin(17,0) level 2 dcl 3-30 ref 120 323 version_indicator 40 based char(8) level 2 dcl 3-30 ref 119 323 wcp 000140 automatic pointer dcl 88 set ref 158* 159 162 167 172 172 178 189 191 193 193 196 231* 232 238* 239 244 wordcount parameter fixed bin(17,0) dcl 42 ref 13 115 129 402 410 work_class based structure level 1 dcl 3-94 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 8-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 7-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 2-51 AT_NORMAL internal static char(8) initial packed unaligned dcl 2-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 2-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 2-116 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SAT_entry_lth internal static fixed bin(17,0) initial dcl 5-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 5-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 5-24 SAT_version internal static fixed bin(17,0) initial dcl 5-24 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 7-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 7-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 7-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 7-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 2-120 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 user_abs_attributes based structure level 1 dcl 8-25 NAMES DECLARED BY EXPLICIT CONTEXT. badversn 000715 constant label dcl 121 ref 119 mgt_error 003172 constant label dcl 435 ref 117 122 126 131 137 143 170 176 202 210 226 247 256 271 285 296 302 308 350 361 368 395 shift_err 001542 constant label dcl 224 ref 219 234 242 up_mgt_ 000532 constant entry external dcl 13 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3354 3412 3202 3364 Length 3760 3202 36 331 152 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME up_mgt_ 218 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME up_mgt_ 000100 i up_mgt_ 000101 j up_mgt_ 000102 rslen up_mgt_ 000103 bad_wc up_mgt_ 000104 first_group up_mgt_ 000106 omgtp up_mgt_ 000110 omgtep up_mgt_ 000112 satp up_mgt_ 000114 satep up_mgt_ 000116 notables up_mgt_ 000117 no_words up_mgt_ 000120 offset up_mgt_ 000121 syacn up_mgt_ 000122 ring up_mgt_ 000123 mode up_mgt_ 000124 pct_is_used up_mgt_ 000125 shift up_mgt_ 000126 shift_used up_mgt_ 000136 shift_pct up_mgt_ 000140 wcp up_mgt_ 000142 no_abs up_mgt_ 000143 dflt_q up_mgt_ 000144 char8 up_mgt_ 000147 rq_problem up_mgt_ 000150 ansp up_mgt_ 000152 mgtep up_mgt_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$level_get get_process_id_ hcs_$initiate hcs_$make_seg hcs_$set_bc hcs_$set_safety_sw ioa_$rsnnl reassign_work_classes_ sys_log_$error_log up_sysctl_$check_acs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000523 80 000557 2 53 000561 105 000563 106 000567 108 000601 109 000604 110 000611 111 000616 112 000662 113 000671 115 000672 116 000676 117 000703 119 000704 120 000712 121 000715 122 000722 124 000723 125 000726 126 000733 128 000734 129 000740 130 000745 131 000752 133 000753 134 000762 135 001021 136 001030 137 001035 140 001036 141 001105 142 001111 143 001117 149 001120 151 001125 152 001126 153 001127 154 001130 156 001132 158 001137 159 001145 160 001152 162 001154 165 001166 167 001167 168 001173 170 001226 172 001227 174 001246 176 001301 178 001302 188 001306 189 001307 191 001321 193 001332 196 001347 199 001357 200 001361 202 001433 207 001434 208 001436 209 001441 210 001472 213 001473 214 001505 216 001513 217 001516 218 001530 219 001531 222 001532 223 001541 224 001542 226 001576 228 001577 231 001600 232 001614 233 001620 234 001622 237 001623 238 001626 239 001640 241 001644 242 001646 244 001647 245 001653 247 001705 250 001706 251 001711 252 001717 254 001730 256 001765 259 001766 261 001771 264 001773 267 001774 268 001776 269 002001 271 002032 275 002033 277 002035 279 002043 280 002044 281 002051 283 002111 284 002114 285 002146 288 002147 290 002151 291 002163 292 002171 294 002177 296 002234 299 002235 300 002245 302 002307 305 002310 306 002312 308 002347 310 002350 320 002352 322 002354 323 002356 327 002370 329 002375 330 002400 331 002404 332 002413 335 002416 336 002425 338 002431 339 002457 340 002462 341 002471 346 002475 347 002502 348 002503 350 002537 355 002540 356 002551 357 002555 358 002560 359 002567 361 002625 364 002626 366 002642 368 002700 371 002701 372 002703 375 002704 377 002712 378 002715 379 002717 380 002721 381 002723 382 002725 384 002727 387 002731 392 002732 393 002773 394 002776 395 003003 402 003004 403 003007 405 003016 406 003020 410 003021 411 003053 416 003104 417 003114 422 003117 423 003126 424 003131 425 003165 429 003166 431 003167 433 003171 435 003172 437 003176 ----------------------------------------------------------- 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