COMPILATION LISTING OF SEGMENT system_comm_meters Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/25/89 1051.4 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* format: style4,delnl,insnl,^ifthendo */ 12 system_comm_meters: 13 tty_meters: 14 procedure; 15 16 /* This is a command to output statistics describing the performance and general 17* behavior of the ring-0 communications software. 18* 19* Usage: system_comm_meters {-reset | -report_reset} 20**/ 21 22 /* Written March 1981 by Robert Coren */ 23 /* Modified December 1984 by Robert Coren to remove tty_area from metering region (it wasn't used) */ 24 25 /* AUTOMATIC */ 26 27 dcl code fixed bin (35); 28 dcl reset bit (1); 29 dcl report bit (1); 30 dcl char_time char (10); /* metering time formatted by metering_util_ */ 31 dcl meter_time fixed bin (71); 32 dcl cur_ptrs (2) ptr; 33 dcl prev_ptrs (2) ptr; 34 dcl total_timep ptr; 35 dcl old_ttybp ptr; /* pointer to older copy of tty_buf */ 36 dcl old_total_timep ptr; 37 38 dcl in_interrupts fixed bin (35); 39 dcl out_interrupts fixed bin (35); 40 dcl control_interrupts fixed bin (35); 41 dcl in_interrupt_time fixed bin (71); 42 dcl out_interrupt_time fixed bin (71); 43 dcl control_interrupt_time fixed bin (71); 44 dcl read_calls fixed bin (35); 45 dcl write_calls fixed bin (35); 46 dcl read_time fixed bin (71); 47 dcl write_time fixed bin (71); 48 dcl in_bytes fixed bin (35); /* characters in through channel_manager */ 49 dcl in_messages fixed bin (35); /* input interrupts through channel manager */ 50 dcl out_bytes fixed bin (35); 51 dcl out_messages fixed bin (35); 52 53 dcl mpx_channels fixed bin; 54 dcl devx fixed bin; 55 dcl cpu_time fixed bin (71); 56 57 dcl in_before_conv fixed bin (35); 58 dcl out_before_conv fixed bin (35); 59 dcl in_after_conv fixed bin (35); 60 dcl out_after_conv fixed bin (35); 61 dcl preconverted fixed bin (35); 62 dcl net_read_calls fixed bin (35); 63 dcl net_write_calls fixed bin (35); 64 dcl net_read_time fixed bin (71); 65 dcl net_write_time fixed bin (71); 66 dcl net_input_ints fixed bin (35); 67 dcl net_output_ints fixed bin (35); 68 dcl net_control_ints fixed bin (35); 69 dcl net_in_int_time fixed bin (71); 70 dcl net_out_int_time fixed bin (71); 71 dcl net_control_int_time fixed bin (71); 72 73 dcl pool_size fixed bin (35); 74 dcl avg_input_space fixed bin; 75 dcl avg_output_space fixed bin; 76 dcl avg_control_space fixed bin; 77 dcl alloc_calls fixed bin (35); 78 dcl free_calls fixed bin (35); 79 dcl alloc_time fixed bin (71); 80 dcl free_time fixed bin (71); 81 82 dcl ttyb_loop_locks fixed bin (35); 83 dcl ttyb_loop_lock_time fixed bin (71); 84 dcl alloc_failures fixed bin (35); 85 86 dcl tty_lock_calls fixed bin (35); 87 dcl tty_lock_waits fixed bin (35); 88 dcl queued_ints fixed bin (35); 89 dcl found_lock_locked fixed bin (35); 90 dcl echoed_by_r0 fixed bin (35); 91 dcl echoed_by_fnp fixed bin (35); 92 93 dcl in_restarts fixed bin (35); 94 dcl out_restarts fixed bin (35); 95 dcl out_overflows fixed bin (35); 96 97 dcl nargs fixed bin; 98 dcl argp ptr; 99 dcl argl fixed bin (21); 100 dcl arg char (argl) based (argp); 101 102 103 /* BASED */ 104 105 dcl time fixed bin (71) based; /* CPU time from tc_data */ 106 107 108 /* INTERNAL STATIC */ 109 110 dcl first_time bit (1) int static init ("1"b); /* indicates first call in this process */ 111 dcl tty_buf_len fixed bin (19) int static; 112 dcl tty_area_len fixed bin (19) int static; 113 dcl mu_index fixed bin int static; /* unique index used by metering_util_ */ 114 115 /* The following are copies of previous values of the above, set at "reset" time, 116* and used for calculating increments over the metering interval */ 117 118 dcl old_in_interrupts fixed bin (35) int static init (0); 119 dcl old_out_interrupts fixed bin (35) int static init (0); 120 dcl old_control_interrupts fixed bin (35) int static init (0); 121 dcl old_in_interrupt_time fixed bin (71) int static init (0); 122 dcl old_out_interrupt_time fixed bin (71) int static init (0); 123 dcl old_control_interrupt_time fixed bin (71) int static init (0); 124 dcl old_read_calls fixed bin (35) int static init (0); 125 dcl old_write_calls fixed bin (35) int static init (0); 126 dcl old_read_time fixed bin (71) int static init (0); 127 dcl old_write_time fixed bin (71) int static init (0); 128 dcl old_in_bytes fixed bin (35) int static init (0); 129 dcl old_in_messages fixed bin (35) int static init (0); 130 dcl old_out_bytes fixed bin (35) int static init (0); 131 dcl old_out_messages fixed bin (35) int static init (0); 132 133 dcl CMD_NAME char (18) int static options (constant) init ("system_comm_meters"); 134 135 136 /* ENTRIES */ 137 138 dcl ring_zero_peek_$get_max_length entry (char (*), fixed bin (19), fixed bin (35)); 139 dcl meter_format_$picture entry (fixed bin (35), fixed bin) returns (char (15) varying); 140 dcl meter_format_$quotient entry (fixed bin (71), fixed bin (71), char (*)) returns (char (12) varying); 141 dcl metering_util_$define_regions entry options (variable); 142 dcl metering_util_$fill_buffers entry (fixed bin, fixed bin (71), char (*), (*) ptr, (*) ptr, fixed bin (35)); 143 dcl metering_util_$reset entry (fixed bin, fixed bin (35)); 144 dcl com_err_ entry () options (variable); 145 dcl ioa_ entry () options (variable); 146 dcl ioa_$rsnnl entry () options (variable); 147 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 148 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 149 150 151 /* EXTERNAL STATIC */ 152 153 154 dcl ( 155 error_table_$wrong_no_of_args, 156 error_table_$badopt 157 ) fixed bin (35) external static; 158 159 160 /* BUILTINS */ 161 162 dcl (addrel, rel, addr, divide, bin, currentsize, float, ltrim, copy, length) builtin; 163 164 call cu_$arg_count (nargs, code); 165 if code ^= 0 166 then do; 167 call com_err_ (code, CMD_NAME, "From cu_$arg_count"); 168 return; 169 end; 170 171 if nargs = 0 172 then do; 173 reset = "0"b; 174 report = "1"b; 175 end; 176 177 else do; 178 if nargs ^= 1 /* only 1 is allowed */ 179 then do; 180 call com_err_ (error_table_$wrong_no_of_args, CMD_NAME, 181 "^/Usage: system_comm_meters {-reset | -report_reset}"); 182 return; 183 end; 184 185 call cu_$arg_ptr (1, argp, argl, code); 186 if arg = "-reset" | arg = "-rs" 187 then do; 188 reset = "1"b; 189 report = "0"b; 190 end; 191 192 else if arg = "-report_reset" | arg = "-rr" 193 then do; 194 reset = "1"b; 195 report = "1"b; 196 end; 197 198 else do; 199 call com_err_ (error_table_$badopt, CMD_NAME, arg); 200 return; 201 end; 202 end; 203 204 if first_time /* have we initialized already? */ 205 then do; /* if not, do it now */ 206 call ring_zero_peek_$get_max_length ("tty_buf", tty_buf_len, code); 207 208 if code = 0 209 then call ring_zero_peek_$get_max_length ("tty_area", tty_area_len, code); 210 211 if code ^= 0 212 then do; 213 call com_err_ (code, CMD_NAME, "From ring_zero_peek_$get_max_length"); 214 return; 215 end; 216 217 call metering_util_$define_regions (mu_index, code, "tty_buf", 0, tty_buf_len, 218 "tc_data", "processor_time", 2); 219 if code ^= 0 220 then do; 221 call com_err_ (code, CMD_NAME, "From metering_util_$define_regions"); 222 return; 223 end; 224 225 first_time = "0"b; /* we're initialized now */ 226 end; 227 228 /* We have to calculate certain things in any case, to report them and/or to 229* update the "old" values in case of reset */ 230 231 call metering_util_$fill_buffers (mu_index, meter_time, char_time, cur_ptrs, prev_ptrs, code); 232 233 if code ^= 0 234 then do; 235 call com_err_ (code, CMD_NAME, "From metering_util_$fill_buffers"); 236 return; 237 end; 238 239 call ioa_ ("^/Total metering time ^a", char_time); 240 241 ttybp = cur_ptrs (1); 242 total_timep = cur_ptrs (2); 243 244 old_ttybp = prev_ptrs (1); 245 old_total_timep = prev_ptrs (2); 246 247 in_interrupts, out_interrupts, control_interrupts, in_interrupt_time, out_interrupt_time, 248 control_interrupt_time, read_calls, write_calls, read_time, write_time, in_bytes, in_messages, out_bytes, 249 out_messages = 0; 250 251 /* thumb through LCT to sum statistics over all channels */ 252 253 lctp = addrel (ttybp, rel (tty_buf.lct_ptr)); 254 mpx_channels = 0; 255 256 do devx = 1 to lct.max_no_lctes; 257 lctep = addr (lct.lcte_array (devx)); 258 if lcte.entry_in_use 259 then do; 260 in_interrupts = in_interrupts + lcte.in.interrupts; 261 out_interrupts = out_interrupts + lcte.out.interrupts; 262 control_interrupts = control_interrupts + lcte.control.interrupts; 263 264 if lcte.major_channel_devx ^= 0 /* if there's a parent */ 265 then if addr (lct.lcte_array (lcte.major_channel_devx)) -> lcte.major_channel_devx = 0 266 /* who is a top-level multiplexer */ 267 then do; /* only count interrupt time for these to avoid duplication */ 268 in_interrupt_time = in_interrupt_time + lcte.in.interrupt_time; 269 out_interrupt_time = out_interrupt_time + lcte.out.interrupt_time; 270 control_interrupt_time = control_interrupt_time + lcte.control.interrupt_time; 271 end; 272 273 if lcte.channel_type = TTY_MPX /* get some additional stuff for non-multiplexed channels */ 274 then do; 275 in_bytes = in_bytes + lcte.in_bytes; 276 in_messages = in_messages + lcte.in.interrupts; 277 out_bytes = out_bytes + lcte.out_bytes; 278 out_messages = out_messages + lcte.out.calls; 279 end; 280 281 else mpx_channels = mpx_channels + 1; /* this is a multiplexed channel, count it */ 282 end; 283 end; 284 285 read_calls = tty_buf.read_calls; 286 write_calls = tty_buf.write_calls; 287 read_time = tty_buf.read_time; 288 write_time = tty_buf.write_time; 289 290 if report /* If user wanted to know anything */ 291 then do; 292 cpu_time = total_timep -> time - old_total_timep -> time; 293 294 call ioa_ ("^/THROUGHPUT^/^30tbefore conversion^50tafter conversion^68tratio"); 295 in_before_conv = tty_buf.nrawread - old_ttybp -> tty_buf.nrawread; 296 in_after_conv = tty_buf.ninchars - old_ttybp -> tty_buf.ninchars; 297 298 call ioa_ ("Total characters input^30t^a^50t^a^68t^a", meter_format_$picture (in_before_conv, 13), 299 meter_format_$picture (in_after_conv, 13), 300 meter_format_$quotient ((in_after_conv), (in_before_conv), "^5.2f")); 301 302 out_before_conv = tty_buf.noutchars - old_ttybp -> tty_buf.noutchars; 303 out_after_conv = tty_buf.nrawwrite - old_ttybp -> tty_buf.nrawwrite; 304 305 call ioa_ ("Total characters output^30t^a^50t^a^68t^a", meter_format_$picture (out_before_conv, 13), 306 meter_format_$picture (out_after_conv, 13), 307 meter_format_$quotient ((out_after_conv), (out_before_conv), "^5.2f")); 308 309 call ioa_ ("Average length of input^34t^a characters", 310 meter_format_$quotient (in_bytes - old_in_bytes, in_messages - old_in_messages, "^5.1f")); 311 312 call ioa_ ("Average length of output^34t^a characters", 313 meter_format_$quotient (out_bytes - old_out_bytes, out_messages - old_out_messages, "^5.1f")); 314 315 preconverted = tty_buf.preconverted - old_ttybp -> tty_buf.preconverted; 316 call ioa_ ("Input characters preconverted^30t^a (^a% of total)", meter_format_$picture (preconverted, 13), 317 meter_format_$quotient (100 * preconverted, (in_before_conv), "^.1f")); 318 319 net_read_calls = read_calls - old_read_calls; 320 net_write_calls = write_calls - old_write_calls; 321 net_read_time = divide (read_time - old_read_time, 1000, 35, 0); 322 net_write_time = divide (write_time - old_write_time, 1000, 35, 0); 323 324 call ioa_ ("^/^30tread^50twrite"); 325 call ioa_ ("Number of calls^27t^a^47t^a", meter_format_$picture (net_read_calls, 11), 326 meter_format_$picture (net_write_calls, 11)); 327 call ioa_ ("Average time per call^27t^a msec.^50t^a msec.", 328 meter_format_$quotient (net_read_time, (net_read_calls), "^5.2f"), 329 meter_format_$quotient (net_write_time, (net_write_calls), "^5.2f")); 330 331 call ioa_ ("Average chars. processed^29t^a^49t^a", 332 meter_format_$quotient ((in_before_conv), (net_read_calls), "^5.1f"), 333 meter_format_$quotient ((out_before_conv), (net_write_calls), "^5.1f")); 334 call ioa_ ("Average chars. per msec.^29t^a^49t^a", 335 meter_format_$quotient ((in_before_conv), net_read_time, "^5.1f"), 336 meter_format_$quotient ((out_before_conv), net_write_time, "^5.1f")); 337 338 call ioa_ ("^2/CHANNEL INTERRUPTS^/^27tinput^42toutput^57tother^72ttotal"); 339 340 net_input_ints = in_interrupts - old_in_interrupts; 341 net_output_ints = out_interrupts - old_out_interrupts; 342 net_control_ints = control_interrupts - old_control_interrupts; 343 net_in_int_time = divide (in_interrupt_time - old_in_interrupt_time, 1000, 35, 0); 344 net_out_int_time = divide (out_interrupt_time - old_out_interrupt_time, 1000, 35, 0); 345 net_control_int_time = divide (control_interrupt_time - old_control_interrupt_time, 1000, 35, 0); 346 347 call ioa_ ("software ""interrupts""^25t^a^40t^a^55t^a^69t^a", meter_format_$picture (net_input_ints, 8), 348 meter_format_$picture (net_output_ints, 8), meter_format_$picture (net_control_ints, 8), 349 meter_format_$picture (net_input_ints + net_output_ints + net_control_ints, 9)); 350 351 call ioa_ ("average time (msec.)^25t^a^40t^a^55t^a^70t^a", 352 meter_format_$quotient (net_in_int_time, (net_input_ints), "^6.2f"), 353 meter_format_$quotient (net_out_int_time, (net_output_ints), "^6.2f"), 354 meter_format_$quotient (net_control_int_time, (net_control_ints), "^6.2f"), 355 meter_format_$quotient (net_in_int_time + net_out_int_time + net_control_int_time, 356 net_input_ints + net_output_ints + net_control_ints, "^6.2f")); 357 358 call ioa_ ("^2/TTY_BUF SPACE MANAGEMENT^/"); 359 360 pool_size = tty_buf_len - (bin (rel (addr (tty_buf.free_space))) - bin (rel (ttybp))) - currentsize (lct); 361 362 call ioa_ ("Total size of buffer pool ^30t^a words", meter_format_$picture (pool_size, 7)); 363 call ioa_ ("Number of channels configured^30t^7d^/Number of multiplexed channels^30t^7d", lct.max_no_lctes, 364 mpx_channels); 365 366 if tty_buf.input_space_updates = old_ttybp -> tty_buf.input_space_updates 367 then avg_input_space = divide (tty_buf.cumulative_input_space, tty_buf.input_space_updates, 35, 0); 368 else avg_input_space = 369 divide (tty_buf.cumulative_input_space - old_ttybp -> tty_buf.cumulative_input_space, 370 tty_buf.input_space_updates - old_ttybp -> tty_buf.input_space_updates, 35, 0); 371 372 if tty_buf.output_space_updates = old_ttybp -> tty_buf.output_space_updates 373 then avg_output_space = divide (tty_buf.cumulative_output_space, tty_buf.output_space_updates, 35, 0); 374 else avg_output_space = 375 divide (tty_buf.cumulative_output_space - old_ttybp -> tty_buf.cumulative_output_space, 376 tty_buf.output_space_updates - old_ttybp -> tty_buf.output_space_updates, 35, 0); 377 378 if tty_buf.control_space_updates = old_ttybp -> tty_buf.control_space_updates 379 then avg_control_space = divide (tty_buf.cumulative_control_space, tty_buf.control_space_updates, 35, 0); 380 else avg_control_space = 381 divide (tty_buf.cumulative_control_space - old_ttybp -> tty_buf.cumulative_control_space, 382 tty_buf.control_space_updates - old_ttybp -> tty_buf.control_space_updates, 35, 0); 383 384 call ioa_ ("^/% of buffer pool in use^30tcurrent^42taverage"); 385 386 call ioa_ ("^4tinput^32t^4.1f^44t^4.1f", 1e2 * float (tty_buf.current_input_space) / float (pool_size), 387 1e2 * float (avg_input_space) / float (pool_size)); 388 call ioa_ ("^4toutput^32t^4.1f^44t^4.1f", 1e2 * float (tty_buf.current_output_space) / float (pool_size), 389 1e2 * float (avg_output_space) / float (pool_size)); 390 call ioa_ ("^4tcontrol structures^32t^4.1f^44t^4.1f", 391 1e2 * float (tty_buf.current_control_space) / float (pool_size), 392 1e2 * float (avg_control_space) / float (pool_size)); 393 394 call ioa_ ("^4t^44(-^)"); 395 call ioa_ ("^4ttotal^32t^4.1f^44t^4.1f", 396 1e2 397 * float (tty_buf.current_input_space + tty_buf.current_output_space + tty_buf.current_control_space) 398 / float (pool_size), 399 1e2 * float (avg_input_space + avg_output_space + avg_control_space) / float (pool_size)); 400 401 call ioa_ ("^/Smallest amount of free space ever^32t^a words (^d% of buffer pool)", 402 meter_format_$picture ((tty_buf.minimum_free_space), 6), 403 divide (100 * tty_buf.minimum_free_space, pool_size, 17, 0)); 404 405 alloc_calls = tty_buf.alloc_calls - old_ttybp -> tty_buf.alloc_calls; 406 free_calls = tty_buf.free_calls - old_ttybp -> tty_buf.free_calls; 407 alloc_time = tty_buf.alloc_time - old_ttybp -> tty_buf.alloc_time; 408 free_time = tty_buf.free_time - old_ttybp -> tty_buf.free_time; 409 alloc_failures = tty_buf.alloc_failures - old_ttybp -> tty_buf.alloc_failures; 410 ttyb_loop_locks = tty_buf.space_lock_wait_count - old_ttybp -> tty_buf.space_lock_wait_count; 411 ttyb_loop_lock_time = tty_buf.space_lock_wait_time - old_ttybp -> tty_buf.space_lock_wait_time; 412 413 call ioa_ ("^/^27tallocate^44tfree^61ttotal"); 414 call ioa_ ("Number of calls^26t^a^43t^a^60t^a", meter_format_$picture (alloc_calls, 11), 415 meter_format_$picture (free_calls, 11), meter_format_$picture (alloc_calls + free_calls, 11)); 416 417 call ioa_ ("Average time per call (msec.)^31t^a^48t^a^65t^a", 418 meter_format_$quotient ((alloc_time), 1000 * alloc_calls, "^4.1f"), 419 meter_format_$quotient ((free_time), 1000 * free_calls, "^4.1f"), 420 meter_format_$quotient (alloc_time + free_time, 1000 * (alloc_calls + free_calls), "^4.1f")); 421 422 call ioa_ ("% of total CPU^31t^4.1f^48t^4.1f^65t^4.1f", 1e2 * float (alloc_time) / float (cpu_time), 423 1e2 * float (free_time) / float (cpu_time), 1e2 * float (alloc_time + free_time) / float (cpu_time)); 424 425 call ioa_ ("Calls requiring loop on tty_buf lock^41t^a^52t(^a% of total)", 426 meter_format_$picture (ttyb_loop_locks, 10), 427 meter_format_$quotient (100 * ttyb_loop_locks, alloc_calls + free_calls, "^.2f")); 428 429 call ioa_ ("average time spent looping on lock^41t^a msec.^52t(^.2f% of total CPU)", 430 meter_format_$quotient (divide (ttyb_loop_lock_time, 1000, 35, 0), (ttyb_loop_locks), "^.2f"), 431 1e2 * float (ttyb_loop_lock_time) / float (cpu_time)); 432 433 call ioa_ ("Number of allocation failures^41t^a^52t(^a% of attempts)", 434 meter_format_$picture (alloc_failures, 10), 435 meter_format_$quotient (100 * alloc_failures, (alloc_calls), "^.2f")); 436 437 tty_lock_calls = tty_buf.tty_lock_calls - old_ttybp -> tty_buf.tty_lock_calls; 438 tty_lock_waits = tty_buf.found_channel_locked - old_ttybp -> tty_buf.found_channel_locked; 439 queued_ints = tty_buf.n_queued_interrupts - old_ttybp -> tty_buf.n_queued_interrupts; 440 found_lock_locked = tty_lock_waits + queued_ints; 441 442 call ioa_ ("^2/CHANNEL LOCK CONTENTION^2/Number of calls to tty_lock^45t^a", 443 meter_format_$picture (tty_lock_calls, 11)); 444 if tty_lock_calls > 0 445 then do; 446 call ioa_ ("Times channel lock found locked^45t^a (^d% of attempts)", 447 meter_format_$picture (found_lock_locked, 11), 448 divide (100 * found_lock_locked, tty_lock_calls, 17, 0)); 449 call ioa_ ("Average time spent waiting for lock^45t^a msec.", 450 meter_format_$quotient (tty_buf.total_wait_time - old_ttybp -> tty_buf.total_wait_time, 451 1000 * tty_lock_waits, "^.2f")); 452 call ioa_ ("Maximum time spent waiting for lock^45t^.2f msec.", 1e-3 * float (tty_buf.max_wait_time)); 453 end; 454 455 if net_input_ints + net_output_ints + net_control_ints > 0 456 then call ioa_ ("Interrupts queued because channel locked^45t^a (^.1f% of interrupts)", 457 meter_format_$picture (queued_ints, 11), 458 1e2 * float (queued_ints) / float (net_input_ints + net_output_ints + net_control_ints)); 459 460 echoed_by_r0 = tty_buf.echo_neg_r0_chars - old_ttybp -> tty_buf.echo_neg_r0_chars; 461 echoed_by_fnp = tty_buf.echo_neg_mux_chars - old_ttybp -> tty_buf.echo_neg_mux_chars; 462 463 call ioa_ ("^2/ECHO NEGOTIATION^2/Average time of transaction^40t^a msec.", 464 meter_format_$quotient (tty_buf.echo_neg_time - old_ttybp -> tty_buf.echo_neg_time, 465 1000 * (tty_buf.echo_neg_interrupts - old_ttybp -> tty_buf.echo_neg_interrupts), "^.1f")); 466 if in_before_conv > 0 467 then do; 468 call ioa_ ("Chars. echoed by supervisor^37t^a (^5.2f% of input chars)", 469 meter_format_$picture (echoed_by_r0, 11), 1e2 * float (echoed_by_r0) / float (in_before_conv)); 470 call ioa_ ("Chars. echoed by FNPs^37t^a (^5.2f% of input chars)", 471 meter_format_$picture (echoed_by_fnp, 11), 1e2 * float (echoed_by_fnp) / float (in_before_conv)); 472 end; 473 474 in_restarts = tty_buf.input_restart - old_ttybp -> tty_buf.input_restart; 475 out_restarts = tty_buf.output_restart - old_ttybp -> tty_buf.output_restart; 476 out_overflows = tty_buf.output_buffer_overflow - old_ttybp -> tty_buf.output_buffer_overflow; 477 478 call ioa_ ("^2/ABNORMAL EVENTS^2/Input restarts^30t^a (^a% of read calls)", 479 meter_format_$picture (in_restarts, 10), 480 meter_format_$quotient (100 * in_restarts, (net_read_calls), "^.2f")); 481 call ioa_ ("Output restarts^30t^a (^a% of write calls)", meter_format_$picture (out_restarts, 10), 482 meter_format_$quotient (100 * out_restarts, (net_write_calls), "^.2f")); 483 call ioa_ ("Output space overflows^30t^a (^a% of write calls)", meter_format_$picture (out_overflows, 10), 484 meter_format_$quotient (100 * out_overflows, (net_write_calls), "^.2f")); 485 call ioa_ ("""needs_space"" calls^30t^a", 486 meter_format_$picture (tty_buf.space_needed_calls - old_ttybp -> tty_buf.space_needed_calls, 10)); 487 488 call ioa_ (""); /* put out an extra blank line at end */ 489 end; /* of reporting output */ 490 491 if reset 492 then do; 493 call metering_util_$reset (mu_index, code); /* this does most of the work */ 494 495 if code ^= 0 496 then call com_err_ (code, CMD_NAME, "From metering_util_$reset"); 497 498 else do; /* copy all the hard-to-calculate stuff */ 499 old_in_interrupts = in_interrupts; 500 old_in_interrupt_time = in_interrupt_time; 501 old_out_interrupts = out_interrupts; 502 old_out_interrupt_time = out_interrupt_time; 503 old_control_interrupts = control_interrupts; 504 old_control_interrupt_time = control_interrupt_time; 505 old_read_calls = read_calls; 506 old_read_time = read_time; 507 old_write_calls = write_calls; 508 old_write_time = write_time; 509 old_in_bytes = in_bytes; 510 old_out_bytes = out_bytes; 511 old_in_messages = in_messages; 512 old_out_messages = out_messages; 513 end; 514 end; /* of resetting code */ 515 return; /* done! */ 516 1 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 1 2 1 3 /* Date Last Modified and Reason 1 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 1 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 1 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 1 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 1 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 1 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 1 10* Modified November 1979 by C. Hornig for MCS tracing. 1 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 1 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 1 13* Modified March 1980 by Robert Coren to reorganize metering information 1 14* Modified December 1980 by Robert Coren to add FNP-specific events 1 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 1 16* Modified November 1984 by Robert Coren to add tty_area_lock 1 17**/ 1 18 1 19 dcl ttybp ptr, 1 20 tty_buf$ ext static, /* tty buffer segment */ 1 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 1 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 1 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 1 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 1 25 1 26 1 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 1 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 1 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 1 30 1 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 1 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 1 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 1 34 1 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 1 36 2 slock bit (36), /* per system lock */ 1 37 2 absorig fixed bin (24), /* abs address of this seg */ 1 38 2 borig bit (18), /* index of start of buffer area */ 1 39 2 bleft fixed bin (18), /* words left in pool */ 1 40 2 free bit (18), /* pointer to start of free pool */ 1 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 1 42 2 padb1 bit (28) unaligned, 1 43 2 lct_ptr ptr, /* pointer to logical channel table */ 1 44 1 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 1 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 1 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 1 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 1 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 1 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 1 51 2 minbuf fixed bin (18), /* min output buffer size */ 1 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 1 53 1 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 1 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 1 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 1 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 1 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 1 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 1 60 1 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 1 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 1 63 2 bfx fixed bin, /* used in calls to iobm */ 1 64 2 nquits fixed bin (35), /* number of quits */ 1 65 2 space_needed_data, 1 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 1 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 1 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 1 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 1 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 1 71 1 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 1 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 1 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 1 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 1 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 1 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 1 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 1 79 1 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 1 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 1 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 1 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 1 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 1 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 1 86 1 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 1 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 1 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 1 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 1 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 1 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 1 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 1 94 1 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 1 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 1 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 1 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 1 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 1 100 2 echo_neg_mux_nonecho fixed bin (35), 1 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 1 102 1 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 1 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 1 105 2 trace unaligned, /* tracing information */ 1 106 3 flags, 1 107 4 enable bit, /* global tracing control */ 1 108 4 default_mode bit, /* whether to trace channels by default */ 1 109 4 read bit, /* read */ 1 110 4 write bit, /* write */ 1 111 4 data bit, /* buffers on reads and writes */ 1 112 4 control bit, /* control, priv_control, and hpriv_control */ 1 113 4 modes bit, /* (get set check)_modes */ 1 114 4 interrupt bit, /* interrupt, interrupt_later */ 1 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 1 116 4 start bit, /* start, stop */ 1 117 4 shutdown bit, /* shutdown */ 1 118 4 space_man bit, /* tty_space_man$* */ 1 119 4 pad_flags bit (6), 1 120 3 data_offset bit (18), /* offset of tracing data */ 1 121 1 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 1 123 1 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 1 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 1 126 2 timer_count fixed bin, /* Number of timers outstanding */ 1 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 1 128 1 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 1 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 1 131 1 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 1 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 1 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 1 135 1 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 1 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 1 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 1 139 1 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 1 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 1 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 1 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 1 144 1 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 1 146 1 147 2 pad2 (13) fixed bin (35), 1 148 1 149 2 free_space fixed bin; /* start of free space region */ 1 150 1 151 2 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 2 2 2 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 2 4 2 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 2 6 2 7 /* format: style3 */ 2 8 2 9 declare lock_ptr pointer; 2 10 declare 1 hc_fast_lock aligned based (lock_ptr), 2 11 2 pid bit (36) aligned, /* holder of lock */ 2 12 2 event bit (36) aligned, /* event associated with lock */ 2 13 2 flags aligned, 2 14 3 notify_sw bit (1) unaligned, 2 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 2 16 2 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 1 152 1 153 1 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 517 3 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 3 2 3 3 /* Created by J. Stern 7/26/78 */ 3 4 /* Metering information added by C. Hornig, March 1980. */ 3 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 3 6 3 7 dcl lctp ptr; /* ptr to logical channel table */ 3 8 dcl lctep ptr; /* ptr to logical channel table entry */ 3 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 3 10 3 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 3 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 3 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 3 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 3 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 3 16 2 pad (11) fixed bin, 3 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 3 18 3 19 3 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 3 21 2 lock bit (36), /* channel lock */ 3 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 3 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 3 24 2 flags unal, 3 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 3 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 3 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 3 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 3 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 3 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 3 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 3 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 3 33 3 trace bit (1) unal, /* ON to trace this channel */ 3 34 3 unused bit (1) unal, 3 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 3 36 2 major_channel_info, 3 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 3 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 3 39 2 queue_entries, 3 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 3 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 3 42 2 word_counts, 3 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 3 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 3 45 3 46 2 meters, 3 47 3 in_bytes fixed bin (35), 3 48 3 out_bytes fixed bin (35), 3 49 3 in, 3 50 4 calls fixed bin (35), 3 51 4 interrupts fixed bin (35), 3 52 4 call_time fixed bin (71), 3 53 4 interrupt_time fixed bin (71), 3 54 3 out like lcte.meters.in, 3 55 3 control like lcte.meters.in, 3 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 3 57 3 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 3 59 3 60 2 pad (3) fixed bin (35); 3 61 3 62 3 63 dcl lcntp ptr; /* ptr to logical channel name table */ 3 64 3 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 3 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 3 67 3 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 3 69 3 70 3 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 518 4 1 /* BEGIN INCLUDE FILE ... wtcb.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 6* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 7* Add data needed for the uncp multiplexer (DSA gateway) interface 4 8* implementation. 4 9* END HISTORY COMMENTS */ 4 10 4 11 4 12 /* 4 13* Moved from tty_buf.incl.pl1 Aug 78 by J. Nicholls plus changes for ring 0 demultiplexing 4 14* Error code added Nov. 1982 by Robert Coren 4 15* Modified December 1984 by Robert Coren to invent "more_flags" structure and 4 16* its first flag, line_status_disabled 4 17* Reported modifications for the DN7100 interim in August 85. 4 18**/ 4 19 4 20 dcl wtcbp ptr; /* pointer to head of wtcb */ 4 21 4 22 dcl 1 wtcb based (wtcbp) aligned, /* wired terminal control block */ 4 23 2 hevent fixed bin (71) aligned, /* event channel for hangup/dialup signal */ 4 24 2 event fixed bin (71) aligned, /* users event channel, for uproc */ 4 25 4 26 2 line_status bit (72) aligned, /* actual line status sent by fnp */ 4 27 4 28 2 tcb_ptr ptr unal, /* pointer to tcb */ 4 29 2 pad1 fixed bin (35), /* formerly time dialedup */ 4 30 4 31 2 hproc bit (36) aligned, /* boss processid */ 4 32 2 uproc bit (36) aligned, /* tty user processid */ 4 33 4 34 2 baud_rate fixed bin (18) unal uns, /* baud rate of this line */ 4 35 2 line_type fixed bin (18) unal uns, /* line type for line protocol */ 4 36 4 37 2 flags unaligned, 4 38 3 listen bit (1) unaligned, /* if on, listen for dialups */ 4 39 3 dialed bit (1) unaligned, /* if on, line is dialed up */ 4 40 3 send_output bit (1) unaligned, /* on if DN355 requested more output */ 4 41 4 42 3 qenable bit (1) unaligned, /* if on, signal quits */ 4 43 3 qflag bit (1) unaligned, /* on after quit, causes writes to be ignored */ 4 44 3 end_frame bit (1) unaligned, /* write chain fills ards frame */ 4 45 4 46 3 notify_reqd bit (1) unaligned, /* if on, do notify after unlocking lock */ 4 47 3 work_reqd bit (1) unaligned, /* if on, call dn355 before returning */ 4 48 3 dialing bit (1) unaligned, /* if on, 355 is dialing a phone number */ 4 49 4 50 3 dial_status_valid bit (1) unaligned, /* if on, dial_status_code is valid */ 4 51 3 input_available bit (1) unaligned, /* input for this device is waiting in wired space */ 4 52 3 tcb_initialized bit (1) unaligned, /* if on, tcb has been initialized */ 4 53 4 54 3 wflag bit (1) unaligned, /* process blocked on output */ 4 55 3 rflag bit (1) unaligned, /* process blocked on input */ 4 56 3 wru bit (1) unaligned, /* reading answerback */ 4 57 4 58 3 hndlquit bit (1) unaligned, /* on if in hndlquit mode */ 4 59 3 count_lines bit (1) unaligned, /* on if tcb.linemax > 0 */ 4 60 3 line_status_present bit (1) unaligned, /* fnp has sent line status */ 4 61 4 62 3 sync_line bit (1) unaligned, /* channel is synchronous line type */ 4 63 3 breakall bit (1) unaligned, /* channel is in breakall mode */ 4 64 3 scroll bit (1) unaligned, /* channel is in scroll mode */ 4 65 4 66 3 negotiating_echo bit (1) unaligned, /* ring zero to echo chars. */ 4 67 3 wake_tbl bit (1) unaligned, /* on if in wake_tbl mode */ 4 68 3 allow_wakeup bit (1) unaligned, /* on to allow input wakeup in wake_tbl mode */ 4 69 4 70 3 receive_mode_device bit (1) unaligned, /* device must be told to enter receive mode */ 4 71 3 mark_set bit (1) unal, /* write_with_mark call outstanding */ 4 72 3 masked bit (1) unal, /* channel masked by FNP */ 4 73 4 74 2 dial_status_code fixed bin (8) unaligned, /* code returned by 355 after dialing a phone number */ 4 75 4 76 2 fblock fixed bin (17) unaligned, /* oldest read pointer, block */ 4 77 2 lblock fixed bin (17) unaligned, /* newest read block */ 4 78 4 79 2 fchar fixed bin (9) unsigned unaligned, /* first block char index */ 4 80 2 actline fixed bin (9) unsigned unaligned, /* line number of current line */ 4 81 2 actcol fixed bin (9) unsigned unaligned, /* tty column position */ 4 82 2 nramsgs fixed bin (9) unsigned unaligned, /* current number of read-ahead msgs */ 4 83 4 84 2 write_first fixed bin (17) unaligned, /* first write block */ 4 85 2 write_last fixed bin (17) unaligned, /* last write block */ 4 86 2 write_cnt fixed bin (17) unaligned, /* count of chars in write chain */ 4 87 2 white_col fixed bin (17) unaligned, /* column position resulting from trailing white space */ 4 88 4 89 2 max_buf_size fixed bin (9) unal uns, /* maximum-size buffer to be allocated for this channel */ 4 90 2 buffer_pad fixed bin (9) unal uns, /* amount of pad to be left in output buffers */ 4 91 2 devx fixed bin (17) unaligned, /* index into lct of channel's entry */ 4 92 2 echdp bit (18) unaligned, /* echo negotiation data ptr */ 4 93 2 waketp bit (18) unaligned, /* wakeup table offset */ 4 94 2 prompt_len fixed bin (8) unaligned, /* number of chars in prompt string */ 4 95 2 prompt char (3) unaligned, /* text of prompt message */ 4 96 2 line_delimiter char (1) unal, /* line delimiter for tty_read parse */ 4 97 2 more_flags unaligned, /* in addition to flags (above) */ 4 98 3 line_status_disabled bit (1) unaligned, /* "1"b => don't relay line_status interrupts */ 4 99 2 send_turn bit (1) unal, /* For the Dn7100 interim */ 4 100 2 pad bit (25) unal, 4 101 2 error_code fixed bin (35), /* error code returned by channel_manager to tty_interrupt */ 4 102 2 pad2 bit (36); 4 103 4 104 /* Ends on doubleword boundary */ 4 105 4 106 /* END INCLUDE FILE ... wtcb.incl.pl1 */ 519 5 1 /* BEGIN INCLUDE FILE ... tcb.incl.pl1 */ 5 2 5 3 /* Date Last Modified and Reason 5 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 5 5* Modified 2/6/78 by Robert Coren to add input_msg_size 5 6* Modified 4/18/78 by Robert Coren to add framing_chars 5 7* Modified 8/31/78 by J. Nicholls to add scroll mode 5 8* Extracted 9/12/78 by J. Stern from tty_data.incl.pl1 5 9* Modified Oct.1979 by Robert Coren to expand to 36 possible modes 5 10* Modified 1/21/80 by Robert Coren to add no_outp, oddp, & eight_bit modes 5 11* Modified 10/08/80 by Robert Coren to add meters for tty_read & tty_write 5 12* Modified: 10 November 1980 by G. Palter to add can_type and explicit padding 5 13* Modified 12/04/80 by Robert Coren to add saved copy of meters 5 14* Modified 2/24/81 by Robert Coren to add time spent in tty_read and _write 5 15* Modified April 1981 by Robert Coren to add time last dialed up 5 16**/ 5 17 5 18 dcl tcbp ptr; 5 19 5 20 dcl 1 tcb based (tcbp) aligned, /* declaration of per terminal control block */ 5 21 5 22 2 terminal_type char (32) unaligned, /* terminal type name */ 5 23 2 tables, 5 24 3 input_mvtrp bit (18) unaligned, /* rel pointer to current input mvt table */ 5 25 3 output_mvtrp bit (18) unaligned, /* rel pointer to current output mvt table */ 5 26 3 input_tctrp bit (18) unaligned, /* rel pointer to current input tct table */ 5 27 3 output_tctrp bit (18) unaligned, /* rel pointer to current output tct table */ 5 28 3 specialrp bit (18) unaligned, /* rel pointer to current special chars table */ 5 29 3 delayrp bit (18) unaligned, /* rel pointer to current delay table */ 5 30 2 default_tables, 5 31 3 df_input_mvtrp bit (18) unaligned, /* rel pointer to default input mvt table */ 5 32 3 df_output_mvtrp bit (18) unaligned, /* rel pointer to default output mvt table */ 5 33 3 df_input_tctrp bit (18) unaligned, /* rel pointer to default input tct table */ 5 34 3 df_output_tctrp bit (18) unaligned, /* rel pointer to default output tct table */ 5 35 3 df_specialrp bit (18) unaligned, /* rel pointer to default special chars table */ 5 36 3 df_delayrp bit (18) unaligned, /* rel pointer to default delay table */ 5 37 2 special_input_chars unaligned, 5 38 3 erase char (1) unaligned, /* erase character */ 5 39 3 kill char (1) unaligned, /* kill character */ 5 40 2 old_type fixed bin (17) unaligned, /* old terminal type number */ 5 41 5 42 2 modes unaligned, /* modes set by order call */ 5 43 3 edited bit (1) unaligned, /* edited output mode */ 5 44 3 tabm bit (1) unaligned, /* insert output tabs mode */ 5 45 3 canm bit (1) unaligned, /* do canonical form conversion */ 5 46 5 47 3 escm bit (1) unaligned, /* do input escape conversions */ 5 48 3 erklm bit (1) unaligned, /* do erase kill processing */ 5 49 3 rawim bit (1) unaligned, /* don't convert input */ 5 50 5 51 3 rawom bit (1) unaligned, /* don't convert output */ 5 52 3 redm bit (1) unaligned, /* has red-shift function */ 5 53 3 vertsp bit (1) unaligned, /* send real ff's and vt's if on, else escape them */ 5 54 5 55 3 echo_cr bit (1) unaligned, /* echo carriage returns */ 5 56 3 echo_lf bit (1) unaligned, /* echo line feeds */ 5 57 3 echo_tab bit (1) unaligned, /* echo tabs */ 5 58 5 59 3 hndlquit bit (1) unaligned, /* cr's on quit */ 5 60 3 full_duplex bit (1) unaligned, /* xmit and receive simultaneously */ 5 61 3 echoplex bit (1) unaligned, /* echo input characters on terminal */ 5 62 5 63 3 upper_case bit (1) unaligned, /* map lower-case output into upper-case */ 5 64 3 replay bit (1) unaligned, /* replay interrupted input */ 5 65 3 polite bit (1) unaligned, /* output must start at left margin */ 5 66 5 67 3 control bit (1) unaligned, /* accept control characters */ 5 68 3 blk_xfer bit (1) unaligned, /* block transfer or "frame" mode */ 5 69 3 breakall bit (1) unaligned, /* break on all characters */ 5 70 5 71 3 scroll bit (1) unaligned, /* scroll mode for crt terminals */ 5 72 3 prefixnl bit (1) unaligned, /* prefix output iwth nl when input interrupted */ 5 73 3 wake_tbl bit (1) unaligned, /* input wakeups determined by wakeup table */ 5 74 5 75 3 iflow bit (1) unaligned, /* input flow control */ 5 76 3 oflow bit (1) unaligned, /* output flow control */ 5 77 3 no_outp bit (1) unaligned, /* don't generate output parity */ 5 78 5 79 3 eight_bit bit (1) unaligned, /* don't strip input parity */ 5 80 3 odd_parity bit (1) unaligned, /* generate odd parity (if any) */ 5 81 5 82 3 modes_pad bit (7) unaligned, 5 83 5 84 2 id char (4) unaligned, /* terminal id */ 5 85 5 86 2 colmax fixed bin (8) unaligned, /* current maximum number of columns */ 5 87 2 linemax fixed bin (8) unaligned, /* current maximum number of lines/frame */ 5 88 2 wrt_lchar fixed bin (17) unaligned, /* char within last write block */ 5 89 5 90 2 input_msg_size fixed bin, /* maximum input message size in chars */ 5 91 2 framing_chars unaligned, 5 92 3 frame_begin char (1) unaligned, /* frame-begin character */ 5 93 3 frame_end char (1) unaligned, /* frame-end character */ 5 94 2 max_output_block fixed bin (18) unsigned unaligned, /* maximum size of output block in block_acknowledge */ 5 95 5 96 2 input_suspend_seq unaligned, /* sequence for input suspension */ 5 97 3 count fixed bin (9) unsigned, 5 98 3 chars char (3), 5 99 2 input_resume_seq unaligned, /* likewise for input resumption */ 5 100 3 count fixed bin (9) unsigned, 5 101 3 chars char (3), 5 102 5 103 2 output_suspend_etb_seq unaligned, /* sequence for output suspension or end_of_block */ 5 104 3 count fixed bin (9) unsigned, 5 105 3 chars char (3), 5 106 2 output_resume_ack_seq unaligned, /* likewise for resumption or ack */ 5 107 3 count fixed bin (9) unsigned, 5 108 3 chars char (3), 5 109 5 110 2 flags unaligned, /* tty dim flag bits */ 5 111 3 breakall_enabled bit (1) unaligned, /* channel is permitted to use breakall mode */ 5 112 3 dont_count_next bit (1) unaligned, /* next output character is escaped */ 5 113 3 keyboard_locking bit (1) unaligned, /* ON if doing keybd locking for ASCIi line type */ 5 114 3 no_printer_off bit (1) unaligned, /* reject printer_off/printer_on orders */ 5 115 3 break_char_pending bit (1) unaligned, /* break character is in preconverted buffer */ 5 116 3 uproc_attached bit (1) unaligned, /* user process has attached device */ 5 117 3 block_acknowledge bit (1) unaligned, /* block acknowledgement output protocol */ 5 118 3 flags_pad bit (27) unaligned, 5 119 5 120 2 actshift bit (2) unaligned, /* tty shift, 00 none, 01 lower, 10 upper, 11 unknown */ 5 121 5 122 2 cumulative_meters, /* continuously running meters */ 5 123 3 read_calls fixed bin (35), /* number of calls to tty_read */ 5 124 3 write_calls fixed bin (35), /* number of calls to tty_write */ 5 125 3 read_chars fixed bin (35), /* after conversion */ 5 126 3 write_chars fixed bin (35), /* before conversion */ 5 127 3 read_time fixed bin (71), /* total time spent in tty_read */ 5 128 3 write_time fixed bin (71), /* total time spent in tty_write */ 5 129 2 saved_meters like tcb.cumulative_meters, /* meters saved at last dialup */ 5 130 5 131 2 can_type fixed binary (9) unaligned unsigned, /* type of canonicalization to use on this channel */ 5 132 2 pad1 bit (27) unaligned, /* to word boundary */ 5 133 2 time_dialed fixed bin (71); /* clock time of last copy_meters order */ 5 134 5 135 /* END INCLUDE FILE ... tcb.incl.pl1 */ 520 6 1 /* Begin include file ..... multiplexer_types.incl.pl1 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(89-03-20,Parisek), approve(89-06-01,MCR8110), 6 7* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 6 8* Add support of protocol mpx. 6 9* END HISTORY COMMENTS */ 6 10 6 11 6 12 /* This include file defines known multiplexer types */ 6 13 /* Prepared August 1978 by Larry Johnson */ 6 14 /* Changed April 1979 to rename the fnp multiplexer mcs */ 6 15 6 16 dcl (TTY_MPX init (0), /* nonmultiplexed channel */ 6 17 MCS_MPX init (1), /* FNP running MCS */ 6 18 USER1_MPX init (2), /* a range of values for user defined multiplexers */ 6 19 USER2_MPX init (3), 6 20 USER3_MPX init (4), 6 21 USER4_MPX init (5), 6 22 USER5_MPX init (6), 6 23 IBM3270_MPX init (7), /* IBM 3270 display terminal controller */ 6 24 VIP7760_MPX init (8), /* Honeywell VIP 7760 terminal controller */ 6 25 STY_MPX init (9), /* Software Terminal Facility */ 6 26 LAP_MPX init (10), /* Link Access Protocol (X.25 level 2) */ 6 27 X25_MPX init (11), /* CCITT X.25 level 3 */ 6 28 HASP_MPX init (12), /* HASP RJE protocol */ 6 29 UNCP_MPX init (13), /* DSA protocol */ 6 30 SYSTEM2_MPX init (14), 6 31 SYSTEM1_MPX init (15), 6 32 PROTOCOL_MPX init (16)) /* TCP/IP network X.25 protocol */ 6 33 int static options (constant); 6 34 6 35 dcl mpx_types (0:16) char (32) int static options (constant) init ( 6 36 "tty", "mcs", "user1", "user2", "user3", "user4", "user5", "ibm3270", 6 37 "vip7760", "sty", "lap", "x25", "hasp", "uncp", "system2", "system1", 6 38 "protocol"); 6 39 6 40 dcl mpx_special_lock (0:16) bit (1) int static options (constant) init ( 6 41 "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, 6 42 "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b, "0"b); 6 43 6 44 /* End include file ..... multiplexer_types.incl.pl1 */ 521 522 523 end system_comm_meters; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/89 1005.2 system_comm_meters.pl1 >special_ldd>install>MR12.3-1100>system_comm_meters.pl1 517 1 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 1-152 2 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 518 3 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 519 4 07/21/88 2036.0 wtcb.incl.pl1 >ldd>include>wtcb.incl.pl1 520 5 06/18/81 0900.8 tcb.incl.pl1 >ldd>include>tcb.incl.pl1 521 6 10/25/89 0959.9 multiplexer_types.incl.pl1 >special_ldd>install>MR12.3-1100>multiplexer_types.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. CMD_NAME 000000 constant char(18) initial packed unaligned dcl 133 set ref 167* 180* 199* 213* 221* 235* 495* TTY_MPX constant fixed bin(17,0) initial dcl 6-16 ref 273 addr builtin function dcl 162 ref 257 264 360 addrel builtin function dcl 162 ref 253 alloc_calls 000210 automatic fixed bin(35,0) dcl 77 in procedure "tty_meters" set ref 405* 414* 414 417 417 425 433 alloc_calls 40 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 405 405 alloc_failures 45 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 409 409 alloc_failures 000222 automatic fixed bin(35,0) dcl 84 in procedure "tty_meters" set ref 409* 433* 433 alloc_time 42 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 407 407 alloc_time 000212 automatic fixed bin(71,0) dcl 79 in procedure "tty_meters" set ref 407* 417 417 422 422 arg based char packed unaligned dcl 100 set ref 186 186 192 192 199* argl 000240 automatic fixed bin(21,0) dcl 99 set ref 185* 186 186 192 192 199 199 argp 000236 automatic pointer dcl 98 set ref 185* 186 186 192 192 199 avg_control_space 000207 automatic fixed bin(17,0) dcl 76 set ref 378* 380* 390 395 avg_input_space 000205 automatic fixed bin(17,0) dcl 74 set ref 366* 368* 386 395 avg_output_space 000206 automatic fixed bin(17,0) dcl 75 set ref 372* 374* 388 395 bin builtin function dcl 162 ref 360 360 calls 16 based fixed bin(35,0) level 4 dcl 3-20 ref 278 channel_type 2 based fixed bin(8,0) level 2 packed packed unaligned dcl 3-20 ref 273 char_time 000103 automatic char(10) packed unaligned dcl 30 set ref 231* 239* code 000100 automatic fixed bin(35,0) dcl 27 set ref 164* 165 167* 185* 206* 208 208* 211 213* 217* 219 221* 231* 233 235* 493* 495 495* com_err_ 000054 constant entry external dcl 144 ref 167 180 199 213 221 235 495 control 24 based structure level 3 dcl 3-20 control_interrupt_time 000136 automatic fixed bin(71,0) dcl 43 set ref 247* 270* 270 345 504 control_interrupts 000130 automatic fixed bin(35,0) dcl 40 set ref 247* 262* 262 342 503 control_space_updates 56 based fixed bin(35,0) level 2 dcl 1-35 ref 378 378 378 380 380 cpu_time 000154 automatic fixed bin(71,0) dcl 55 set ref 292* 422 422 422 429 cu_$arg_count 000060 constant entry external dcl 147 ref 164 cu_$arg_ptr 000062 constant entry external dcl 148 ref 185 cumulative_control_space 52 based fixed bin(71,0) level 2 dcl 1-35 ref 378 380 380 cumulative_input_space 46 based fixed bin(71,0) level 2 dcl 1-35 ref 366 368 368 cumulative_meters 32 based structure level 2 dcl 5-20 cumulative_output_space 50 based fixed bin(71,0) level 2 dcl 1-35 ref 372 374 374 cur_ptrs 000110 automatic pointer array dcl 32 set ref 231* 241 242 current_control_space 62 based fixed bin(18,0) level 2 dcl 1-35 ref 390 395 current_input_space 60 based fixed bin(18,0) level 2 dcl 1-35 ref 386 395 current_output_space 61 based fixed bin(18,0) level 2 dcl 1-35 ref 388 395 currentsize builtin function dcl 162 ref 360 devx 000153 automatic fixed bin(17,0) dcl 54 set ref 256* 257* divide builtin function dcl 162 ref 321 322 343 344 345 366 368 372 374 378 380 401 401 429 429 446 446 echo_neg_interrupts 72 based fixed bin(35,0) level 2 dcl 1-35 ref 463 463 echo_neg_mux_chars 74 based fixed bin(35,0) level 2 dcl 1-35 ref 461 461 echo_neg_r0_chars 73 based fixed bin(35,0) level 2 dcl 1-35 ref 460 460 echo_neg_time 70 based fixed bin(71,0) level 2 dcl 1-35 ref 463 463 echoed_by_fnp 000230 automatic fixed bin(35,0) dcl 91 set ref 461* 470* 470 echoed_by_r0 000227 automatic fixed bin(35,0) dcl 90 set ref 460* 468* 468 entry_in_use 2(09) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 258 error_table_$badopt 000066 external static fixed bin(35,0) dcl 154 set ref 199* error_table_$wrong_no_of_args 000064 external static fixed bin(35,0) dcl 154 set ref 180* first_time 000010 internal static bit(1) initial packed unaligned dcl 110 set ref 204 225* flags 2(09) based structure level 2 packed packed unaligned dcl 3-20 float builtin function dcl 162 ref 386 386 386 386 388 388 388 388 390 390 390 390 395 395 395 395 422 422 422 422 422 422 429 429 452 455 455 468 468 470 470 found_channel_locked 64 based fixed bin(35,0) level 2 dcl 1-35 ref 438 438 found_lock_locked 000226 automatic fixed bin(35,0) dcl 89 set ref 440* 446* 446 446 free_calls 000211 automatic fixed bin(35,0) dcl 78 in procedure "tty_meters" set ref 406* 414* 414 417 417 425 free_calls 41 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 406 406 free_space 150 based fixed bin(17,0) level 2 dcl 1-35 set ref 360 free_time 000214 automatic fixed bin(71,0) dcl 80 in procedure "tty_meters" set ref 408* 417 417 422 422 free_time 43 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 408 408 hc_fast_lock based structure level 1 dcl 2-10 in 10 based structure level 3 in structure "lcte" dcl 3-20 in procedure "tty_meters" in 30 based structure array level 4 in structure "lct" dcl 3-11 in procedure "tty_meters" in 2 based structure level 2 in structure "saved_meters" dcl 3-68 in procedure "tty_meters" in_after_conv 000160 automatic fixed bin(35,0) dcl 59 set ref 296* 298* 298 in_before_conv 000156 automatic fixed bin(35,0) dcl 57 set ref 295* 298* 298 316 331 334 466 468 470 in_bytes 000146 automatic fixed bin(35,0) dcl 48 in procedure "tty_meters" set ref 247* 275* 275 309 509 in_bytes 6 based fixed bin(35,0) level 3 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 275 in_interrupt_time 000132 automatic fixed bin(71,0) dcl 41 set ref 247* 268* 268 343 500 in_interrupts 000126 automatic fixed bin(35,0) dcl 38 set ref 247* 260* 260 340 499 in_messages 000147 automatic fixed bin(35,0) dcl 49 set ref 247* 276* 276 309 511 in_restarts 000231 automatic fixed bin(35,0) dcl 93 set ref 474* 478* 478 input_restart 21 based fixed bin(17,0) level 2 dcl 1-35 ref 474 474 input_space_updates 54 based fixed bin(35,0) level 2 dcl 1-35 ref 366 366 366 368 368 interrupt_time 30 based fixed bin(71,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 270 interrupt_time 14 based fixed bin(71,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 268 interrupt_time 22 based fixed bin(71,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 269 interrupts 11 based fixed bin(35,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 260 276 interrupts 17 based fixed bin(35,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 261 interrupts 25 based fixed bin(35,0) level 4 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 262 ioa_ 000056 constant entry external dcl 145 ref 239 294 298 305 309 312 316 324 325 327 331 334 338 347 351 358 362 363 384 386 388 390 394 395 401 413 414 417 422 425 429 433 442 446 449 452 455 463 468 470 478 481 483 485 488 lct based structure level 1 dcl 3-11 set ref 360 lct_ptr 6 based pointer level 2 dcl 1-35 ref 253 lcte based structure level 1 dcl 3-20 lcte_array 20 based structure array level 2 dcl 3-11 set ref 257 264 lctep 000246 automatic pointer dcl 3-8 set ref 257* 258 260 261 262 264 264 268 269 270 273 275 276 277 278 lctp 000244 automatic pointer dcl 3-7 set ref 253* 256 257 264 360 363 major_channel_devx 3 based fixed bin(17,0) level 3 packed packed unaligned dcl 3-20 ref 264 264 264 major_channel_info 3 based structure level 2 dcl 3-20 max_no_lctes based fixed bin(17,0) level 2 dcl 3-11 set ref 256 360 363* max_wait_time 65 based fixed bin(35,0) level 2 dcl 1-35 ref 452 meter_format_$picture 000042 constant entry external dcl 139 ref 298 298 305 305 316 325 325 347 347 347 347 362 401 414 414 414 425 433 442 446 455 468 470 478 481 483 485 meter_format_$quotient 000044 constant entry external dcl 140 ref 298 305 309 312 316 327 327 331 331 334 334 351 351 351 351 417 417 417 425 429 433 449 463 478 481 483 meter_time 000106 automatic fixed bin(71,0) dcl 31 set ref 231* metering_util_$define_regions 000046 constant entry external dcl 141 ref 217 metering_util_$fill_buffers 000050 constant entry external dcl 142 ref 231 metering_util_$reset 000052 constant entry external dcl 143 ref 493 meters 26 based structure array level 3 in structure "lct" dcl 3-11 in procedure "tty_meters" meters 6 based structure level 2 in structure "lcte" dcl 3-20 in procedure "tty_meters" minimum_free_space 57 based fixed bin(18,0) level 2 dcl 1-35 ref 401 401 401 mpx_channels 000152 automatic fixed bin(17,0) dcl 53 set ref 254* 281* 281 363* mu_index 000013 internal static fixed bin(17,0) dcl 113 set ref 217* 231* 493* n_queued_interrupts 101 based fixed bin(35,0) level 2 dcl 1-35 ref 439 439 nargs 000234 automatic fixed bin(17,0) dcl 97 set ref 164* 171 178 net_control_int_time 000202 automatic fixed bin(71,0) dcl 71 set ref 345* 351* 351 net_control_ints 000174 automatic fixed bin(35,0) dcl 68 set ref 342* 347* 347 351 351 455 455 net_in_int_time 000176 automatic fixed bin(71,0) dcl 69 set ref 343* 351* 351 net_input_ints 000172 automatic fixed bin(35,0) dcl 66 set ref 340* 347* 347 351 351 455 455 net_out_int_time 000200 automatic fixed bin(71,0) dcl 70 set ref 344* 351* 351 net_output_ints 000173 automatic fixed bin(35,0) dcl 67 set ref 341* 347* 347 351 351 455 455 net_read_calls 000163 automatic fixed bin(35,0) dcl 62 set ref 319* 325* 327 331 478 net_read_time 000166 automatic fixed bin(71,0) dcl 64 set ref 321* 327* 334* net_write_calls 000164 automatic fixed bin(35,0) dcl 63 set ref 320* 325* 327 331 481 483 net_write_time 000170 automatic fixed bin(71,0) dcl 65 set ref 322* 327* 334* ninchars 12 based fixed bin(35,0) level 2 dcl 1-35 ref 296 296 noutchars 13 based fixed bin(35,0) level 2 dcl 1-35 ref 302 302 nrawread 10 based fixed bin(35,0) level 2 dcl 1-35 ref 295 295 nrawwrite 11 based fixed bin(35,0) level 2 dcl 1-35 ref 303 303 old_control_interrupt_time 000024 internal static fixed bin(71,0) initial dcl 123 set ref 345 504* old_control_interrupts 000016 internal static fixed bin(35,0) initial dcl 120 set ref 342 503* old_in_bytes 000034 internal static fixed bin(35,0) initial dcl 128 set ref 309 509* old_in_interrupt_time 000020 internal static fixed bin(71,0) initial dcl 121 set ref 343 500* old_in_interrupts 000014 internal static fixed bin(35,0) initial dcl 118 set ref 340 499* old_in_messages 000035 internal static fixed bin(35,0) initial dcl 129 set ref 309 511* old_out_bytes 000036 internal static fixed bin(35,0) initial dcl 130 set ref 312 510* old_out_interrupt_time 000022 internal static fixed bin(71,0) initial dcl 122 set ref 344 502* old_out_interrupts 000015 internal static fixed bin(35,0) initial dcl 119 set ref 341 501* old_out_messages 000037 internal static fixed bin(35,0) initial dcl 131 set ref 312 512* old_read_calls 000026 internal static fixed bin(35,0) initial dcl 124 set ref 319 505* old_read_time 000030 internal static fixed bin(71,0) initial dcl 126 set ref 321 506* old_total_timep 000124 automatic pointer dcl 36 set ref 245* 292 old_ttybp 000122 automatic pointer dcl 35 set ref 244* 295 296 302 303 315 366 368 368 372 374 374 378 380 380 405 406 407 408 409 410 411 437 438 439 449 460 461 463 463 474 475 476 485 old_write_calls 000027 internal static fixed bin(35,0) initial dcl 125 set ref 320 507* old_write_time 000032 internal static fixed bin(71,0) initial dcl 127 set ref 322 508* out 16 based structure level 3 dcl 3-20 out_after_conv 000161 automatic fixed bin(35,0) dcl 60 set ref 303* 305* 305 out_before_conv 000157 automatic fixed bin(35,0) dcl 58 set ref 302* 305* 305 331 334 out_bytes 7 based fixed bin(35,0) level 3 in structure "lcte" dcl 3-20 in procedure "tty_meters" ref 277 out_bytes 000150 automatic fixed bin(35,0) dcl 50 in procedure "tty_meters" set ref 247* 277* 277 312 510 out_interrupt_time 000134 automatic fixed bin(71,0) dcl 42 set ref 247* 269* 269 344 502 out_interrupts 000127 automatic fixed bin(35,0) dcl 39 set ref 247* 261* 261 341 501 out_messages 000151 automatic fixed bin(35,0) dcl 51 set ref 247* 278* 278 312 512 out_overflows 000233 automatic fixed bin(35,0) dcl 95 set ref 476* 483* 483 out_restarts 000232 automatic fixed bin(35,0) dcl 94 set ref 475* 481* 481 output_buffer_overflow 23 based fixed bin(17,0) level 2 dcl 1-35 ref 476 476 output_restart 22 based fixed bin(17,0) level 2 dcl 1-35 ref 475 475 output_space_updates 55 based fixed bin(35,0) level 2 dcl 1-35 ref 372 372 372 374 374 pool_size 000204 automatic fixed bin(35,0) dcl 73 set ref 360* 362* 386 386 388 388 390 390 395 395 401 401 preconverted 000162 automatic fixed bin(35,0) dcl 61 in procedure "tty_meters" set ref 315* 316* 316 preconverted 20 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 315 315 prev_ptrs 000114 automatic pointer array dcl 33 set ref 231* 244 245 queued_ints 000225 automatic fixed bin(35,0) dcl 88 set ref 439* 440 455* 455 read_calls 000140 automatic fixed bin(35,0) dcl 44 in procedure "tty_meters" set ref 247* 285* 319 505 read_calls 30 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 285 read_time 24 based fixed bin(71,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 287 read_time 000142 automatic fixed bin(71,0) dcl 46 in procedure "tty_meters" set ref 247* 287* 321 506 rel builtin function dcl 162 ref 253 360 360 report 000102 automatic bit(1) packed unaligned dcl 29 set ref 174* 189* 195* 290 reset 000101 automatic bit(1) packed unaligned dcl 28 set ref 173* 188* 194* 491 ring_zero_peek_$get_max_length 000040 constant entry external dcl 138 ref 206 208 space_lock_wait_count 36 based fixed bin(35,0) level 2 dcl 1-35 ref 410 410 space_lock_wait_time 37 based fixed bin(35,0) level 2 dcl 1-35 ref 411 411 space_needed_calls 34(01) based fixed bin(34,0) level 3 packed packed unaligned dcl 1-35 ref 485 485 space_needed_data 34 based structure level 2 dcl 1-35 tcb based structure level 1 dcl 5-20 time based fixed bin(71,0) dcl 105 ref 292 292 total_timep 000120 automatic pointer dcl 34 set ref 242* 292 total_wait_time 66 based fixed bin(71,0) level 2 dcl 1-35 ref 449 449 tty_area_len 000012 internal static fixed bin(19,0) dcl 112 set ref 208* tty_buf based structure level 1 dcl 1-35 tty_buf_len 000011 internal static fixed bin(19,0) dcl 111 set ref 206* 217* 360 tty_lock_calls 63 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 437 437 tty_lock_calls 000223 automatic fixed bin(35,0) dcl 86 in procedure "tty_meters" set ref 437* 442* 444 446 446 tty_lock_waits 000224 automatic fixed bin(35,0) dcl 87 set ref 438* 440 449 ttyb_loop_lock_time 000220 automatic fixed bin(71,0) dcl 83 set ref 411* 429 429 429 ttyb_loop_locks 000216 automatic fixed bin(35,0) dcl 82 set ref 410* 425* 425 429 ttybp 000242 automatic pointer dcl 1-19 set ref 241* 253 253 285 286 287 288 295 296 302 303 315 360 360 366 366 366 368 368 372 372 372 374 374 378 378 378 380 380 386 388 390 395 395 395 401 401 401 405 406 407 408 409 410 411 437 438 439 449 452 460 461 463 463 474 475 476 485 write_calls 31 based fixed bin(35,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 286 write_calls 000141 automatic fixed bin(35,0) dcl 45 in procedure "tty_meters" set ref 247* 286* 320 507 write_time 26 based fixed bin(71,0) level 2 in structure "tty_buf" dcl 1-35 in procedure "tty_meters" ref 288 write_time 000144 automatic fixed bin(71,0) dcl 47 in procedure "tty_meters" set ref 247* 288* 322 508 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 1-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 1-32 HASP_MPX internal static fixed bin(17,0) initial dcl 6-16 IBM3270_MPX internal static fixed bin(17,0) initial dcl 6-16 LAP_MPX internal static fixed bin(17,0) initial dcl 6-16 MCS_MPX internal static fixed bin(17,0) initial dcl 6-16 PROTOCOL_MPX internal static fixed bin(17,0) initial dcl 6-16 STY_MPX internal static fixed bin(17,0) initial dcl 6-16 SYSTEM1_MPX internal static fixed bin(17,0) initial dcl 6-16 SYSTEM2_MPX internal static fixed bin(17,0) initial dcl 6-16 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 1-33 UNCP_MPX internal static fixed bin(17,0) initial dcl 6-16 USER1_MPX internal static fixed bin(17,0) initial dcl 6-16 USER2_MPX internal static fixed bin(17,0) initial dcl 6-16 USER3_MPX internal static fixed bin(17,0) initial dcl 6-16 USER4_MPX internal static fixed bin(17,0) initial dcl 6-16 USER5_MPX internal static fixed bin(17,0) initial dcl 6-16 VIP7760_MPX internal static fixed bin(17,0) initial dcl 6-16 X25_MPX internal static fixed bin(17,0) initial dcl 6-16 abs_buf_limit internal static fixed bin(18,0) initial dcl 1-19 bsizec internal static fixed bin(17,0) initial dcl 1-28 buf_per_second internal static fixed bin(17,0) initial dcl 1-29 copy builtin function dcl 162 input_bpart internal static fixed bin(18,0) initial dcl 1-19 ioa_$rsnnl 000000 constant entry external dcl 146 lcnt based structure level 1 dcl 3-65 lcntp automatic pointer dcl 3-63 lct_size automatic fixed bin(17,0) dcl 3-9 length builtin function dcl 162 lock_ptr automatic pointer dcl 2-9 ltrim builtin function dcl 162 mpx_special_lock internal static bit(1) initial array packed unaligned dcl 6-40 mpx_types internal static char(32) initial array packed unaligned dcl 6-35 output_bpart internal static fixed bin(18,0) initial dcl 1-19 qblock_size internal static fixed bin(17,0) initial dcl 1-27 saved_meters based structure level 1 dcl 3-68 tcbp automatic pointer dcl 5-18 tty_buf$ external static fixed bin(17,0) dcl 1-19 tty_ev internal static fixed bin(17,0) initial dcl 1-19 wtcb based structure level 1 dcl 4-22 wtcbp automatic pointer dcl 4-20 NAMES DECLARED BY EXPLICIT CONTEXT. system_comm_meters 001227 constant entry external dcl 12 tty_meters 001220 constant entry external dcl 12 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7020 7110 6632 7030 Length 7526 6632 70 402 165 30 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_meters 300 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 first_time tty_meters 000011 tty_buf_len tty_meters 000012 tty_area_len tty_meters 000013 mu_index tty_meters 000014 old_in_interrupts tty_meters 000015 old_out_interrupts tty_meters 000016 old_control_interrupts tty_meters 000020 old_in_interrupt_time tty_meters 000022 old_out_interrupt_time tty_meters 000024 old_control_interrupt_time tty_meters 000026 old_read_calls tty_meters 000027 old_write_calls tty_meters 000030 old_read_time tty_meters 000032 old_write_time tty_meters 000034 old_in_bytes tty_meters 000035 old_in_messages tty_meters 000036 old_out_bytes tty_meters 000037 old_out_messages tty_meters STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tty_meters 000100 code tty_meters 000101 reset tty_meters 000102 report tty_meters 000103 char_time tty_meters 000106 meter_time tty_meters 000110 cur_ptrs tty_meters 000114 prev_ptrs tty_meters 000120 total_timep tty_meters 000122 old_ttybp tty_meters 000124 old_total_timep tty_meters 000126 in_interrupts tty_meters 000127 out_interrupts tty_meters 000130 control_interrupts tty_meters 000132 in_interrupt_time tty_meters 000134 out_interrupt_time tty_meters 000136 control_interrupt_time tty_meters 000140 read_calls tty_meters 000141 write_calls tty_meters 000142 read_time tty_meters 000144 write_time tty_meters 000146 in_bytes tty_meters 000147 in_messages tty_meters 000150 out_bytes tty_meters 000151 out_messages tty_meters 000152 mpx_channels tty_meters 000153 devx tty_meters 000154 cpu_time tty_meters 000156 in_before_conv tty_meters 000157 out_before_conv tty_meters 000160 in_after_conv tty_meters 000161 out_after_conv tty_meters 000162 preconverted tty_meters 000163 net_read_calls tty_meters 000164 net_write_calls tty_meters 000166 net_read_time tty_meters 000170 net_write_time tty_meters 000172 net_input_ints tty_meters 000173 net_output_ints tty_meters 000174 net_control_ints tty_meters 000176 net_in_int_time tty_meters 000200 net_out_int_time tty_meters 000202 net_control_int_time tty_meters 000204 pool_size tty_meters 000205 avg_input_space tty_meters 000206 avg_output_space tty_meters 000207 avg_control_space tty_meters 000210 alloc_calls tty_meters 000211 free_calls tty_meters 000212 alloc_time tty_meters 000214 free_time tty_meters 000216 ttyb_loop_locks tty_meters 000220 ttyb_loop_lock_time tty_meters 000222 alloc_failures tty_meters 000223 tty_lock_calls tty_meters 000224 tty_lock_waits tty_meters 000225 queued_ints tty_meters 000226 found_lock_locked tty_meters 000227 echoed_by_r0 tty_meters 000230 echoed_by_fnp tty_meters 000231 in_restarts tty_meters 000232 out_restarts tty_meters 000233 out_overflows tty_meters 000234 nargs tty_meters 000236 argp tty_meters 000240 argl tty_meters 000242 ttybp tty_meters 000244 lctp tty_meters 000246 lctep tty_meters THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 call_ext_out_desc call_ext_out return_mac mpfx2 ext_entry divide_fx3 divide_fx4 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr ioa_ meter_format_$picture meter_format_$quotient metering_util_$define_regions metering_util_$fill_buffers metering_util_$reset ring_zero_peek_$get_max_length THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 001217 164 001234 165 001244 167 001246 168 001275 171 001276 173 001300 174 001301 175 001303 178 001304 180 001306 182 001332 185 001333 186 001352 188 001364 189 001366 190 001367 192 001370 194 001400 195 001402 196 001403 199 001404 200 001430 204 001431 206 001434 208 001456 211 001503 213 001505 214 001531 217 001532 219 001612 221 001614 222 001640 225 001641 231 001643 233 001676 235 001700 236 001724 239 001725 241 001745 242 001747 244 001751 245 001753 247 001755 253 001774 254 002000 256 002001 257 002011 258 002015 260 002020 261 002024 262 002030 264 002034 268 002046 269 002051 270 002054 273 002057 275 002062 276 002066 277 002072 278 002076 279 002102 281 002103 283 002104 285 002106 286 002111 287 002113 288 002115 290 002117 292 002121 294 002124 295 002140 296 002150 298 002156 302 002273 303 002303 305 002311 309 002426 312 002510 315 002572 316 002602 319 002677 320 002706 321 002714 322 002724 324 002733 325 002746 327 003023 331 003130 334 003243 338 003350 340 003364 341 003373 342 003401 343 003407 344 003417 345 003426 347 003435 351 003560 358 003761 360 003775 362 004020 363 004055 366 004100 368 004113 372 004127 374 004140 378 004154 380 004165 384 004201 386 004215 388 004256 390 004314 394 004352 395 004367 401 004431 405 004502 406 004512 407 004520 408 004526 409 004534 410 004542 411 004550 413 004556 414 004572 417 004674 422 005045 425 005122 429 005220 433 005312 437 005407 438 005417 439 005425 440 005433 442 005437 444 005474 446 005476 449 005545 452 005623 455 005650 460 005724 461 005734 463 005742 466 006025 468 006027 470 006100 474 006146 475 006153 476 006156 478 006161 481 006256 483 006353 485 006450 488 006520 491 006531 493 006533 495 006544 499 006573 500 006576 501 006600 502 006602 503 006604 504 006606 505 006610 506 006612 507 006614 508 006616 509 006620 510 006622 511 006624 512 006626 515 006630 ----------------------------------------------------------- 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