COMPILATION LISTING OF SEGMENT load_ctl_status Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 08/29/88 0920.2 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 lcs: load_ctl_status: proc; 14 15 /* print group totals */ 16 /* Modified by T. Casey, July 1975, to print work class information */ 17 /* Modified by T. Casey, September 1977, to count anstbl.extra_units in "all the rest" computation */ 18 /* Modified by G. Dixon, February, 1977 to terminate Answer Table using ansp, to align output columns, to 19* support more than 99 users in a group. */ 20 /* Modified by T. Casey, January 1979 for MR7.0 absentee enhancements */ 21 /* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. */ 22 23 /****^ HISTORY COMMENTS: 24* 1) change(87-04-26,GDixon), approve(87-05-01,MCR7741), 25* audit(87-05-06,Parisek), install(87-08-04,MR12.1-1055): 26* Upgraded for change to answer_table.incl.pl1. 27* 2) change(87-08-25,GDixon), approve(88-08-15,MCR7969), 28* audit(88-08-04,Lippard), install(88-08-29,MR12.2-1093): 29* Correct ioa_ control string. (Answering_Service 354, phx16706) 30* END HISTORY COMMENTS */ 31 32 dcl sysdir char (168) aligned int static init (">system_control_dir"), 33 en char (32) aligned, 34 datstr char (16) aligned, 35 wcstr char (10) aligned init (""), 36 an fixed bin, 37 selgp char (8) aligned init (""), 38 selgl fixed bin init (0), 39 (long, prio_sked, totalsw) bit (1) aligned init ("0"b), 40 shift_change_time fixed bin (71), 41 (shift, next_shift) fixed bin, 42 sysi char (8) aligned, 43 inst char (32) aligned, 44 (f1, f2, f3, f4, f5) float bin, 45 (i, k, n) fixed bin, 46 ap ptr, 47 al fixed bin, 48 bchr char (al) unaligned based (ap), 49 first_group fixed bin, 50 ec fixed bin, 51 fudge_flag char (1), 52 extra_units fixed bin, 53 whoptr ptr, 54 mgtp ptr; 55 56 dcl (addr, null, substr) builtin; 57 58 dcl clock_ entry () returns (fixed bin (71)), 59 system_info_$installation_id entry (char (*) aligned), 60 system_info_$sysid entry (char (*) aligned), 61 system_info_$next_shift_change entry (fixed bin, fixed bin (71), fixed bin), 62 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin), 63 ioa_ entry options (variable), 64 ioa_$rsnnl entry options (variable), 65 ioa_$nnl entry options (variable), 66 date_time_ entry (fixed bin (71), char (*) aligned), 67 com_err_ entry options (variable); 68 69 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (1), 70 fixed bin (2), ptr, fixed bin); 71 dcl hcs_$terminate_noname entry (ptr, fixed bin); 72 73 74 ansp = null; 75 k = 0; 76 en = "mgt"; 77 try_init: call hcs_$initiate (sysdir, en, "", 0, 1, mgtp, ec); 78 if mgtp = null then do; 79 if en = "mgt" then do; /* TEMPORARY - FOR FIRST RELEASE OF PRIORITY SCHEDULER SYSTEM */ 80 en = "master_group_table"; 81 goto try_init; 82 end; 83 er: call com_err_ (ec, "load_ctl_status", en); 84 return; 85 end; 86 87 first_group = 1; 88 if mgt.version_indicator = "VERSION " then 89 if mgt.version >= 2 then do; 90 first_group = 17; 91 if mgt.switches.prio_sked_enabled then prio_sked = "1"b; 92 end; 93 94 en = "whotab"; 95 call hcs_$initiate (sysdir, en, "", 0, 1, whoptr, ec); 96 if whoptr = null then go to er; 97 f1 = whotab.n_units / 1e1; 98 f2 = whotab.mxunits / 1e1; 99 call date_time_ ((clock_ ()), datstr); 100 call system_info_$next_shift_change (shift, shift_change_time, next_shift); 101 102 an = 1; 103 arglp: call cu_$arg_ptr (an, ap, al, ec); 104 if ec ^= 0 then go to endarg; 105 if al = 0 then ; 106 else if substr (bchr, 1, 1) = "-" then do; 107 if bchr = "-lg" then long = "1"b; 108 else if bchr = "-long" then long = "1"b; 109 else if bchr = "-tt" then totalsw = "1"b; 110 else if bchr = "-total" then totalsw = "1"b; 111 else if bchr = "-totals" then totalsw = "1"b; 112 else do; 113 call com_err_ (0, "load_ctl_status", "invalid argument ^a", bchr); 114 return; 115 end; 116 end; 117 else do; /* must be group id */ 118 selgp = bchr; 119 selgl = al; 120 end; 121 an = an + 1; 122 go to arglp; 123 124 endarg: if long then do; 125 call system_info_$sysid (sysi); 126 call system_info_$installation_id (inst); 127 call ioa_ ("^/Multics^x^a;^x^a^2x^a^/Load =^x^.1f out of^x^.1f units; users =^x^d absentee = ^d, daemons = ^d", 128 sysi, inst, datstr, f1, f2, whotab.n_users, whotab.abs_users, whotab.n_daemons); 129 130 call date_time_ (shift_change_time, datstr); 131 call ioa_ ("Shift ^d until ^a", shift, datstr); 132 end; 133 else do; 134 call ioa_ ("^/^16a^x^.1f/^.1f^x^d^x(^d,^d)", 135 datstr, f1, f2, whotab.n_users, whotab.abs_users, whotab.n_daemons); 136 if selgl ^= 0 then go to xlp; 137 end; 138 139 if prio_sked then do; 140 call ioa_$nnl ("^/Work Classes:"); 141 do i = 1 to 16; 142 if mgt.user_wc_defined (i) then 143 call ioa_$nnl ("^2x^2d", i); 144 end; 145 call ioa_$nnl ("^/Percents:^4x"); 146 do i = 1 to 16; 147 if mgt.user_wc_defined (i) then 148 call ioa_$nnl ("^2x^2d", mgt.user_wc_min_pct (i)); 149 end; 150 if totalsw then goto exit; /* if just totals, exit before printing heading */ 151 call ioa_ ("^2/Group^3xMaxprime^xMaxabs^2xPrime^xSecondary^2xAbs^4xTot / Max^4xPercent^2xIWC^xAWC^/"); 152 end; 153 154 else if ^totalsw then 155 call ioa_ ("^/Group^3xMaxprime^xMaxabs^2xPrime^xSecondary^2xAbs^4xTot / Max^4xPercent^/"); 156 xlp: 157 if totalsw then goto exit; 158 do i = first_group to mgt.current_size; 159 mgtep = addr (mgt.entry (i)); 160 if selgl ^= 0 then /* only one group wanted? */ 161 if selgp ^= substr (group.group_id, 1, selgl) then go to skip; 162 k = k + 1; 163 fudge_flag = ""; 164 if group.max_prim >= 0 then f1 = group.max_prim / 1e1; 165 else do; /* this group takes "all the rest" */ 166 call hcs_$initiate (sysdir, "answer_table", "", 0, 1, ansp, ec); 167 if ansp ^= null () then 168 extra_units = anstbl.extra_units; 169 else do; 170 extra_units = (whotab.abs_users + whotab.n_daemons) * 10; 171 fudge_flag = "*"; 172 end; 173 f1 = (whotab.mxunits - mgt.total_units - extra_units) / 1e1; 174 end; 175 f2 = group.n_prim / 1e1; 176 f3 = group.n_sec / 1e1; 177 f4 = (group.n_prim + group.n_sec) / 1e1; 178 f5 = f4 * 1e3 / whotab.n_units; 179 if group.absolute_max < 32767 then call ioa_$rsnnl ("^5.1f/^.1f", datstr, n, 180 f4, group.absolute_max / 1e1); 181 else call ioa_$rsnnl ("^5.1f/------", datstr, n, f4); 182 if prio_sked then 183 call ioa_$rsnnl ("^2x^2d^2x^2d", wcstr, n, group.int_wc (shift), group.abs_wc (shift)); 184 call ioa_ ("^8a^3x^5.1f^1a^6d^2x^5.1f^5x^5.1f^5d^3x^12a^3x^5.1f%^a", 185 group.group_id, f1, fudge_flag, group.absentee_limit, f2, f3, group.n_abs, datstr, f5, wcstr); 186 if fudge_flag = "*" then 187 call ioa_ ("^/* This figure might be inaccurate because you lack read access to the answer table."); 188 skip: end; 189 190 if selgl ^= 0 then if k = 0 then call ioa_ ("group ""^a"" not found", selgp); 191 exit: 192 call hcs_$terminate_noname (mgtp, ec); 193 call hcs_$terminate_noname (whoptr, ec); 194 if ansp ^= null () then 195 call hcs_$terminate_noname (ansp, ec); 196 call ioa_ (""); 197 198 return; 199 200 test: entry (a_sysdir); 201 202 dcl a_sysdir char (*); 203 204 sysdir = a_sysdir; 205 206 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The answer table has one entry per "login instance" whether completed or */ 1 6 /* not. It is connected to the Channel Definition Table by the pointer */ 1 7 /* "channel". The header is used mostly by dialup_. */ 1 8 /* */ 1 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 1 10 /* */ 1 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 15* Replace anstbl.incl.pl1. 1 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 1 17* Add anstbl.session_uid_counter. 1 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 1 19* Add anstbl.message_update_time and named constants for values of 1 20* anstbl.session, and to make all padding explicit. 1 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 1 22* Change "entry" to a placeholder so as not to require 1 23* user_table_entry.incl.pl1. 1 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 1 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 1 26* Added the flag login_server_present which indicates whether a login 1 27* server request has been received. This is used to determine whether 1 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 1 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 1 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 1 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 32* A) Moved constants for ute.pw_flags.mask_ctl into 1 33* user_table_entry.incl.pl1. 1 34* B) Added common table header to all user tables. 1 35* END HISTORY COMMENTS */ 1 36 1 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 38 /* */ 1 39 /* The anstbl structure below is divided into sections. Each section begins */ 1 40 /* with a comment describing the elements in the section. Elements are */ 1 41 /* placed within a section, based upon their function or the programs that */ 1 42 /* use them. Each section begins on a double word and is an even number of */ 1 43 /* words long. */ 1 44 /* */ 1 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* format: style4 */ 1 50 1 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 1 52 1 53 dcl ansp ptr automatic init (null); 1 54 1 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 1 56 2 header like ut_header, /* Header common to all user tables. */ 1 57 1 58 /* Counter elements. */ 1 59 2 nlin fixed bin, /* number of active lines */ 1 60 2 mxlin fixed bin, /* maximum number of active lines */ 1 61 2 n_users fixed bin, /* number of logged-in users */ 1 62 2 max_users fixed bin, /* maximum number of users allowed */ 1 63 2 n_units fixed bin, /* number of logged in units */ 1 64 2 max_units fixed bin, /* maximum number of units */ 1 65 2 n_sessions fixed bin, /* number of Multics sessions */ 1 66 2 n_pad fixed bin, 1 67 1 68 /* Name elements. */ 1 69 2 sysdir char (64) unal, /* name of main system control directory */ 1 70 2 as_tty char (8) unal, /* name of main answering service device. */ 1 71 1 72 /* Login elements. */ 1 73 2 login_word char (8) unal, /* login word if special_session=1 */ 1 74 2 session char (8) unal, /* session indicator */ 1 75 2 special_message char (128) unal, /* message to be printed for special session */ 1 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 1 77 2 message_lng fixed bin, /* length of special message */ 1 78 2 login_pad fixed bin, 1 79 1 80 /* Table update elements. */ 1 81 2 lock_count fixed bin, /* global lock for all system control tables */ 1 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 1 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 1 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 1 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 1 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 1 87 2 update_pad fixed bin, 1 88 1 89 /* dialup_ data values. */ 1 90 2 current_time fixed bin (71), /* Time of last transaction */ 1 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 1 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 1 93 1 94 /* load_ctl_ elements. */ 1 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 1 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 1 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 1 98 /* load_ctl_ load leveling desired response range: */ 1 99 2 response_high fixed bin, /* bad if user response time slower than this */ 1 100 2 response_low fixed bin, /* bad if user response time faster than this */ 1 101 2 load_ctl_pad fixed bin, 1 102 1 103 /* Login server request server data. */ 1 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 1 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 1 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 1 107 1 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 1 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 1 110 3 contents (UTE_SIZE) fixed bin; 1 111 1 112 /* constants */ 1 113 1 114 /* values for anstbl.session */ 1 115 1 116 dcl (AT_NORMAL init ("normal "), 1 117 AT_SPECIAL init ("special "), 1 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 1 119 1 120 dcl UTE_SIZE fixed bin internal static initial (300); 1 121 1 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 206 207 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 2 2 2 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 2 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 2 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 2 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 2 7 2 8 /* At login each user process is placed in that load control group specified in either 2 9* the project's SAT entry or the user's PDT entry. This group is remembered 2 10* in the user table entry for that process (ATE, DUTE, AUTE). 2 11* 2 12* MGT groups map each process into a set of processes called a work_class 2 13* as a function of shift and whether or not the process is absentee -- 2 14* also per group limits on the number of group members are given. 2 15* 2 16* The work_class entries in the MGT specify the configuration 2 17* of the hardcore scheduler on a per shift basis. If a work_class has the 2 18* realtime attribute, member processes will be given precisely specified 2 19* response characteristics. If running in deadline_not_percent mode on 2 20* a given shift then members of other work_classes will be given approximate 2 21* response characteristics; otherwise other work_classes will be given 2 22* percentages of whatever cpu time is unused by realtime processes. 2 23* REM */ 2 24 2 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 2 26 /* versions >= 3 contain deadline info */ 2 27 2 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 2 29 2 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 2 31* and work classes */ 2 32 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 33 2 34 /* the author structure occupies 29 words */ 2 35 2 max_size fixed bin, /* maximum size of table */ 2 36 2 current_size fixed bin, /* current number of entries */ 2 37 2 total_units fixed bin, /* total units allocated */ 2 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 2 39* (the first version of the mgt had no version number) */ 2 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 2 41 2 switches aligned, 2 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 2 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 2 44* be used by the answering service (all processes will be 2 45* put in work class 1 regardless of what the mgt says) */ 2 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 2 47* on the system tape */ 2 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 2 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 2 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 2 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 2 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 2 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 2 54 /* the above variables occupy a total of 24 words */ 2 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 2 56 2 57 2 entry (100), /* array of entries */ 2 58 3 fill (32) fixed bin; /* 32 words each */ 2 59 /* the first 16 are work classes; the rest, load control groups */ 2 60 2 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 2 62 2 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 2 64 2 group_id char (8), /* group name */ 2 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 2 66 2 n_prim fixed bin, /* current number of primary units */ 2 67 2 n_sec fixed bin, /* current number of secondary units */ 2 68 2 n_eo fixed bin, /* current number of edit-only users */ 2 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 2 70 2 minu fixed bin, /* Constant number of units in maxprim */ 2 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 2 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 2 73 2 minamax fixed bin, /* Constant part of abs max */ 2 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 2 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 2 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 2 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 2 78 /* used halfwords to avoid using up all the pad - 2 79* we might need it later */ 2 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 2 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 2 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 2 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 2 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 2 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 2 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 2 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 2 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 2 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 2 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 2 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 2 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 2 93 2 94 dcl 1 work_class based (mgtep) aligned, 2 95 2 wc_name char (8), /* overlays group.group_id, but can only be 2 96* one of the strings "1" through "16" */ 2 97 2 switches aligned, 2 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 2 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 2 100 /* ed_mgt and up_mgt_ enforce consistency between these 2 101* and the group.absentee switches */ 2 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 2 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 2 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 2 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 2 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 2 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 2 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 2 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 2 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 2 111 2 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 207 208 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 4 2 4 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 4 /* */ 4 5 /* This include file declares the header shared by the answer_table, */ 4 6 /* absentee_user_table and daemon_user_table include files. */ 4 7 /* */ 4 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 9 4 10 /****^ HISTORY COMMENTS: 4 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 4 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 13* Initial coding. 4 14* END HISTORY COMMENTS */ 4 15 4 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 4 17 2 header_version fixed bin, /* version of the header (3) */ 4 18 2 entry_version fixed bin, /* version of user table entries */ 4 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 4 20 2 header_length fixed bin, /* length of the header */ 4 21 2 max_size fixed bin, /* max number of entries in this table */ 4 22 2 current_size fixed bin, /* actual size of table (in entries) */ 4 23 2 number_free fixed bin, /* number of free entries in the table. */ 4 24 2 first_free fixed bin, /* index of first entry in the free list. */ 4 25 2 as_procid bit (36), /* process ID of user table manager process */ 4 26 2 ut_header_pad fixed bin; 4 27 4 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 208 209 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 5 2 5 3 /* Modified 740723 by PG to add security info */ 5 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 5 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 5 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 5 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 5 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 5 9 5 10 dcl 1 whotab based (whoptr) aligned, 5 11 2 mxusers fixed bin, /* max. number of users on system */ 5 12 2 n_users fixed bin, /* current number of users */ 5 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 5 14 2 n_units fixed bin, /* current load */ 5 15 2 timeup fixed bin (71), /* time system was started */ 5 16 2 session char (8), /* AS state, same as anstbl.session */ 5 17 2 nextsd fixed bin (71), /* time we will shutdown */ 5 18 2 until fixed bin (71), /* projected time we start up again */ 5 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 5 20 2 erfno char (8), /* if a crash, the error number */ 5 21 2 obsolete_why char (32), /* reason for last shutdown */ 5 22 2 installation_id char (32), /* name of installation */ 5 23 2 obsolete_message char (32), /* message for all users */ 5 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 5 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 5 26 2 max_abs_users fixed bin, /* max number of absentee users */ 5 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 5 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 5 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 5 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 5 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 5 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 5 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 5 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 5 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 5 36 2 pad1 bit (9) unal, 5 37 2 pad (3) fixed bin, 5 38 2 version fixed bin, /* structure version */ 5 39 2 header_size fixed bin, /* length of header in words */ 5 40 2 entry_size fixed bin, /* length of entry in words */ 5 41 /* laste_adjust is used only by Answering Service programs */ 5 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 5 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 5 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 5 45 5 46 /* whotab header extension: The header is extended from 64 words by 5 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 5 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 5 49* present. This allows existing programs to function with old definitions of 5 50* whotab. Obviously no new header field can be more than 31 contiguous words in 5 51* length. In the Answering Service, all programs using whotab must be compiled 5 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 5 53 5 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 5 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 5 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 5 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 5 58 2 abs_control, /* see absentee_user_table */ 5 59 3 mnbz bit (1) unal, /* must not be zero */ 5 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 5 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 5 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 5 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 5 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 5 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 5 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 5 67 3 control_pad bit (23) unal, 5 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 5 69 2 installation_request_pid bit (36), /* installation process identifier */ 5 70 2 sysid char (32), /* current system name */ 5 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 5 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 5 73 2 message char (124), /* message for all users */ 5 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 5 75 2 why char (124), /* reason for last shutdown */ 5 76 2 e (1000), /* offset 240o */ 5 77 3 active fixed bin, /* nonzero means logged in */ 5 78 3 person char (28) aligned, /* person name */ 5 79 3 project char (28), /* project id */ 5 80 3 anon fixed bin, /* 1 if anonymous user */ 5 81 3 padding fixed bin (71), 5 82 3 timeon fixed bin (71), /* time of login */ 5 83 3 units fixed bin, /* load units */ 5 84 3 stby fixed bin, /* 1 if stby */ 5 85 3 idcode char (4), /* tty id code */ 5 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 5 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 5 88 3 group char (8), /* party-line group */ 5 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 5 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 5 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 5 92 3 pad2 bit (33) unal, 5 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 5 94 3 process_authorization bit (72); /* access authorization of process */ 5 95 5 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 5 97 5 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 209 210 211 212 end load_ctl_status; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/29/88 0856.3 load_ctl_status.pl1 >spec>install>1093>load_ctl_status.pl1 206 1 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 207 2 08/10/81 1843.7 mgt.incl.pl1 >ldd>include>mgt.incl.pl1 2-33 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 208 4 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 209 5 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. a_sysdir parameter char packed unaligned dcl 202 ref 200 204 abs_users 54 based fixed bin(17,0) level 2 dcl 5-10 set ref 127* 134* 170 abs_wc 21 based fixed bin(17,0) array level 2 packed packed unaligned dcl 2-63 set ref 182* absentee_limit 27(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 2-63 set ref 184* absolute_max 6 based fixed bin(17,0) level 2 dcl 2-63 ref 179 179 addr builtin function dcl 56 ref 159 al 000156 automatic fixed bin(17,0) dcl 32 set ref 103* 105 106 107 108 109 110 111 113 113 118 119 an 000117 automatic fixed bin(17,0) dcl 32 set ref 102* 103* 121* 121 ansp 000170 automatic pointer initial dcl 1-53 set ref 74* 166* 167 167 194 194* 1-53* anstbl based structure level 1 dcl 1-55 ap 000154 automatic pointer dcl 32 set ref 103* 106 107 108 109 110 111 113 118 bchr based char packed unaligned dcl 32 set ref 106 107 108 109 110 111 113* 118 clock_ 000062 constant entry external dcl 58 ref 99 com_err_ 000104 constant entry external dcl 58 ref 83 113 cu_$arg_ptr 000072 constant entry external dcl 58 ref 103 current_size 36 based fixed bin(17,0) level 2 dcl 2-30 ref 158 date_time_ 000102 constant entry external dcl 58 ref 99 130 datstr 000110 automatic char(16) dcl 32 set ref 99* 127* 130* 131* 134* 179* 181* 184* ec 000160 automatic fixed bin(17,0) dcl 32 set ref 77* 83* 95* 103* 104 166* 191* 193* 194* en 000100 automatic char(32) dcl 32 set ref 76* 77* 79 80* 83* 94* 95* entry 100 based structure array level 2 dcl 2-30 set ref 159 extra_units 000162 automatic fixed bin(17,0) dcl 32 in procedure "load_ctl_status" set ref 167* 170* 173 extra_units 134 based fixed bin(17,0) level 2 in structure "anstbl" dcl 1-55 in procedure "load_ctl_status" ref 167 f1 000144 automatic float bin(27) dcl 32 set ref 97* 127* 134* 164* 173* 184* f2 000145 automatic float bin(27) dcl 32 set ref 98* 127* 134* 175* 184* f3 000146 automatic float bin(27) dcl 32 set ref 176* 184* f4 000147 automatic float bin(27) dcl 32 set ref 177* 178 179* 181* f5 000150 automatic float bin(27) dcl 32 set ref 178* 184* first_group 000157 automatic fixed bin(17,0) dcl 32 set ref 87* 90* 158 fudge_flag 000161 automatic char(1) packed unaligned dcl 32 set ref 163* 171* 184* 186 group based structure level 1 dcl 2-63 group_id based char(8) level 2 dcl 2-63 set ref 160 184* hcs_$initiate 000106 constant entry external dcl 69 ref 77 95 166 hcs_$terminate_noname 000110 constant entry external dcl 71 ref 191 193 194 i 000151 automatic fixed bin(17,0) dcl 32 set ref 141* 142 142* 146* 147 147* 158* 159* inst 000134 automatic char(32) dcl 32 set ref 126* 127* int_wc 15 based fixed bin(17,0) array level 2 packed packed unaligned dcl 2-63 set ref 182* ioa_ 000074 constant entry external dcl 58 ref 127 131 134 151 154 184 186 190 196 ioa_$nnl 000100 constant entry external dcl 58 ref 140 142 145 147 ioa_$rsnnl 000076 constant entry external dcl 58 ref 179 181 182 k 000152 automatic fixed bin(17,0) dcl 32 set ref 75* 162* 162 190 long 000123 automatic bit(1) initial dcl 32 set ref 32* 107* 108* 124 max_prim 2 based fixed bin(17,0) level 2 dcl 2-63 ref 164 164 mgt based structure level 1 dcl 2-30 mgtep 000172 automatic pointer dcl 2-61 set ref 159* 160 164 164 175 176 177 177 179 179 182 182 184 184 184 mgtp 000166 automatic pointer dcl 32 set ref 77* 78 88 88 91 142 147 147 158 159 173 191* mxunits 2 based fixed bin(17,0) level 2 dcl 5-10 ref 98 173 n 000153 automatic fixed bin(17,0) dcl 32 set ref 179* 181* 182* n_abs 30 based fixed bin(17,0) level 2 packed packed unaligned dcl 2-63 set ref 184* n_daemons 55 based fixed bin(17,0) level 2 dcl 5-10 set ref 127* 134* 170 n_prim 3 based fixed bin(17,0) level 2 dcl 2-63 ref 175 177 n_sec 4 based fixed bin(17,0) level 2 dcl 2-63 ref 176 177 n_units 3 based fixed bin(17,0) level 2 dcl 5-10 ref 97 178 n_users 1 based fixed bin(17,0) level 2 dcl 5-10 set ref 127* 134* next_shift 000131 automatic fixed bin(17,0) dcl 32 set ref 100* null builtin function dcl 56 ref 74 78 96 167 194 1-53 prio_sked 000124 automatic bit(1) initial dcl 32 set ref 32* 91* 139 182 prio_sked_enabled 43(01) based bit(1) level 3 packed packed unaligned dcl 2-30 ref 91 selgl 000122 automatic fixed bin(17,0) initial dcl 32 set ref 32* 119* 136 160 160 190 selgp 000120 automatic char(8) initial dcl 32 set ref 32* 118* 160 190* shift 000130 automatic fixed bin(17,0) dcl 32 set ref 100* 131* 182 182 shift_change_time 000126 automatic fixed bin(71,0) dcl 32 set ref 100* 130* substr builtin function dcl 56 ref 106 160 switches 43 based structure level 2 dcl 2-30 sysdir 000010 internal static char(168) initial dcl 32 set ref 77* 95* 166* 204* sysi 000132 automatic char(8) dcl 32 set ref 125* 127* system_info_$installation_id 000064 constant entry external dcl 58 ref 126 system_info_$next_shift_change 000070 constant entry external dcl 58 ref 100 system_info_$sysid 000066 constant entry external dcl 58 ref 125 total_units 37 based fixed bin(17,0) level 2 dcl 2-30 ref 173 totalsw 000125 automatic bit(1) initial dcl 32 set ref 32* 109* 110* 111* 150 154 156 user_wc_defined 44 based bit(1) array level 2 packed packed unaligned dcl 2-30 ref 142 147 user_wc_min_pct 45 based fixed bin(17,0) array level 2 dcl 2-30 set ref 147* ut_header based structure level 1 dcl 4-16 version 42 based fixed bin(17,0) level 2 dcl 2-30 ref 88 version_indicator 40 based char(8) level 2 dcl 2-30 ref 88 wcstr 000114 automatic char(10) initial dcl 32 set ref 32* 182* 184* whoptr 000164 automatic pointer dcl 32 set ref 95* 96 97 98 127 127 127 134 134 134 170 170 173 178 193* whotab based structure level 1 dcl 5-10 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 AT_NORMAL internal static char(8) initial packed unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 1-116 MGT_version_3 internal static fixed bin(17,0) initial dcl 2-25 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 5-96 work_class based structure level 1 dcl 2-94 NAMES DECLARED BY EXPLICIT CONTEXT. arglp 000633 constant label dcl 103 ref 122 endarg 000777 constant label dcl 124 ref 104 er 000437 constant label dcl 83 ref 96 exit 002044 constant label dcl 191 ref 150 156 lcs 000343 constant entry external dcl 13 load_ctl_status 000333 constant entry external dcl 13 skip 002013 constant label dcl 188 ref 160 test 002120 constant entry external dcl 200 try_init 000357 constant label dcl 77 ref 81 xlp 001363 constant label dcl 156 ref 136 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2320 2432 2145 2330 Length 2732 2145 112 263 153 52 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME load_ctl_status 279 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 sysdir load_ctl_status STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME load_ctl_status 000100 en load_ctl_status 000110 datstr load_ctl_status 000114 wcstr load_ctl_status 000117 an load_ctl_status 000120 selgp load_ctl_status 000122 selgl load_ctl_status 000123 long load_ctl_status 000124 prio_sked load_ctl_status 000125 totalsw load_ctl_status 000126 shift_change_time load_ctl_status 000130 shift load_ctl_status 000131 next_shift load_ctl_status 000132 sysi load_ctl_status 000134 inst load_ctl_status 000144 f1 load_ctl_status 000145 f2 load_ctl_status 000146 f3 load_ctl_status 000147 f4 load_ctl_status 000150 f5 load_ctl_status 000151 i load_ctl_status 000152 k load_ctl_status 000153 n load_ctl_status 000154 ap load_ctl_status 000156 al load_ctl_status 000157 first_group load_ctl_status 000160 ec load_ctl_status 000161 fudge_flag load_ctl_status 000162 extra_units load_ctl_status 000164 whoptr load_ctl_status 000166 mgtp load_ctl_status 000170 ansp load_ctl_status 000172 mgtep load_ctl_status THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 call_ext_out_desc call_ext_out return_mac ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ cu_$arg_ptr date_time_ hcs_$initiate hcs_$terminate_noname ioa_ ioa_$nnl ioa_$rsnnl system_info_$installation_id system_info_$next_shift_change system_info_$sysid NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 32 000315 1 53 000326 13 000332 74 000351 75 000353 76 000354 77 000357 78 000423 79 000427 80 000433 81 000436 83 000437 84 000464 87 000465 88 000467 90 000477 91 000501 94 000506 95 000511 96 000555 97 000561 98 000566 99 000572 100 000616 102 000631 103 000633 104 000650 105 000652 106 000655 107 000662 108 000671 109 000700 110 000707 111 000716 113 000725 114 000767 116 000770 118 000771 119 000774 121 000775 122 000776 124 000777 125 001001 126 001012 127 001023 130 001075 131 001112 132 001136 134 001137 136 001201 139 001203 140 001205 141 001222 142 001227 144 001253 145 001255 146 001272 147 001277 149 001324 150 001326 151 001330 152 001344 154 001345 156 001363 158 001365 159 001375 160 001401 162 001407 163 001410 164 001412 166 001420 167 001471 170 001501 171 001506 173 001510 175 001520 176 001525 177 001531 178 001536 179 001546 181 001613 182 001645 184 001710 186 001773 188 002013 190 002015 191 002044 193 002055 194 002066 196 002103 198 002114 200 002115 204 002134 212 002143 ----------------------------------------------------------- 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