COMPILATION LISTING OF SEGMENT as_who Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1919.53_Mon_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1991 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 15 /* format: style4 */ 16 17 /* AS_WHO - print information about who's on Multics. 18* This is a privileged version for use by the Answering Service. 19* This entry point also works as an active function, which returns 20* Person_id.Project_id of processes which would have been printed. 21* 22* AS_WHO$LONG - same thing, but more information. 23* 24* AS_WHO$HMU - give header lines with nusers and load. 25* 26* This command types out the userid's of listed logged-in users 27* from the segment "answer_table", which is maintained by the answering service 28* program "lg_ctl_". The possible arguments are as follows: 29* 30* . -lg print "long who" 31* . -nhe omit headers 32* . -as print information on absentee users 33* . -dmn print information on daemon users 34* . -sc print information on secondary users 35* . -cpu print information about cpu usage 36* . -idle print information about idle time 37* . -connected 38* . print information about connected processes 39* . -disc print information about disconnected processes 40* . -process_id, -pid 41* . print out the process id for each process listed 42* . -pdir_volume {LVname} 43* . -pdv {LVname} 44* . print pdir volumes, or print only users with pdir volume = LVname 45* . -channel channel_id_starname 46* . -chn channel_id_starname 47* . print information on users using named channels 48* . -gp xx print information on group xx 49* . -nm sort lines on user name 50* . -pj sort lines on project id 51* . (the default sort is by time logged in) 52* . -ia print information on interactive users 53* . Name list only users with person name "Name" 54* . .Proj list only users with project name "Proj" 55* . Name.Proj list only users with person name "Name" and project "Proj" 56* END DESCRIPTION */ 57 58 59 /****^ HISTORY COMMENTS: 60* 1) change(70-09-06,VanVleck), approve(), audit(), install(): 61* Initial coding. 62* 2) change(71-07-01,EDS), approve(), audit(), install(): 63* for absentees. 64* 3) change(76-07-01,Wells), approve(), audit(), install(): 65* to understand about FTP channels. 66* 4) change(77-08-01,Casey), approve(), audit(), install(): 67* to optionally print the pdir volume of each user. 68* 5) change(78-09-01,Johnson), approve(), audit(), install(): 69* for long tty channel names (ring0 demultiplexing). 70* 6) change(78-12-01,Casey), approve(), audit(), install(): 71* to know about the foreground absentee queue. 72* 7) change(79-03-21,GDixon), approve(), audit(), install(): 73* to add -channel, -no_header and [as_who]. 74* 8) change(79-04-01,Casey), approve(), audit(), install(): 75* for MR7.0a to print foreground and background absentee users 76* separately in heading. 77* 9) change(79-12-01,Hornig), approve(), audit(), install(): 78* for process preservation and max_users. 79* 10) change(80-09-06,VanVleck), approve(), audit(), install(): 80* for CPU and Idle. 81* 11) change(80-12-01,Kittlitz), approve(), audit(), install(): 82* for hmu ignore most control args. 83* 12) change(81-07-07,Herbst), approve(), audit(), install(): 84* to allow starnames and not implicitly assume Name -> Name*. 85* 13) change(81-07-07,Herbst), approve(), audit(), install(): 86* as_who$hmu fixed not to list names with -ia. 87* 14) change(81-11-01,Kittlitz), approve(), audit(), install(): 88* user_table_entry conversion. 89* 15) change(81-12-01,Kittlitz), approve(), audit(), install(): 90* whotab changes. 91* 16) change(84-11-01,Pandolf), approve(), audit(), install(): 92* to include hc_lock. 93* 17) change(85-12-12,Newcomb), approve(85-12-12,MCR7263), 94* audit(86-01-09,Margolin), install(86-01-28,MR12.0-1008): 95* added the -connected ctl arg; made some minor corrections to declarations 96* and argument processing/AF usage; changed to use ssu_ standalone 97* invocation; fixed some unreported bugs. 98* 18) change(86-03-18,MSharpe), approve(86-04-28,MCR7405), 99* audit(86-07-01,EJSharpe), install(86-08-18,MR12.0-1130): 100* Added -process_id (-pid) control arg, Removed undocumented -net 101* control arg. 102* 19) change(86-07-10,Hartogs), approve(86-07-10,MCR7451), 103* audit(86-08-14,GWMay), install(86-08-18,MR12.0-1130): 104* Fix bugs in as_who. Correct so that idle and cpu times include number of 105* hours. Access ring0_peek only when necessary, thereby allowing use by 106* users with access to some system tables. 107* 20) change(86-08-22,Hartogs), approve(86-08-22,PBF7451), 108* audit(86-08-22,Lippard), install(86-08-22,MR12.0-1139): 109* Fixed to work with .project_id. 110* 21) change(87-04-26,GDixon), approve(87-05-01,MCR7741), 111* audit(87-05-06,Parisek), install(87-08-03,MR12.1-1055): 112* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 113* 22) change(87-08-11,Hartogs), approve(87-08-11,MCR7714), 114* audit(87-08-11,Lippard), install(87-08-13,MR12.1-1085): 115* Fixed to work correctly on successive invocation with -idle and -cpu. 116* 23) change(91-03-21,Vu), approve(91-03-21,MCR8244), audit(91-12-05,Zimmerman), 117* install(91-12-06,MR12.5-1002): 118* as_who incorrectly interprets preemption. 119* 24) change(92-10-02,Zimmerman), approve(92-10-02,MCR8269), 120* audit(92-10-05,WAAnderson), install(92-10-16,MR12.5-1026): 121* Lack of access to copy info from tc_data is now reported on each 122* invocation, rather than once per process. 123* END HISTORY COMMENTS */ 124 125 126 as_who: 127 procedure options (variable, separate_static); 128 129 /* START OF DECLARATIONS */ 130 131 /* Automatic */ 132 dcl argno fixed bin init (0), /* number of argument */ 133 arg_count fixed bin init (0), 134 retp ptr init (null ()), /* ptr to af return arg. */ 135 ap ptr init (null ()), /* ptr to argument */ 136 (pp1, pp2) ptr init (null ()), /* temporaries */ 137 al fixed bin (21) init (0), /* lth of argument */ 138 code fixed bin (35) init (0), /* file-system error code */ 139 (f1, f2) float bin init (0), /* conversion temps */ 140 retl fixed bin (21) init (0), /* max length of af return arg. */ 141 sort fixed bin init (SORT_BY_DATE), /* type of sort */ 142 no_usage bit (1) init (FALSE), /* 1 if can't get CPU usage */ 143 have_read_apt bit (1) init (FALSE), 144 long bit (1) aligned init (FALSE), /* 1 if long who wanted */ 145 abs bit (1) aligned init (FALSE), /* 1 if only information on absentee users */ 146 afsw bit (1) aligned init (FALSE), /* 1 if as_who entry invoked as active fnc */ 147 dmn bit (1) aligned init (FALSE), /* 1 if only info on daemon users */ 148 iasw bit (1) aligned init (FALSE), /* 1 if interactives. */ 149 connected_sw bit (1) aligned init (FALSE), /* 1 if only connected */ 150 disc_sw bit (1) aligned init (FALSE), /* 1 if only disconnected */ 151 chnsw bit (1) aligned init (FALSE), /* 1 if only users of given channels selected. */ 152 nhesw bit (1) aligned init (FALSE), /* 1 if headings should not be printed. */ 153 no_ulist bit (1) aligned init (FALSE), /* 1 if only header ("hmu" cmd) */ 154 pid_sw bit (1) aligned init (FALSE), /* 1 if displaying pid */ 155 sbsw bit (1) aligned init (FALSE), /* 1 if only secondarys */ 156 selgp char (8) aligned init (""), /* Selects group */ 157 selx fixed bin init (0), /* if particular users wanted */ 158 sel_starsw bit (1) init (FALSE), /* ON if asking for a set of users */ 159 dotl fixed bin init (0), /* location of dot in arg */ 160 channel_name char (32), 161 chnnm char (32) init ("**"), /* channels tag used to select users. */ 162 sel_names (100) char (32), 163 (i, j) fixed bin init (0), /* index */ 164 ary (256) fixed bin, /* sort array */ 165 d fixed bin init (0), /* distance between sorted elems */ 166 last fixed bin init (0), /* highest index in whotab */ 167 swap fixed bin init (0), /* 1 if a swap was done */ 168 ajd fixed bin init (0), /* temp for sort, ary(j+d) */ 169 (time, time1) char (16) init (""), /* ASCII time */ 170 why char (124) init (""), /* reason for shutdown */ 171 clock_time fixed bin (71) init (0), 172 (prim, nolist, anon) char (1) init (""), /* pretty print temps */ 173 grp char (8) init (""), /* ... */ 174 absdn char (168) init (""), /* ... */ 175 absen char (32) init (""), /* ... */ 176 aj fixed bin init (0), /* temp, ary(j) */ 177 did fixed bin init (0), /* count of lines printed */ 178 abs_name char (6) init (""), /* temp for absentee equiv of tty name */ 179 select_sw fixed bin init (0), /* switch to indicate whether user is selected */ 180 pers char (28) init (""), /* temp for name */ 181 proj char (28) init (""), /* temp for project */ 182 process_id bit (36), /* temp for 1st half of pid */ 183 absentee_users fixed bin init (0), /* temp for max number of absentee users */ 184 abs_running fixed bin init (0), /* Shows any residual users */ 185 foreground_users fixed bin init (0), /* temp for number of foreground absentee users */ 186 fancy char (1), /* used to eliminate certain new line chars on hmu */ 187 k fixed bin init (0); /* index */ 188 dcl max_chan_name fixed bin init (6); /* max length of name of a tty channel */ 189 dcl pdvsw bit (1) init (FALSE); 190 dcl pdlvix fixed bin init (0); 191 dcl lvnm char (32) init (""); 192 dcl proc_usage char (10) init (""); 193 dcl proc_idle char (10) init (""); 194 dcl (cpusw, idlesw) bit (1) init (FALSE); 195 dcl sci_ptr ptr init (null ()); 196 197 /* Based */ 198 dcl 199 arg char (al) unaligned based (ap), /* pickup for args */ 200 ret char (retl) varying based (retp); /* af return argument. */ 201 202 /* Constant */ 203 dcl ( 204 FALSE bit (1) init ("0"b), 205 MY_NAME char (6) init ("as_who"), 206 MY_NAME_HMU char (21) init ("as_who$how_many_users"), 207 MY_NAME_LONG char (11) init ("as_who$long"), 208 NL char (1) init (" 209 "), 210 SORT_BY_DATE fixed bin init (0), 211 SORT_BY_NAME fixed bin init (1), 212 SORT_BY_PROJECT fixed bin init (2), 213 TEN_UNITS fixed bin init (10.0e0), /* Ten units are stored for each normal user */ 214 TRUE bit (1) init ("1"b) 215 ) int static options (constant); 216 217 /* Internal Static */ 218 dcl ( 219 ip ptr init (null), /* ptr to installation_parms */ 220 initializer_process bit (1) init ("0"b /* FALSE */), 221 static_ansp ptr init (null), /* ptr to answer table */ 222 static_autp ptr init (null), /* ptr to absentee user table, used to decide when to */ 223 /* re-init various pointers to tables */ 224 static_dtp ptr init (null), 225 static_dutp ptr init (null), /* ptr to daemon user table */ 226 sysdir char (64) init (""), /* must be set first time through */ 227 tcml fixed bin (19) init (0), 228 tcmp0 ptr init (null ()), 229 whoptr ptr init (null) /* ptr to system "whotab" */ 230 ) int static; 231 232 /* Error codes */ 233 dcl (error_table_$badopt, 234 error_table_$logical_volume_not_defined, 235 error_table_$noarg, 236 error_table_$too_many_args 237 ) fixed bin (35) ext static; 238 239 /* Entry */ 240 dcl check_star_name_$entry entry (char(*), fixed bin(35)); 241 dcl match_star_name_ entry (char(*), char(*), fixed bin(35)); 242 dcl disk_table_$get_dtp entry (ptr); 243 dcl mdc_$read_disk_table entry (ptr, fixed bin (35)); 244 dcl get_process_id_ entry returns (bit (36)); 245 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 246 dcl (ioa_, ioa_$nnl) entry options (variable); 247 dcl ioa_$rsnnl entry options (variable); 248 dcl date_time_ entry (fixed bin (71), char (*)); 249 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 250 dcl ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)); 251 dcl ring_zero_peek_ entry (ptr, ptr, fixed bin (19), fixed bin (35)); 252 dcl ring_zero_peek_$get_max_length_ptr entry (ptr, fixed bin (19), fixed bin (35)); 253 dcl ssu_$abort_line entry () options (variable); 254 dcl ssu_$arg_count entry (ptr, fixed bin); 255 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 256 dcl ssu_$destroy_invocation entry (ptr); 257 dcl ssu_$get_temp_segment entry (ptr, char (*), ptr); 258 dcl ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, ptr, 259 fixed bin (21)); 260 dcl ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, 261 fixed bin (35)); 262 263 /* External static */ 264 dcl sys_info$system_control_dir char (168) varying aligned external static; 265 266 /* Builtin */ 267 dcl (addr, addrel, clock, divide, fixed, hbound, index, length, max, null, rtrim, search, substr) builtin; 268 269 /* Condition */ 270 dcl cleanup condition; 271 272 /* as_who: */ 273 /* procedure options (variable, separate_static); */ 274 275 on cleanup call clean_up (); 276 call ssu_$standalone_invocation (sci_ptr, MY_NAME, "", 277 null (), ABORT_ENTRY, code); 278 if code ^= 0 then go to exit_no_cleanup; 279 280 call ssu_$return_arg (sci_ptr, arg_count, afsw, 281 retp, retl); 282 283 if afsw then do; 284 ret = ""; 285 nhesw = TRUE; 286 end; 287 288 arglp: if arg_count ^= 0 then 289 READ_ARGS: do argno = 1 to arg_count; 290 call ssu_$arg_ptr (sci_ptr, argno, ap, al); /* get nth argument */ 291 292 if arg = "-nm" | arg = "-name" then sort = SORT_BY_NAME; 293 else if arg = "-pj" | arg = "-project" then sort = SORT_BY_PROJECT; 294 else if arg = "-lg" | arg = "-long" then long = TRUE; /* long who? */ 295 else if arg = "-nhe" | arg = "-no_header" then nhesw = TRUE; /* omit headers ? */ 296 else if arg = "-as" | arg = "-absentee" then abs = TRUE; /* absentee users? */ 297 else if arg = "-dmn" | arg = "-daemon" then dmn = TRUE; /* Daemons? */ 298 else if arg = "-ia" | arg = "-interactive" then iasw = TRUE; 299 else if arg = "-connected" then connected_sw = TRUE; 300 else if arg = "-disconnected" | arg = "-disc" then disc_sw = TRUE; /* disconnected processes */ 301 else if arg = "-process_id" | arg = "-pid" then pid_sw = TRUE; /* display the process_id */ 302 else if arg = "-gp" | arg = "-group" then do; 303 if argno = arg_count then 304 BAD_GROUP: call ssu_$abort_line (sci_ptr, error_table_$noarg, "-group requires a load control group name."); 305 argno = argno + 1; 306 call ssu_$arg_ptr (sci_ptr, argno, ap, al); 307 if index (arg, "-") = 1 then 308 go to BAD_GROUP; 309 selgp = arg; 310 end; 311 else if arg = "-sc" | arg = "-secondary" then sbsw = TRUE; /* Secondary users? */ 312 else if arg = "-pdir_volume" | arg = "-pdv" then 313 PROCESS_PDIR_VOL_ARG: 314 do; /* optionally followed by LVname */ 315 if argno = arg_count then 316 pdvsw = TRUE; /* no lvname */ 317 else do; /* see if next arg is lvname or ctl arg */ 318 call ssu_$arg_ptr (sci_ptr, argno + 1, ap, al); 319 if index (arg, "-") = 1 then 320 pdvsw = TRUE; /* ctl arg ==> no LV name */ 321 else do; 322 lvnm = arg; /* remember the name, for later lookup in disk_table */ 323 pdvsw = FALSE; /* don't print each users pdlvname - they will all be the same */ 324 argno = argno + 1; /* increment so we don't re-process LVname */ 325 end; 326 end; 327 end PROCESS_PDIR_VOL_ARG; 328 else if arg = "-cpu" then cpusw = TRUE; 329 else if arg = "-idle" then idlesw = TRUE; 330 331 else if arg = "-chn" | arg = "-channel" then do; 332 chnsw = TRUE; 333 if argno = arg_count then 334 bad_chn: call ssu_$abort_line (sci_ptr, error_table_$noarg, "-channel requires a channel id argument."); 335 argno = argno + 1; 336 call ssu_$arg_ptr (sci_ptr, argno, ap, al); 337 if index (arg, "-") = 1 then 338 go to bad_chn; 339 chnnm = arg; 340 call check_star_name_$entry (chnnm, code); 341 if code < 0 | code > 2 then 342 call ssu_$abort_line (sci_ptr, code, "Invalid channel id ^a.", arg); 343 end; 344 else if index (arg, "-") = 1 then 345 call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 346 else do; /* n.o.t.a., must be user-selection */ 347 selx = selx + 1; /* up index in select array */ 348 if selx > hbound (sel_names, 1) then 349 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, 350 "Too many selection parameters given, maximum is ^d.", hbound (sel_names, 1)); 351 if search (arg, "*?") ^= 0 then sel_starsw = TRUE; /* stars specified at all */ 352 dotl = index (arg, "."); /* where's the dot? */ 353 if dotl = 0 then sel_names (selx) = arg || ".*"; /* Person_starname -> Person_starname.* */ 354 else if dotl = 1 then do; 355 sel_starsw = TRUE; /* asking for a set of users */ 356 sel_names (selx) = "*" || arg; /* Proj_starname -> *.Proj_starname */ 357 end; 358 else sel_names (selx) = arg; 359 end; 360 end READ_ARGS; 361 362 go: if static_autp = null then do; /* is this the first call? */ 363 if sysdir = "" then sysdir = sys_info$system_control_dir; 364 call initiate_file_ (sysdir, "installation_parms", R_ACCESS, ip, (0) /* ignore bit count */, code); 365 if ip = null then call ssu_$abort_line (sci_ptr, code, "installation_parms"); 366 call initiate_file_ (sysdir, "daemon_user_table", R_ACCESS, static_dutp, (0) /* ignore bit count */, code); 367 if static_dutp = null then call ssu_$abort_line (sci_ptr, code, "daemon_user_table"); 368 call initiate_file_ (sysdir, "whotab", R_ACCESS, whoptr, (0) /* ignore bit count */, code); 369 if whoptr = null then call ssu_$abort_line (sci_ptr, code, "whotab"); 370 call initiate_file_ (sysdir, "answer_table", R_ACCESS, static_ansp, (0) /* ignore bit count */, code); 371 if static_ansp = null then call ssu_$abort_line (sci_ptr, code, "answer_table"); 372 373 if static_ansp->anstbl.as_procid = get_process_id_ () then 374 /* if we are the initializer process */ 375 initializer_process = TRUE; /* remember that because we have a disk table copy */ 376 else initializer_process = FALSE; /* we don't, so we have to make one */ 377 /* set autp so we don't re-initialize every invocation */ 378 call initiate_file_ (sysdir, "absentee_user_table", R_ACCESS, static_autp, (0) /* ignore bit count */, code); 379 if static_autp = null then call ssu_$abort_line (sci_ptr, code, "absentee_user_table"); 380 end; 381 382 if (cpusw | idlesw) & tcmp0 = null then do; 383 call ring0_get_$segptr ("", "tc_data", tcmp0, code); 384 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "tc_data"); 385 call ring_zero_peek_$get_max_length_ptr (tcmp0, tcml, code); 386 if code ^= 0 then do; 387 tcmp0 = null; 388 call ssu_$abort_line (sci_ptr, code, "tc_data"); 389 end; 390 391 end; 392 393 ansp = static_ansp; 394 autp = static_autp; 395 dutp = static_dutp; 396 397 if connected_sw & disc_sw then do; 398 iasw = TRUE; /* conn & disc users = interactive */ 399 connected_sw, disc_sw = FALSE; 400 end; 401 402 if pdvsw | lvnm ^= "" then do; /* if we need disk_table */ 403 if static_dtp = null then do; /* if we don't have it, get it */ 404 if initializer_process then /* if this is the initializer process, we always have a copy */ 405 call disk_table_$get_dtp (static_dtp); /* of disk_table in ring 4, so get ptr to that */ 406 else /* otherwise we have to make a copy and update it each time */ 407 call ssu_$get_temp_segment (sci_ptr, "disk_table", static_dtp); 408 end; 409 410 if ^initializer_process then do; /* update as_who_disk_table */ 411 call mdc_$read_disk_table (static_dtp, code); 412 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "error from mdc_$read_disk_table"); 413 end; 414 415 dtp = static_dtp; 416 417 if lvnm ^= "" then do; /* if -pdv LVname given, look up LVname in disk_table */ 418 do i = 1 to dt.n_lv_entries 419 while (dt.lv_array (i).lvname ^= lvnm); end; 420 if i > dt.n_lv_entries then 421 call ssu_$abort_line (sci_ptr, error_table_$logical_volume_not_defined, "^a", lvnm); 422 pdlvix = i; /* remember disk table index of the specified vol */ 423 end; 424 end; 425 max_chan_name = 6; /* compute length of longest channel name */ 426 do j = 1 to anstbl.current_size; 427 utep = addr (anstbl.entry (j)); 428 if ute.active >= NOW_LOGGED_IN then 429 max_chan_name = max (max_chan_name, length (rtrim (ute.tty_name))); 430 end; 431 432 if nhesw then go to no_header; 433 if no_ulist then fancy = " "; /* reduce number of new lines between totals */ 434 else fancy = NL; 435 436 clock_time = clock (); 437 absentee_users = autbl.max_abs_users; 438 abs_running = absentee_users + autbl.n_abs_run; 439 foreground_users = autbl.n_abs_run - autbl.n_background_abs; 440 441 if ^sbsw & 442 ^chnsw & 443 selgp = "" & 444 pdlvix = 0 & 445 selx = 0 then do; /* print header if no users selected */ 446 if dmn then do; 447 call ioa_ ("^d daemons.", whotab.n_daemons); 448 if no_ulist then go to pnl; 449 end; 450 if (connected_sw | disc_sw | iasw | chnsw) then do; 451 if no_ulist then do; 452 f1 = anstbl.n_units / TEN_UNITS; 453 f2 = anstbl.max_units / TEN_UNITS; 454 go to print_ia_hdr; 455 end; 456 call ioa_ (""); 457 if long then go to prt_user_header; 458 else go to ias; 459 end; 460 if abs then do; 461 if long then do; 462 call ioa_ ("Absentee users = ^d background^[,^x^d foreground^;^s^]; Max background absentee users = ^d^a", 463 autbl.n_background_abs, (foreground_users ^= 0), foreground_users, absentee_users, fancy); 464 go to prt_user_header; /* Print listing header */ 465 end; 466 call ioa_ (""); /* Print blank line first */ 467 go to print_abs_hdr; /* print short absentee header only */ 468 end; 469 if dmn then do; 470 call ioa_ (""); 471 if long then go to prt_user_header; 472 else go to daemons; 473 end; 474 475 f1 = anstbl.n_units / TEN_UNITS; /* format up units */ 476 f2 = anstbl.max_units / TEN_UNITS; /* ... */ 477 if long then do; /* long who? */ 478 call date_time_ (whotab.timeup, time); /* yup. make heading */ 479 call ioa_ ("^/Multics ^a; ^a", whotab.sysid, installation_parms.installation_id); 480 call ioa_ ("Load = ^.1f of ^.1f units; users = ^d of ^d", f1, f2, anstbl.n_users, anstbl.max_users); 481 if abs_running > 0 482 then call ioa_ ("Absentee users = ^d background^[,^x^d foreground^;^s^]; Max background absentee users = ^d", 483 autbl.n_background_abs, (foreground_users ^= 0), foreground_users, absentee_users); 484 call ioa_ ("Daemon users = ^d", whotab.n_daemons); 485 call ioa_ ("System up since ^a", time); 486 if whotab.nextsd ^= 0 then do; 487 why = whotab.why; 488 if why < "" then why = ""; 489 call date_time_ (whotab.nextsd, time); 490 if whotab.until = 0 then call ioa_ ("Scheduled shutdown at ^a ^a", time, why); 491 else do; 492 call date_time_ (whotab.until, time1); 493 call ioa_ ("Scheduled shutdown from ^a to ^a ^a", time, time1, why); 494 end; 495 end; 496 call date_time_ (whotab.lastsd, time); 497 if whotab.erfno = "crash" then call ioa_ ("Last crash was at ^a^a", time, fancy); 498 else if whotab.lastsd = 0 then call ioa_ ("^a", fancy); 499 else if whotab.erfno = "" then call ioa_ ("Last shutdown was at ^a^a", time, fancy); 500 else call ioa_ ("Last crash (ERF# ^a) was at ^a^a", whotab.erfno, time, fancy); 501 prt_user_header: 502 if no_ulist then go to pnl; 503 call ioa_ ("^4xLogin at^6xTTY Load^3xChan^vxGroup^3x^[^3xCPU^3x ^]^[^3xIdle^2x ^]^[ Process ID ^] PNDS User ID^[^2x(pdir_volume)^]^/", 504 max_chan_name - length (" "), cpusw, idlesw, pid_sw, pdvsw); 505 end; 506 else do; /* short who. */ 507 print_ia_hdr: call ioa_ ("^/Multics ^a, load ^.1f/^.1f; ^d/^d users, ^d daemons.", whotab.sysid, 508 f1, f2, anstbl.n_users, anstbl.max_users, whotab.n_daemons); 509 if abs_running > 0 & (^no_ulist | abs | (^iasw & ^dmn)) 510 then /* ! */ 511 print_abs_hdr: call ioa_ ("Absentee users ^d/^d^[^x(+^d FG)^]", 512 autbl.n_background_abs, absentee_users, (foreground_users ^= 0), foreground_users); 513 call ioa_$nnl ("^a", fancy); /* Could have put in a conditional */ 514 end; 515 end; 516 no_header: 517 if no_ulist then go to pnl; /* if "hmu" command */ 518 if (connected_sw | disc_sw | iasw) then go to ias; 519 if abs then go to abs_portion; /* if "as_who -as" command */ 520 if dmn then go to daemons; 521 522 ias: last = anstbl.current_size; /* save high limit on who */ 523 do j = 1 to last; /* set up sort array */ 524 ary (j) = j; /* ... */ 525 end; 526 527 d = last; /* set up for Shell sort */ 528 pass: d = divide (d + 1, 2, 17, 0); /* ... */ 529 swap = 0; /* ... */ 530 do j = 1 to last - d; /* comparison loop */ 531 aj = ary (j); /* make temps */ 532 ajd = ary (j + d); /* ... */ 533 pp1 = addr (anstbl.entry (aj)); 534 pp2 = addr (anstbl.entry (ajd)); 535 if sort = SORT_BY_DATE then 536 if pp1 -> ute.login_time > pp2 -> ute.login_time then go to ic; 537 if sort = SORT_BY_NAME then 538 if pp1 -> ute.person > pp2 -> ute.person then go to ic; 539 if sort = SORT_BY_PROJECT then 540 if pp1 -> ute.project > pp2 -> ute.project then go to ic; 541 else if pp1 -> ute.project = pp2 -> ute.project then 542 if pp1 -> ute.person > pp2 -> ute.person then do; 543 ic: ary (j) = ajd; /* No. Swap entries */ 544 ary (j + d) = aj; /* ... */ 545 swap = swap + 1; /* remember a swap */ 546 end; 547 end; 548 if swap > 0 then go to pass; /* if out of order do it again */ 549 if d > 1 then go to pass; /* ... */ 550 551 do j = 1 to last; /* now the print loop */ 552 utep = addr (anstbl.entry (ary (j))); /* set up ptr to user */ 553 if ute.active < NOW_LOGGED_IN then go to skip; /* skip dead entries */ 554 pers = ute.person; /* copy personal name */ 555 proj = ute.project; /* copy project */ 556 if pid_sw then process_id = ute.proc_id; /* copy process id */ 557 if selgp ^= "" then if ute.group ^= selgp then go to skip; 558 if pdlvix > 0 & ute.pdir_lvix ^= pdlvix then goto skip; 559 if sbsw then if ute.standby_line = 0 then go to skip; 560 if connected_sw then 561 if ute.uflags.disconnected then go to skip; 562 if disc_sw then if ^ute.uflags.disconnected then goto skip; 563 if chnsw then do; /* select users by channel id. */ 564 call match_star_name_ (ute.tty_name, chnnm, code); 565 if code ^= 0 then go to skip; 566 end; 567 568 if selx = 0 then go to print; /* any users selected? */ 569 call select; /* check for selected users */ 570 if select_sw = 0 then go to skip; /* user not in selected group */ 571 572 print: did = did + 1; /* remember we did one */ 573 if ute.anonymous = 0 then anon = " "; 574 else anon = "*"; 575 if ute.preempted ^= 0 then prim = "X"; 576 else if ute.at.nobump then prim = "+"; /* Can be bumped by operator? */ 577 else if ute.standby_line = 1 then prim = "S";/* Secondary? */ 578 else if ute.cant_bump_until < clock_time then prim = ">"; 579 else prim = " "; 580 if pdvsw then call get_lvnm ((ute.pdir_lvix)); /* sets lvnm */ 581 call get_usage (ute.proc_id, ute.cpu_usage); 582 if afsw then do; 583 ret = ret || rtrim (pers); 584 ret = ret || "."; 585 ret = ret || rtrim (proj); 586 ret = ret || " "; 587 end; 588 else if long then do; /* long who? */ 589 call date_time_ (ute.login_time, time); /* yup. */ 590 if substr (time, 1, length ("mm/dd/yy")) = substr (time1, 1, length ("mm/dd/yy")) then substr (time, 1, length ("mm/dd/yy")) = (8)" "; 591 else time1 = time; 592 f1 = ute.user_weight / TEN_UNITS; /* get nice units */ 593 if ute.at.nolist then nolist = "N"; 594 else nolist = " "; 595 grp = ute.group; /* Get group */ 596 if grp = "Other" then grp = ""; 597 598 /**** Avoid operator mistakes by not displaying channel name when the user 599* is disconnected. This channel name is not terribly useful anyway in 600* this case, and prevents attempting to bump disconnected users by channel 601* name (which may result in bumping the user currently on that channel). */ 602 if ute.uflags.disconnected then channel_name = ""; 603 else channel_name = ute.tty_name; 604 call ioa_ ("^16a ^4a ^4.1f^3x^va ^8a^[^11a ^;^s^]^[^11a^;^s^] ^[^12.3b ^;^s^]^1a^1a^[D^; ^]^[S^; ^] ^1a^a.^a^[^2x(^a)^;^s^]", 605 time, ute.tty_id_code, f1, 606 max_chan_name, channel_name, grp, 607 cpusw, proc_usage, 608 idlesw, proc_idle, pid_sw, process_id, 609 prim, nolist, ute.uflags.disconnected, ute.uflags.suspended, anon, 610 pers, proj, pdvsw, lvnm); 611 end; 612 else do; /* short who. */ 613 call ioa_ ("^[^11a ^;^s^]^[^11a ^;^s^]^[^12.3b ^;^s^]^a^a.^a ^a^[^2x(^a)^;^s^]", 614 cpusw, proc_usage, 615 idlesw, proc_idle, pid_sw, process_id, 616 anon, pers, proj, prim, pdvsw, lvnm); 617 end; 618 skip: end; 619 if (connected_sw | disc_sw | iasw) then if ^abs then if ^dmn then go to done; 620 else go to daemons; 621 622 abs_portion: 623 if autbl.n_abs_run <= 0 then go to daemons; 624 do j = 1 to autbl.current_size; /* run through table */ 625 utep = addr (autbl.entry (j)); /* get address of abs user entry */ 626 if ute.active = 0 then go to skip1; /* only look at used entries */ 627 pers = ute.person; /* copy personal name */ 628 proj = ute.project; /* copy project name */ 629 if pid_sw then process_id = ute.proc_id; /* copy process id */ 630 if selgp ^= "" then if ute.group ^= selgp then go to skip1; 631 if pdlvix > 0 & ute.pdir_lvix ^= pdlvix then goto skip1; 632 if sbsw then go to skip1; 633 634 call ioa_$rsnnl ("abs^d", abs_name, k, j); 635 if chnsw then do; /* select absentee users by abs_name. */ 636 call match_star_name_ (abs_name, chnnm, code); 637 if code ^= 0 then go to skip1; 638 end; 639 640 if selx = 0 then go to print1; /* are any users selected */ 641 call select; /* check for selected users */ 642 if select_sw = 0 then go to skip1; /* user not in selected group */ 643 print1: did = did + 1; /* increment count of printed persons */ 644 if ute.anonymous = 0 then anon = " "; 645 else anon = "*"; 646 call expand_pathname_ ((ute.input_seg), absdn, absen, code); 647 k = index (absen, ".absin"); 648 if k > 0 then substr (absen, k) = ""; 649 if pdvsw then call get_lvnm ((ute.pdir_lvix)); /* sets lvnm */ 650 call get_usage (ute.proc_id, ute.cpu_usage); 651 if afsw then do; 652 ret = ret || rtrim (pers); 653 ret = ret || "."; 654 ret = ret || rtrim (proj); 655 ret = ret || " "; 656 end; 657 else if long then do; 658 call date_time_ (ute.login_time, time); 659 if substr (time, 1, length ("mm/dd/yy")) = substr (time1, 1, length ("mm/dd/yy")) then substr (time, 1, length ("mm/dd/yy")) = (8)" "; 660 else time1 = time; 661 f1 = ute.user_weight / TEN_UNITS; 662 grp = ute.group; 663 if grp = "Other" then grp = ""; 664 call ioa_ ("^16a Q ^[FG^s^;^d^x^] ^4.1f^3x^va ^8a^[^11a ^;^s^]^[^11a^;^s^]^[ ^12.3b^;^s^] A ^[S^; ^] ^1a^a.^a (^a)^[^2x(^a)^;^s^]", 665 time, (ute.queue = 0), ute.queue, f1, 666 max_chan_name, abs_name, grp, 667 cpusw, proc_usage, 668 idlesw, proc_idle, pid_sw, process_id, 669 ute.uflags.suspended, 670 anon, pers, proj, absen, pdvsw, lvnm); 671 end; 672 else call ioa_ ("^[^11a ^;^s^]^[^11a ^;^s^]^[^12.3b ^;^s^]^a^a.^a (^a)^[^2x(^a)^;^s^]", 673 cpusw, proc_usage, 674 idlesw, proc_idle, pid_sw, process_id, 675 anon, pers, proj, absen, pdvsw, lvnm); 676 skip1: end; 677 678 daemons: if abs then if ^dmn then go to done; 679 do j = 1 to dutbl.current_size; /* print out daemons */ 680 utep = addr (dutbl.entry (j)); 681 if ute.active ^= NOW_HAS_PROCESS then go to skip2; /* skip if not in */ 682 pers = ute.person; 683 proj = ute.project; 684 if pid_sw then process_id = ute.proc_id; 685 if selgp ^= "" then if ute.group ^= selgp then go to skip2; 686 if pdlvix > 0 & ute.pdir_lvix ^= pdlvix then goto skip2; 687 if sbsw then go to skip2; 688 689 if chnsw then do; /* select daemons by tty_name */ 690 call match_star_name_ (ute.tty_name, chnnm, code); 691 if code ^= 0 then go to skip2; 692 end; 693 694 if selx = 0 then go to print2; 695 call select; 696 if select_sw = 0 then go to skip2; 697 print2: did = did + 1; 698 if pdvsw then call get_lvnm ((ute.pdir_lvix)); /* sets lvnm */ 699 call get_usage (ute.proc_id, ute.cpu_usage); 700 if afsw then do; 701 ret = ret || rtrim (pers); 702 ret = ret || "."; 703 ret = ret || rtrim (proj); 704 ret = ret || " "; 705 end; 706 else if long then do; 707 call date_time_ (ute.login_time, time); 708 if substr (time, 1, length ("mm/dd/yy")) = substr (time1, 1, length ("mm/dd/yy")) then substr (time, 1, length ("mm/dd/yy")) = (8)" "; 709 else time1 = time; 710 f1 = ute.user_weight / 1e1; 711 if ute.at.nolist then nolist = "N"; else nolist = " "; 712 grp = ute.group; 713 if grp = "Other" then grp = ""; 714 715 /**** Avoid operator mistakes by not displaying channel name when the user 716* is disconnected. This channel name is not terribly useful anyway in 717* this case, and prevents attempting to bump disconnected users by channel 718* name (which may result in bumping the user currently on that channel). */ 719 if ute.uflags.disconnected then channel_name = ""; 720 else channel_name = ute.tty_name; 721 call ioa_ ("^16a ^4a ^4.1f^3x^va ^8a^[^11a ^;^s^]^[^11a^;^s^]^[^12.3b^;^s^] D^1a ^a.^a^[^2x(^a)^;^s^]", 722 time, ute.tty_id_code, f1, 723 max_chan_name, channel_name, grp, 724 cpusw, proc_usage, 725 idlesw, proc_idle, pid_sw, process_id, 726 nolist, pers, proj, pdvsw, lvnm); 727 end; 728 else do; /* short */ 729 call ioa_ ("^[^11a ^;^s^]^[^11a ^;^s^]^[^12.3b ^;^s^]^a.^a D^[^2x(^a)^;^s^]", 730 cpusw, proc_usage, 731 idlesw, proc_idle, pid_sw, process_id, 732 pers, proj, pdvsw, lvnm); 733 end; 734 skip2: end; 735 736 done: if afsw then do; 737 if length (ret) > 0 then /* remove trailing blank from list of pers.proj ids */ 738 ret = substr (ret, 1, length (ret) - 1); 739 end; 740 else if selx ^= 0 then /* If user names specified */ 741 if did = 0 then do; /* if printed nobody */ 742 if pdlvix = 0 then /* if users were not eliminated because of -pdv LVname */ 743 call ioa_ ("User^[s^] not logged in.", selx > 1 | sel_starsw); 744 end; 745 else /* ! */ 746 pnl: call ioa_ (""); /* extra CR */ 747 else if did ^= 0 /* were any printed? */ 748 then go to pnl; 749 750 if pdlvix ^= 0 & did = 0 then 751 call ioa_ ("No^[ne of the specified^] users have process directories on volume ""^a""", 752 ((selgp ^= "") | sbsw | selx ^= 0 | connected_sw | disc_sw | iasw | abs | dmn), lvnm); 753 754 exit: call clean_up; /* releases temp segs etc. */ 755 exit_no_cleanup: 756 return; /* done. */ 757 758 /* end as_who; */ 759 760 clean_up: proc; 761 762 /* reset a pointer and get rid of the ssu invocation, and thus */ 763 /* any temporary storage acquired. */ 764 765 if ^initializer_process then static_dtp = null; /* destroy will release temp seg, if acquired */ 766 if sci_ptr ^= null then call ssu_$destroy_invocation (sci_ptr); 767 768 end clean_up; 769 770 as_who$long: entry; 771 on cleanup call clean_up (); 772 call ssu_$standalone_invocation (sci_ptr, MY_NAME_LONG, "", 773 null (), ABORT_ENTRY, code); 774 if code ^= 0 then go to exit_no_cleanup; 775 776 call ssu_$arg_count (sci_ptr, arg_count); /* not allowed to be an AF */ 777 778 long = TRUE; /* set switch and join up */ 779 go to arglp; 780 781 as_who$how_many_users: 782 as_who$hmu: entry (); 783 784 call ssu_$standalone_invocation (sci_ptr, MY_NAME_HMU, "", 785 null (), ABORT_ENTRY, code); 786 if code ^= 0 then go to exit_no_cleanup; 787 788 call ssu_$arg_count (sci_ptr, arg_count); /* not allowed to be an AF */ 789 if arg_count > 0 /* no args allowed */ 790 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "No arguments allowed, ^d given.", arg_count); 791 792 no_ulist = TRUE; /* do just a 793* header */ 794 go to go; 795 796 as_who$as_who_init: entry (sysdirname); 797 798 dcl sysdirname char (*) parameter; 799 800 sysdir = sysdirname; 801 static_ansp, static_autp, static_dutp = null; 802 return; 803 804 ABORT_ENTRY: 805 procedure (); 806 go to exit; 807 end ABORT_ENTRY; 808 809 select: proc; 810 /* internal procedure to see if user is selected by name */ 811 812 dcl group_id char (32); 813 dcl code fixed bin (35); 814 815 select_sw = 1; /* assume that user is part of selected group */ 816 group_id = rtrim (pers) || "." || proj; 817 do k = 1 to selx; /* search all classes of selection */ 818 call match_star_name_ (group_id, sel_names (k), code); 819 if code = 0 then return; 820 end; 821 822 select_sw = 0; /* user is not part of selected group */ 823 return; 824 end select; 825 826 get_lvnm: proc (lvix); 827 dcl lvix fixed bin; 828 829 if lvix > 0 & lvix <= dt.n_lv_entries then 830 lvnm = dt.lv_array (lvix).lvname; 831 else lvnm = "?"; 832 return; 833 834 end get_lvnm; 835 836 837 get_usage: proc (x, y); 838 839 dcl x bit (36) aligned; 840 dcl y fixed bin (71); 841 dcl i fixed bin, code fixed bin (35); 842 dcl white_len fixed bin; 843 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 844 dcl find_char_$last_in_list entry (char (*), char (*)) returns (fixed bin (21)); 845 if no_usage then do; 846 abort: proc_usage = ""; 847 proc_idle = ""; 848 return; 849 end; 850 851 /* Grab metering data we need. */ 852 853 if ^have_read_apt then do; 854 call ssu_$get_temp_segment (sci_ptr, "apt", tcmp); 855 call ring_zero_peek_ (tcmp0, tcmp, tcml, code); 856 if code ^= 0 then do; 857 no_usage = TRUE; 858 go to abort; 859 end; 860 have_read_apt = TRUE; 861 end; 862 863 aptep = addrel (tcmp, tcm.apt_offset); 864 do i = 0 to tcm.apt_size - 1; 865 if apte.processid = x then go to found; 866 aptep = addrel (aptep, tcm.apt_entry_size); 867 end; 868 go to abort; 869 found: proc_usage = date_time_$format ("^ZZHd:^ZZMH:^99.(6)9UM", apte.virtual_cpu_time+ y, "gmt", ""); 870 if substr (proc_usage, 1, length ("::")) = "::" then substr (proc_usage, 1, length (" ")) = " "; 871 if substr (proc_usage, 1, length (":")) = ":" then substr (proc_usage, 1, length (" ")) = " "; 872 proc_usage = substr (proc_usage, 1, find_char_$last_in_list (proc_usage, ".") + 1); 873 do white_len = 1 to 9 - find_char_$last_in_list (proc_usage, "."); 874 proc_usage = " " || substr (proc_usage, 1, find_char_$last_in_list (proc_usage, ".") + 1); 875 end; 876 proc_idle = date_time_$format ("^ZZHd:^ZZMH:^99.(6)9UM", clock () - apte.state_change_time, "gmt", ""); 877 if substr (proc_idle, 1, length ("::")) = "::" then substr (proc_idle, 1, length (" ")) = " "; 878 if substr (proc_idle, 1, length (":")) = ":" then substr (proc_idle, 1, length (" ")) = " "; 879 proc_idle = substr (proc_idle, 1, find_char_$last_in_list (proc_idle, ".") + 1); 880 do white_len = 1 to 9 - find_char_$last_in_list (proc_idle, "."); 881 proc_idle = " " || substr (proc_idle, 1, find_char_$last_in_list (proc_idle, ".") + 1); 882 end; 883 if fixed (apte.state, 18) = 2 then proc_idle = (9)" " || "R"; 884 else if fixed (apte.state, 18) = 3 then proc_idle = (9)" " || "W"; 885 else if fixed (apte.state, 18) = 1 then proc_idle = (9)" " || "X"; 886 return; 887 888 end get_usage; 889 890 /* BEGIN INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The absentee user table is the control data base for the absentee */ 1 6 /* facility. It has a header, with scheduling parameters, then one user */ 1 7 /* table entry for each logged-in absentee job. */ 1 8 /* */ 1 9 /* Programs which use this table must also include */ 1 10 /* user_table_header.incl.pl1 and user_table_entry.incl.pl1. */ 1 11 /* */ 1 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 13 1 14 1 15 /****^ HISTORY COMMENTS: 1 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 17* Replace abs_user_tab.incl.pl1. 1 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 1 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 20* Use ut_header common to all user control tables. 1 21* END HISTORY COMMENTS */ 1 22 1 23 1 24 dcl AUTBL_version_4 fixed bin int static options (constant) init (4); 1 25 1 26 dcl autp ptr automatic init (null); 1 27 1 28 dcl 1 autbl based (autp) aligned, /* a per system table to store info on absentee processes */ 1 29 2 header like ut_header, /* Header common to all user tables. */ 1 30 1 31 /* Counter elements */ 1 32 2 n_abs_run fixed bin, /* actual number of absentee processes current */ 1 33 2 max_abs_users fixed bin, /* max number of background absentee processes permitted */ 1 34 2 n_background_abs fixed bin, /* number of absentee processes not from foreground queue */ 1 35 2 n_sec_fg fixed bin, /* number of secondary foreground absentee jobs */ 1 36 2 idle_units fixed bin, /* used in adjusting abs_maxu dynamically */ 1 37 2 abs_units fixed bin, /* part of anstbl.n_units used by background absentees */ 1 38 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 1 39 2 qres (4) fixed bin, /* number of slots reserved for each background queue */ 1 40 2 rsc_waiting (-1:4) fixed bin, /* number of requests waiting for resources, from each queue */ 1 41 2 qerr (-1:4) fixed bin, /* number of consecutive errors for q (dropped if > QERR_MAX) */ 1 42 2 cpu_limit (4) fixed bin (35), /* current per-queue cpu time limits */ 1 43 1 44 /* absentee user manager values. */ 1 45 2 defer_channel fixed bin (71), /* IPC for time-defered queue entries */ 1 46 2 absentee_rq_chn fixed bin (71), /* IPC channel for absentee requests */ 1 47 2 last_queue_searched fixed bin, /* highest queue looked at by scheduler */ 1 48 2 debugging fixed bin, /* take asdumps at strategic places */ 1 49 2 control, /* see also whotab.incl.pl1 */ 1 50 3 mnbz bit (1) unal, /* must not be zero */ 1 51 3 abs_maxu_auto bit (1) unal, /* 1 if abs maxu has not been set by operator command */ 1 52 3 abs_maxq_auto bit (1) unal, /* 1 if abs maxq has not been set by operator command */ 1 53 3 abs_qres_auto bit (1) unal, /* 1 if abs qres has not been set by operator command */ 1 54 3 abs_cpu_limit_auto bit (1) unal, /* 1 if abs cpu_limit has not been set by operator command */ 1 55 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue has been dropped because of errors */ 1 56 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 1 57 3 abs_stopped bit (1) unal, /* 1 if abs stop command was issued */ 1 58 /* both 1 if we're waiting for the last jobs to log out */ 1 59 3 aum_ctl bit (1) unal, /* for AUM to tell AU to start a new sequence */ 1 60 3 lc_list bit (1) unal, /* for AU to tell AUM that the lc list is non-empty */ 1 61 /* comments in AU and AUM explain aum_ctl and lc_list */ 1 62 3 control_pad (21) bit (1) unal, /* fill out rest of word */ 1 63 2 aum_pad fixed bin, 1 64 1 65 2 entry_pad (80) fixed bin, /* pad table header to 128 words */ 1 66 2 entry (0 refer (autbl.current_size)) like ute; 1 67 1 68 dcl AUTBL_CONTROL_NAMES (15) char(20) varying int static options(constant) init( 1 69 "mnbz", 1 70 "abs_maxu_auto", 1 71 "abs_maxq_auto", 1 72 "abs_qres_auto", 1 73 "abs_cpu_limit_auto", 1 74 "queue_dropped(-1)", 1 75 "queue_dropped( 0)", 1 76 "queue_dropped( 1)", 1 77 "queue_dropped( 2)", 1 78 "queue_dropped( 3)", 1 79 "queue_dropped( 4)", 1 80 "abs_up", 1 81 "abs_stopped", 1 82 "aum_ctl", 1 83 "lc_list"); 1 84 1 85 /* END INCLUDE FILE ... absentee_user_table.incl.pl1 */ 890 891 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 891 892 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* The answer table has one entry per "login instance" whether completed or */ 3 6 /* not. It is connected to the Channel Definition Table by the pointer */ 3 7 /* "channel". The header is used mostly by dialup_. */ 3 8 /* */ 3 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 3 10 /* */ 3 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 12 3 13 /****^ HISTORY COMMENTS: 3 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 3 15* Replace anstbl.incl.pl1. 3 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 3 17* Add anstbl.session_uid_counter. 3 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 3 19* Add anstbl.message_update_time and named constants for values of 3 20* anstbl.session, and to make all padding explicit. 3 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 3 22* Change "entry" to a placeholder so as not to require 3 23* user_table_entry.incl.pl1. 3 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 3 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 3 26* Added the flag login_server_present which indicates whether a login 3 27* server request has been received. This is used to determine whether 3 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 3 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 3 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 3 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 32* A) Moved constants for ute.pw_flags.mask_ctl into 3 33* user_table_entry.incl.pl1. 3 34* B) Added common table header to all user tables. 3 35* END HISTORY COMMENTS */ 3 36 3 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 38 /* */ 3 39 /* The anstbl structure below is divided into sections. Each section begins */ 3 40 /* with a comment describing the elements in the section. Elements are */ 3 41 /* placed within a section, based upon their function or the programs that */ 3 42 /* use them. Each section begins on a double word and is an even number of */ 3 43 /* words long. */ 3 44 /* */ 3 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 46 3 47 3 48 3 49 /* format: style4 */ 3 50 3 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 3 52 3 53 dcl ansp ptr automatic init (null); 3 54 3 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 3 56 2 header like ut_header, /* Header common to all user tables. */ 3 57 3 58 /* Counter elements. */ 3 59 2 nlin fixed bin, /* number of active lines */ 3 60 2 mxlin fixed bin, /* maximum number of active lines */ 3 61 2 n_users fixed bin, /* number of logged-in users */ 3 62 2 max_users fixed bin, /* maximum number of users allowed */ 3 63 2 n_units fixed bin, /* number of logged in units */ 3 64 2 max_units fixed bin, /* maximum number of units */ 3 65 2 n_sessions fixed bin, /* number of Multics sessions */ 3 66 2 n_pad fixed bin, 3 67 3 68 /* Name elements. */ 3 69 2 sysdir char (64) unal, /* name of main system control directory */ 3 70 2 as_tty char (8) unal, /* name of main answering service device. */ 3 71 3 72 /* Login elements. */ 3 73 2 login_word char (8) unal, /* login word if special_session=1 */ 3 74 2 session char (8) unal, /* session indicator */ 3 75 2 special_message char (128) unal, /* message to be printed for special session */ 3 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 3 77 2 message_lng fixed bin, /* length of special message */ 3 78 2 login_pad fixed bin, 3 79 3 80 /* Table update elements. */ 3 81 2 lock_count fixed bin, /* global lock for all system control tables */ 3 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 3 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 3 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 3 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 3 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 3 87 2 update_pad fixed bin, 3 88 3 89 /* dialup_ data values. */ 3 90 2 current_time fixed bin (71), /* Time of last transaction */ 3 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 3 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 3 93 3 94 /* load_ctl_ elements. */ 3 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 3 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 3 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 3 98 /* load_ctl_ load leveling desired response range: */ 3 99 2 response_high fixed bin, /* bad if user response time slower than this */ 3 100 2 response_low fixed bin, /* bad if user response time faster than this */ 3 101 2 load_ctl_pad fixed bin, 3 102 3 103 /* Login server request server data. */ 3 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 3 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 3 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 3 107 3 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 3 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 3 110 3 contents (UTE_SIZE) fixed bin; 3 111 3 112 /* constants */ 3 113 3 114 /* values for anstbl.session */ 3 115 3 116 dcl (AT_NORMAL init ("normal "), 3 117 AT_SPECIAL init ("special "), 3 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 3 119 3 120 dcl UTE_SIZE fixed bin internal static initial (300); 3 121 3 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 892 893 /* BEGIN INCLUDE FILE ... apte.incl.pl1 */ 4 2 4 3 /* Modified 1984-11-11 by E. Swenson for IPC event channel validation. */ 4 4 4 5 dcl aptep pointer; 4 6 4 7 dcl 1 apte based (aptep) aligned, /* APT entry declaration for an active (known) process */ 4 8 2 thread unaligned, /* List thread */ 4 9 3 fp bit (18), /* Forward pointer */ 4 10 3 bp bit (18), /* Backward pointer */ 4 11 2 flags unaligned, /* Flags and miscellaneous */ 4 12 3 mbz bit (1), /* This bit must be zero (sentinel bit) */ 4 13 3 wakeup_waiting bit (1), /* ON if process has received wakeup */ 4 14 3 stop_pending bit (1), /* ON if process has received stop connect */ 4 15 3 pre_empted bit (1), /* ON if process is being pre-empted by get_processor */ 4 16 3 hproc bit (1), /* ON if process is hardcore process */ 4 17 3 loaded bit (1), /* ON if required per-process pages are in memory and wired */ 4 18 3 eligible bit (1), /* ON if process is eligible */ 4 19 3 idle bit (1), /* ON if this is an idle process */ 4 20 3 interaction bit (1), /* ON if process has interacted recently */ 4 21 3 pre_empt_pending bit (1), /* ON if process has received pre-empt connect */ 4 22 3 default_procs_required bit (1), /* ON if apte.procs_required is system default */ 4 23 3 realtime_burst bit (1), /* ON if next eligibility is realtime */ 4 24 3 always_loaded bit (1), /* ON if process is not to be unloaded */ 4 25 3 dbr_loaded bit (1), /* ON if DBR is loaded on some CPU */ 4 26 3 being_loaded bit (1), /* ON if somebody loading this process */ 4 27 3 shared_stack_0 bit (1), /* ON if a shared stack_0 is assigned */ 4 28 3 page_wait_flag bit (1), /* flag ON if waiting for page */ 4 29 3 firstsw bit (1), /* OFF until process is intialized */ 4 30 3 state bit (18), /* execution state */ 4 31 2 page_faults fixed bin (35), /* total page faults for the process */ 4 32 2 processid bit (36), /* bit 0-17: offset of ATPE */ 4 33 /* bit 18-35: sequential number */ 4 34 2 te fixed bin (35), /* virtual time since eligibility award */ 4 35 2 ts fixed bin (35), /* virtual time since scheduling */ 4 36 2 ti fixed bin (35), /* virtual time since interaction */ 4 37 2 timax fixed bin (35), /* maximum value allowed for apte.ti */ 4 38 4 39 /* * * * * * * * */ 4 40 4 41 2 ipc_pointers unaligned, 4 42 3 event_thread bit (18), /* relative pointer to ITT list */ 4 43 3 pad3 bit (18), 4 44 2 ips_message bit (36), /* IPS signals pending */ 4 45 2 asteps unaligned, /* relative ASTE pointers */ 4 46 3 pds bit (18), /* PDS (per-process) */ 4 47 3 dseg bit (18), /* DSEG (per-process) */ 4 48 3 prds bit (18), /* PRDS (per-processor) */ 4 49 2 savex7 bit (18) unaligned, /* x7 at call to getwork (return point in pxss) */ 4 50 2 term_processid bit (36), /* process to send wakeup at temination */ 4 51 2 lock_id bit (36), /* File System unqieu ID associated with process */ 4 52 2 time_used_clock fixed bin (71), /* Total CPU time when process last lost CPU */ 4 53 4 54 /* * * * * * * * */ 4 55 4 56 2 wait_event bit (36) aligned, /* Event ID process awaiting */ 4 57 2 wct_index bit (18) unaligned, /* rel offset of WCTE */ 4 58 2 flags2 unaligned, 4 59 3 priority_scheduling bit (1), /* ON if guaranteed eligibility */ 4 60 3 special_wakeups bit (6), /* Special wakeup channels */ 4 61 3 pad7 bit (7), 4 62 3 batch bit (1), /* ON if absentee */ 4 63 3 pr_tag bit (3), /* CPU tag running or last run */ 4 64 2 state_change_time fixed bin (71), /* Time apte.state last changed */ 4 65 2 alarm_event fixed bin (71), /* wakeup event for alarm clock manager */ 4 66 2 alarm_time_thread bit (18) unaligned, /* thread of processes with pending alarms */ 4 67 2 alarm_time bit (54) unaligned, /* wakeup time for alarm */ 4 68 4 69 /* * * * * * */ 4 70 4 71 2 term_channel fixed bin (71), /* wakeup event for account overflow */ 4 72 2 ws_size fixed bin, /* working set estimate for the process */ 4 73 2 temax fixed bin (35), /* maximum eligibility slice (vcpu) */ 4 74 2 deadline fixed bin (71), /* time of next run */ 4 75 2 lock bit (18) unaligned, /* 0 => APTE locked, unlocked => return point of last unlock */ 4 76 2 unusable bit (18) unaligned, /* locking routines destroy */ 4 77 2 cpu_monitor fixed bin (35), /* if not 0, send wakeup to term_processid when virtual cpu 4 78* /* reaches this (units = 1/1024 sec) */ 4 79 2 paging_measure fixed bin (71), /* cumulative memory units */ 4 80 2 access_authorization bit (72), /* authorization of this process */ 4 81 2 dbr fixed bin (71), /* DBR value (constant since DSEG entry-held) */ 4 82 4 83 2 virtual_cpu_time fixed bin (71), /* cumulative virtual CPU time for the process */ 4 84 2 ittes_sent fixed bin (18), /* Unprocessed ITTs sent by this process */ 4 85 2 ittes_got fixed bin (18), /* Unprocessed ITTs received by this process */ 4 86 4 87 /* Cells used to drive and instrument finite-state model for response time 4 88* measurement. Maintained by meter_response_time */ 4 89 4 90 2 current_response_state fixed bin (17) unaligned, /* Process state in modle */ 4 91 2 pad18 bit (18) unaligned, 4 92 2 number_processing fixed bin (35), /* Number interactions */ 4 93 2 last_response_state_time fixed bin (71), /* Clock time at last response state change */ 4 94 2 total_processing_time fixed bin (71), /* Total interaction processing time */ 4 95 4 96 /* * * * * * */ 4 97 4 98 2 begin_interaction_vcpu fixed bin (71), /* Virtual cpu at beginning of last interaction */ 4 99 4 100 /* End of cells for finite-state model */ 4 101 4 102 2 saved_temax fixed bin (35), /* temax at eligibility award */ 4 103 2 procs_required bit (8) unaligned, /* bit mask of CPUs this process can run */ 4 104 2 pad4 bit (28) unaligned, 4 105 2 ipc_r_offset fixed bin (18) unsigned, 4 106 2 ipc_r_factor fixed bin (35) unsigned, 4 107 2 apad (10) fixed bin (35); 4 108 4 109 /* END INCLUDE FILE ... apte.incl.pl1 */ 893 894 /* BEGIN INCLUDE FILE ... daemon_user_table.incl.pl1 */ 5 2 5 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 4 /* */ 5 5 /* The daemon_user_table has one entry per daemon. Daemons are logged in by */ 5 6 /* operator command or automatically. If they do any I/O, it is done via */ 5 7 /* the message coordinator. */ 5 8 /* */ 5 9 /* Programs using this include file must also use user_table_header.incl.pl1 */ 5 10 /* and user_table_entry.incl.pl1. */ 5 11 /* */ 5 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 13 5 14 5 15 /****^ HISTORY COMMENTS: 5 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 5 17* Initially coded from dutbl.incl.pl1. 5 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 5 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 20* A) Add use of ut_header common to all user control tables. 5 21* B) Corrected padding prior to first ute entry. 5 22* END HISTORY COMMENTS */ 5 23 5 24 5 25 dcl DUTBL_version_4 fixed bin int static init (4); /* version of this declaration */ 5 26 5 27 dcl dutp ptr automatic init (null); 5 28 5 29 dcl 1 dutbl based (dutp) aligned, /* Daemon user table */ 5 30 2 header like ut_header, /* Header common to all user tables. */ 5 31 5 32 2 active_count fixed bin, /* the count of active daemons managed by DUM_ */ 5 33 5 34 2 entry_pad (117) fixed bin, /* pad to 128 words */ 5 35 2 entry (0 refer (dutbl.current_size)) like ute; /* daemon user entries */ 5 36 5 37 /* END INCLUDE FILE ... daemon_user_table.incl.pl1 */ 894 895 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 6 2 6 3 /* format: style4 */ 6 4 6 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 6 6 6 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 6 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 6 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 6 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 6 11* WAIT_DISCARD_WAKEUP 6 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 6 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 6 14**/ 6 15 6 16 /****^ HISTORY COMMENTS: 6 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 6 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 6 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 6 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 22* Add named constants for instance tags. 6 23* END HISTORY COMMENTS */ 6 24 6 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 6 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 6 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 6 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 6 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 6 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 6 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 6 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 6 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 6 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 6 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 6 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 6 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 6 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 6 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 6 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 6 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 6 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 6 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 6 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 6 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 6 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 6 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 6 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 6 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 6 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 6 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 6 52 ) fixed bin internal static options (constant); 6 53 6 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 6 55 /* names of ute.destroy_flag values */ 6 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 6 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 6 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 6 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 6 60 "wait remove"); /* -13 */ 6 61 6 62 /* Values for "cdte.state", typewriter state. */ 6 63 6 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 6 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 6 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 6 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 6 68 ) fixed bin internal static options (constant); 6 69 6 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 6 71 /* names of cdte.state values */ 6 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 6 73 6 74 /* Values for "cdte.in_use" and "ate.active" */ 6 75 6 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 6 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 6 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 6 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 6 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 6 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 6 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 6 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 6 84 ) fixed bin internal static options (constant); 6 85 6 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 6 87 /* names of ute.active values */ 6 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 6 89 6 90 6 91 /**** Values for ute.tag */ 6 92 6 93 dcl (TAG_INTERACTIVE init("a"), 6 94 TAG_UFT init("f"), 6 95 TAG_ABSENTEE init("m"), 6 96 TAG_PROXY init("p"), 6 97 TAG_DAEMON init("z") 6 98 ) char(1) int static options(constant); 6 99 6 100 6 101 /**** Following are constants used to indicate to the process termination 6 102* handler the reason for the process termination. They are used by 6 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 6 104* uc_ls_destroy_request_. */ 6 105 6 106 dcl ( 6 107 PT_FPE initial (1), 6 108 PT_LOGOUT initial (4), 6 109 PT_NEW_PROC_AUTH initial (13), 6 110 PT_HANGUP initial (20), 6 111 PT_SHUTDOWN initial (21), 6 112 PT_BUMP initial (22), 6 113 PT_ALARM initial (23), 6 114 PT_DETACH initial (24), 6 115 PT_UNBUMP initial (25), 6 116 PT_OPERATOR_TERMINATE initial (27), 6 117 PT_DESTROY_REQUEST initial (30), 6 118 PT_NEW_PROC_REQUEST initial (31) 6 119 ) fixed bin (17) internal static options (constant); 6 120 6 121 /**** Values for ute.preempted: 6 122* -1 user unbumped after term signal sent 6 123* 0 user unbumped; ignore alarm___ 6 124* 1 value internally used in load_ctl_ 6 125* 2 user bumped; when alarm___ comes in, send term signal 6 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 6 127* signals come in 6 128* 4 user bumped; process sick, so destroy without sending term signal 6 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 6 130* termsgnl). */ 6 131 6 132 dcl ( 6 133 PREEMPT_UNBUMP initial (-1), 6 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 6 135 PREEMPT_LOAD_CTL initial (1), 6 136 PREEMPT_BUMPED initial (2), 6 137 PREEMPT_TERM_SENT initial (3), 6 138 PREEMPT_BUMPED_NO_TERM initial (4), 6 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 6 140 ) fixed bin (17) internal static options(constant); 6 141 6 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 6 143 "unbumped", 6 144 "not bumped, ignore alarm___", 6 145 "load_ctl_", 6 146 "bumped", 6 147 "bumped, trm_ sent", 6 148 "bumped without trm_", 6 149 "bumped, termsgnl received"); 6 150 6 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 895 896 /* BEGIN INCLUDE FILE ... disk_table.incl.pl1 ... Created Oct 75 for NSS */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 7 6* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 7 7* Add support for subvolumes. 7 8* END HISTORY COMMENTS */ 7 9 7 10 7 11 /* Modified July 1977 by T. Casey to add pdirs_ok switch in lve */ 7 12 /* Modified April 1981 by J. Bongiovanni to add shared_spindle_flip */ 7 13 /* Modified 831122 by E. A. Ranzenbach to add vacate_pdirs bit to lve. */ 7 14 7 15 /* The disk table lives in ring 1. Its entries parallel the PVT */ 7 16 7 17 dcl dtp ptr, 7 18 dtep ptr, 7 19 lvep ptr; 7 20 7 21 7 22 7 23 dcl 1 dt based (dtp) aligned, 7 24 7 25 2 n_entries fixed bin (17), /* number of disk table entries */ 7 26 2 max_n_entries fixed bin (17), /* max number of disk table entries */ 7 27 2 n_in_use fixed bin (17), /* number of disk table entries in use */ 7 28 2 rpvx fixed bin, /* index (pvtx, too) of the RPV */ 7 29 2 version fixed bin init (1), 7 30 2 n_lv_entries fixed bin, /* Number of LV entries */ 7 31 2 pad (2) bit (36), 7 32 2 array (0 refer (dt.max_n_entries)) like dte, 7 33 2 lv_array (0 refer (dt.max_n_entries)) like lve; 7 34 7 35 dcl 1 dte based (dtep) aligned, 7 36 2 drive_name char (8), /* device name */ 7 37 (2 device_type fixed bin (8), /* device type */ 7 38 2 used bit (1), /* TRUE if this entry is used for paging */ 7 39 2 known bit (1), /* TRUE if label has been read and checked */ 7 40 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 7 41 2 permanent bit (1), /* TRUE if cannot be demounted */ 7 42 2 deleted bit (1), /* TRUE if deleted by "deld" */ 7 43 2 rpv bit (1), /* TRUE if the root physical volume */ 7 44 2 demounted bit (1), /* TRUE if was here or was assumed here */ 7 45 2 need_salvage bit (1), /* TRUE if this vol was volsalv'd automatic */ 7 46 2 hc_accepted bit (1), /* TRUE if vol accepted by ring 0 init */ 7 47 2 shared_spindle_flip bit (1), /* used by ring-4 for shared spindle allocation */ 7 48 2 is_sub_vol bit (1), 7 49 2 pad bit (3), 7 50 2 lvx fixed bin (11), /* index in lv_array of lve */ 7 51 2 pre_accepted bit (1)) unaligned, /* TRUE if was used in previous bootload */ 7 52 2 sv_num fixed bin unal, /* this sv number */ 7 53 2 num_of_sv fixed bin unal, /* number of sv for this pv */ 7 54 2 sv_name char (2) aligned, 7 55 2 pvid bit (36), /* physical volume ID */ 7 56 2 pvname char (32); /* Physical volume name. */ 7 57 7 58 dcl 1 lve based (lvep) aligned, 7 59 2 lvid bit (36), /* logical volume ID */ 7 60 (2 used bit (1), /* TRUE if entry used */ 7 61 2 hv_mounted bit (1), /* TRUE if hvol is really OK */ 7 62 2 public bit (1), /* TRUE for public vol */ 7 63 2 mounting bit (1), /* TRUE if mhv is in progress */ 7 64 2 demounting bit (1), /* TRUE if dhv is in progress */ 7 65 2 good_candidate bit (1) unal, /* used for auto dhv */ 7 66 2 demounted_only bit (1) unal, /* lve here only to warm demounted pve's */ 7 67 2 pdirs_ok bit (1) unal, /* TRUE if process directory segments can be on this lv */ 7 68 2 prev_bootload bit (1) unal, /* TRUE if can auto-accept pvs */ 7 69 2 vacate_pdirs bit (1) unal, /* if TRUE we will demand move all perprocess segs */ 7 70 2 pad bit (26)) unal, 7 71 2 lvname char (32), /* Logical volume name */ 7 72 2 min_access_class bit (72), /* Security stuff */ 7 73 2 max_access_class bit (72); /* .. */ 7 74 7 75 /* END INCLUDE FILE ...disk_table.incl.pl1 */ 896 897 /* Begin include file hc_lock.incl.pl1 BIM 2/82 */ 8 2 /* Replaced by hc_fast_lock.incl.pl1 RSC 11/84 because name of structure 8 3* encourages name conflicts. 8 4* USE HC_FAST_LOCK INSTEAD! 8 5**/ 8 6 8 7 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 8 8 8 9 /* format: style3 */ 8 10 8 11 declare lock_ptr pointer; 8 12 declare 1 lock aligned based (lock_ptr), 8 13 2 pid bit (36) aligned, /* holder of lock */ 8 14 2 event bit (36) aligned, /* event associated with lock */ 8 15 2 flags aligned, 8 16 3 notify_sw bit (1) unaligned, 8 17 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 8 18 8 19 /* End include file hc_lock.incl.pl1 */ 897 898 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 9 2 9 3 /* Modified 740723 by PG to add short AIM access names */ 9 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 9 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 9 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 9 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 9 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 9 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 9 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 9 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 9 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 9 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 9 14* strict_trusted_path. */ 9 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 9 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 9 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 9 18 9 19 9 20 /****^ HISTORY COMMENTS: 9 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 9 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 9 23* added vchn_requires_accept parameter. 9 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 9 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 9 26* Correct formatting problems. 9 27* END HISTORY COMMENTS */ 9 28 9 29 9 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 9 31 9 32 9 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 9 34 2 part_1 like installation_parms_part_1 aligned, 9 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 9 36 9 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 9 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 9 39 9 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 9 41 2 installation_id char (32), /* Name printed at dialup and in who */ 9 42 2 company char (64), /* company name */ 9 43 2 department char (64), /* department */ 9 44 2 companyds char (120), /* company, double spaced */ 9 45 2 departmentds char (120), /* dpeartment double spaced */ 9 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 9 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 9 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 9 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 9 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 9 51 2 ndevices fixed bin, /* number of devices to charge */ 9 52 2 devtab (16), /* Maximum 16 */ 9 53 3 device_id char (8), /* Name of device */ 9 54 3 device_price (0: 7) float bin, /* Price by shift */ 9 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 9 56 2 warning_time fixed bin, /* seconds from warning to logout */ 9 57 2 login_time fixed bin, /* seconds in which to complete login */ 9 58 2 acct_update fixed bin, /* seconds between acct update */ 9 59 2 login_tries fixed bin, /* number of login tries allowed */ 9 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 9 61 2 registration_price float bin, /* fee per month per user */ 9 62 2 dolsign char (1), /* "dollar sign" */ 9 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 9 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 9 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 9 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 9 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 9 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 9 69* Initializer will copy the syserr_log */ 9 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 9 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 9 72 2 fatal_error_loop_count fixed bin (17) unaligned, 9 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 9 74 2 term_real_time_seconds fixed bin (17) unaligned, 9 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 9 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 9 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 9 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 9 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 9 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 9 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 9 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 9 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 9 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 9 85 2 level_names (0:7) char (32), /* Names for security levels. */ 9 86 2 category_names (18) char (32), /* Names for security categories. */ 9 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 9 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 9 89 2 ncon fixed bin, /* Number of config elements. */ 9 90 2 cona (51), /* each entry is 5 words long */ 9 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 9 92 3 shift fixed bin (5) unal, /* Shift number */ 9 93 3 x1 fixed bin (23) unal, 9 94 3 kmem fixed bin (17) unal, /* Memory size */ 9 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 9 96 3 x2 fixed bin (17) unal, 9 97 3 maxa fixed bin (11) unal, /* Max abs users */ 9 98 3 maxq fixed bin (5) unal, /* Max abs q */ 9 99 3 maxu_base fixed bin (17) unal, 9 100 3 response_high fixed bin (17) unal, 9 101 3 response_low fixed bin (17) unal, 9 102 3 x3 fixed bin (17) unal, 9 103 9 104 /* Absentee control parameters. New for MR7.0 */ 9 105 9 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 9 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 9 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 9 109 9 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 9 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 9 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 9 113 9 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 9 115 9 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 9 117 9 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 9 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 9 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 9 121 2 version fixed bin (35), /* must be 2 */ 9 122 2 nrates fixed bin, /* number of rate structures */ 9 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 9 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 9 125 2 require_operator_login bit (1) aligned, /* just what it says */ 9 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 9 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 9 128* mcacs segments for operators */ 9 129 2 password_min_length fixed bin, /* minimum length of passwords */ 9 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 9 131 2 password_change_interval fixed bin, /* number of days until must change */ 9 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 9 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 9 134* "accepted" by operator if personid is not 9 135* signed on system console */ 9 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 9 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 9 138* or someone miscounted when using part of pad2 */ 9 139 9 140 9 141 /* Entries in the following array may be accessed via system_info_$resource_price. 9 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 9 143 9 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 9 145 2 name char (32), 9 146 2 price float bin; 9 147 10 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 10 2 10 3 /* Created on 04/24/78 by Michael R. Jordan */ 10 4 /* Modified 04/10/79 by C. D. Tavares */ 10 5 10 6 dcl rifp ptr; 10 7 10 8 dcl 1 rcp_init_flags based (rifp), 10 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 10 10 2 pad1 bit (2) unaligned, /* obsolete */ 10 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 10 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 10 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 10 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 10 15 10 16 dcl (No_authentication initial (0), 10 17 Nominal_authentication initial (1), 10 18 Automatic_authentication initial (2), 10 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 10 20 10 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 10 22 ("none", "nominal", "automatic", "manual"); 10 23 10 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 9 148 9 149 9 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 898 899 /* BEGIN INCLUDE FILE ... tcm.incl.pl1 ... used to generate tc_data cds */ 11 2 /* NOTE -- This include file has TWO counterparts in ALM: tc_meters.incl.alm and */ 11 3 /* wcte.incl.alm. They cannot be produced with cif, and must be kept up to date manually. */ 11 4 /* Modified 830914 to replace tty_polling_time with opc_polling_time... -E. A. Ranzenbach */ 11 5 /* Modified 1984.05.21 by M. Pandolf to add tc_suspend_lock */ 11 6 /* Modified 1984.11.26 by Keith Loepere for uid_array. */ 11 7 /* Modified 1984.12.06 by Keith Loepere for page create delaying. */ 11 8 11 9 dcl tcmp ptr; 11 10 11 11 dcl 1 tcm aligned based (tcmp), 11 12 2 tc_suspend_lock like lock, /* when locked, tc is suspended */ 11 13 2 cid2 fixed bin (18), 11 14 2 cid3 fixed bin (18), 11 15 2 cid4 fixed bin (18), 11 16 2 depth_count fixed bin (18), /* depth last process run */ 11 17 2 loadings fixed bin (18), /* number of process loadings */ 11 18 11 19 2 blocks fixed bin (18), /* number of calls to block */ 11 20 2 wakeups fixed bin (18), /* number of calls to wakeup */ 11 21 2 waits fixed bin (18), /* number of calls to wait */ 11 22 2 notifies fixed bin (18), /* number of calls to notify */ 11 23 2 schedulings fixed bin (18), 11 24 2 interactions fixed bin (18), /* number of interactive schedulings */ 11 25 2 avequeue fixed bin (35, 18), /* recent time average of number in queue */ 11 26 2 te_wait fixed bin (18), /* times te called from wait */ 11 27 11 28 2 te_block fixed bin (18), /* times te updated from block */ 11 29 2 te_i_stop fixed bin (18), /* times te updated from i_stop */ 11 30 2 te_pre_empt fixed bin (18), /* times te updated from pre_empt */ 11 31 2 p_interactions fixed bin, /* times interaction bit turned off because of high priority */ 11 32 2 idle fixed bin (71), /* total idle time */ 11 33 2 mp_idle fixed bin (71), /* multi-programming idle */ 11 34 11 35 2 nmp_idle fixed bin (71), /* non-multi-programming idle time */ 11 36 2 zero_idle fixed bin (71), /* zero idle time */ 11 37 2 last_time fixed bin (71), /* last time a process was run */ 11 38 2 loop_locks fixed bin (18), /* times looped on the APT lock */ 11 39 2 loop_lock_time fixed bin (18), /* time looping on the APT lock */ 11 40 2 ave_eligible fixed bin (35, 18), /* average length of eligible queue */ 11 41 2 sort_to_elhead fixed bin (18), /* 0=> no one,1 => int've only, 2 => everybody */ 11 42 2 processor_time fixed bin (71), /* total processor time on system */ 11 43 2 response_time fixed bin (71), /* estimate of response time */ 11 44 2 eligible_time fixed bin (71), /* estimate of eligible time */ 11 45 2 response_count fixed bin, /* count of response meters */ 11 46 2 eligible_count fixed bin, /* count of eligible meters */ 11 47 2 quit_counts (0:5) fixed bin, /* array of buckets indexed by state */ 11 48 2 loading_idle fixed bin (71), /* loading_idle time */ 11 49 2 delta_vcpu fixed bin (71), /* delta virtual CPU time for the system */ 11 50 2 post_purge_switch fixed bin, /* ON if post purging is to be done */ 11 51 2 time_out_severity fixed bin, /* syserr first arg for notify time outs */ 11 52 2 notify_check fixed bin, /* obsolete */ 11 53 2 quit_priority fixed bin, /* factor for scheduler quit response */ 11 54 2 iobm_polling_time fixed bin (71), /* time to poll iobm */ 11 55 2 end_of_time fixed bin (71), /* very large time */ 11 56 2 gp_at_notify fixed bin (18), /* 0 => just do get_idle_processor */ 11 57 2 gp_at_ptlnotify fixed bin (18), /* 0 => just do get_idle_processor */ 11 58 2 int_q_enabled fixed bin (18), /* 0 => no intv q in percent mode */ 11 59 2 fnp_buffer_threshold fixed bin (18), /* if fewer free buffs then stingy alloc strategy */ 11 60 /* set this to >= half n_ttylines/fnp for safety */ 11 61 11 62 /* 100 octal */ 11 63 11 64 2 depths (8) fixed bin (18), /* histogram of run depths */ 11 65 2 tdepths (8) fixed bin (71), /* histogram of times run per depth */ 11 66 2 pfdepth (8) fixed bin (18), /* histogram of page faults per depth */ 11 67 11 68 2 ptl_not_waits fixed bin (18), /* times ptl_wait noticed ptl was unlocked */ 11 69 2 gw_gp_window_count fixed bin (18), /* times window noticed */ 11 70 2 metering_lock fixed bin (18), /* 0=locked, else unlocked */ 11 71 2 ptl_waits fixed bin (18), /* num calls to ptl_wait */ 11 72 2 gp_start_count fixed bin (18), /* to detect gw_gp window lossage */ 11 73 2 gp_done_count fixed bin (18), 11 74 2 nto_check_time fixed bin (71), /* next time at which nto code will be called */ 11 75 2 nto_delta fixed bin (35), /* microsec between nto checks */ 11 76 2 nto_count fixed bin (18), /* number of times nto detected */ 11 77 2 tcpu_scheduling fixed bin (18), /* obsolete */ 11 78 2 nto_event bit (36), /* last event which NTO'd */ 11 79 2 page_notifies fixed bin (18), 11 80 2 notify_nobody_count fixed bin (18), 11 81 2 notify_nobody_event bit (36), 11 82 2 system_type fixed bin, /* used to be tcm.inter */ 11 83 11 84 2 stat (0:15) fixed bin (18), /* num apte's in each state */ 11 85 11 86 /* 200 octal */ 11 87 11 88 2 wait (8), 11 89 3 time fixed bin (18), /* histogram of page fault waiting times versus did */ 11 90 3 count fixed bin (18), 11 91 11 92 2 ready (8), 11 93 3 time fixed bin (18), /* histogram of times in ready queue */ 11 94 3 count fixed bin (18), 11 95 11 96 2 total_pf_time fixed bin (71), /* total time spent from start to end of 11 97* all page faults */ 11 98 2 total_pf_count fixed bin (18), /* total number of page faults metered */ 11 99 2 auto_tune_ws fixed bin (18), /* 0=> dont, atherwise compensate for quantum len */ 11 100 2 ocore_delta fixed bin (18), /* number of pages reserved for int users */ 11 101 2 ws_sum fixed bin (18), /* total of eligible's ws_sizes */ 11 102 2 nonidle_force_count fixed bin (18), /* count of eligibilities forced */ 11 103 2 itt_list_lock bit (36) aligned, /* Lock on ITT free list */ 11 104 2 cpu_pf_time fixed bin (71), /* total cpu time spent handling page faults */ 11 105 2 cpu_pf_count fixed bin (18), /* total count of cpu time meterings */ 11 106 2 special_offsets unaligned, 11 107 3 apt_offset bit (18), 11 108 3 pad bit (18), 11 109 2 getwork_time fixed bin (71), /* total time spent in getwork */ 11 110 2 getwork_count fixed bin (18), /* total times through getwork */ 11 111 2 short_pf_count fixed bin (18), /* number of short page faults */ 11 112 2 interrupt_time fixed bin (71), /* total time spent in interrupt */ 11 113 2 interrupt_count fixed bin (71), /* total number of metered interrupts */ 11 114 2 ocore fixed bin (35, 18), /* fraction of core for int've users */ 11 115 2 pre_empt_flag bit (36) aligned, /* controls whether preempting at done time */ 11 116 2 cumulative_memory_usage fixed binary (71), /* total number of memory usage units */ 11 117 2 processor_time_at_define_wc fixed bin (71), /* value of processor_time when WC's last defined */ 11 118 2 boost_priority fixed bin, /* number of times priority process given high priority */ 11 119 2 lost_priority fixed bin, /* number of times priority process lost eligibility */ 11 120 2 total_clock_lag fixed bin (71), /* sum of all simulated clock delays */ 11 121 2 clock_simulations fixed bin, /* number of times alarm clock interrupt was simulated */ 11 122 2 max_clock_lag fixed bin, /* largest simulated alarm clock delay */ 11 123 11 124 /* 300 octal */ 11 125 11 126 2 pdscopyl fixed bin (18), /* amount of pds to copy for new process */ 11 127 2 max_hproc_segno fixed bin, /* largest allowed hardcore segment number */ 11 128 2 prds_length fixed bin (18), /* length of PRDS */ 11 129 2 pds_length fixed bin (18), /* length of PDS */ 11 130 2 lock fixed bin (18), /* process id generator lock */ 11 131 2 id bit (36) aligned, /* next uid to be added to uid_array */ 11 132 2 system_shutdown fixed bin (18), 11 133 2 working_set_factor fixed bin (35, 18), /* working set factor */ 11 134 11 135 2 ncpu fixed bin (18), /* number of processors currently being used */ 11 136 2 last_eligible bit (18), /* last process to gain eligibility */ 11 137 2 apt_lock fixed bin (35), /* + write; 0 hidden; -1 unlocked; -(N+1) Nreaders */ 11 138 2 apt_size fixed bin (18), /* number of APT entries */ 11 139 2 realtime_q aligned like based_sentinel, /* processes with realtime deadlines */ 11 140 2 aht_size fixed bin (18), /* APT hash table size */ 11 141 2 itt_size fixed bin (18), /* number of ITT entries */ 11 142 11 143 2 dst_size fixed bin (18), /* number of allowed DST entries */ 11 144 2 itt_free_list bit (18), /* pointer to ITT free list */ 11 145 2 used_itt fixed bin (18), /* number of used ITT entries */ 11 146 2 initializer_id bit (36) aligned, /* process id of initializer */ 11 147 2 n_eligible fixed bin (18), /* number of processes eligible */ 11 148 2 max_eligible fixed bin (30), /* maximum allowed number of eligible processes */ 11 149 2 wait_enable fixed bin (18), /* turned on when waiting mechanism works */ 11 150 2 apt_entry_size fixed bin (18), /* size of an APT entry */ 11 151 11 152 2 interactive_q aligned like based_sentinel, /* head of interactive queue */ 11 153 2 dst_ptr ptr, /* pointer to device signal table */ 11 154 2 old_user ptr, /* last process to run (apt ptr ) */ 11 155 2 initialize_time fixed bin (71), /* time of initialization */ 11 156 11 157 2 init_event fixed bin (18), /* wait event during initialization */ 11 158 2 oldt fixed bin (18), /* timer reading from previous process */ 11 159 2 newt fixed bin (18), /* timer setting for new process */ 11 160 2 tefirst fixed bin (30), /* first eligible time */ 11 161 2 telast fixed bin (30), /* last eligible time */ 11 162 2 timax fixed bin (35), /* time in queue for lowest level */ 11 163 2 empty_q bit (18), /* thread of empty APT entries */ 11 164 2 working_set_addend fixed bin (18), /* additive working set parameter */ 11 165 2 ready_q_head bit (0) aligned, /* for added segdef */ 11 166 2 eligible_q_head aligned like based_sentinel, /* head of eligible queue */ 11 167 2 ready_q_tail bit (0) aligned, /* for added segdef */ 11 168 2 eligible_q_tail aligned like based_sentinel, /* tail of eligible queue */ 11 169 2 idle_tail aligned like based_sentinel, /* tail of idle list */ 11 170 2 min_eligible fixed bin (30), 11 171 2 alarm_timer_list bit (18) aligned, /* rel pointer to apt entry for next alarm timer */ 11 172 2 guaranteed_elig_inc fixed bin (35), /* amount of guaranteed eligibility time in microsecs. */ 11 173 2 priority_sched_inc fixed bin (35), /* amount of block time before process is given priority */ 11 174 2 next_alarm_time fixed bin (71), /* clock time for next alarm timer */ 11 175 2 priority_sched_time fixed bin (71), /* time for priority process to be given priority */ 11 176 2 opc_polling_time fixed bin (71), /* time to poll console DIM */ 11 177 2 disk_polling_time fixed bin (71), /* time to poll disk DIM */ 11 178 2 tape_polling_time fixed bin (71), /* time to poll tape DIM */ 11 179 2 imp_polling_time fixed bin (71), /* time to poll imp */ 11 180 2 imp_polling_lock fixed bin (18), /* do not poll if lock set */ 11 181 2 max_channels fixed bin (18), /* num special channels per process */ 11 182 11 183 /* 400 octal */ 11 184 11 185 2 system_virtual_time fixed bin (71), /* non-idle virtual time */ 11 186 2 credit_bank fixed bin (71), /* credits not yet passed out */ 11 187 2 min_wct_index bit (18) aligned, /* offset of initializer work class table entry */ 11 188 2 max_wct_index bit (18) aligned, /* offset of highest wcte currently defined */ 11 189 2 delta_vt fixed bin (71), /* temp used by pxss.compute_virtual_clocks */ 11 190 2 gross_idle_time fixed bin (71), /* idle time_used_clock */ 11 191 2 credits_per_scatter fixed bin (35), /* total number of credits awarded at once */ 11 192 2 best_credit_value fixed bin (18), /* temp for pxss.find_next_eligible */ 11 193 2 define_wc_time fixed bin (71), /* clock time when workclasses last degined */ 11 194 2 max_batch_elig fixed bin (35), 11 195 2 num_batch_elig fixed bin (35), 11 196 2 deadline_mode fixed bin (35), /* 0=> ti sorts, else deadline sorts */ 11 197 2 credits_scattered fixed bin (35), 11 198 2 max_max_eligible fixed bin (30), /* Maximum of maxe */ 11 199 2 max_stopped_stack_0 fixed bin (35), /* Maximum stack_0's suspended by stopped procs */ 11 200 2 stopped_stack_0 fixed bin (35), /* Number stack_0's suspended by stopped procs */ 11 201 2 mos_polling_interval fixed bin (35), /* for heals */ 11 202 2 mos_polling_time fixed bin (71), /* for heals */ 11 203 2 vcpu_response_bounds (VCPU_RESPONSE_BOUNDS) fixed bin (35), 11 204 2 vcpu_response_bounds_size fixed bin (35), 11 205 2 meter_response_time_calls fixed bin (35), 11 206 2 meter_response_time_invalid fixed bin (35), 11 207 2 meter_response_time_overhead fixed bin (71), 11 208 2 init_wait_time fixed bin (71), /* used by wait/notify during initialization */ 11 209 2 init_wait_timeout fixed bin (71), /* notify-timeout interval during initialization */ 11 210 2 init_timeout_severity fixed bin, /* notify-timeout severity during initialization */ 11 211 2 init_timeout_recurse fixed bin, /* count of NTO recursion during initialization */ 11 212 2 max_timer_register fixed bin (71), /* max cpu burst = # cpus x pre_empt_sample_time */ 11 213 2 pre_empt_sample_time fixed bin (35), /* tuning parameter - max time between samples */ 11 214 2 governing_credit_bank fixed bin (35), /* used for limiting eligibility on governed work classes*/ 11 215 2 process_initial_quantum fixed bin (35), /* eligibility quantum first eligibility */ 11 216 2 default_procs_required bit (8) aligned, /* default mask of CPUs required */ 11 217 2 work_class_idle fixed bin (71), /* idle time due to work class restrictions */ 11 218 11 219 /* Tuning Parameters for Stack Truncation */ 11 220 11 221 2 stk_truncate bit (1) aligned, 11 222 2 stk_truncate_always bit (1) aligned, 11 223 2 stk_trunc_avg_f1 fixed bin (35, 18), 11 224 2 stk_trunc_avg_f2 fixed bin (35, 18), 11 225 2 lock_error_severity fixed bin, /* syserr severity */ 11 226 11 227 2 gv_integration fixed bin (35), /* Integration interval for governing */ 11 228 2 gv_integration_set bit (1) aligned, /* ON => gv_integration set by ctp */ 11 229 2 pauses fixed bin (35), /* Calls to pause (reschedule) */ 11 230 2 volmap_polling_time fixed bin (71), 11 231 2 next_ring0_timer fixed bin (71), /* next time that ring 0 timer goes off */ 11 232 2 realtime_io_priority_switch fixed bin, /* 0 => give I/O interrupt wakeups realtime priotiry */ 11 233 2 realtime_io_deadline fixed bin (35), /* Delta to clock for I/O realtime deadline */ 11 234 2 realtime_io_quantum fixed bin (35), /* Quantum for I/O realtime burst */ 11 235 2 realtime_priorities fixed bin (35), /* Count for metering */ 11 236 2 relinquishes fixed bin (35), /* Calls to relinquish_priority */ 11 237 2 abort_ips_mask bit (36) aligned, /* IPS mask for tc_util$check_abort */ 11 238 11 239 /* 500 octal */ 11 240 11 241 2 uid_array (0:15) bit (36) aligned, /* array from which a uid is chosen (randomly) */ 11 242 2 pad5 (176) fixed bin (35), /* room for expansion compatibly */ 11 243 11 244 /* 1000 octal */ 11 245 11 246 2 pad7 (64) fixed bin (35), 11 247 11 248 /* 1100 octal */ 11 249 11 250 2 pad6 (8) fixed bin (35), 11 251 2 work_class_table aligned, /* array of per workclass information */ 11 252 3 wcte (0:16) aligned like wct_entry, 11 253 11 254 /* 3000 octal */ 11 255 11 256 2 apt fixed bin; 11 257 11 258 dcl wctep ptr; 11 259 11 260 dcl 1 wct_entry aligned based (wctep), /* Work class entry */ 11 261 2 thread unaligned, /* Ready list */ 11 262 3 fp bit (18), /* Head of ready list */ 11 263 3 bp bit (18), /* Tail of ready list */ 11 264 2 flags unaligned, 11 265 3 mnbz bit (1), /* Sentinel bit must not be zero. */ 11 266 3 defined bit (1), 11 267 3 io_priority bit (1), 11 268 3 governed bit (1), 11 269 3 interactive_q bit (1), 11 270 3 pad bit (31), 11 271 2 credits fixed bin (35), /* Current worthiness of group */ 11 272 2 minf fixed bin (35), /* min fraction of cpu */ 11 273 2 pin_weight fixed bin (35), /* number of cycles to pin pages */ 11 274 2 eligibilities fixed bin (35), /* Count of eligibilities awarded */ 11 275 2 cpu_sum fixed bin (71), /* CPU used by members */ 11 276 2 resp1 fixed bin (71), 11 277 2 resp2 fixed bin (71), 11 278 2 quantum1 fixed bin (35), 11 279 2 quantum2 fixed bin (35), 11 280 2 rmeter1 fixed bin (71), 11 281 2 rmeter2 fixed bin (71), 11 282 2 rcount1 fixed bin (35), 11 283 2 rcount2 fixed bin (35), 11 284 2 realtime fixed bin (35), 11 285 2 purging fixed bin (35), 11 286 2 maxel fixed bin (35), 11 287 2 nel fixed bin (35), 11 288 2 number_thinks fixed bin (35), /* number times process entered "think" state */ 11 289 2 number_queues fixed bin (35), /* number times process entered "queued" state */ 11 290 2 total_think_time fixed bin (71), 11 291 2 total_queue_time fixed bin (71), 11 292 11 293 /* The next three arrays correspond to the array vcpu_response_bounds */ 11 294 11 295 2 number_processing (VCPU_RESPONSE_BOUNDS+1) fixed bin (35), /* number times entered "processing" state */ 11 296 2 total_processing_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 11 297 2 total_vcpu_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 11 298 2 maxf fixed bin (35), /* maximum fraction of cpu time */ 11 299 2 governing_credits fixed bin (35), /* for limiting cpu resources */ 11 300 2 pad1 (4) fixed bin (35); 11 301 11 302 11 303 dcl 1 based_sentinel aligned based, /* format of pxss-style sentinel */ 11 304 2 fp bit (18) unal, 11 305 2 bp bit (18) unal, 11 306 2 sentinel bit (36) aligned; 11 307 11 308 dcl VCPU_RESPONSE_BOUNDS fixed bin init (3) int static options (constant); 11 309 11 310 /* END INCLUDE FILE tcm.incl.pl1 */ 899 900 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 12 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 12 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 12 8* attribute switches. 12 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 12 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 12 12* be deleted. 12 13* B) Add constants identifying attributes that can be changed by user at 12 14* login, etc. 12 15* END HISTORY COMMENTS */ 12 16 12 17 12 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 12 19 12 20 /* format: style4 */ 12 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 12 22 (2 administrator bit (1), /* 1 system administrator privileges */ 12 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 12 24 2 nobump bit (1), /* 2 user cannot be bumped */ 12 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 12 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 12 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 12 28* . of same project (distinct from "nobump") */ 12 29 2 nolist bit (1), /* 7 don't list user on "who" */ 12 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 12 31 2 multip bit (1), /* 9 user may have several processes */ 12 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 12 33 2 brief bit (1), /* 11 no login or logout message */ 12 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 12 35 2 vhomedir bit (1), /* 13 user may change homedir */ 12 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 12 37 2 sb_ok bit (1), /* 15 user may be standby */ 12 38 2 pm_ok bit (1), /* 16 user may be primary */ 12 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 12 40 2 daemon bit (1), /* 18 user may login as daemon */ 12 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 12 42 2 no_warning bit (1), /* 20 no warning message */ 12 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 12 44* . in PDT: this user has an individual load control group */ 12 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 12 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 12 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 12 48 2 pad bit (12)) unaligned; 12 49 12 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 12 51 ("none", /* 0 */ 12 52 "administrator", /* 1 */ 12 53 "primary_line", /* 2 */ 12 54 "nobump", /* 3 */ 12 55 "guaranteed_login", /* 4 */ 12 56 "anonymous", /* 5 */ 12 57 "nopreempt", /* 6 */ 12 58 "nolist", /* 7 */ 12 59 "dialok", /* 8 */ 12 60 "multip", /* 9 */ 12 61 "bumping", /* 10 */ 12 62 "brief", /* 11 */ 12 63 "vinitproc", /* 12 */ 12 64 "vhomedir", /* 13 */ 12 65 "nostartup", /* 14 */ 12 66 "no_secondary", /* 15 */ 12 67 "no_prime", /* 16 */ 12 68 "no_eo", /* 17 */ 12 69 "daemon", /* 18 */ 12 70 "", /* 19 vdim OBSOLETE */ 12 71 "no_warning", /* 20 */ 12 72 "igroup", /* 21 */ 12 73 "save_pdir", /* 22 */ 12 74 "disconnect_ok", /* 23 */ 12 75 "save_on_disconnect"); /* 24 */ 12 76 12 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 12 78 ("null", /* 0 */ 12 79 "admin", /* 1 */ 12 80 "", "", /* 2 - 3 */ 12 81 "guar", /* 4 */ 12 82 "anon", /* 5 */ 12 83 "", "", /* 6 - 7 */ 12 84 "dial", /* 8 */ 12 85 "multi_login", /* 9 */ 12 86 "preempting", /* 10 */ 12 87 "", /* 11 */ 12 88 "v_process_overseer", /* 12 */ 12 89 "v_home_dir", /* 13 */ 12 90 "no_start_up", /* 14 */ 12 91 "no_sec", /* 15 */ 12 92 "no_primary", /* 16 */ 12 93 "no_edit_only", /* 17 */ 12 94 "op_login", /* 18 */ 12 95 "", /* 19 */ 12 96 "nowarn", /* 20 */ 12 97 "", "", "", /* 21 - 23 */ 12 98 "save"); /* 24 */ 12 99 12 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 12 101 options(constant) init("000000000010000000010000000000000000"b); 12 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 12 103 12 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 12 105 options(constant) init("000000000010000000010000000000000000"b); 12 106 /* PDT value for (brief, no_warning) is default */ 12 107 12 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 12 109 options(constant) init("000100000110010000010000000000000000"b); 12 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 12 111 13 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* This include file describes the attributes of an absentee job. It is */ 13 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 13 7 /* and PIT.incl.pl1. */ 13 8 /* */ 13 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 10 13 11 /****^ HISTORY COMMENTS: 13 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 13 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 14* Separated abs_attributes from the request structure 13 15* (abs_message_format.incl.pl1) so that the identical structure could be 13 16* used in the ute structure (user_table_entry.incl.pl1). 13 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 13 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 19* Added ABS_ATTRIBUTE_NAMES array. 13 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 13 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 13 22* Added the no_start_up flag. SCP6367 13 23* END HISTORY COMMENTS */ 13 24 13 25 dcl 1 user_abs_attributes aligned based, 13 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 13 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 13 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 13 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 13 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 13 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 13 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 13 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 13 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 13 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 13 36 2 attributes_pad bit (26) unaligned; 13 37 13 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 13 39 "restartable", 13 40 "user_deferred_until_time", 13 41 "proxy", 13 42 "set_bit_cnt", 13 43 "time_in_gmt", 13 44 "user_deferred_indefinitely", 13 45 "secondary_ok", 13 46 "truncate_absout", 13 47 "restarted", 13 48 "no_start_up"); 13 49 13 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 13 51 12 112 12 113 12 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 900 901 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 14 2 14 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 4 /* */ 14 5 /* This include file requires that the user include */ 14 6 /* user_attributes.incl.pl1 as well. It also includes */ 14 7 /* abs_attributes.incl.pl1 itself. */ 14 8 /* */ 14 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 14 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 14 11 /* */ 14 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 13 14 14 /****^ HISTORY COMMENTS: 14 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 14 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 14 17* This comment for hcom. 14 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 14 19* anstbl.incl.pl1, and dutbl.incl.pl1. 14 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 14 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 14 22* 84-07-12 BIM added min_process_authorization 14 23* 84-12-31 Keith Loepere added pdir_dir_quota 14 24* 85-01-16 by E. Swenson to add ute.session_uid 14 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 14 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 14 27* Added fields for DSA login server support. 14 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 14 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 14 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 14 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 14 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 14 33* Added disconnection_rel_minutes. 14 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 14 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 36* Changed structure under ute.abs_attributes to use like structure in 14 37* abs_attributes.incl.pl1. This allows the same attributes to be used 14 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 14 39* file. 14 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 14 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 14 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 14 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 45* A) Global reorganization to locate things by type of data. 14 46* B) Eliminate ute.uflags.logged_in. 14 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 14 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 49* A) Reduced overlength person and project fields to proper length. 14 50* B) Adjusted dialed-console section to begin on even word boundary. 14 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 14 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 53* Add ute.line_type. 14 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 14 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 14 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 14 57* for the storage. SCP6367 14 58* END HISTORY COMMENTS */ 14 59 14 60 /* format: style4 */ 14 61 14 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 63 /* */ 14 64 /* Each of the named sections below defines a type of data. Typing comes */ 14 65 /* from data associated with the ute entry itself, with the person, with */ 14 66 /* login argument data, from the main user of the data (eg, dialup_, */ 14 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 14 68 /* and is an even number of words long. The total structure is 300 decimal */ 14 69 /* words long. */ 14 70 /* */ 14 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 72 14 73 14 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 14 75 14 76 dcl utep pointer automatic init (null); 14 77 14 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 14 79 14 80 /* Variables which give state of this entry */ 14 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 14 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 14 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 14 84 2 next_free fixed bin, /* points to previous free entry */ 14 85 14 86 /* Information user gave about person_id associated with this entry. */ 14 87 2 person char (24) unal, /* user's name */ 14 88 2 project char (12) unal, /* project of absentee user */ 14 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 14 90 2 tag_pad bit (27) unal, 14 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 14 92 2 login_flags, /* flags for login data */ 14 93 3 cpw bit (1) unal, /* flag for wish to change password */ 14 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 14 95 3 special_pw unal, /* dial or slave */ 14 96 4 dial_pw bit (1) unal, /* true if dial -user */ 14 97 4 slave_pw bit (1) unal, /* true if slave -user */ 14 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 14 99 3 cda bit (1) unal, /* flag to change default authorization */ 14 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 14 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 14 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 14 103 3 pw_pad bit (25) unal, /* spare parts */ 14 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 14 105 /* Must remain last in pw_flags so it does not */ 14 106 /* appear in PW_FLAG_VALUES array below. */ 14 107 2 generated_pw char (8) unal, /* user must type this as new password */ 14 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 14 109 2 process_authorization bit (72), /* access_authorization of this process */ 14 110 14 111 /* Information user gave about process associated with this entry. */ 14 112 2 outer_module char (32) unal, /* Name of console dim */ 14 113 2 home_dir char (64) unal, /* initial home directory */ 14 114 2 init_proc char (64) unal, /* name of login responder */ 14 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 14 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 14 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 14 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 14 119 2 initial_ring fixed bin, /* ring process will be started in */ 14 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 14 121 2 ln_args fixed bin, /* length of string containing arguments */ 14 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 14 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 14 124 14 125 /* Most of the following information is relevant only to absentee processes */ 14 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 14 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 14 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 14 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 14 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 14 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 14 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 14 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 14 134* (but see uflags.adjust_abs_q_no). */ 14 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 14 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 14 137 2 abs_flags, 14 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 14 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 14 140 3 abs_flags_pad bit (34) unal, 14 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 14 142 2 sender char (32) unal, /* name of RJE station that job is from */ 14 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 14 144 2 proxy_project char (9) unal, 14 145 2 proxy_project_pad char (3) unal, 14 146 2 abs_pad fixed bin, 14 147 14 148 /* Information about process actually created */ 14 149 2 proc_id bit (36), /* process id of absentee process */ 14 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 14 151 2 process_authorization_range (2) bit (72) aligned, 14 152 2 audit bit (36), /* audit flags for user */ 14 153 2 lot_size fixed bin, /* Size of linkage offset table */ 14 154 2 kst_size fixed bin, /* Size of process known segment table */ 14 155 2 cls_size fixed bin, /* Size of process combined linkage */ 14 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 14 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 14 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 14 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 14 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 14 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 14 162 2 pdir_pad fixed bin(17) unal, 14 163 2 process_pad fixed bin, 14 164 14 165 /* Information about primary terminal associated with this entry */ 14 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 14 167 2 terminal_type char (32) unaligned, /* terminal type */ 14 168 2 line_type fixed bin, /* line type */ 14 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 14 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 14 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 14 172 14 173 /* Variables useful for dialed terminals */ 14 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 14 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 14 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 14 177 2 dial_server_flags, 14 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 14 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 14 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 14 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 14 182 14 183 /* Information about usage/accounting. Device usage meters are in a 14 184* separate segment, "devtab" */ 14 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 14 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 14 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 14 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 14 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 14 190 2 last_update_time fixed bin (71), /* time of last account update */ 14 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 14 192 2 ndevices fixed bin, /* Count of attached devices */ 14 193 2 device_head fixed bin, /* Table index of head of device chain */ 14 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 14 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 14 196 2 rs_number_pad bit(30) unal, 14 197 2 usage_pad fixed bin, 14 198 14 199 /* Information for dialup_ (control variables). */ 14 200 2 event fixed bin (71), /* event associated with channel or user manager */ 14 201 2 uprojp ptr, /* ptr to user project sat entry */ 14 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 14 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 14 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 14 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 14 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 14 207 2 count fixed bin, /* counter for logins and dialups */ 14 208 2 n_processes fixed bin, /* number of processes created in this session */ 14 209 2 lock_value fixed bin, /* number of locks set for this entry */ 14 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 14 211 2 login_code char (8) unal, /* login command from LOGIN line */ 14 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 14 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 14 214 2 logout_type char (4) unal, /* type of logout */ 14 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 14 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 14 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 14 218 2 work_class fixed bin, /* work class used by priority scheduler */ 14 219 2 group char (8) unal, /* party group identifier */ 14 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 14 221 14 222 2 uflags, /* Miscellaneous flags */ 14 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 14 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 14 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 14 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 14 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 14 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 14 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 14 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 14 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 14 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 14 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 14 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 14 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 14 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 14 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 14 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 14 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 14 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 14 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 14 242 3 uflags_pad bit (17) unal, 14 243 14 244 /* Information used by load_ctl_ for the process */ 14 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 14 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 14 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 14 248 14 249 14 250 /* Information for login server */ 14 251 2 login_server_info, 14 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 14 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 14 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 14 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 14 256 3 process_id bit (36) aligned, /* process_id of login server */ 14 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 14 258 14 259 /* values for ute.process_type */ 14 260 14 261 dcl (PT_INTERACTIVE initial (1), 14 262 PT_ABSENTEE initial (2), 14 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 14 264 14 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 14 266 "INVALID-TYPE", 14 267 "interactive", 14 268 "absentee", 14 269 "daemon"); 14 270 14 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 14 272 "UNKNOWN-TABLE", 14 273 "answer_table", 14 274 "absentee_user_table", 14 275 "daemon_user_table"); 14 276 14 277 14 278 /* values for ute.pw_flags.mask_ctl */ 14 279 14 280 dcl (DO_MASK init ("00"b), 14 281 DONT_MASK init ("01"b), 14 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 14 283 14 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 14 285 "do_mask", "dont_mask", "derive_mask", ""); 14 286 14 287 14 288 /* names for ute.pw_flags */ 14 289 14 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 14 291 "cpw", 14 292 "generate_pw", 14 293 "dial_pw", 14 294 "slave_pw", 14 295 "cdp", 14 296 "cda", 14 297 "auth_given", 14 298 "noprint", 14 299 "operator"); 14 300 14 301 /* names for ute.uflags */ 14 302 14 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 14 304 "dont_call_init_admin", 14 305 "ip_given", 14 306 "ss_given", 14 307 "lvs_attached", 14 308 "send_initial_string", 14 309 "adjust_abs_q_no", 14 310 "foreground_secondary_ok", 14 311 "foreground_job", 14 312 "sus_sent", 14 313 "suspended", 14 314 "ignore_cpulimit", 14 315 "deferral_logged", 14 316 "save_if_disconnected", 14 317 "disconnected", 14 318 "disconnected_list", 14 319 "proc_create_ok", 14 320 "activity_can_unbump", 14 321 "fpe_causes_logout", 14 322 "user_specified_immediate"); 14 323 14 324 /* names for ute.abs_flags */ 14 325 14 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 14 327 "abs_run", 14 328 "notify"); 14 329 14 330 /* names of ute.dial_server_flags */ 14 331 14 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 14 333 "registered", 14 334 "privileged"); 14 335 14 336 /* values of ute.login_result */ 14 337 14 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 14 339 "logged in", 14 340 "login failed, hangup", 14 341 "login failed, try again"); 14 342 14 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 901 902 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 15 2 15 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 4 /* */ 15 5 /* This include file declares the header shared by the answer_table, */ 15 6 /* absentee_user_table and daemon_user_table include files. */ 15 7 /* */ 15 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 9 15 10 /****^ HISTORY COMMENTS: 15 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 15 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 13* Initial coding. 15 14* END HISTORY COMMENTS */ 15 15 15 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 15 17 2 header_version fixed bin, /* version of the header (3) */ 15 18 2 entry_version fixed bin, /* version of user table entries */ 15 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 15 20 2 header_length fixed bin, /* length of the header */ 15 21 2 max_size fixed bin, /* max number of entries in this table */ 15 22 2 current_size fixed bin, /* actual size of table (in entries) */ 15 23 2 number_free fixed bin, /* number of free entries in the table. */ 15 24 2 first_free fixed bin, /* index of first entry in the free list. */ 15 25 2 as_procid bit (36), /* process ID of user table manager process */ 15 26 2 ut_header_pad fixed bin; 15 27 15 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 902 903 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 16 2 16 3 /* Modified 740723 by PG to add security info */ 16 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 16 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 16 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 16 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 16 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 16 9 16 10 dcl 1 whotab based (whoptr) aligned, 16 11 2 mxusers fixed bin, /* max. number of users on system */ 16 12 2 n_users fixed bin, /* current number of users */ 16 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 16 14 2 n_units fixed bin, /* current load */ 16 15 2 timeup fixed bin (71), /* time system was started */ 16 16 2 session char (8), /* AS state, same as anstbl.session */ 16 17 2 nextsd fixed bin (71), /* time we will shutdown */ 16 18 2 until fixed bin (71), /* projected time we start up again */ 16 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 16 20 2 erfno char (8), /* if a crash, the error number */ 16 21 2 obsolete_why char (32), /* reason for last shutdown */ 16 22 2 installation_id char (32), /* name of installation */ 16 23 2 obsolete_message char (32), /* message for all users */ 16 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 16 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 16 26 2 max_abs_users fixed bin, /* max number of absentee users */ 16 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 16 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 16 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 16 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 16 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 16 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 16 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 16 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 16 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 16 36 2 pad1 bit (9) unal, 16 37 2 pad (3) fixed bin, 16 38 2 version fixed bin, /* structure version */ 16 39 2 header_size fixed bin, /* length of header in words */ 16 40 2 entry_size fixed bin, /* length of entry in words */ 16 41 /* laste_adjust is used only by Answering Service programs */ 16 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 16 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 16 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 16 45 16 46 /* whotab header extension: The header is extended from 64 words by 16 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 16 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 16 49* present. This allows existing programs to function with old definitions of 16 50* whotab. Obviously no new header field can be more than 31 contiguous words in 16 51* length. In the Answering Service, all programs using whotab must be compiled 16 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 16 53 16 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 16 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 16 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 16 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 16 58 2 abs_control, /* see absentee_user_table */ 16 59 3 mnbz bit (1) unal, /* must not be zero */ 16 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 16 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 16 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 16 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 16 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 16 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 16 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 16 67 3 control_pad bit (23) unal, 16 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 16 69 2 installation_request_pid bit (36), /* installation process identifier */ 16 70 2 sysid char (32), /* current system name */ 16 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 16 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 16 73 2 message char (124), /* message for all users */ 16 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 16 75 2 why char (124), /* reason for last shutdown */ 16 76 2 e (1000), /* offset 240o */ 16 77 3 active fixed bin, /* nonzero means logged in */ 16 78 3 person char (28) aligned, /* person name */ 16 79 3 project char (28), /* project id */ 16 80 3 anon fixed bin, /* 1 if anonymous user */ 16 81 3 padding fixed bin (71), 16 82 3 timeon fixed bin (71), /* time of login */ 16 83 3 units fixed bin, /* load units */ 16 84 3 stby fixed bin, /* 1 if stby */ 16 85 3 idcode char (4), /* tty id code */ 16 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 16 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 16 88 3 group char (8), /* party-line group */ 16 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 16 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 16 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 16 92 3 pad2 bit (33) unal, 16 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 16 94 3 process_authorization bit (72); /* access authorization of process */ 16 95 16 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 16 97 16 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 903 904 905 end as_who; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1919.5 as_who.pl1 >udd>sm>ds>w>ml>as_who.pl1 890 1 08/06/87 1013.4 absentee_user_table.incl.pl1 >ldd>incl>absentee_user_table.incl.pl1 891 2 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 892 3 08/06/87 1013.0 answer_table.incl.pl1 >ldd>incl>answer_table.incl.pl1 893 4 01/06/85 1522.2 apte.incl.pl1 >ldd>incl>apte.incl.pl1 894 5 08/06/87 1012.9 daemon_user_table.incl.pl1 >ldd>incl>daemon_user_table.incl.pl1 895 6 08/06/87 1013.4 dialup_values.incl.pl1 >ldd>incl>dialup_values.incl.pl1 896 7 07/24/86 2151.9 disk_table.incl.pl1 >ldd>incl>disk_table.incl.pl1 897 8 01/06/85 1522.1 hc_lock.incl.pl1 >ldd>incl>hc_lock.incl.pl1 898 9 08/06/87 1013.4 installation_parms.incl.pl1 >ldd>incl>installation_parms.incl.pl1 9-148 10 11/21/79 1558.3 rcp_init_flags.incl.pl1 >ldd>incl>rcp_init_flags.incl.pl1 899 11 01/30/85 1623.9 tcm.incl.pl1 >ldd>incl>tcm.incl.pl1 900 12 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>incl>user_attributes.incl.pl1 12-112 13 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>incl>user_abs_attributes.incl.pl1 901 14 07/14/88 2115.0 user_table_entry.incl.pl1 >ldd>incl>user_table_entry.incl.pl1 902 15 08/06/87 1013.6 user_table_header.incl.pl1 >ldd>incl>user_table_header.incl.pl1 903 16 01/18/85 1053.2 whotab.incl.pl1 >ldd>incl>whotab.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. FALSE constant bit(1) initial packed unaligned dcl 203 ref 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 189 194 194 323 376 399 MY_NAME 000012 constant char(6) initial packed unaligned dcl 203 set ref 276* MY_NAME_HMU 000003 constant char(21) initial packed unaligned dcl 203 set ref 784* MY_NAME_LONG 000000 constant char(11) initial packed unaligned dcl 203 set ref 772* NL constant char(1) initial packed unaligned dcl 203 ref 434 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 6-76 ref 681 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 6-76 ref 428 553 R_ACCESS 000023 constant bit(3) initial packed unaligned dcl 2-11 set ref 364* 366* 368* 370* 378* SORT_BY_DATE constant fixed bin(17,0) initial dcl 203 ref 132 535 SORT_BY_NAME constant fixed bin(17,0) initial dcl 203 ref 292 537 SORT_BY_PROJECT constant fixed bin(17,0) initial dcl 203 ref 293 539 TEN_UNITS 011151 constant fixed bin(17,0) initial dcl 203 ref 452 453 475 476 592 661 TRUE constant bit(1) initial packed unaligned dcl 203 ref 285 294 295 296 297 298 299 300 301 311 315 319 328 329 332 351 355 373 398 778 792 857 860 UTE_SIZE constant fixed bin(17,0) initial dcl 3-120 ref 427 427 533 533 534 534 552 552 abs 000123 automatic bit(1) initial dcl 132 set ref 132* 296* 460 509 519 619 678 750 abs_name 002374 automatic char(6) initial packed unaligned dcl 132 set ref 132* 634* 636* 664* abs_running 002417 automatic fixed bin(17,0) initial dcl 132 set ref 132* 438* 481 509 absdn 002310 automatic char(168) initial packed unaligned dcl 132 set ref 132* 646* absen 002362 automatic char(32) initial packed unaligned dcl 132 set ref 132* 646* 647 648* 664* 672* absentee_users 002416 automatic fixed bin(17,0) initial dcl 132 set ref 132* 437* 438 462* 481* 509* active based fixed bin(17,0) level 2 dcl 14-78 ref 428 553 626 681 addr builtin function dcl 267 ref 427 533 534 552 625 680 addrel builtin function dcl 267 ref 863 866 afsw 000124 automatic bit(1) initial dcl 132 set ref 132* 280* 283 582 651 700 736 aj 002372 automatic fixed bin(17,0) initial dcl 132 set ref 132* 531* 533 544 ajd 002230 automatic fixed bin(17,0) initial dcl 132 set ref 132* 532* 534 543 al 000112 automatic fixed bin(21,0) initial dcl 132 set ref 132* 290* 292 292 293 293 294 294 295 295 296 296 297 297 298 298 299 300 300 301 301 302 302 306* 307 309 311 311 312 312 318* 319 322 328 329 331 331 336* 337 339 341 341 344 344 344 351 352 353 356 358 anon 002304 automatic char(1) initial packed unaligned dcl 132 set ref 132* 573* 574* 604* 613* 644* 645* 664* 672* anonymous 16 based fixed bin(17,0) level 2 dcl 14-78 ref 573 644 ansp 002460 automatic pointer initial dcl 3-53 set ref 393* 426 427 452 453 475 476 480 480 507 507 522 533 534 552 3-53* anstbl based structure level 1 dcl 3-55 ap 000104 automatic pointer initial dcl 132 set ref 132* 290* 292 292 293 293 294 294 295 295 296 296 297 297 298 298 299 300 300 301 301 302 302 306* 307 309 311 311 312 312 318* 319 322 328 329 331 331 336* 337 339 341 344 344 351 352 353 356 358 apt_entry_size 327 based fixed bin(18,0) level 2 dcl 11-11 ref 866 apt_offset 253 based bit(18) level 3 packed packed unaligned dcl 11-11 ref 863 apt_size 313 based fixed bin(18,0) level 2 dcl 11-11 ref 864 apte based structure level 1 dcl 4-7 aptep 002462 automatic pointer dcl 4-5 set ref 863* 865 866* 866 869 876 883 884 885 arg based char packed unaligned dcl 198 set ref 292 292 293 293 294 294 295 295 296 296 297 297 298 298 299 300 300 301 301 302 302 307 309 311 311 312 312 319 322 328 329 331 331 337 339 341* 344 344* 351 352 353 356 358 arg_count 000101 automatic fixed bin(17,0) initial dcl 132 set ref 132* 280* 288 288 303 315 333 776* 788* 789 789* argno 000100 automatic fixed bin(17,0) initial dcl 132 set ref 132* 288* 290* 303 305* 305 306* 315 318 324* 324 333 335* 335 336* ary 001625 automatic fixed bin(17,0) array dcl 132 set ref 524* 531 532 543* 544* 552 as_procid 10 based bit(36) level 3 dcl 3-55 ref 373 at 100 based structure level 2 dcl 14-78 autbl based structure level 1 dcl 1-28 autp 002456 automatic pointer initial dcl 1-26 set ref 394* 437 438 439 439 462 481 509 622 624 625 1-26* based_sentinel based structure level 1 dcl 11-303 cant_bump_until 404 based fixed bin(71,0) level 2 dcl 14-78 ref 578 channel_name 000143 automatic char(32) packed unaligned dcl 132 set ref 602* 603* 604* 719* 720* 721* check_star_name_$entry 000020 constant entry external dcl 240 ref 340 chnnm 000153 automatic char(32) initial packed unaligned dcl 132 set ref 132* 339* 340* 564* 636* 690* chnsw 000131 automatic bit(1) initial dcl 132 set ref 132* 332* 441 450 563 635 689 cleanup 002450 stack reference condition dcl 270 ref 275 771 clock builtin function dcl 267 ref 436 876 clock_time 002300 automatic fixed bin(71,0) initial dcl 132 set ref 132* 436* 578 code 000113 automatic fixed bin(35,0) initial dcl 132 in procedure "as_who" set ref 132* 276* 278 340* 341 341 341* 364* 365* 366* 367* 368* 369* 370* 371* 378* 379* 383* 384 384* 385* 386 388* 411* 412 412* 564* 565 636* 637 646* 690* 691 772* 774 784* 786 code 002541 automatic fixed bin(35,0) dcl 841 in procedure "get_usage" set ref 855* 856 code 002522 automatic fixed bin(35,0) dcl 813 in procedure "select" set ref 818* 819 connected_sw 000127 automatic bit(1) initial dcl 132 set ref 132* 299* 397 399* 450 518 560 619 750 cpu_usage 360 based fixed bin(71,0) level 2 dcl 14-78 set ref 581* 650* 699* cpusw 002444 automatic bit(1) initial packed unaligned dcl 194 set ref 194* 328* 382 503* 604* 613* 664* 672* 721* 729* current_size 5 based fixed bin(17,0) level 3 in structure "autbl" dcl 1-28 in procedure "as_who" ref 624 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 3-55 in procedure "as_who" ref 426 522 current_size 5 based fixed bin(17,0) level 3 in structure "dutbl" dcl 5-29 in procedure "as_who" ref 679 d 002225 automatic fixed bin(17,0) initial dcl 132 set ref 132* 527* 528* 528 530 532 544 549 date_time_ 000042 constant entry external dcl 248 ref 478 489 492 496 589 658 707 date_time_$format 000074 constant entry external dcl 843 ref 869 876 did 002373 automatic fixed bin(17,0) initial dcl 132 set ref 132* 572* 572 643* 643 697* 697 740 747 750 disc_sw 000130 automatic bit(1) initial dcl 132 set ref 132* 300* 397 399* 450 518 562 619 750 disconnected 431(13) based bit(1) level 3 packed packed unaligned dcl 14-78 set ref 560 562 602 604* 719 disk_table_$get_dtp 000024 constant entry external dcl 242 ref 404 divide builtin function dcl 267 ref 528 dmn 000125 automatic bit(1) initial dcl 132 set ref 132* 297* 446 469 509 520 619 678 750 dotl 000142 automatic fixed bin(17,0) initial dcl 132 set ref 132* 352* 353 354 dt based structure level 1 dcl 7-23 dte based structure level 1 dcl 7-35 dtp 002466 automatic pointer dcl 7-17 set ref 415* 418 418 420 829 829 dutbl based structure level 1 dcl 5-29 dutp 002464 automatic pointer initial dcl 5-27 set ref 395* 679 680 5-27* entry 200 based structure array level 2 in structure "autbl" dcl 1-28 in procedure "as_who" set ref 625 entry 200 based structure array level 2 in structure "anstbl" dcl 3-55 in procedure "as_who" set ref 427 533 534 552 entry 200 based structure array level 2 in structure "dutbl" dcl 5-29 in procedure "as_who" set ref 680 erfno 16 based char(8) level 2 dcl 16-10 set ref 497 499 500* error_table_$badopt 000010 external static fixed bin(35,0) dcl 233 set ref 344* error_table_$logical_volume_not_defined 000012 external static fixed bin(35,0) dcl 233 set ref 420* error_table_$noarg 000014 external static fixed bin(35,0) dcl 233 set ref 303* 333* error_table_$too_many_args 000016 external static fixed bin(35,0) dcl 233 set ref 348* 789* expand_pathname_ 000044 constant entry external dcl 249 ref 646 f1 000114 automatic float bin(27) initial dcl 132 set ref 132* 452* 475* 480* 507* 592* 604* 661* 664* 710* 721* f2 000115 automatic float bin(27) initial dcl 132 set ref 132* 453* 476* 480* 507* fancy 002421 automatic char(1) packed unaligned dcl 132 set ref 433* 434* 462* 497* 498* 499* 500* 513* find_char_$last_in_list 000076 constant entry external dcl 844 ref 872 873 874 879 880 881 fixed builtin function dcl 267 ref 883 884 885 flags 1 based structure level 2 packed packed unaligned dcl 4-7 foreground_users 002420 automatic fixed bin(17,0) initial dcl 132 set ref 132* 439* 462 462* 481 481* 509 509* get_process_id_ 000030 constant entry external dcl 244 ref 373 group 426 based char(8) level 2 packed packed unaligned dcl 14-78 ref 557 595 630 662 685 712 group_id 002512 automatic char(32) packed unaligned dcl 812 set ref 816* 818* grp 002306 automatic char(8) initial packed unaligned dcl 132 set ref 132* 595* 596 596* 604* 662* 663 663* 664* 712* 713 713* 721* have_read_apt 000121 automatic bit(1) initial packed unaligned dcl 132 set ref 132* 853 860* hbound builtin function dcl 267 ref 348 348 348 header based structure level 2 in structure "anstbl" dcl 3-55 in procedure "as_who" header based structure level 2 in structure "autbl" dcl 1-28 in procedure "as_who" header based structure level 2 in structure "dutbl" dcl 5-29 in procedure "as_who" i 002540 automatic fixed bin(17,0) dcl 841 in procedure "get_usage" set ref 864* i 001623 automatic fixed bin(17,0) initial dcl 132 in procedure "as_who" set ref 132* 418* 418* 420 422 iasw 000126 automatic bit(1) initial dcl 132 set ref 132* 298* 398* 450 509 518 619 750 idlesw 002445 automatic bit(1) initial packed unaligned dcl 194 set ref 194* 329* 382 503* 604* 613* 664* 672* 721* 729* index builtin function dcl 267 ref 307 319 337 344 352 647 initializer_process 000002 internal static bit(1) initial packed unaligned dcl 218 set ref 373* 376* 404 410 765 initiate_file_ 000032 constant entry external dcl 245 ref 364 366 368 370 378 input_seg 110 based char(168) level 2 packed packed unaligned dcl 14-78 ref 646 installation_id based char(32) level 3 dcl 9-33 set ref 479* installation_parms based structure level 1 dcl 9-33 installation_parms_part_1 based structure level 1 dcl 9-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 9-144 ioa_ 000034 constant entry external dcl 246 ref 447 456 462 466 470 479 480 481 484 485 490 493 497 498 499 500 503 507 509 604 613 664 672 721 729 742 745 750 ioa_$nnl 000036 constant entry external dcl 246 ref 513 ioa_$rsnnl 000040 constant entry external dcl 247 ref 634 ip 000000 internal static pointer initial dcl 218 set ref 364* 365 479 j 001624 automatic fixed bin(17,0) initial dcl 132 set ref 132* 426* 427* 523* 524 524* 530* 531 532 543 544* 551* 552* 624* 625 634* 679* 680* k 002422 automatic fixed bin(17,0) initial dcl 132 set ref 132* 634* 647* 648 648 817* 818* last 002226 automatic fixed bin(17,0) initial dcl 132 set ref 132* 522* 523 527 530 551 lastsd 14 based fixed bin(71,0) level 2 dcl 16-10 set ref 496* 498 length builtin function dcl 267 ref 428 503 590 590 590 659 659 659 708 708 708 737 737 870 870 871 871 877 877 878 878 lock based structure level 1 dcl 8-12 login_time 402 based fixed bin(71,0) level 2 dcl 14-78 set ref 535 535 589* 658* 707* long 000122 automatic bit(1) initial dcl 132 set ref 132* 294* 457 461 471 477 588 657 706 778* lv_array based structure array level 2 dcl 7-23 lve based structure level 1 dcl 7-58 lvix parameter fixed bin(17,0) dcl 827 ref 826 829 829 829 lvname based char(32) array level 3 dcl 7-23 ref 418 829 lvnm 002426 automatic char(32) initial packed unaligned dcl 191 set ref 191* 322* 402 417 418 420* 604* 613* 664* 672* 721* 729* 750* 829* 831* match_star_name_ 000022 constant entry external dcl 241 ref 564 636 690 818 max builtin function dcl 267 ref 428 max_abs_users 13 based fixed bin(17,0) level 2 dcl 1-28 ref 437 max_chan_name 002423 automatic fixed bin(17,0) initial dcl 188 set ref 188* 425* 428* 428 503 604* 664* 721* max_n_entries 1 based fixed bin(17,0) level 2 dcl 7-23 ref 418 829 max_units 17 based fixed bin(17,0) level 2 dcl 3-55 ref 453 476 max_users 15 based fixed bin(17,0) level 2 dcl 3-55 set ref 480* 507* mdc_$read_disk_table 000026 constant entry external dcl 243 ref 411 n_abs_run 12 based fixed bin(17,0) level 2 dcl 1-28 ref 438 439 622 n_background_abs 14 based fixed bin(17,0) level 2 dcl 1-28 set ref 439 462* 481* 509* n_daemons 55 based fixed bin(17,0) level 2 dcl 16-10 set ref 447* 484* 507* n_lv_entries 5 based fixed bin(17,0) level 2 dcl 7-23 ref 418 420 829 n_units 16 based fixed bin(17,0) level 2 dcl 3-55 ref 452 475 n_users 14 based fixed bin(17,0) level 2 dcl 3-55 set ref 480* 507* nextsd 10 based fixed bin(71,0) level 2 dcl 16-10 set ref 486 489* nhesw 000132 automatic bit(1) initial dcl 132 set ref 132* 285* 295* 432 no_ulist 000133 automatic bit(1) initial dcl 132 set ref 132* 433 448 451 501 509 516 792* no_usage 000120 automatic bit(1) initial packed unaligned dcl 132 set ref 132* 845 857* nobump 100(02) based bit(1) level 3 packed packed unaligned dcl 14-78 ref 576 nolist 002303 automatic char(1) initial packed unaligned dcl 132 in procedure "as_who" set ref 132* 593* 594* 604* 711* 711* 721* nolist 100(06) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 14-78 in procedure "as_who" ref 593 711 null builtin function dcl 267 ref 132 132 132 132 195 276 276 362 365 367 369 371 379 382 387 403 772 772 784 784 801 1-26 3-53 5-27 14-76 765 766 part_1 based structure level 2 dcl 9-33 pdir_lvix 313 based fixed bin(17,0) level 2 packed packed unaligned dcl 14-78 ref 558 580 631 649 686 698 pdlvix 002425 automatic fixed bin(17,0) initial dcl 190 set ref 190* 422* 441 558 558 631 631 686 686 742 750 pdvsw 002424 automatic bit(1) initial packed unaligned dcl 189 set ref 189* 315* 319* 323* 402 503* 580 604* 613* 649 664* 672* 698 721* 729* pers 002377 automatic char(28) initial packed unaligned dcl 132 set ref 132* 554* 583 604* 613* 627* 652 664* 672* 682* 701 721* 729* 816 person 4 based char(24) level 2 packed packed unaligned dcl 14-78 ref 537 537 541 541 554 627 682 pid_sw 000134 automatic bit(1) initial dcl 132 set ref 132* 301* 503* 556 604* 613* 629 664* 672* 684 721* 729* pp1 000106 automatic pointer initial dcl 132 set ref 132* 533* 535 537 539 541 541 pp2 000110 automatic pointer initial dcl 132 set ref 132* 534* 535 537 539 541 541 preempted 420 based fixed bin(17,0) level 2 dcl 14-78 ref 575 prim 002302 automatic char(1) initial packed unaligned dcl 132 set ref 132* 575* 576* 577* 578* 579* 604* 613* proc_id 276 based bit(36) level 2 dcl 14-78 set ref 556 581* 629 650* 684 699* proc_idle 002441 automatic char(10) initial packed unaligned dcl 193 set ref 193* 604* 613* 664* 672* 721* 729* 847* 876* 877 877* 878 878* 879* 879 879* 880* 881* 881 881* 883* 884* 885* proc_usage 002436 automatic char(10) initial packed unaligned dcl 192 set ref 192* 604* 613* 664* 672* 721* 729* 846* 869* 870 870* 871 871* 872* 872 872* 873* 874* 874 874* process_id 002415 automatic bit(36) packed unaligned dcl 132 set ref 556* 604* 613* 629* 664* 672* 684* 721* 729* processid 3 based bit(36) level 2 dcl 4-7 ref 865 proj 002406 automatic char(28) initial packed unaligned dcl 132 set ref 132* 555* 585 604* 613* 628* 654 664* 672* 683* 703 721* 729* 816 project 12 based char(12) level 2 packed packed unaligned dcl 14-78 ref 539 539 541 541 555 628 683 queue 245 based fixed bin(17,0) level 2 dcl 14-78 set ref 664 664* rcp_init_flags based structure level 1 packed packed unaligned dcl 10-8 ret based varying char dcl 198 set ref 284* 583* 583 584* 584 585* 585 586* 586 652* 652 653* 653 654* 654 655* 655 701* 701 702* 702 703* 703 704* 704 737 737* 737 737 retl 000116 automatic fixed bin(21,0) initial dcl 132 set ref 132* 280* 284 583 584 585 586 652 653 654 655 701 702 703 704 737 retp 000102 automatic pointer initial dcl 132 set ref 132* 280* 284 583 583 584 584 585 585 586 586 652 652 653 653 654 654 655 655 701 701 702 702 703 703 704 704 737 737 737 737 ring0_get_$segptr 000046 constant entry external dcl 250 ref 383 ring_zero_peek_ 000050 constant entry external dcl 251 ref 855 ring_zero_peek_$get_max_length_ptr 000052 constant entry external dcl 252 ref 385 rtrim builtin function dcl 267 ref 428 583 585 652 654 701 703 816 sbsw 000135 automatic bit(1) initial dcl 132 set ref 132* 311* 441 559 632 687 750 sci_ptr 002446 automatic pointer initial dcl 195 set ref 195* 276* 280* 290* 303* 306* 318* 333* 336* 341* 344* 348* 365* 367* 369* 371* 379* 384* 388* 406* 412* 420* 766 766* 772* 776* 784* 788* 789* 854* search builtin function dcl 267 ref 351 sel_names 000163 automatic char(32) array packed unaligned dcl 132 set ref 348 348 348 353* 356* 358* 818* sel_starsw 000141 automatic bit(1) initial packed unaligned dcl 132 set ref 132* 351* 355* 742 select_sw 002376 automatic fixed bin(17,0) initial dcl 132 set ref 132* 570 642 696 815* 822* selgp 000136 automatic char(8) initial dcl 132 set ref 132* 309* 441 557 557 630 630 685 685 750 selx 000140 automatic fixed bin(17,0) initial dcl 132 set ref 132* 347* 347 348 353 356 358 441 568 640 694 740 742 750 817 sort 000117 automatic fixed bin(17,0) initial dcl 132 set ref 132* 292* 293* 535 537 539 special_offsets 253 based structure level 2 packed packed unaligned dcl 11-11 ssu_$abort_line 000054 constant entry external dcl 253 ref 303 333 341 344 348 365 367 369 371 379 384 388 412 420 789 ssu_$arg_count 000056 constant entry external dcl 254 ref 776 788 ssu_$arg_ptr 000060 constant entry external dcl 255 ref 290 306 318 336 ssu_$destroy_invocation 000062 constant entry external dcl 256 ref 766 ssu_$get_temp_segment 000064 constant entry external dcl 257 ref 406 854 ssu_$return_arg 000066 constant entry external dcl 258 ref 280 ssu_$standalone_invocation 000070 constant entry external dcl 260 ref 276 772 784 standby_line 433 based fixed bin(17,0) level 2 dcl 14-78 ref 559 577 state 1(18) based bit(18) level 3 packed packed unaligned dcl 4-7 ref 883 884 885 state_change_time 22 based fixed bin(71,0) level 2 dcl 4-7 ref 876 static_ansp 000004 internal static pointer initial dcl 218 set ref 370* 371 373 393 801* static_autp 000006 internal static pointer initial dcl 218 set ref 362 378* 379 394 801* static_dtp 000010 internal static pointer initial dcl 218 set ref 403 404* 406* 411* 415 765* static_dutp 000012 internal static pointer initial dcl 218 set ref 366* 367 395 801* substr builtin function dcl 267 set ref 590 590 590* 648* 659 659 659* 708 708 708* 737 870 870* 871 871* 872 874 877 877* 878 878* 879 881 suspended 431(09) based bit(1) level 3 packed packed unaligned dcl 14-78 set ref 604* 664* swap 002227 automatic fixed bin(17,0) initial dcl 132 set ref 132* 529* 545* 545 548 sys_info$system_control_dir 000072 external static varying char(168) dcl 264 ref 363 sysdir 000014 internal static char(64) initial packed unaligned dcl 218 set ref 363 363* 364* 366* 368* 370* 378* 800* sysdirname parameter char packed unaligned dcl 798 ref 796 800 sysid 121 based char(32) level 2 dcl 16-10 set ref 479* 507* tcm based structure level 1 dcl 11-11 tcml 000034 internal static fixed bin(19,0) initial dcl 218 set ref 385* 855* tcmp 002470 automatic pointer dcl 11-9 set ref 854* 855* 863 863 864 866 tcmp0 000036 internal static pointer initial dcl 218 set ref 382 383* 385* 387* 855* time 002231 automatic char(16) initial packed unaligned dcl 132 set ref 132* 478* 485* 489* 490* 493* 496* 497* 499* 500* 589* 590 590* 591 604* 658* 659 659* 660 664* 707* 708 708* 709 721* time1 002235 automatic char(16) initial packed unaligned dcl 132 set ref 132* 492* 493* 590 591* 659 660* 708 709* timeup 4 based fixed bin(71,0) level 2 dcl 16-10 set ref 478* tty_id_code 337 based char(4) level 2 packed packed unaligned dcl 14-78 set ref 604* 721* tty_name 316 based char(32) level 2 packed packed unaligned dcl 14-78 set ref 428 564* 603 690* 720 uflags 431 based structure level 2 dcl 14-78 until 12 based fixed bin(71,0) level 2 dcl 16-10 set ref 490 492* user_abs_attributes based structure level 1 dcl 13-25 user_attributes based structure level 1 dcl 12-21 user_weight 432 based fixed bin(17,0) level 2 dcl 14-78 ref 592 661 710 ut_header based structure level 1 dcl 15-16 ute based structure level 1 dcl 14-78 utep 002472 automatic pointer initial dcl 14-76 set ref 427* 428 428 552* 553 554 555 556 557 558 559 560 562 564 573 575 576 577 578 580 581 581 589 592 593 595 602 603 604 604 604 625* 626 627 628 629 630 631 644 646 649 650 650 658 661 662 664 664 664 680* 681 682 683 684 685 686 690 698 699 699 707 710 711 712 719 720 721 14-76* virtual_cpu_time 46 based fixed bin(71,0) level 2 dcl 4-7 ref 869 wct_entry based structure level 1 dcl 11-260 white_len 002542 automatic fixed bin(17,0) dcl 842 set ref 873* 880* whoptr 000040 internal static pointer initial dcl 218 set ref 368* 369 447 478 479 484 486 487 489 490 492 496 497 498 499 500 507 507 whotab based structure level 1 dcl 16-10 why 002241 automatic char(124) initial packed unaligned dcl 132 in procedure "as_who" set ref 132* 487* 488 488* 490* 493* why 201 based char(124) level 2 in structure "whotab" dcl 16-10 in procedure "as_who" ref 487 x parameter bit(36) dcl 839 ref 837 865 y parameter fixed bin(71,0) dcl 840 ref 837 869 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 13-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 14-326 ACTIVE_VALUES internal static char(18) initial array dcl 6-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 12-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 3-51 AT_NORMAL internal static char(8) initial packed unaligned dcl 3-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 3-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 3-116 AUTBL_CONTROL_NAMES internal static varying char(20) initial array dcl 1-68 AUTBL_version_4 internal static fixed bin(17,0) initial dcl 1-24 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Automatic_authentication internal static fixed bin(17,0) initial dcl 10-16 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 14-280 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 14-332 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DONT_MASK internal static bit(2) initial packed unaligned dcl 14-280 DO_MASK internal static bit(2) initial packed unaligned dcl 14-280 DUTBL_version_4 internal static fixed bin(17,0) initial dcl 5-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 14-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 14-284 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Manual_authentication internal static fixed bin(17,0) initial dcl 10-16 NOW_DIALED internal static fixed bin(17,0) initial dcl 6-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 6-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 6-76 NOW_FREE internal static fixed bin(17,0) initial dcl 6-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 6-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 6-76 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 No_authentication internal static fixed bin(17,0) initial dcl 10-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 10-16 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 6-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 14-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 14-261 PT_ALARM internal static fixed bin(17,0) initial dcl 6-106 PT_BUMP internal static fixed bin(17,0) initial dcl 6-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 14-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 6-106 PT_DETACH internal static fixed bin(17,0) initial dcl 6-106 PT_FPE internal static fixed bin(17,0) initial dcl 6-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 6-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 14-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 6-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 6-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 6-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 6-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 6-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 6-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 14-290 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 STATE_VALUES internal static char(15) initial array dcl 6-70 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 14-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 6-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 6-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 6-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 6-93 TAG_UFT internal static char(1) initial packed unaligned dcl 6-93 TRA_VEC_VALUES internal static char(32) initial array dcl 6-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 6-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 6-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 6-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 6-64 UFLAG_NAMES internal static varying char(24) initial array dcl 14-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 12-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 12-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 12-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 12-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 14-74 VCPU_RESPONSE_BOUNDS internal static fixed bin(17,0) initial dcl 11-308 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 6-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 6-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 6-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 6-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 6-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 6-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 6-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 6-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 16-96 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 authentication_level_names internal static char(12) initial array packed unaligned dcl 10-21 dtep automatic pointer dcl 7-17 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 9-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 9-38 lock_ptr automatic pointer dcl 8-11 lvep automatic pointer dcl 7-17 rifp automatic pointer dcl 10-6 wctep automatic pointer dcl 11-258 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_ENTRY 010007 constant entry internal dcl 804 ref 276 276 772 772 784 784 BAD_GROUP 001611 constant label dcl 303 ref 307 PROCESS_PDIR_VOL_ARG 001716 constant label dcl 312 READ_ARGS 001376 constant label dcl 288 abort 010153 constant label dcl 846 ref 858 868 abs_portion 005741 constant label dcl 622 ref 519 arglp 001374 constant label dcl 288 ref 779 as_who 001254 constant entry external dcl 126 as_who$as_who_init 007727 constant entry external dcl 796 as_who$hmu 007575 constant entry external dcl 781 as_who$how_many_users 007605 constant entry external dcl 781 as_who$long 007465 constant entry external dcl 770 bad_chn 002024 constant label dcl 333 ref 337 clean_up 007760 constant entry internal dcl 760 ref 275 754 771 daemons 006576 constant label dcl 678 ref 472 520 620 622 done 007322 constant label dcl 736 ref 619 678 exit 007457 constant label dcl 754 ref 806 exit_no_cleanup 007463 constant label dcl 755 ref 278 774 786 found 010265 constant label dcl 869 set ref 865 get_lvnm 010121 constant entry internal dcl 826 ref 580 649 698 get_usage 010147 constant entry internal dcl 837 ref 581 650 699 go 002404 constant label dcl 362 ref 794 ias 004752 constant label dcl 522 ref 458 518 ic 005062 constant label dcl 543 ref 535 537 539 no_header 004736 constant label dcl 516 ref 432 pass 004770 constant label dcl 528 ref 548 549 pnl 007374 constant label dcl 745 ref 448 501 516 747 print 005220 constant label dcl 572 ref 568 print1 006074 constant label dcl 643 ref 640 print2 006706 constant label dcl 697 ref 694 print_abs_hdr 004661 constant label dcl 509 ref 467 print_ia_hdr 004604 constant label dcl 507 ref 454 prt_user_header 004540 constant label dcl 501 ref 457 464 471 select 010017 constant entry internal dcl 809 ref 569 641 695 skip 005724 constant label dcl 618 ref 553 557 558 559 560 562 565 570 skip1 006574 constant label dcl 676 ref 626 630 631 632 637 642 skip2 007320 constant label dcl 734 ref 681 685 686 687 691 696 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11636 12000 11160 11736 Length 12632 11160 100 615 455 42 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME as_who 1704 external procedure is an external procedure. on unit on line 275 64 on unit clean_up 68 internal procedure is called by several nonquick procedures. on unit on line 771 64 on unit ABORT_ENTRY 64 internal procedure is assigned to an entry variable. select internal procedure shares stack frame of external procedure as_who. get_lvnm internal procedure shares stack frame of external procedure as_who. get_usage internal procedure shares stack frame of external procedure as_who. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000000 ip as_who 000002 initializer_process as_who 000004 static_ansp as_who 000006 static_autp as_who 000010 static_dtp as_who 000012 static_dutp as_who 000014 sysdir as_who 000034 tcml as_who 000036 tcmp0 as_who 000040 whoptr as_who STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME as_who 000100 argno as_who 000101 arg_count as_who 000102 retp as_who 000104 ap as_who 000106 pp1 as_who 000110 pp2 as_who 000112 al as_who 000113 code as_who 000114 f1 as_who 000115 f2 as_who 000116 retl as_who 000117 sort as_who 000120 no_usage as_who 000121 have_read_apt as_who 000122 long as_who 000123 abs as_who 000124 afsw as_who 000125 dmn as_who 000126 iasw as_who 000127 connected_sw as_who 000130 disc_sw as_who 000131 chnsw as_who 000132 nhesw as_who 000133 no_ulist as_who 000134 pid_sw as_who 000135 sbsw as_who 000136 selgp as_who 000140 selx as_who 000141 sel_starsw as_who 000142 dotl as_who 000143 channel_name as_who 000153 chnnm as_who 000163 sel_names as_who 001623 i as_who 001624 j as_who 001625 ary as_who 002225 d as_who 002226 last as_who 002227 swap as_who 002230 ajd as_who 002231 time as_who 002235 time1 as_who 002241 why as_who 002300 clock_time as_who 002302 prim as_who 002303 nolist as_who 002304 anon as_who 002306 grp as_who 002310 absdn as_who 002362 absen as_who 002372 aj as_who 002373 did as_who 002374 abs_name as_who 002376 select_sw as_who 002377 pers as_who 002406 proj as_who 002415 process_id as_who 002416 absentee_users as_who 002417 abs_running as_who 002420 foreground_users as_who 002421 fancy as_who 002422 k as_who 002423 max_chan_name as_who 002424 pdvsw as_who 002425 pdlvix as_who 002426 lvnm as_who 002436 proc_usage as_who 002441 proc_idle as_who 002444 cpusw as_who 002445 idlesw as_who 002446 sci_ptr as_who 002456 autp as_who 002460 ansp as_who 002462 aptep as_who 002464 dutp as_who 002466 dtp as_who 002470 tcmp as_who 002472 utep as_who 002512 group_id select 002522 code select 002540 i get_usage 002541 code get_usage 002542 white_len get_usage THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack set_chars_eis index_chars_eis divide_fx1 ss_ext_entry ss_ext_entry_desc ss_int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry date_time_ date_time_$format disk_table_$get_dtp expand_pathname_ find_char_$last_in_list get_process_id_ initiate_file_ ioa_ ioa_$nnl ioa_$rsnnl match_star_name_ mdc_$read_disk_table ring0_get_$segptr ring_zero_peek_ ring_zero_peek_$get_max_length_ptr ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$get_temp_segment ssu_$return_arg ssu_$standalone_invocation THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$logical_volume_not_defined error_table_$noarg error_table_$too_many_args sys_info$system_control_dir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 132 001103 188 001224 189 001226 190 001227 191 001230 192 001233 193 001236 194 001241 195 001243 1 26 001245 3 53 001246 5 27 001247 14 76 001250 126 001253 275 001262 276 001304 278 001345 280 001347 283 001366 284 001371 285 001372 288 001374 290 001405 292 001422 293 001437 294 001452 295 001465 296 001500 297 001513 298 001526 299 001541 300 001550 301 001563 302 001576 303 001606 305 001635 306 001636 307 001653 309 001667 310 001672 311 001673 312 001706 315 001716 318 001724 319 001743 322 001762 323 001765 324 001767 327 001770 328 001771 329 002000 331 002007 332 002017 333 002021 335 002050 336 002051 337 002066 339 002102 340 002105 341 002122 343 002164 344 002165 347 002232 348 002233 351 002270 352 002306 353 002320 354 002343 355 002346 356 002350 357 002371 358 002373 360 002402 362 002404 363 002411 364 002423 365 002464 366 002515 367 002562 368 002616 369 002657 370 002707 371 002753 373 003006 376 003025 378 003026 379 003067 382 003120 383 003133 384 003162 385 003207 386 003223 387 003225 388 003230 393 003253 394 003256 395 003260 397 003262 398 003266 399 003270 402 003273 403 003302 404 003306 406 003320 410 003344 411 003347 412 003360 415 003406 417 003411 418 003415 419 003441 420 003443 422 003476 425 003500 426 003502 427 003513 428 003520 430 003540 432 003542 433 003544 434 003551 436 003553 437 003555 438 003560 439 003562 441 003565 446 003601 447 003603 448 003627 450 003631 451 003641 452 003643 453 003653 454 003661 456 003662 457 003673 458 003675 460 003676 461 003700 462 003702 464 003744 466 003745 467 003756 469 003757 470 003761 471 003772 472 003774 475 003775 476 004005 477 004013 478 004015 479 004034 480 004064 481 004117 484 004157 485 004204 486 004224 487 004230 488 004233 489 004242 490 004257 492 004310 493 004325 496 004354 497 004373 498 004433 499 004455 500 004510 501 004540 503 004542 505 004603 507 004604 509 004647 513 004717 516 004736 518 004740 519 004746 520 004750 522 004752 523 004755 524 004763 525 004764 527 004766 528 004770 529 004774 530 004775 531 005005 532 005007 533 005014 534 005022 535 005030 537 005035 539 005045 541 005054 543 005062 544 005065 545 005070 547 005071 548 005073 549 005075 551 005100 552 005107 553 005115 554 005120 555 005123 556 005126 557 005133 558 005143 559 005151 560 005155 562 005162 563 005167 564 005171 565 005211 568 005213 569 005215 570 005216 572 005220 573 005221 574 005227 575 005231 576 005236 577 005244 578 005252 579 005260 580 005262 581 005272 582 005303 583 005306 584 005333 585 005342 586 005366 587 005375 588 005376 589 005400 590 005416 591 005430 592 005436 593 005446 594 005454 595 005456 596 005461 602 005467 603 005476 604 005501 611 005634 613 005635 618 005724 619 005726 620 005740 622 005741 624 005744 625 005753 626 005757 627 005761 628 005764 629 005767 630 005774 631 006004 632 006012 634 006014 635 006042 636 006044 637 006065 640 006067 641 006071 642 006072 643 006074 644 006075 645 006103 646 006105 647 006135 648 006144 649 006155 650 006166 651 006177 652 006202 653 006227 654 006236 655 006262 656 006271 657 006272 658 006274 659 006312 660 006324 661 006332 662 006342 663 006345 664 006353 671 006504 672 006505 676 006574 678 006576 679 006602 680 006613 681 006617 682 006622 683 006625 684 006630 685 006635 686 006645 687 006653 689 006655 690 006657 691 006677 694 006701 695 006703 696 006704 697 006706 698 006707 699 006720 700 006731 701 006734 702 006761 703 006770 704 007014 705 007023 706 007024 707 007026 708 007044 709 007056 710 007064 711 007071 711 007077 712 007101 713 007104 719 007112 720 007121 721 007124 727 007237 729 007240 734 007320 736 007322 737 007325 739 007334 740 007335 742 007341 744 007373 745 007374 747 007406 750 007410 754 007457 755 007463 770 007464 771 007473 772 007515 774 007556 776 007560 778 007571 779 007573 781 007574 784 007613 786 007654 788 007656 789 007667 792 007721 794 007723 796 007724 800 007743 801 007752 802 007756 760 007757 765 007765 766 007772 768 010005 804 010006 806 010014 809 010017 815 010020 816 010022 817 010061 818 010071 819 010112 820 010115 822 010117 823 010120 826 010121 829 010123 831 010143 832 010146 837 010147 845 010151 846 010153 847 010156 848 010161 853 010162 854 010164 855 010206 856 010224 857 010226 858 010230 860 010231 863 010233 864 010241 865 010251 866 010256 867 010262 868 010264 869 010265 870 010335 871 010343 872 010351 873 010401 874 010435 875 010476 876 010501 877 010552 878 010560 879 010566 880 010616 881 010651 882 010712 883 010715 884 010727 885 010735 886 010742 ----------------------------------------------------------- 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