COMPILATION LISTING OF SEGMENT work_class_meters Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1255.3 mst Tue 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 wcm: work_class_meters: proc; 14 15 /* WORK_CLASS_METERS -- print metering information about work class scheduler. 16* Probably written by Bob Mullen, some years back. 17* Modified: 04/01/80 W. Olin Sibert to fix zerodivide fault problems. 18* 05/13/81 Matthew Pierret to print pin_weight. 19* Cleanup up substantially and modified for governed work classes 20* 06/28/81 by J. Bongiovanni 21* 12/07/81 E. N. Kittlitz. user_table_entry conversion. 22* 4/30/82 by J. Bongiovanni to print interactive q attribute 23* 11/13/84 by M. Pandolf to include hc_lock. 24**/ 25 26 27 /****^ HISTORY COMMENTS: 28* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 29* audit(87-07-27,Hartogs), install(87-08-04,MR12.1-1055): 30* Upgraded for change to answer_table.incl.pl1. 31* END HISTORY COMMENTS */ 32 33 34 /* Automatic */ 35 36 dcl arg_no fixed bin; /* current argument number */ 37 dcl argl fixed bin (21); /* current argument length */ 38 dcl argp ptr; /* current argument pointer */ 39 dcl code fixed bin (35); /* standard error code */ 40 dcl cpu (0:16) float bin; /* array of delta cpu by WC */ 41 dcl cur_ptrs (1) ptr; /* pointer to current metering data */ 42 dcl curshift fixed bin; /* current shift */ 43 dcl eligs (0:16) float bin; /* array of eligibility counts */ 44 dcl formatted_meter_time char (10); /* formatted metering interval */ 45 dcl g1 float bin; /* percent guaranteed */ 46 dcl hr fixed bin; /* hour */ 47 dcl HR pic "zzz9"; /* hour */ 48 dcl i fixed bin; /* work class table index */ 49 dcl meter_interval fixed bin (71); /* microseconds in metering interval */ 50 dcl meter_time float bin; /* microseconds in metering interval */ 51 dcl min fixed bin; /* minute */ 52 dcl MIN pic "99"; /* minute */ 53 dcl n_args fixed bin; /* number of arguments */ 54 dcl pctcpu float bin; /* percent of total cpu for this WC */ 55 dcl pctmx float bin; /* max percent for a governed WC */ 56 dcl prev_ptrs (1) ptr; /* pointer to previous metering data */ 57 dcl Q1 float bin; /* quantun 1 */ 58 dcl Q2 float bin; /* quantum 2 */ 59 dcl R1 float bin; /* response 1 */ 60 dcl R2 float bin; /* response 2 */ 61 dcl reporting bit (1); /* ON => report argument given */ 62 dcl resetting bit (1); /* ON => reset argument given */ 63 dcl sec fixed bin; /* second */ 64 dcl SEC pic "99"; /* second */ 65 dcl sole_abs_wc fixed bin; /* work class index of only absentee WC (if such) */ 66 dcl some_lcg (0:16) char (32) varying; /* name of some load control group in wc */ 67 dcl time_now fixed bin (71); /* current time */ 68 dcl total_cpu float bin; /* total cpu time on system */ 69 dcl u1 float bin; /* cpu time per eligibility for WC */ 70 71 72 /* Static */ 73 74 dcl mgtp ptr static init (null ()); /* pointer to MGT */ 75 dcl MYNAME char (17) int static options (constant) 76 init ("work_class_meters"); 77 dcl static_ansp ptr static init (null ()); /* pointer to answer_table */ 78 dcl time_reset fixed bin (71) static init (0); /* time of last reset (implicit reset if WC redefined */ 79 dcl unique fixed bin static init (0); /* unique index for metering_util_ */ 80 81 /* Based */ 82 83 dcl arg char (argl) based (argp); 84 dcl 1 tcm_cur aligned based (cur_ptrs (1)) like tcm; 85 dcl 1 tcm_prev aligned based (prev_ptrs (1)) like tcm; 86 87 /* %include anstbl - see end of program */ 88 /* %include mgt - see end of program */ 89 /* %include tcm - see end of program */ 90 91 /* Entry */ 92 93 dcl com_err_ entry options (variable); 94 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 95 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 96 dcl ioa_ entry options (variable); 97 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 98 dcl metering_util_$define_regions entry options (variable); 99 dcl metering_util_$fill_buffers entry (fixed bin, fixed bin (71), char (*), (*) ptr, (*) ptr, fixed bin (35)); 100 dcl metering_util_$reset entry (fixed bin, fixed bin (35)); 101 102 /* External */ 103 104 dcl error_table_$badopt fixed bin (35) external; 105 106 /* Builtin */ 107 108 dcl addr builtin; 109 dcl clock builtin; 110 dcl divide builtin; 111 dcl max builtin; 112 dcl mod builtin; 113 dcl null builtin; 114 dcl reverse builtin; 115 dcl size builtin; 116 dcl substr builtin; 117 dcl unspec builtin; 118 dcl verify builtin; 119 120 121 reporting = "0"b; 122 resetting = "0"b; 123 call cu_$arg_count (n_args, code); 124 if code ^= 0 then do; 125 call com_err_ (code, MYNAME); 126 return; 127 end; 128 129 do arg_no = 1 to n_args; 130 call cu_$arg_ptr (arg_no, argp, argl, code); 131 if arg = "-report_reset" | arg = "-rr" then do; 132 reporting = "1"b; 133 resetting = "1"b; 134 end; 135 else if arg = "-reset" | arg = "-rs" then 136 resetting = "1"b; 137 else do; 138 call com_err_ (error_table_$badopt, MYNAME, arg); 139 return; 140 end; 141 end; 142 143 if ^reporting & ^resetting then reporting = "1"b; 144 145 if unique = 0 then do; /* initialize */ 146 call metering_util_$define_regions (unique, code, "tc_data", 0, size (tcm)); 147 if code ^= 0 then do; 148 call com_err_ (code, MYNAME, "Initializing"); 149 return; 150 end; 151 end; 152 153 call metering_util_$fill_buffers (unique, meter_interval, formatted_meter_time, 154 cur_ptrs, prev_ptrs, code); 155 if code ^= 0 then do; 156 call com_err_ (code, MYNAME, "Filling buffers."); 157 return; 158 end; 159 160 161 total_cpu = tcm_cur.processor_time 162 - max (tcm_prev.processor_time, tcm_cur.processor_time_at_define_wc); 163 164 if time_reset < tcm_cur.define_wc_time then do; 165 /* save values are worthless */ 166 /* hardcore has reinitialized its meters */ 167 unspec (tcm_prev) = ""b; /* so reset our saved values */ 168 time_reset = tcm_cur.define_wc_time; 169 end; 170 171 time_now = clock (); 172 meter_time = time_now - time_reset; 173 sec = meter_time * 1e-6; 174 min = divide (sec, 60, 17, 0); 175 hr = divide (min, 60, 17, 0); 176 sec = mod (sec, 60); /* get sec in last min */ 177 min = mod (min, 60); /* get min in last hr */ 178 HR = hr; 179 MIN = min; 180 SEC = sec; 181 formatted_meter_time = HR || ":" || MIN || ":" || SEC; 182 call ioa_ ("^/Total metering time^-^a^/", formatted_meter_time); 183 184 185 if reporting then do; 186 187 /* try to get some names assoc with workclasses */ 188 call fill_lcg; 189 do i = 0 to 16; 190 if tcm_cur.wcte (i).defined then do; 191 cpu (i) = tcm_cur.wcte (i).cpu_sum - tcm_prev.wcte (i).cpu_sum; 192 eligs (i) = tcm_cur.wcte (i).eligibilities - tcm_prev.wcte (i).eligibilities; 193 end; 194 end; 195 call ioa_ ("WC %GUAR %MAX %TCP V/ELIG PW IRESP IQUANT RESP QUANT P M R I LCG^/"); 196 do i = 0 to 16; 197 if tcm_cur.wcte (i).defined then do; 198 199 if tcm_cur.credits_per_scatter = 0 then do; 200 g1 = 0e0; 201 pctmx = 0e0; 202 end; 203 else do; 204 g1 = 1e2 * tcm_cur.wcte (i).minf / tcm_cur.credits_per_scatter; 205 pctmx = 1e2 * tcm_cur.wcte (i).maxf / tcm_cur.credits_per_scatter; 206 end; 207 208 209 if eligs (i) = 0e0 then u1 = 0e0; 210 else u1 = 1e-6 * cpu (i) / eligs (i); 211 212 if total_cpu > 0e0 then 213 pctcpu = 1e2 * cpu (i) / total_cpu; 214 R1 = 1e-6 * tcm_cur.wcte (i).resp1; 215 R2 = 1e-6 * tcm_cur.wcte (i).resp2; 216 Q1 = 1e-6 * tcm_cur.wcte (i).quantum1; 217 Q2 = 1e-6 * tcm_cur.wcte (i).quantum2; 218 219 220 if (g1 > 0e0) | (pctcpu > 0e0) then 221 if tcm_cur.deadline_mode ^= 0 | tcm_cur.wcte (i).realtime ^= 0 then 222 call ioa_ ("^2d ^5x^5x^5.0f ^6.2f ^2d^7.2f^6.2f^8.2f^6.2f ^[P^; ^] ^d ^[R^; ^] ^[I^; ^] ^a", 223 i, pctcpu, u1, tcm_cur.wcte (i).pin_weight, 224 R1, Q1, R2, Q2, (tcm_cur.wcte (i).purging = 1), 225 tcm_cur.wcte (i).maxel, (tcm_cur.wcte (i).realtime ^= 0), (tcm_cur.wcte (i).flags.interactive_q), some_lcg (i)); 226 227 else 228 call ioa_ ("^2d ^5.0f^[^5.0f^;^5x^1s^]^5.0f ^6.2f ^2d^27x ^[P^; ^] ^d ^[R^; ^] ^[I^; ^] ^a", 229 i, g1, (tcm_cur.wcte (i).governed), pctmx, pctcpu, u1, tcm_cur.wcte (i).pin_weight, 230 (tcm_cur.wcte (i).purging = 1), tcm_cur.wcte (i).maxel, 231 (tcm_cur.wcte (i).realtime ^= 0), (tcm_cur.wcte (i).flags.interactive_q), some_lcg (i)); 232 end; 233 end; 234 235 call ioa_ ("^/^[TCPU percents (%GUAR)^;IREST, IQUANT, RESP, QUANT^] control non-realtime work_classes.^/", 236 (tcm_cur.deadline_mode = 0)); 237 238 239 240 end; /* END REPORTING */ 241 242 243 244 245 if resetting then do; 246 call metering_util_$reset (unique, code); 247 if code ^= 0 then do; 248 call com_err_ (code, MYNAME, "Resetting"); 249 return; 250 end; 251 time_reset = time_now; 252 end; 253 254 return; 255 256 fill_lcg: proc; 257 dcl j fixed bin; 258 259 some_lcg (*) = ""; 260 some_lcg (0) = "Init"; 261 262 if mgtp = null () then do; 263 call hcs_$initiate (">system_control_1", "mgt", "", 0b, 1b, mgtp, code); 264 if mgtp = null () then do; 265 call ioa_ ("Unable to access mgt."); 266 return; 267 end; 268 end; 269 if static_ansp = null () then do; 270 call hcs_$initiate (">system_control_1", "answer_table", "", 0b, 1b, static_ansp, code); 271 if static_ansp = null () then do; 272 call ioa_ ("Unable to access answer_table"); 273 return; 274 end; 275 end; 276 ansp = static_ansp; 277 278 curshift = anstbl.shift; 279 /* see if can suppress news about abs */ 280 sole_abs_wc = -1; 281 do j = 17 to mgt.current_size; 282 mgtep = addr (mgt.entry (j)); 283 if sole_abs_wc = -1 then sole_abs_wc = group.abs_wc (curshift); 284 else if sole_abs_wc ^= group.abs_wc (curshift) then sole_abs_wc = -2; 285 end; 286 do j = 17 to mgt.current_size; 287 mgtep = addr (mgt.entry (j)); 288 some_lcg (group.int_wc (curshift)) = some_lcg (group.int_wc (curshift)) 289 || substr (group.group_id, 1, 9 - verify (reverse (group.group_id), " ")) 290 || " "; 291 if group.abs_wc (curshift) ^= group.int_wc (curshift) then 292 if sole_abs_wc < 0 then 293 some_lcg (group.abs_wc (curshift)) = some_lcg (group.abs_wc (curshift)) 294 || "(" 295 || substr (group.group_id, 1, 9 - verify (reverse (group.group_id), " ")) 296 || ") "; 297 end; 298 if sole_abs_wc > 0 then some_lcg (sole_abs_wc) 299 = some_lcg (sole_abs_wc) || " (All absentee)"; 300 301 302 end fill_lcg; 303 304 /* 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 */ 304 305 /* Begin include file hc_lock.incl.pl1 BIM 2/82 */ 2 2 /* Replaced by hc_fast_lock.incl.pl1 RSC 11/84 because name of structure 2 3* encourages name conflicts. 2 4* USE HC_FAST_LOCK INSTEAD! 2 5**/ 2 6 2 7 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 2 8 2 9 /* format: style3 */ 2 10 2 11 declare lock_ptr pointer; 2 12 declare 1 lock aligned based (lock_ptr), 2 13 2 pid bit (36) aligned, /* holder of lock */ 2 14 2 event bit (36) aligned, /* event associated with lock */ 2 15 2 flags aligned, 2 16 3 notify_sw bit (1) unaligned, 2 17 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 2 18 2 19 /* End include file hc_lock.incl.pl1 */ 305 306 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 3 2 3 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 3 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 3 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 3 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 3 7 3 8 /* At login each user process is placed in that load control group specified in either 3 9* the project's SAT entry or the user's PDT entry. This group is remembered 3 10* in the user table entry for that process (ATE, DUTE, AUTE). 3 11* 3 12* MGT groups map each process into a set of processes called a work_class 3 13* as a function of shift and whether or not the process is absentee -- 3 14* also per group limits on the number of group members are given. 3 15* 3 16* The work_class entries in the MGT specify the configuration 3 17* of the hardcore scheduler on a per shift basis. If a work_class has the 3 18* realtime attribute, member processes will be given precisely specified 3 19* response characteristics. If running in deadline_not_percent mode on 3 20* a given shift then members of other work_classes will be given approximate 3 21* response characteristics; otherwise other work_classes will be given 3 22* percentages of whatever cpu time is unused by realtime processes. 3 23* REM */ 3 24 3 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 3 26 /* versions >= 3 contain deadline info */ 3 27 3 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 3 29 3 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 3 31* and work classes */ 3 32 4 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 4 2 4 3 /* the "author" items must always be the first ones in the table. The 4 4* module which moves the converted table to the System Control process 4 5* fills in these data items and assumes them to be at the head of the segment 4 6* regardless of the specific table's actual declaration. The variables 4 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 4 8* respectively. For tables installed in multiple processes, these 4 9* are to be used to lock out multiple installations. */ 4 10 4 11 /* Lock should be used as a modification lock. Since, in general, 4 12* entries may not be moved in system tables, even by installations, 4 13* it is sufficient for only installers and programs that change threads 4 14* to set or respect the lock. Simply updating data in an entry 4 15* requires no such protection. 4 16* 4 17* Last_install_time is used by readers of system tables to detect 4 18* installations or other serious modifications. By checking it before 4 19* and after copying a block of data, they can be protected against 4 20* modifications. 4 21* 4 22* Modules that set the lock should save proc_group_id, and then 4 23* put their group id there for the time they hold the lock. 4 24* if they do not actually install the, they should restore the group id. 4 25**/ 4 26 4 27 2 author aligned, /* validation data about table's author */ 4 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 4 29 3 lock bit (36), /* installation lock */ 4 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 4 31 3 update_authorization bit (1) unal, /* update only authorizations */ 4 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 4 33 3 pad bit (33) unaligned, 4 34 3 last_install_time fixed bin (71), 4 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 4 36 3 w_dir char (64), /* author's working directory */ 4 37 4 38 /* END INCLUDE FILE author.incl.pl1 */ 3 33 3 34 /* the author structure occupies 29 words */ 3 35 2 max_size fixed bin, /* maximum size of table */ 3 36 2 current_size fixed bin, /* current number of entries */ 3 37 2 total_units fixed bin, /* total units allocated */ 3 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 3 39* (the first version of the mgt had no version number) */ 3 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 3 41 2 switches aligned, 3 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 3 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 3 44* be used by the answering service (all processes will be 3 45* put in work class 1 regardless of what the mgt says) */ 3 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 3 47* on the system tape */ 3 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 3 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 3 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 3 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 3 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 3 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 3 54 /* the above variables occupy a total of 24 words */ 3 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 3 56 3 57 2 entry (100), /* array of entries */ 3 58 3 fill (32) fixed bin; /* 32 words each */ 3 59 /* the first 16 are work classes; the rest, load control groups */ 3 60 3 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 3 62 3 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 3 64 2 group_id char (8), /* group name */ 3 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 3 66 2 n_prim fixed bin, /* current number of primary units */ 3 67 2 n_sec fixed bin, /* current number of secondary units */ 3 68 2 n_eo fixed bin, /* current number of edit-only users */ 3 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 3 70 2 minu fixed bin, /* Constant number of units in maxprim */ 3 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 3 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 3 73 2 minamax fixed bin, /* Constant part of abs max */ 3 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 3 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 3 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 3 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 3 78 /* used halfwords to avoid using up all the pad - 3 79* we might need it later */ 3 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 3 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 3 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 3 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 3 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 3 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 3 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 3 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 3 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 3 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 3 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 3 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 3 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 3 93 3 94 dcl 1 work_class based (mgtep) aligned, 3 95 2 wc_name char (8), /* overlays group.group_id, but can only be 3 96* one of the strings "1" through "16" */ 3 97 2 switches aligned, 3 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 3 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 3 100 /* ed_mgt and up_mgt_ enforce consistency between these 3 101* and the group.absentee switches */ 3 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 3 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 3 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 3 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 3 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 3 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 3 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 3 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 3 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 3 111 3 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 306 307 /* BEGIN INCLUDE FILE ... tcm.incl.pl1 ... used to generate tc_data cds */ 5 2 /* NOTE -- This include file has TWO counterparts in ALM: tc_meters.incl.alm and */ 5 3 /* wcte.incl.alm. They cannot be produced with cif, and must be kept up to date manually. */ 5 4 /* Modified 830914 to replace tty_polling_time with opc_polling_time... -E. A. Ranzenbach */ 5 5 /* Modified 1984.05.21 by M. Pandolf to add tc_suspend_lock */ 5 6 /* Modified 1984.11.26 by Keith Loepere for uid_array. */ 5 7 /* Modified 1984.12.06 by Keith Loepere for page create delaying. */ 5 8 5 9 dcl tcmp ptr; 5 10 5 11 dcl 1 tcm aligned based (tcmp), 5 12 2 tc_suspend_lock like lock, /* when locked, tc is suspended */ 5 13 2 cid2 fixed bin (18), 5 14 2 cid3 fixed bin (18), 5 15 2 cid4 fixed bin (18), 5 16 2 depth_count fixed bin (18), /* depth last process run */ 5 17 2 loadings fixed bin (18), /* number of process loadings */ 5 18 5 19 2 blocks fixed bin (18), /* number of calls to block */ 5 20 2 wakeups fixed bin (18), /* number of calls to wakeup */ 5 21 2 waits fixed bin (18), /* number of calls to wait */ 5 22 2 notifies fixed bin (18), /* number of calls to notify */ 5 23 2 schedulings fixed bin (18), 5 24 2 interactions fixed bin (18), /* number of interactive schedulings */ 5 25 2 avequeue fixed bin (35, 18), /* recent time average of number in queue */ 5 26 2 te_wait fixed bin (18), /* times te called from wait */ 5 27 5 28 2 te_block fixed bin (18), /* times te updated from block */ 5 29 2 te_i_stop fixed bin (18), /* times te updated from i_stop */ 5 30 2 te_pre_empt fixed bin (18), /* times te updated from pre_empt */ 5 31 2 p_interactions fixed bin, /* times interaction bit turned off because of high priority */ 5 32 2 idle fixed bin (71), /* total idle time */ 5 33 2 mp_idle fixed bin (71), /* multi-programming idle */ 5 34 5 35 2 nmp_idle fixed bin (71), /* non-multi-programming idle time */ 5 36 2 zero_idle fixed bin (71), /* zero idle time */ 5 37 2 last_time fixed bin (71), /* last time a process was run */ 5 38 2 loop_locks fixed bin (18), /* times looped on the APT lock */ 5 39 2 loop_lock_time fixed bin (18), /* time looping on the APT lock */ 5 40 2 ave_eligible fixed bin (35, 18), /* average length of eligible queue */ 5 41 2 sort_to_elhead fixed bin (18), /* 0=> no one,1 => int've only, 2 => everybody */ 5 42 2 processor_time fixed bin (71), /* total processor time on system */ 5 43 2 response_time fixed bin (71), /* estimate of response time */ 5 44 2 eligible_time fixed bin (71), /* estimate of eligible time */ 5 45 2 response_count fixed bin, /* count of response meters */ 5 46 2 eligible_count fixed bin, /* count of eligible meters */ 5 47 2 quit_counts (0:5) fixed bin, /* array of buckets indexed by state */ 5 48 2 loading_idle fixed bin (71), /* loading_idle time */ 5 49 2 delta_vcpu fixed bin (71), /* delta virtual CPU time for the system */ 5 50 2 post_purge_switch fixed bin, /* ON if post purging is to be done */ 5 51 2 time_out_severity fixed bin, /* syserr first arg for notify time outs */ 5 52 2 notify_check fixed bin, /* obsolete */ 5 53 2 quit_priority fixed bin, /* factor for scheduler quit response */ 5 54 2 iobm_polling_time fixed bin (71), /* time to poll iobm */ 5 55 2 end_of_time fixed bin (71), /* very large time */ 5 56 2 gp_at_notify fixed bin (18), /* 0 => just do get_idle_processor */ 5 57 2 gp_at_ptlnotify fixed bin (18), /* 0 => just do get_idle_processor */ 5 58 2 int_q_enabled fixed bin (18), /* 0 => no intv q in percent mode */ 5 59 2 fnp_buffer_threshold fixed bin (18), /* if fewer free buffs then stingy alloc strategy */ 5 60 /* set this to >= half n_ttylines/fnp for safety */ 5 61 5 62 /* 100 octal */ 5 63 5 64 2 depths (8) fixed bin (18), /* histogram of run depths */ 5 65 2 tdepths (8) fixed bin (71), /* histogram of times run per depth */ 5 66 2 pfdepth (8) fixed bin (18), /* histogram of page faults per depth */ 5 67 5 68 2 ptl_not_waits fixed bin (18), /* times ptl_wait noticed ptl was unlocked */ 5 69 2 gw_gp_window_count fixed bin (18), /* times window noticed */ 5 70 2 metering_lock fixed bin (18), /* 0=locked, else unlocked */ 5 71 2 ptl_waits fixed bin (18), /* num calls to ptl_wait */ 5 72 2 gp_start_count fixed bin (18), /* to detect gw_gp window lossage */ 5 73 2 gp_done_count fixed bin (18), 5 74 2 nto_check_time fixed bin (71), /* next time at which nto code will be called */ 5 75 2 nto_delta fixed bin (35), /* microsec between nto checks */ 5 76 2 nto_count fixed bin (18), /* number of times nto detected */ 5 77 2 tcpu_scheduling fixed bin (18), /* obsolete */ 5 78 2 nto_event bit (36), /* last event which NTO'd */ 5 79 2 page_notifies fixed bin (18), 5 80 2 notify_nobody_count fixed bin (18), 5 81 2 notify_nobody_event bit (36), 5 82 2 system_type fixed bin, /* used to be tcm.inter */ 5 83 5 84 2 stat (0:15) fixed bin (18), /* num apte's in each state */ 5 85 5 86 /* 200 octal */ 5 87 5 88 2 wait (8), 5 89 3 time fixed bin (18), /* histogram of page fault waiting times versus did */ 5 90 3 count fixed bin (18), 5 91 5 92 2 ready (8), 5 93 3 time fixed bin (18), /* histogram of times in ready queue */ 5 94 3 count fixed bin (18), 5 95 5 96 2 total_pf_time fixed bin (71), /* total time spent from start to end of 5 97* all page faults */ 5 98 2 total_pf_count fixed bin (18), /* total number of page faults metered */ 5 99 2 auto_tune_ws fixed bin (18), /* 0=> dont, atherwise compensate for quantum len */ 5 100 2 ocore_delta fixed bin (18), /* number of pages reserved for int users */ 5 101 2 ws_sum fixed bin (18), /* total of eligible's ws_sizes */ 5 102 2 nonidle_force_count fixed bin (18), /* count of eligibilities forced */ 5 103 2 itt_list_lock bit (36) aligned, /* Lock on ITT free list */ 5 104 2 cpu_pf_time fixed bin (71), /* total cpu time spent handling page faults */ 5 105 2 cpu_pf_count fixed bin (18), /* total count of cpu time meterings */ 5 106 2 special_offsets unaligned, 5 107 3 apt_offset bit (18), 5 108 3 pad bit (18), 5 109 2 getwork_time fixed bin (71), /* total time spent in getwork */ 5 110 2 getwork_count fixed bin (18), /* total times through getwork */ 5 111 2 short_pf_count fixed bin (18), /* number of short page faults */ 5 112 2 interrupt_time fixed bin (71), /* total time spent in interrupt */ 5 113 2 interrupt_count fixed bin (71), /* total number of metered interrupts */ 5 114 2 ocore fixed bin (35, 18), /* fraction of core for int've users */ 5 115 2 pre_empt_flag bit (36) aligned, /* controls whether preempting at done time */ 5 116 2 cumulative_memory_usage fixed binary (71), /* total number of memory usage units */ 5 117 2 processor_time_at_define_wc fixed bin (71), /* value of processor_time when WC's last defined */ 5 118 2 boost_priority fixed bin, /* number of times priority process given high priority */ 5 119 2 lost_priority fixed bin, /* number of times priority process lost eligibility */ 5 120 2 total_clock_lag fixed bin (71), /* sum of all simulated clock delays */ 5 121 2 clock_simulations fixed bin, /* number of times alarm clock interrupt was simulated */ 5 122 2 max_clock_lag fixed bin, /* largest simulated alarm clock delay */ 5 123 5 124 /* 300 octal */ 5 125 5 126 2 pdscopyl fixed bin (18), /* amount of pds to copy for new process */ 5 127 2 max_hproc_segno fixed bin, /* largest allowed hardcore segment number */ 5 128 2 prds_length fixed bin (18), /* length of PRDS */ 5 129 2 pds_length fixed bin (18), /* length of PDS */ 5 130 2 lock fixed bin (18), /* process id generator lock */ 5 131 2 id bit (36) aligned, /* next uid to be added to uid_array */ 5 132 2 system_shutdown fixed bin (18), 5 133 2 working_set_factor fixed bin (35, 18), /* working set factor */ 5 134 5 135 2 ncpu fixed bin (18), /* number of processors currently being used */ 5 136 2 last_eligible bit (18), /* last process to gain eligibility */ 5 137 2 apt_lock fixed bin (35), /* + write; 0 hidden; -1 unlocked; -(N+1) Nreaders */ 5 138 2 apt_size fixed bin (18), /* number of APT entries */ 5 139 2 realtime_q aligned like based_sentinel, /* processes with realtime deadlines */ 5 140 2 aht_size fixed bin (18), /* APT hash table size */ 5 141 2 itt_size fixed bin (18), /* number of ITT entries */ 5 142 5 143 2 dst_size fixed bin (18), /* number of allowed DST entries */ 5 144 2 itt_free_list bit (18), /* pointer to ITT free list */ 5 145 2 used_itt fixed bin (18), /* number of used ITT entries */ 5 146 2 initializer_id bit (36) aligned, /* process id of initializer */ 5 147 2 n_eligible fixed bin (18), /* number of processes eligible */ 5 148 2 max_eligible fixed bin (30), /* maximum allowed number of eligible processes */ 5 149 2 wait_enable fixed bin (18), /* turned on when waiting mechanism works */ 5 150 2 apt_entry_size fixed bin (18), /* size of an APT entry */ 5 151 5 152 2 interactive_q aligned like based_sentinel, /* head of interactive queue */ 5 153 2 dst_ptr ptr, /* pointer to device signal table */ 5 154 2 old_user ptr, /* last process to run (apt ptr ) */ 5 155 2 initialize_time fixed bin (71), /* time of initialization */ 5 156 5 157 2 init_event fixed bin (18), /* wait event during initialization */ 5 158 2 oldt fixed bin (18), /* timer reading from previous process */ 5 159 2 newt fixed bin (18), /* timer setting for new process */ 5 160 2 tefirst fixed bin (30), /* first eligible time */ 5 161 2 telast fixed bin (30), /* last eligible time */ 5 162 2 timax fixed bin (35), /* time in queue for lowest level */ 5 163 2 empty_q bit (18), /* thread of empty APT entries */ 5 164 2 working_set_addend fixed bin (18), /* additive working set parameter */ 5 165 2 ready_q_head bit (0) aligned, /* for added segdef */ 5 166 2 eligible_q_head aligned like based_sentinel, /* head of eligible queue */ 5 167 2 ready_q_tail bit (0) aligned, /* for added segdef */ 5 168 2 eligible_q_tail aligned like based_sentinel, /* tail of eligible queue */ 5 169 2 idle_tail aligned like based_sentinel, /* tail of idle list */ 5 170 2 min_eligible fixed bin (30), 5 171 2 alarm_timer_list bit (18) aligned, /* rel pointer to apt entry for next alarm timer */ 5 172 2 guaranteed_elig_inc fixed bin (35), /* amount of guaranteed eligibility time in microsecs. */ 5 173 2 priority_sched_inc fixed bin (35), /* amount of block time before process is given priority */ 5 174 2 next_alarm_time fixed bin (71), /* clock time for next alarm timer */ 5 175 2 priority_sched_time fixed bin (71), /* time for priority process to be given priority */ 5 176 2 opc_polling_time fixed bin (71), /* time to poll console DIM */ 5 177 2 disk_polling_time fixed bin (71), /* time to poll disk DIM */ 5 178 2 tape_polling_time fixed bin (71), /* time to poll tape DIM */ 5 179 2 imp_polling_time fixed bin (71), /* time to poll imp */ 5 180 2 imp_polling_lock fixed bin (18), /* do not poll if lock set */ 5 181 2 max_channels fixed bin (18), /* num special channels per process */ 5 182 5 183 /* 400 octal */ 5 184 5 185 2 system_virtual_time fixed bin (71), /* non-idle virtual time */ 5 186 2 credit_bank fixed bin (71), /* credits not yet passed out */ 5 187 2 min_wct_index bit (18) aligned, /* offset of initializer work class table entry */ 5 188 2 max_wct_index bit (18) aligned, /* offset of highest wcte currently defined */ 5 189 2 delta_vt fixed bin (71), /* temp used by pxss.compute_virtual_clocks */ 5 190 2 gross_idle_time fixed bin (71), /* idle time_used_clock */ 5 191 2 credits_per_scatter fixed bin (35), /* total number of credits awarded at once */ 5 192 2 best_credit_value fixed bin (18), /* temp for pxss.find_next_eligible */ 5 193 2 define_wc_time fixed bin (71), /* clock time when workclasses last degined */ 5 194 2 max_batch_elig fixed bin (35), 5 195 2 num_batch_elig fixed bin (35), 5 196 2 deadline_mode fixed bin (35), /* 0=> ti sorts, else deadline sorts */ 5 197 2 credits_scattered fixed bin (35), 5 198 2 max_max_eligible fixed bin (30), /* Maximum of maxe */ 5 199 2 max_stopped_stack_0 fixed bin (35), /* Maximum stack_0's suspended by stopped procs */ 5 200 2 stopped_stack_0 fixed bin (35), /* Number stack_0's suspended by stopped procs */ 5 201 2 mos_polling_interval fixed bin (35), /* for heals */ 5 202 2 mos_polling_time fixed bin (71), /* for heals */ 5 203 2 vcpu_response_bounds (VCPU_RESPONSE_BOUNDS) fixed bin (35), 5 204 2 vcpu_response_bounds_size fixed bin (35), 5 205 2 meter_response_time_calls fixed bin (35), 5 206 2 meter_response_time_invalid fixed bin (35), 5 207 2 meter_response_time_overhead fixed bin (71), 5 208 2 init_wait_time fixed bin (71), /* used by wait/notify during initialization */ 5 209 2 init_wait_timeout fixed bin (71), /* notify-timeout interval during initialization */ 5 210 2 init_timeout_severity fixed bin, /* notify-timeout severity during initialization */ 5 211 2 init_timeout_recurse fixed bin, /* count of NTO recursion during initialization */ 5 212 2 max_timer_register fixed bin (71), /* max cpu burst = # cpus x pre_empt_sample_time */ 5 213 2 pre_empt_sample_time fixed bin (35), /* tuning parameter - max time between samples */ 5 214 2 governing_credit_bank fixed bin (35), /* used for limiting eligibility on governed work classes*/ 5 215 2 process_initial_quantum fixed bin (35), /* eligibility quantum first eligibility */ 5 216 2 default_procs_required bit (8) aligned, /* default mask of CPUs required */ 5 217 2 work_class_idle fixed bin (71), /* idle time due to work class restrictions */ 5 218 5 219 /* Tuning Parameters for Stack Truncation */ 5 220 5 221 2 stk_truncate bit (1) aligned, 5 222 2 stk_truncate_always bit (1) aligned, 5 223 2 stk_trunc_avg_f1 fixed bin (35, 18), 5 224 2 stk_trunc_avg_f2 fixed bin (35, 18), 5 225 2 lock_error_severity fixed bin, /* syserr severity */ 5 226 5 227 2 gv_integration fixed bin (35), /* Integration interval for governing */ 5 228 2 gv_integration_set bit (1) aligned, /* ON => gv_integration set by ctp */ 5 229 2 pauses fixed bin (35), /* Calls to pause (reschedule) */ 5 230 2 volmap_polling_time fixed bin (71), 5 231 2 next_ring0_timer fixed bin (71), /* next time that ring 0 timer goes off */ 5 232 2 realtime_io_priority_switch fixed bin, /* 0 => give I/O interrupt wakeups realtime priotiry */ 5 233 2 realtime_io_deadline fixed bin (35), /* Delta to clock for I/O realtime deadline */ 5 234 2 realtime_io_quantum fixed bin (35), /* Quantum for I/O realtime burst */ 5 235 2 realtime_priorities fixed bin (35), /* Count for metering */ 5 236 2 relinquishes fixed bin (35), /* Calls to relinquish_priority */ 5 237 2 abort_ips_mask bit (36) aligned, /* IPS mask for tc_util$check_abort */ 5 238 5 239 /* 500 octal */ 5 240 5 241 2 uid_array (0:15) bit (36) aligned, /* array from which a uid is chosen (randomly) */ 5 242 2 pad5 (176) fixed bin (35), /* room for expansion compatibly */ 5 243 5 244 /* 1000 octal */ 5 245 5 246 2 pad7 (64) fixed bin (35), 5 247 5 248 /* 1100 octal */ 5 249 5 250 2 pad6 (8) fixed bin (35), 5 251 2 work_class_table aligned, /* array of per workclass information */ 5 252 3 wcte (0:16) aligned like wct_entry, 5 253 5 254 /* 3000 octal */ 5 255 5 256 2 apt fixed bin; 5 257 5 258 dcl wctep ptr; 5 259 5 260 dcl 1 wct_entry aligned based (wctep), /* Work class entry */ 5 261 2 thread unaligned, /* Ready list */ 5 262 3 fp bit (18), /* Head of ready list */ 5 263 3 bp bit (18), /* Tail of ready list */ 5 264 2 flags unaligned, 5 265 3 mnbz bit (1), /* Sentinel bit must not be zero. */ 5 266 3 defined bit (1), 5 267 3 io_priority bit (1), 5 268 3 governed bit (1), 5 269 3 interactive_q bit (1), 5 270 3 pad bit (31), 5 271 2 credits fixed bin (35), /* Current worthiness of group */ 5 272 2 minf fixed bin (35), /* min fraction of cpu */ 5 273 2 pin_weight fixed bin (35), /* number of cycles to pin pages */ 5 274 2 eligibilities fixed bin (35), /* Count of eligibilities awarded */ 5 275 2 cpu_sum fixed bin (71), /* CPU used by members */ 5 276 2 resp1 fixed bin (71), 5 277 2 resp2 fixed bin (71), 5 278 2 quantum1 fixed bin (35), 5 279 2 quantum2 fixed bin (35), 5 280 2 rmeter1 fixed bin (71), 5 281 2 rmeter2 fixed bin (71), 5 282 2 rcount1 fixed bin (35), 5 283 2 rcount2 fixed bin (35), 5 284 2 realtime fixed bin (35), 5 285 2 purging fixed bin (35), 5 286 2 maxel fixed bin (35), 5 287 2 nel fixed bin (35), 5 288 2 number_thinks fixed bin (35), /* number times process entered "think" state */ 5 289 2 number_queues fixed bin (35), /* number times process entered "queued" state */ 5 290 2 total_think_time fixed bin (71), 5 291 2 total_queue_time fixed bin (71), 5 292 5 293 /* The next three arrays correspond to the array vcpu_response_bounds */ 5 294 5 295 2 number_processing (VCPU_RESPONSE_BOUNDS+1) fixed bin (35), /* number times entered "processing" state */ 5 296 2 total_processing_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 5 297 2 total_vcpu_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 5 298 2 maxf fixed bin (35), /* maximum fraction of cpu time */ 5 299 2 governing_credits fixed bin (35), /* for limiting cpu resources */ 5 300 2 pad1 (4) fixed bin (35); 5 301 5 302 5 303 dcl 1 based_sentinel aligned based, /* format of pxss-style sentinel */ 5 304 2 fp bit (18) unal, 5 305 2 bp bit (18) unal, 5 306 2 sentinel bit (36) aligned; 5 307 5 308 dcl VCPU_RESPONSE_BOUNDS fixed bin init (3) int static options (constant); 5 309 5 310 /* END INCLUDE FILE tcm.incl.pl1 */ 307 308 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 6 2 6 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 4 /* */ 6 5 /* This include file declares the header shared by the answer_table, */ 6 6 /* absentee_user_table and daemon_user_table include files. */ 6 7 /* */ 6 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 9 6 10 /****^ HISTORY COMMENTS: 6 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 6 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 13* Initial coding. 6 14* END HISTORY COMMENTS */ 6 15 6 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 6 17 2 header_version fixed bin, /* version of the header (3) */ 6 18 2 entry_version fixed bin, /* version of user table entries */ 6 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 6 20 2 header_length fixed bin, /* length of the header */ 6 21 2 max_size fixed bin, /* max number of entries in this table */ 6 22 2 current_size fixed bin, /* actual size of table (in entries) */ 6 23 2 number_free fixed bin, /* number of free entries in the table. */ 6 24 2 first_free fixed bin, /* index of first entry in the free list. */ 6 25 2 as_procid bit (36), /* process ID of user table manager process */ 6 26 2 ut_header_pad fixed bin; 6 27 6 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 308 309 310 end wcm; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1222.0 work_class_meters.pl1 >special_ldd>install>MR12.1-1054>work_class_meters.pl1 304 1 08/04/87 1210.2 answer_table.incl.pl1 >spec>install>1056>answer_table.incl.pl1 305 2 01/06/85 1422.1 hc_lock.incl.pl1 >ldd>include>hc_lock.incl.pl1 306 3 08/10/81 1843.7 mgt.incl.pl1 >ldd>include>mgt.incl.pl1 3-33 4 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 307 5 01/30/85 1523.9 tcm.incl.pl1 >ldd>include>tcm.incl.pl1 308 6 08/04/87 1138.0 user_table_header.incl.pl1 >spec>install>1056>user_table_header.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. HR 000157 automatic picture(4) unaligned dcl 47 set ref 178* 181 MIN 000166 automatic picture(2) unaligned dcl 52 set ref 179* 181 MYNAME 000000 constant char(17) initial unaligned dcl 75 set ref 125* 138* 148* 156* 248* Q1 000174 automatic float bin(27) dcl 57 set ref 216* 220* Q2 000175 automatic float bin(27) dcl 58 set ref 217* 220* R1 000176 automatic float bin(27) dcl 59 set ref 214* 220* R2 000177 automatic float bin(27) dcl 60 set ref 215* 220* SEC 000203 automatic picture(2) unaligned dcl 64 set ref 180* 181 VCPU_RESPONSE_BOUNDS constant fixed bin(17,0) initial dcl 5-308 ref 146 146 146 146 146 146 146 146 167 167 167 167 190 190 190 190 191 191 191 191 191 191 191 191 192 192 192 192 192 192 192 192 197 197 197 197 204 204 204 204 205 205 205 205 205 205 205 214 214 214 214 215 215 215 215 216 216 216 216 217 217 217 217 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 227 abs_wc 21 based fixed bin(17,0) array level 2 packed unaligned dcl 3-63 ref 283 284 291 291 291 addr builtin function dcl 108 ref 282 287 ansp 000442 automatic pointer initial dcl 1-53 set ref 1-53* 276* 278 anstbl based structure level 1 dcl 1-55 arg based char unaligned dcl 83 set ref 131 131 135 135 138* arg_no 000100 automatic fixed bin(17,0) dcl 36 set ref 129* 130* argl 000101 automatic fixed bin(21,0) dcl 37 set ref 130* 131 131 135 135 138 138 argp 000102 automatic pointer dcl 38 set ref 130* 131 131 135 135 138 based_sentinel based structure level 1 dcl 5-303 clock builtin function dcl 109 ref 171 code 000104 automatic fixed bin(35,0) dcl 39 set ref 123* 124 125* 130* 146* 147 148* 153* 155 156* 246* 247 248* 263* 270* com_err_ 000020 constant entry external dcl 93 ref 125 138 148 156 248 cpu 000105 automatic float bin(27) array dcl 40 set ref 191* 210 212 cpu_sum based fixed bin(71,0) array level 4 in structure "tcm_prev" dcl 85 in procedure "work_class_meters" set ref 191 cpu_sum based fixed bin(71,0) array level 4 in structure "tcm_cur" dcl 84 in procedure "work_class_meters" ref 191 credits_per_scatter 412 based fixed bin(35,0) level 2 dcl 84 ref 199 204 205 cu_$arg_count 000022 constant entry external dcl 94 ref 123 cu_$arg_ptr 000024 constant entry external dcl 95 ref 130 cur_ptrs 000126 automatic pointer array dcl 41 set ref 153* 161 161 164 168 190 191 192 197 199 204 204 205 205 214 215 216 217 220 220 220 220 220 220 220 227 227 227 227 227 227 235 current_size 36 based fixed bin(17,0) level 2 dcl 3-30 ref 281 286 curshift 000130 automatic fixed bin(17,0) dcl 42 set ref 278* 283 284 288 288 291 291 291 291 deadline_mode 420 based fixed bin(35,0) level 2 dcl 84 ref 220 235 define_wc_time 414 based fixed bin(71,0) level 2 dcl 84 ref 164 168 defined based bit(1) array level 5 packed unaligned dcl 84 ref 190 197 divide builtin function dcl 110 ref 174 175 eligibilities based fixed bin(35,0) array level 4 in structure "tcm_cur" dcl 84 in procedure "work_class_meters" ref 192 eligibilities based fixed bin(35,0) array level 4 in structure "tcm_prev" dcl 85 in procedure "work_class_meters" set ref 192 eligs 000131 automatic float bin(27) array dcl 43 set ref 192* 209 210 entry 100 based structure array level 2 dcl 3-30 set ref 282 287 error_table_$badopt 000040 external static fixed bin(35,0) dcl 104 set ref 138* flags based structure array level 4 packed unaligned dcl 84 formatted_meter_time 000152 automatic char(10) unaligned dcl 44 set ref 153* 181* 182* g1 000155 automatic float bin(27) dcl 45 set ref 200* 204* 220 227* governed based bit(1) array level 5 packed unaligned dcl 84 ref 227 group based structure level 1 dcl 3-63 group_id based char(8) level 2 dcl 3-63 ref 288 288 291 291 hcs_$initiate 000030 constant entry external dcl 97 ref 263 270 hr 000156 automatic fixed bin(17,0) dcl 46 set ref 175* 178 i 000160 automatic fixed bin(17,0) dcl 48 set ref 189* 190 191 191 191 192 192 192* 196* 197 204 205 209 210 210 212 214 215 216 217 220 220* 220 220 220 220 220 220 227* 227 227 227 227 227 227 227* int_wc 15 based fixed bin(17,0) array level 2 packed unaligned dcl 3-63 ref 288 288 291 interactive_q based bit(1) array level 5 packed unaligned dcl 84 ref 220 227 ioa_ 000026 constant entry external dcl 96 ref 182 195 220 227 235 265 272 j 000456 automatic fixed bin(17,0) dcl 257 set ref 281* 282* 286* 287* lock based structure level 1 dcl 2-12 max builtin function dcl 111 ref 161 maxel based fixed bin(35,0) array level 4 dcl 84 set ref 220* 227* maxf based fixed bin(35,0) array level 4 dcl 84 ref 205 meter_interval 000162 automatic fixed bin(71,0) dcl 49 set ref 153* meter_time 000164 automatic float bin(27) dcl 50 set ref 172* 173 metering_util_$define_regions 000032 constant entry external dcl 98 ref 146 metering_util_$fill_buffers 000034 constant entry external dcl 99 ref 153 metering_util_$reset 000036 constant entry external dcl 100 ref 246 mgt based structure level 1 dcl 3-30 mgtep 000444 automatic pointer dcl 3-61 set ref 282* 283 284 287* 288 288 288 288 291 291 291 291 291 291 mgtp 000010 internal static pointer initial dcl 74 set ref 262 263* 264 281 282 286 287 min 000165 automatic fixed bin(17,0) dcl 51 set ref 174* 175 177* 177 179 minf based fixed bin(35,0) array level 4 dcl 84 ref 204 mod builtin function dcl 112 ref 176 177 n_args 000167 automatic fixed bin(17,0) dcl 53 set ref 123* 129 null builtin function dcl 113 ref 1-53 262 264 269 271 pctcpu 000170 automatic float bin(27) dcl 54 set ref 212* 220 220* 227* pctmx 000171 automatic float bin(27) dcl 55 set ref 201* 205* 227* pin_weight based fixed bin(35,0) array level 4 dcl 84 set ref 220* 227* prev_ptrs 000172 automatic pointer array dcl 56 set ref 153* 161 167 191 192 processor_time 42 based fixed bin(71,0) level 2 in structure "tcm_cur" dcl 84 in procedure "work_class_meters" ref 161 processor_time 42 based fixed bin(71,0) level 2 in structure "tcm_prev" dcl 85 in procedure "work_class_meters" set ref 161 processor_time_at_define_wc 270 based fixed bin(71,0) level 2 dcl 84 ref 161 purging based fixed bin(35,0) array level 4 dcl 84 ref 220 227 quantum1 based fixed bin(35,0) array level 4 dcl 84 ref 216 quantum2 based fixed bin(35,0) array level 4 dcl 84 ref 217 realtime based fixed bin(35,0) array level 4 dcl 84 ref 220 220 227 reporting 000200 automatic bit(1) unaligned dcl 61 set ref 121* 132* 143 143* 185 resetting 000201 automatic bit(1) unaligned dcl 62 set ref 122* 133* 135* 143 245 resp1 based fixed bin(71,0) array level 4 dcl 84 ref 214 resp2 based fixed bin(71,0) array level 4 dcl 84 ref 215 reverse builtin function dcl 114 ref 288 291 sec 000202 automatic fixed bin(17,0) dcl 63 set ref 173* 174 176* 176 180 shift 132 based fixed bin(17,0) level 2 dcl 1-55 ref 278 size builtin function dcl 115 ref 146 146 sole_abs_wc 000204 automatic fixed bin(17,0) dcl 65 set ref 280* 283 283* 284 284* 291 298 298 298 some_lcg 000205 automatic varying char(32) array dcl 66 set ref 220* 227* 259* 260* 288* 288 291* 291 298* 298 static_ansp 000012 internal static pointer initial dcl 77 set ref 269 270* 271 276 substr builtin function dcl 116 ref 288 291 tcm based structure level 1 dcl 5-11 ref 146 146 tcm_cur based structure level 1 dcl 84 tcm_prev based structure level 1 dcl 85 set ref 167* tcmp automatic pointer dcl 5-9 ref 146 146 time_now 000436 automatic fixed bin(71,0) dcl 67 set ref 171* 172 251 time_reset 000014 internal static fixed bin(71,0) initial dcl 78 set ref 164 168* 172 251* total_cpu 000440 automatic float bin(27) dcl 68 set ref 161* 212 212 u1 000441 automatic float bin(27) dcl 69 set ref 209* 210* 220* 227* unique 000016 internal static fixed bin(17,0) initial dcl 79 set ref 145 146* 153* 246* unspec builtin function dcl 117 set ref 167* ut_header based structure level 1 dcl 6-16 verify builtin function dcl 118 ref 288 291 wct_entry based structure level 1 dcl 5-260 wcte based structure array level 3 in structure "tcm_cur" dcl 84 in procedure "work_class_meters" wcte based structure array level 3 in structure "tcm_prev" dcl 85 in procedure "work_class_meters" work_class_table based structure level 2 in structure "tcm_prev" dcl 85 in procedure "work_class_meters" work_class_table based structure level 2 in structure "tcm_cur" dcl 84 in procedure "work_class_meters" 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 unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial unaligned dcl 1-116 MGT_version_3 internal static fixed bin(17,0) initial dcl 3-25 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 lock_ptr automatic pointer dcl 2-11 wctep automatic pointer dcl 5-258 work_class based structure level 1 dcl 3-94 NAMES DECLARED BY EXPLICIT CONTEXT. fill_lcg 002021 constant entry internal dcl 256 ref 188 wcm 000274 constant entry external dcl 13 work_class_meters 000264 constant entry external dcl 13 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2672 2734 2540 2702 Length 3254 2540 42 304 131 10 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME work_class_meters 504 external procedure is an external procedure. fill_lcg internal procedure shares stack frame of external procedure work_class_meters. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mgtp work_class_meters 000012 static_ansp work_class_meters 000014 time_reset work_class_meters 000016 unique work_class_meters STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME work_class_meters 000100 arg_no work_class_meters 000101 argl work_class_meters 000102 argp work_class_meters 000104 code work_class_meters 000105 cpu work_class_meters 000126 cur_ptrs work_class_meters 000130 curshift work_class_meters 000131 eligs work_class_meters 000152 formatted_meter_time work_class_meters 000155 g1 work_class_meters 000156 hr work_class_meters 000157 HR work_class_meters 000160 i work_class_meters 000162 meter_interval work_class_meters 000164 meter_time work_class_meters 000165 min work_class_meters 000166 MIN work_class_meters 000167 n_args work_class_meters 000170 pctcpu work_class_meters 000171 pctmx work_class_meters 000172 prev_ptrs work_class_meters 000174 Q1 work_class_meters 000175 Q2 work_class_meters 000176 R1 work_class_meters 000177 R2 work_class_meters 000200 reporting work_class_meters 000201 resetting work_class_meters 000202 sec work_class_meters 000203 SEC work_class_meters 000204 sole_abs_wc work_class_meters 000205 some_lcg work_class_meters 000436 time_now work_class_meters 000440 total_cpu work_class_meters 000441 u1 work_class_meters 000442 ansp work_class_meters 000444 mgtep work_class_meters 000456 j fill_lcg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac fl2_to_fx1 mdfx1 shorten_stack ext_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr hcs_$initiate ioa_ metering_util_$define_regions metering_util_$fill_buffers metering_util_$reset THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 53 000257 13 000263 121 000302 122 000303 123 000304 124 000315 125 000317 126 000334 129 000335 130 000345 131 000362 132 000374 133 000376 134 000377 135 000400 138 000413 139 000437 141 000440 143 000442 145 000450 146 000453 147 000547 148 000551 149 000576 153 000577 155 000633 156 000635 157 000664 161 000665 164 000700 167 000704 168 000752 171 000754 172 000756 173 000763 174 000766 175 000770 176 000772 177 000776 178 001001 179 001010 180 001020 181 001030 182 001053 185 001072 188 001074 189 001075 190 001101 191 001153 192 001170 194 001204 195 001206 196 001222 197 001227 199 001303 200 001305 201 001307 202 001310 204 001311 205 001326 209 001341 210 001347 212 001353 214 001361 215 001374 216 001404 217 001413 220 001422 227 001570 233 001723 235 001725 245 001751 246 001753 247 001764 248 001766 249 002014 251 002015 254 002020 256 002021 259 002022 260 002033 262 002037 263 002044 264 002114 265 002121 266 002137 269 002140 270 002144 271 002216 272 002223 273 002236 276 002237 278 002241 280 002244 281 002246 282 002257 283 002264 284 002300 285 002313 286 002315 287 002327 288 002334 291 002421 297 002506 298 002511 302 002530 ----------------------------------------------------------- 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