COMPILATION LISTING OF SEGMENT mcs_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 1626.6 mst Tue 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 mcs_meters_: 13 procedure; 14 15 /* This procedure contains entries to allocate and free metering structures, and 16* to display meters, for MCS FNPs and their subchannels. 17**/ 18 19 /* Written February 1981 by Robert Coren */ 20 /* Modified May 1981 by Robert Coren for new iom_data format */ 21 /* Modified August 1981 by Robert Coren to add buffer preallocation information. */ 22 /* Modified September 1981 by Robert Coren to add fnp-wide throughput statistics 23* and to suppress mpx meters kept in FNP if all 0 */ 24 25 return; /* main entry should never be called */ 26 27 /* PARAMETERS */ 28 29 dcl a_area_ptr pointer; /* pointer to area in which to perform allocations */ 30 dcl a_meterp pointer; /* pointer to structure to be allocated/freed (OUTPUT for alloc, INPUT for free */ 31 dcl a_chan_name char (32); /* for display entries */ 32 dcl a_iocbp pointer; /* likewise */ 33 dcl a_chan_meterp pointer; /* likewise, pointer to channel meters structure */ 34 dcl a_flags bit (36) aligned; /* likewise */ 35 dcl a_since_boot bit (1); /* for summary entry */ 36 dcl a_summary_ptr pointer; /* likewise, structure to be filled in */ 37 dcl a_code fixed bin (35); /* status code (OUTPUT) */ 38 39 /* AUTOMATIC */ 40 41 dcl areap pointer; 42 dcl code fixed bin (35); 43 dcl iocbp pointer; 44 dcl flags bit (36) aligned; 45 dcl brief bit (1); 46 dcl error bit (1); 47 dcl since_boot bit (1); 48 dcl synchronous bit (1); 49 dcl multiplexed bit (1); 50 dcl pool fixed bin (35); 51 dcl avg_space_available fixed bin (35); 52 dcl fnp_meters_available bit (1); 53 dcl time_up fixed bin (71); 54 dcl input_chars fixed bin (35); 55 dcl output_chars fixed bin (35); 56 dcl meter_time fixed bin (71); 57 dcl char_time char (10); 58 dcl cur_ptrs (2) pointer; 59 dcl prev_ptrs (2) pointer; 60 dcl cpu_time fixed bin (71); 61 dcl n_interrupts fixed bin (35); 62 dcl interrupt_time fixed bin (71); 63 dcl iom_data_len fixed bin (19); 64 dcl iomx fixed bin; 65 dcl current_meterp pointer; 66 dcl saved_meterp pointer; 67 dcl max_possible_idle_count fixed bin (35); 68 dcl total_dia_q_len fixed bin (35); 69 dcl total_dia_q_updates fixed bin (35); 70 dcl total_pending_status fixed bin (35); 71 dcl total_status_updates fixed bin (35); 72 dcl total_output_overlaps fixed bin (35); 73 dcl total_parity_errors fixed bin (35); 74 dcl total_ssqo fixed bin (35); 75 dcl total_hsqo fixed bin (35); 76 dcl total_alloc_failures fixed bin (35); 77 dcl total_input_messages fixed bin (35); 78 dcl total_input_length fixed bin (35); 79 dcl total_output_messages fixed bin (35); 80 dcl total_output_length fixed bin (35); 81 dcl total_pre_exhaust fixed bin (35); 82 dcl total_exhaust fixed bin (35); 83 dcl total_echo_overflows fixed bin (35); 84 dcl total_xte fixed bin (35); 85 dcl total_bell_quits fixed bin (35); 86 dcl total_counters (8) fixed bin (35); 87 88 dcl dia_q_len fixed bin (35); 89 dcl dia_q_updates fixed bin (35); 90 dcl pending_status fixed bin (35); 91 dcl status_updates fixed bin (35); 92 dcl output_overlaps fixed bin (35); 93 dcl parity_errors fixed bin (35); 94 dcl ssqo fixed bin (35); 95 dcl hsqo fixed bin (35); 96 dcl alloc_failures fixed bin (35); 97 dcl input_messages fixed bin (35); 98 dcl input_length fixed bin (35); 99 dcl output_messages fixed bin (35); 100 dcl output_length fixed bin (35); 101 dcl pre_exhaust fixed bin (35); 102 dcl exhaust fixed bin (35); 103 dcl echo_overflows fixed bin (35); 104 dcl xte fixed bin (35); 105 dcl bell_quits fixed bin (35); 106 dcl counters (8) fixed bin (35); 107 108 109 110 /* BASED */ 111 112 dcl m_area area (256) based (areap); 113 dcl based_time fixed bin (71) based; 114 115 116 /* ENTRIES */ 117 118 dcl ioa_$ioa_switch entry options (variable); 119 dcl meter_format_$time entry (fixed bin (71)) returns (char (10)); 120 dcl meter_format_$picture entry (fixed bin (35), fixed bin) returns (char (15) varying); 121 dcl meter_format_$quotient entry (fixed bin (71), fixed bin (71), char (*)) returns (char (12) varying); 122 dcl metering_util_$define_regions entry options (variable); 123 dcl metering_util_$fill_buffers entry (fixed bin, fixed bin (71), char (10), (*) pointer, (*) pointer, fixed bin (35)); 124 dcl ring_zero_peek_$get_max_length entry (char (*), fixed bin (19), fixed bin (35)); 125 126 127 /* EXTERNAL STATIC */ 128 129 dcl iox_$user_output pointer external static; 130 dcl error_table_$noalloc fixed bin (35) external static; 131 132 133 /* INTERNAL STATIC */ 134 135 dcl defined bit (1) internal static init ("0"b); /* indicates whether metering_util_$define_regions has been called */ 136 dcl mu_index fixed bin internal static; 137 138 139 /* CONDITIONS AND BUILTINS */ 140 141 dcl area condition; 142 dcl (clock, divide, bin, size, null, hbound, addr, unspec) builtin; 143 144 allocate_subchan: 145 entry (a_area_ptr, a_meterp, a_code); 146 147 /* entry to allocate a fnp_channel_meters structure */ 148 149 areap = a_area_ptr; 150 a_code = 0; 151 on area 152 begin; 153 a_code = error_table_$noalloc; 154 go to exit; 155 end; 156 157 allocate fnp_chan_meter_struc in (m_area) set (a_meterp); 158 a_meterp -> fnp_chan_meter_struc.version = FNP_CHANNEL_METERS_VERSION_1; 159 160 exit: 161 return; 162 163 164 allocate_mpx: 165 entry (a_area_ptr, a_meterp, a_code); 166 167 /* entry to allocate a fnp_meters structure */ 168 169 areap = a_area_ptr; 170 a_code = 0; 171 on area 172 begin; 173 a_code = error_table_$noalloc; 174 go to exit; 175 end; 176 177 178 allocate fnp_meters in (m_area) set (a_meterp); 179 a_meterp -> fnp_meters.version = FNP_METERS_VERSION_2; 180 181 return; 182 183 184 185 186 free_subchan: 187 entry (a_meterp, a_code); 188 189 /* entry to free the fnp_channel_meters structure */ 190 191 fnp_chan_meterp = a_meterp; 192 free fnp_chan_meter_struc; 193 a_code = 0; 194 return; 195 196 197 198 free_mpx: 199 entry (a_meterp, a_code); 200 201 /* entry to free the fnp_meters structure */ 202 203 fnp_meterp = a_meterp; 204 free fnp_meters; 205 a_code = 0; 206 return; 207 208 display_mpx: 209 entry (a_chan_name, a_iocbp, a_chan_meterp, a_flags, a_code); 210 211 /* entry to display meters for a whole FNP */ 212 213 call setup_display; 214 215 fnp_meterp = channel_meters.mpx_specific_meterp; 216 fnp_meters_available = (unspec (fnp_meters.from_fnp) ^= "0"b); 217 time_up = clock () - fnp_meters.from_fnp.time_booted; 218 input_chars = channel_meters.cumulative.unconverted_input_chars; 219 output_chars = channel_meters.cumulative.converted_output_chars; 220 221 if ^error 222 then do; 223 if fnp_meters_available 224 then do; 225 if ^brief 226 then call ioa_$ioa_switch (iocbp, "FNP has been up for^35t^a", meter_format_$time (time_up)); 227 228 call ioa_$ioa_switch (iocbp, "Number of channels configured^35t^6d", fnp_meters.n_channels); 229 call ioa_$ioa_switch (iocbp, "Average number dialed up^38t^a", 230 meter_format_$quotient ((fnp_meters.from_fnp.channels_dialed_cum), 231 (fnp_meters.from_fnp.channels_dialed_updates), "^5.1f")); 232 233 max_possible_idle_count = fnp_meters.from_fnp.max_idle_count * fnp_meters.from_fnp.idle_count_updates; 234 235 call ioa_$ioa_switch (iocbp, "FNP idle^39t^a%", 236 meter_format_$quotient (100 * fnp_meters.from_fnp.total_idle_count, (max_possible_idle_count), 237 "^4.1f")); 238 call ioa_$ioa_switch (iocbp, "Idle at peak load^39t^a%", 239 meter_format_$quotient (100 * fnp_meters.from_fnp.min_idle_count, (fnp_meters.from_fnp.max_idle_count), 240 "^4.1f")); 241 end; 242 243 call ioa_$ioa_switch (iocbp, "^/^37tInput^52tOutput"); 244 call ioa_$ioa_switch (iocbp, "Characters transmitted^30t^a^46t^a", meter_format_$picture (input_chars, 11), 245 meter_format_$picture (output_chars, 11)); 246 call ioa_$ioa_switch (iocbp, "Characters per second^30t^a^46t^a^/", 247 meter_format_$picture (divide (1000000 * input_chars, time_up, 35, 0), 11), 248 meter_format_$picture (divide (1000000 * output_chars, time_up, 35, 0), 11)); 249 end; 250 251 if ^brief & fnp_meters_available 252 then do; 253 call ioa_$ioa_switch (iocbp, "Abnormal DIA status ^35t^a", 254 meter_format_$picture ((fnp_meters.from_fnp.abnormal_dia_status), 6)); 255 call ioa_$ioa_switch (iocbp, "Memory EDAC errors^35t^a", 256 meter_format_$picture (fnp_meters.from_fnp.memory_parity_errors, 6)); 257 end; 258 259 if ^error 260 then call ioa_$ioa_switch (iocbp, "^/Memory size^38t^3dK", divide (fnp_meters.fnp_mem_size, 1024, 17, 0)); 261 262 if fnp_meters_available 263 then do; 264 if ^error 265 then do; 266 pool = fnp_meters.from_fnp.buffer_pool; 267 call ioa_$ioa_switch (iocbp, "Total available buffer pool^35t^a words", 268 meter_format_$picture (pool, 6)); 269 270 avg_space_available = 271 divide (fnp_meters.from_fnp.space_available_cum, fnp_meters.from_fnp.space_available_updates, 35, 272 0); 273 call ioa_$ioa_switch (iocbp, "Avg. amount of free space^35t^a words", 274 meter_format_$picture (avg_space_available, 6)); 275 call ioa_$ioa_switch (iocbp, "Average % of buffer pool available^38t^a", 276 meter_format_$quotient (100 * avg_space_available, (pool), "^5.1f")); 277 call ioa_$ioa_switch (iocbp, "Number of buffer allocations^32t^a", 278 meter_format_$picture (fnp_meters.from_fnp.buffer_allocations, 9)); 279 call ioa_$ioa_switch (iocbp, "Number of buffers preallocated^32t^a (^a% of allocations)", 280 meter_format_$picture (fnp_meters.from_fnp.buffers_preallocated, 9), 281 meter_format_$quotient (100 * fnp_meters.from_fnp.buffers_preallocated, 282 (fnp_meters.from_fnp.buffer_allocations), "^5.1f")); 283 call ioa_$ioa_switch (iocbp, "Used preallocated buffer^32t^a", 284 meter_format_$picture (fnp_meters.from_fnp.used_preallocated_buffer, 9)); 285 end; 286 287 call ioa_$ioa_switch (iocbp, "No preallocated buffer available^35t^a", 288 meter_format_$picture (fnp_meters.from_fnp.no_preallocated_available, 6)); 289 call ioa_$ioa_switch (iocbp, "Buffer allocation failures^35t^a", 290 meter_format_$picture ((fnp_meters.from_fnp.space_alloc_failures), 6)); 291 end; 292 293 if ^brief 294 then do; 295 call ioa_$ioa_switch (iocbp, "Output restricted by space^35t^a", 296 meter_format_$picture ((fnp_meters.fnp_space_restricted_output), 6)); 297 298 if ^error 299 then do; 300 if ^defined /* if we've never gotten this info before */ 301 then do; 302 call ring_zero_peek_$get_max_length ("iom_data", iom_data_len, code); 303 call metering_util_$define_regions (mu_index, code, "tc_data", "processor_time", 2, "iom_data", 304 0, iom_data_len); 305 if code = 0 306 then defined = "1"b; 307 end; 308 309 call metering_util_$fill_buffers (mu_index, meter_time, char_time, cur_ptrs, prev_ptrs, code); 310 if code = 0 311 then cpu_time = cur_ptrs (1) -> based_time; 312 else cpu_time = 0; /* an unlikely screwup -- metering_util_ would call sub_err_ */ 313 314 /* now get the interupt traffic information for the IOM channel the FNP is on */ 315 316 n_interrupts, interrupt_time = 0; 317 iom_data_ptr = cur_ptrs (2); 318 iomx = iom_data.per_iom (fnp_meters.iom_number).chantab (fnp_meters.iom_chan_no); 319 if iomx ^= 0 /* it had better not be */ 320 then do; 321 n_interrupts = iom_data.per_device (iomx).interrupts; 322 interrupt_time = iom_data.per_device (iomx).interrupt_time; 323 end; 324 325 call ioa_$ioa_switch (iocbp, "^/Number of interrupts from this FNP^38t^a", 326 meter_format_$picture (n_interrupts, 11)); 327 call ioa_$ioa_switch (iocbp, "Avg. time/interrupt (ms)^38t^a", 328 meter_format_$quotient (interrupt_time, 1000 * n_interrupts, "^6.1f")); 329 call ioa_$ioa_switch (iocbp, "% of total CPU time^38t^a", 330 meter_format_$quotient (100 * interrupt_time, cpu_time, "^6.1f")); 331 332 call ioa_$ioa_switch (iocbp, "^/Mailbox transactions:^/^3xInput data^36t^a", 333 meter_format_$picture (fnp_meters.input_data_transactions, 10)); 334 335 call ioa_$ioa_switch (iocbp, "^3xOutput data^36t^a", 336 meter_format_$picture (fnp_meters.output_data_transactions, 10)); 337 338 call ioa_$ioa_switch (iocbp, "^3xInput control^36t^a", 339 meter_format_$picture (fnp_meters.input_control_transactions, 10)); 340 341 call ioa_$ioa_switch (iocbp, "^3xOutput control^36t^a", 342 meter_format_$picture (fnp_meters.output_control_transactions, 10)); 343 344 call ioa_$ioa_switch (iocbp, "^60(-^)^/^3xTotal^36t^a", 345 meter_format_$picture (fnp_meters.input_data_transactions + fnp_meters.output_data_transactions 346 + fnp_meters.input_control_transactions + fnp_meters.output_control_transactions, 10)); 347 348 if fnp_meters_available 349 then call ioa_$ioa_switch (iocbp, "^/Average inbound mailboxes in use^39t^a", 350 meter_format_$quotient ((fnp_meters.from_fnp.input_mbx_in_use_cum), 351 (fnp_meters.from_fnp.input_mbx_updates), "^4.1f")); 352 353 call ioa_$ioa_switch (iocbp, "Average outbound mailboxes in use^39t^a", 354 meter_format_$quotient ((fnp_meters.output_mbx_in_use_cum), (fnp_meters.output_mbx_updates), 355 "^4.1f")); 356 357 call ioa_$ioa_switch (iocbp, "Maximum outbound mailboxes in use^39t^2d", 358 fnp_meters.max_output_mbx_in_use); 359 end; 360 361 call ioa_$ioa_switch (iocbp, "No outbound mailbox available^36t^a", 362 meter_format_$picture (fnp_meters.output_mbx_unavailable, 5)); 363 364 call ioa_$ioa_switch (iocbp, "Input rejects^36t^a", meter_format_$picture ((fnp_meters.input_rejects), 5)); 365 call ioa_$ioa_switch (iocbp, "% of input transactions rejected^38t^a", 366 meter_format_$quotient (100 * fnp_meters.input_rejects, (fnp_meters.input_data_transactions), "^5.2f") 367 ); 368 end; 369 return; 370 371 display_subchan: 372 entry (a_chan_name, a_iocbp, a_chan_meterp, a_flags, a_code); 373 374 /* entry to display meters kept by an FNP for one of its subchannels */ 375 376 call setup_display; 377 if flags & DISPLAY_MPX_SINCE_BOOT 378 then since_boot = "1"b; 379 else since_boot = "0"b; 380 381 call set_subchan_values; 382 383 if synchronous 384 then do; 385 if ^error 386 then do; 387 call ioa_$ioa_switch (iocbp, "^/^34tinput^45toutput"); 388 call ioa_$ioa_switch (iocbp, "Messages transmitted^28t^a^40t^a", 389 meter_format_$picture (input_messages, 11), meter_format_$picture (output_messages, 11)); 390 call ioa_$ioa_switch (iocbp, "Minimum message length^34t^a^46t^a", 391 meter_format_$picture ((current_meterp -> fnp_sync_meters.input.min_length), 5), 392 meter_format_$picture ((current_meterp -> fnp_sync_meters.output.min_length), 5)); 393 call ioa_$ioa_switch (iocbp, "Maximum message length^32t^a^44t^a", 394 meter_format_$picture ((current_meterp -> fnp_sync_meters.input.max_length), 7), 395 meter_format_$picture ((current_meterp -> fnp_sync_meters.output.max_length), 7)); 396 call ioa_$ioa_switch (iocbp, "Average message length^32t^a^44t^a", 397 meter_format_$quotient ((input_length), (input_messages), "^9.2f"), 398 meter_format_$quotient ((output_length), (output_messages), "^9.2f")); 399 end; 400 401 if ^multiplexed 402 then do; 403 call ioa_$ioa_switch (iocbp, "Invalid input messages^28t^a (^a% of messages)", 404 meter_format_$picture (counters (1), 11), 405 meter_format_$quotient (counters (1) * 100, (input_messages), "^.2f")); 406 call ioa_$ioa_switch (iocbp, "Rejected output messages^28t^a (^a% of messages)", 407 meter_format_$picture (counters (2), 11), 408 meter_format_$quotient (counters (2) * 100, (output_messages), "^.2f")); 409 call ioa_$ioa_switch (iocbp, "Timeouts^28t^a", meter_format_$picture (counters (3), 11)); 410 411 if ^brief 412 then do; 413 if channel_meters.line_type = LINE_G115 414 then do; 415 call ioa_$ioa_switch (iocbp, "Input busy^30t^a", meter_format_$picture (counters (4), 9)); 416 call ioa_$ioa_switch (iocbp, "Output retries exceeded limit^32t^a", 417 meter_format_$picture (counters (5), 7)); 418 call ioa_$ioa_switch (iocbp, "No SOH or ETX in message^32t^a", 419 meter_format_$picture (counters (6), 7)); 420 call ioa_$ioa_switch (iocbp, "Output message too long^32t^a", 421 meter_format_$picture (counters (7), 7)); 422 call ioa_$ioa_switch (iocbp, "Failure to build message^32t^a", 423 meter_format_$picture (counters (8), 7)); 424 end; 425 426 else if channel_meters.line_type = LINE_BSC 427 then do; 428 if ^error 429 then do; 430 call ioa_$ioa_switch (iocbp, "WACKs sent^30t^a", 431 meter_format_$picture (counters (4), 9)); 432 call ioa_$ioa_switch (iocbp, "WACKs received^30t^a", 433 meter_format_$picture (counters (5), 9)); 434 end; 435 436 call ioa_$ioa_switch (iocbp, "Output retries exceeded limit^32t^a", 437 meter_format_$picture (counters (6), 7)); 438 call ioa_$ioa_switch (iocbp, "Unrecognized or missing response^30t^a", 439 meter_format_$picture (counters (7), 9)); 440 call ioa_$ioa_switch (iocbp, "Line bid failed^32t^a", 441 meter_format_$picture (counters (8), 7)); 442 end; 443 end; 444 end; 445 end; 446 447 if channel_meters.line_type = LINE_X25LAP 448 then do; 449 call ioa_$ioa_switch (iocbp, "^/Frames dumped:^32t^a", meter_format_$picture (counters (3), 7)); 450 call ioa_$ioa_switch (iocbp, "Frames retransmitted:^32t^a", meter_format_$picture (counters (1), 7)); 451 call ioa_$ioa_switch (iocbp, "Receiver reset request:^32t^a", meter_format_$picture (counters (4), 7)); 452 call ioa_$ioa_switch (iocbp, "Transmitter reset:^32t^a", meter_format_$picture (counters (2), 7)); 453 call ioa_$ioa_switch (iocbp, "Frame check errors:^32t^a", meter_format_$picture (counters (5), 7)); 454 call ioa_$ioa_switch (iocbp, "Frame aborts received:^32t^a", meter_format_$picture (counters (6), 7)); 455 end; 456 457 if ^error & ^brief 458 then do; 459 call ioa_$ioa_switch (iocbp, "^/Output overlaps in FNP^33t^a", meter_format_$picture (output_overlaps, 7)); 460 call ioa_$ioa_switch (iocbp, "Average length of DIA request queue^36t^a", 461 meter_format_$quotient ((dia_q_len), (dia_q_updates), "^4.1f")); 462 end; 463 464 if brief 465 then return; /* everything else is ^brief */ 466 else call ioa_$ioa_switch (iocbp, ""); 467 468 call ioa_$ioa_switch (iocbp, "Exhaust status^31t^a", meter_format_$picture (exhaust, 9)); 469 call ioa_$ioa_switch (iocbp, "Software transfer timing error^31t^a", meter_format_$picture (xte, 9)); 470 471 if ^synchronous 472 then do; 473 if ^error 474 then call ioa_$ioa_switch (iocbp, "Pre-exhaust status^31t^a", meter_format_$picture (pre_exhaust, 9)); 475 476 call ioa_$ioa_switch (iocbp, "Bell/quits^31t^a", meter_format_$picture (bell_quits, 9)); 477 call ioa_$ioa_switch (iocbp, "Echo buffer overflows^31t^a", meter_format_$picture (echo_overflows, 9)); 478 end; 479 480 call ioa_$ioa_switch (iocbp, "Parity errors^31t^a^/", meter_format_$picture (parity_errors, 9)); 481 482 if ^error 483 then call ioa_$ioa_switch (iocbp, "Avg. number of pending status events^38t^a", 484 meter_format_$quotient ((pending_status), (status_updates), "^4.1f")); 485 call ioa_$ioa_switch (iocbp, "Software status queue overflows^34t^a", meter_format_$picture (ssqo, 6)); 486 call ioa_$ioa_switch (iocbp, "Hardware status queue overflows^34t^a", meter_format_$picture (hsqo, 6)); 487 call ioa_$ioa_switch (iocbp, "Input buffer allocation failures^34t^a", 488 meter_format_$picture (alloc_failures, 6)); 489 490 return; 491 492 subchan_summary: 493 entry (a_chan_meterp, a_since_boot, a_summary_ptr, a_code); 494 495 /* entry to fill in values used by channel_comm_meters -summary */ 496 497 a_code = 0; 498 chan_meterp = a_chan_meterp; 499 summary_ptr = a_summary_ptr; 500 since_boot = a_since_boot; 501 call set_subchan_values; 502 channel_summary.error_count = 0; 503 504 if ^synchronous 505 then do; 506 channel_summary.pre_exhaust = (pre_exhaust ^= 0); 507 channel_summary.bell_quit = (bell_quits ^= 0); 508 channel_summary.echo_overflow = (echo_overflows ^= 0); 509 channel_summary.error_count = exhaust + xte + bell_quits + echo_overflows; 510 end; 511 512 else do; 513 channel_summary.invalid_input = (counters (1) ^= 0); 514 channel_summary.output_re_xmit = (counters (2) ^= 0); 515 channel_summary.timeout = (counters (3) ^= 0); 516 if ^multiplexed 517 then channel_summary.error_count = sum (counters); 518 end; 519 520 channel_summary.exhaust = (exhaust ^= 0); 521 channel_summary.xte = (xte ^= 0); 522 channel_summary.parity = (parity_errors ^= 0); 523 channel_summary.ssqo = (ssqo ^= 0); 524 channel_summary.hsqo = (hsqo ^= 0); 525 channel_summary.alloc_failure = (alloc_failures ^= 0); 526 channel_summary.synchronous = synchronous; 527 channel_summary.error_count = channel_summary.error_count + parity_errors + ssqo + hsqo + alloc_failures; 528 529 return; 530 531 set_subchan_values: 532 procedure; 533 534 /* internal procedure to set values for use by display_subchan and subchan_summary */ 535 536 dcl i fixed bin; 537 538 multiplexed = (channel_meters.multiplexer_type ^= 0); 539 fnp_chan_meterp = channel_meters.parent_meterp; 540 synchronous = fnp_chan_meter_struc.synchronous; 541 current_meterp = addr (fnp_chan_meter_struc.current_meters); 542 543 /* get total values from current meters */ 544 545 total_dia_q_len = current_meterp -> fnp_channel_meters.dia_request_q_len; 546 total_dia_q_updates = current_meterp -> fnp_channel_meters.dia_rql_updates; 547 total_pending_status = current_meterp -> fnp_channel_meters.pending_status; 548 total_status_updates = current_meterp -> fnp_channel_meters.pending_status_updates; 549 total_output_overlaps = current_meterp -> fnp_channel_meters.output_overlaps; 550 total_parity_errors = current_meterp -> fnp_channel_meters.parity_errors; 551 total_ssqo = current_meterp -> fnp_channel_meters.software_status_overflows; 552 total_hsqo = current_meterp -> fnp_channel_meters.hardware_status_overflows; 553 total_alloc_failures = current_meterp -> fnp_channel_meters.input_alloc_failures; 554 total_exhaust = current_meterp -> fnp_channel_meters.exhaust; 555 total_xte = current_meterp -> fnp_channel_meters.software_xte; 556 557 if synchronous 558 then do; 559 total_input_messages = current_meterp -> fnp_sync_meters.input.message_count; 560 total_input_length = current_meterp -> fnp_sync_meters.input.cum_length; 561 total_output_messages = current_meterp -> fnp_sync_meters.output.message_count; 562 total_output_length = current_meterp -> fnp_sync_meters.output.cum_length; 563 do i = 1 to hbound (current_meterp -> fnp_sync_meters.counters, 1); 564 total_counters (i) = current_meterp -> fnp_sync_meters.counters (i); 565 end; 566 end; 567 568 else do; 569 total_pre_exhaust = current_meterp -> fnp_async_meters.pre_exhaust; 570 total_echo_overflows = current_meterp -> fnp_async_meters.echo_buf_overflow; 571 total_bell_quits = current_meterp -> fnp_async_meters.bell_quits; 572 end; 573 574 if since_boot 575 then do; /* totals are values to use */ 576 dia_q_len = total_dia_q_len; 577 dia_q_updates = total_dia_q_updates; 578 pending_status = total_pending_status; 579 status_updates = total_status_updates; 580 output_overlaps = total_output_overlaps; 581 parity_errors = total_parity_errors; 582 ssqo = total_ssqo; 583 hsqo = total_hsqo; 584 alloc_failures = total_alloc_failures; 585 exhaust = total_exhaust; 586 xte = total_xte; 587 588 if synchronous 589 then do; 590 input_messages = total_input_messages; 591 input_length = total_input_length; 592 output_messages = total_output_messages; 593 output_length = total_output_length; 594 do i = 1 to hbound (current_meterp -> fnp_sync_meters.counters, 1); 595 counters (i) = total_counters (i); 596 end; 597 end; 598 599 else do; 600 pre_exhaust = total_pre_exhaust; 601 echo_overflows = total_echo_overflows; 602 bell_quits = total_bell_quits; 603 end; 604 end; 605 606 else do; /* have to subtract saved values */ 607 saved_meterp = addr (fnp_chan_meter_struc.saved_meters); 608 dia_q_len = total_dia_q_len - saved_meterp -> fnp_channel_meters.dia_request_q_len; 609 dia_q_updates = total_dia_q_updates - saved_meterp -> fnp_channel_meters.dia_rql_updates; 610 pending_status = total_pending_status - saved_meterp -> fnp_channel_meters.pending_status; 611 status_updates = total_status_updates - saved_meterp -> fnp_channel_meters.pending_status_updates; 612 output_overlaps = total_output_overlaps - saved_meterp -> fnp_channel_meters.output_overlaps; 613 parity_errors = total_parity_errors - saved_meterp -> fnp_channel_meters.parity_errors; 614 ssqo = total_ssqo - saved_meterp -> fnp_channel_meters.software_status_overflows; 615 hsqo = total_hsqo - saved_meterp -> fnp_channel_meters.hardware_status_overflows; 616 alloc_failures = total_alloc_failures - saved_meterp -> fnp_channel_meters.input_alloc_failures; 617 exhaust = total_exhaust - saved_meterp -> fnp_channel_meters.exhaust; 618 xte = total_xte - saved_meterp -> fnp_channel_meters.software_xte; 619 620 if synchronous 621 then do; 622 input_messages = total_input_messages - saved_meterp -> fnp_sync_meters.input.message_count; 623 input_length = total_input_length - saved_meterp -> fnp_sync_meters.input.cum_length; 624 output_messages = total_output_messages - saved_meterp -> fnp_sync_meters.output.message_count; 625 output_length = total_output_length - saved_meterp -> fnp_sync_meters.output.cum_length; 626 do i = 1 to hbound (saved_meterp -> fnp_sync_meters.counters, 1); 627 counters (i) = total_counters (i) - saved_meterp -> fnp_sync_meters.counters (i); 628 end; 629 end; 630 631 else do; 632 pre_exhaust = total_pre_exhaust - saved_meterp -> fnp_async_meters.pre_exhaust; 633 echo_overflows = total_echo_overflows - saved_meterp -> fnp_async_meters.echo_buf_overflow; 634 bell_quits = total_bell_quits - saved_meterp -> fnp_async_meters.bell_quits; 635 end; 636 end; 637 638 return; 639 end set_subchan_values; 640 641 setup_display: 642 procedure; 643 644 /* internal procedure to set up local variables for display entries */ 645 646 iocbp = a_iocbp; 647 if iocbp = null () 648 then iocbp = iox_$user_output; 649 650 chan_meterp = a_chan_meterp; 651 flags = a_flags; 652 a_code = 0; 653 654 if flags & DISPLAY_MPX_SUMMARY /* we don't handle this */ 655 then return; 656 657 if flags & DISPLAY_MPX_BRIEF 658 then brief = "1"b; 659 else brief = "0"b; 660 661 if flags & DISPLAY_MPX_ERROR 662 then error = "1"b; 663 else error = "0"b; 664 return; 665 666 end setup_display; 667 1 1 1 2 /* BEGIN INCLUDE FILE...fnp_meters.incl.pl1 */ 1 3 1 4 /* This include file defines structures used to return meters when 1 5** a get_meters order is issued for a whole FNP. 1 6**/ 1 7 1 8 /* Written December 1980 by Robert Coren */ 1 9 /* Modified February 1981 by Robert Coren to split off fnp_channel_meters */ 1 10 1 11 dcl fnp_meterp pointer; 1 12 1 13 dcl 1 fnp_global_meters based aligned, /* FNP-wide meters */ 1 14 2 channels_dialed_cum fixed bin (35), 1 15 2 channels_dialed_updates fixed bin (35), /* updates to above */ 1 16 2 space_available_cum fixed bin (35), 1 17 2 space_available_updates fixed bin (35), /* updates to above */ 1 18 2 input_mbx_in_use_cum fixed bin (35), 1 19 2 input_mbx_updates fixed bin (35), /* updates to above */ 1 20 2 cur_channels_dialed fixed bin (18) unsigned unaligned, 1 21 2 space_alloc_failures fixed bin (18) unsigned unaligned, 1 22 2 abnormal_dia_status fixed bin (18) unsigned unaligned, 1 23 2 buffer_pool fixed bin (18) unsigned unaligned, 1 24 2 buffer_allocations fixed bin (35), 1 25 2 buffers_preallocated fixed bin (35), 1 26 2 used_preallocated_buffer fixed bin (35), 1 27 2 no_preallocated_available fixed bin (35), 1 28 2 time_booted fixed bin (71), 1 29 2 total_idle_count fixed bin (35), 1 30 2 idle_count_updates fixed bin (35), 1 31 2 max_idle_count fixed bin (35), 1 32 2 min_idle_count fixed bin (35), 1 33 2 memory_parity_errors fixed bin (35); 1 34 1 35 dcl 1 fnp_meters based (fnp_meterp) aligned, /* structure for returning FNP-wide meters kept by FNP and ring 0 */ 1 36 2 version fixed bin, 1 37 2 pad fixed bin, 1 38 2 from_fnp like fnp_global_meters, 1 39 2 n_channels fixed bin, 1 40 2 output_mbx_in_use_cum fixed bin (35), 1 41 2 output_mbx_updates fixed bin (35), 1 42 2 output_mbx_unavailable fixed bin (35), 1 43 2 max_output_mbx_in_use fixed bin, 1 44 2 queue_entries_made fixed bin (35), 1 45 2 input_rejects fixed bin, 1 46 2 processed_from_q fixed bin (35), 1 47 2 fnp_channel_locked fixed bin (35), 1 48 2 input_data_transactions fixed bin (35), 1 49 2 output_data_transactions fixed bin (35), 1 50 2 input_control_transactions fixed bin (35), 1 51 2 output_control_transactions fixed bin (35), 1 52 2 fnp_space_restricted_output fixed bin, 1 53 2 fnp_mem_size fixed bin, 1 54 2 iom_number fixed bin, 1 55 2 iom_chan_no fixed bin; 1 56 1 57 dcl FNP_METERS_VERSION_2 fixed bin int static options (constant) init (2); 1 58 1 59 /* END INCLUDE FILE...fnp_meters.incl.pl1 */ 668 669 2 1 /* BEGIN INCLUDE FILE...fnp_channel_meters.incl.pl1 */ 2 2 2 3 /* This include file defines meters returned for subchannels of an FNP. */ 2 4 2 5 /* Created February 1981 by Robert Coren from fnp_meters.incl.pl1. */ 2 6 2 7 dcl fnp_chan_meterp pointer; 2 8 dcl FNP_CHANNEL_METERS_VERSION_1 fixed bin int static options (constant) init (1); 2 9 2 10 dcl 1 fnp_chan_meter_struc based (fnp_chan_meterp) aligned, 2 11 2 version fixed bin, 2 12 2 flags, 2 13 3 synchronous bit (1) unaligned, 2 14 3 reserved bit (35) unaligned, 2 15 2 current_meters like fnp_channel_meters, 2 16 2 saved_meters like fnp_channel_meters; 2 17 2 18 dcl 1 fnp_channel_meters based aligned, 2 19 2 header, 2 20 3 dia_request_q_len fixed bin (35), /* cumulative */ 2 21 3 dia_rql_updates fixed bin (35), /* updates to above */ 2 22 3 pending_status fixed bin (35), /* cumulative */ 2 23 3 pending_status_updates fixed bin (35), /* updates to above */ 2 24 3 output_overlaps fixed bin (18) unsigned unaligned, /* output chained to already-existing chain */ 2 25 3 parity_errors fixed bin (18) unsigned unaligned, /* parity on the channel */ 2 26 3 software_status_overflows fixed bin (18) unsigned unaligned, 2 27 3 hardware_status_overflows fixed bin (18) unsigned unaligned, 2 28 3 input_alloc_failures fixed bin (18) unsigned unaligned, 2 29 3 dia_current_q_len fixed bin (18) unsigned unaligned, /* current length of dia request queue */ 2 30 3 exhaust fixed bin (35), 2 31 3 software_xte fixed bin (18) unsigned unaligned, 2 32 3 pad bit (18) unaligned, 2 33 2 sync_or_async (17) fixed bin; /* placeholder for meters for sync or async channels */ 2 34 2 35 dcl 1 fnp_sync_meters based aligned, 2 36 2 header like fnp_channel_meters.header, 2 37 2 input, 2 38 3 message_count fixed bin (35), /* total number of messages */ 2 39 3 cum_length fixed bin (35), /* total cumulative length in characters */ 2 40 3 min_length fixed bin (18) unsigned unaligned, /* length of shortest message */ 2 41 3 max_length fixed bin (18) unsigned unaligned, /* length of longest message */ 2 42 2 output like fnp_sync_meters.input, 2 43 2 counters (8) fixed bin (35), 2 44 2 pad (3) fixed bin; 2 45 2 46 dcl 1 fnp_async_meters based aligned, 2 47 2 header like fnp_channel_meters.header, 2 48 2 pre_exhaust fixed bin (35), 2 49 2 echo_buf_overflow fixed bin (35), /* number of times echo buffer has overflowed */ 2 50 2 bell_quits fixed bin (18) unsigned unaligned, 2 51 2 padb bit (18) unaligned, 2 52 2 pad (14) fixed bin; 2 53 2 54 /* END INCLUDE FILE...fnp_channel_meters.incl.pl1 */ 670 671 3 1 /* BEGIN INCLUDE FILE...channel_meters.incl.pl1 */ 3 2 3 3 /* Include file to define meters reported by comm_meters_ for all channels */ 3 4 3 5 /* Created February 1981 by Robert Coren */ 3 6 3 7 dcl chan_meterp pointer; 3 8 3 9 dcl CHANNEL_METERS_VERSION_1 fixed bin int static options (constant) init (1); 3 10 3 11 dcl 1 channel_meters aligned based (chan_meterp), 3 12 2 version fixed bin, 3 13 2 multiplexer_type fixed bin, /* of this channel */ 3 14 2 parent_type fixed bin, /* multiplexer type of parent (or -1 if this is level 1 */ 3 15 2 line_type fixed bin, /* line type of this channel */ 3 16 2 flags, 3 17 3 reserved bit (36) unaligned, 3 18 2 pad1 fixed bin, 3 19 2 channel_name char (32), 3 20 2 mpx_specific_meterp pointer, /* pointer to meters for this channel's multiplexer type */ 3 21 2 parent_meterp pointer, /* pointer to meters kept for channel by its parent */ 3 22 2 next_channelp pointer, /* pointer to structure for next channel in list */ 3 23 2 cumulative, /* meters accumulated since last load of parent */ 3 24 3 unconverted_input_chars fixed bin (35), /* characters input (before conversion) */ 3 25 3 converted_output_chars fixed bin (35), /* characters output (after conversion) */ 3 26 3 read_calls fixed bin, /* calls to channel_manager$read */ 3 27 3 write_calls fixed bin, /* calls to channel_manager$write */ 3 28 3 control_calls fixed bin, /* calls to channel_manager$control */ 3 29 3 software_interrupts fixed bin, /* calls to channel$manager$interrupt on behalf of this channel */ 3 30 3 read_call_time fixed bin (71), /* time accumulated in channel_manager$read */ 3 31 3 write_call_time fixed bin (71), /* time accumulated in channel_manager$write */ 3 32 3 control_call_time fixed bin (71), /* time accumulated in channel_manager$control */ 3 33 3 interrupt_time fixed bin (71), /* time spent handling software interrupts */ 3 34 3 pad (4) fixed bin, 3 35 2 saved like channel_meters.cumulative; /* meters saved when channel last dialed up */ 3 36 3 37 /* END INCLUDE FILE...channel_meters.incl.pl1 */ 672 673 4 1 /* BEGIN INCLUDE FILE ... comm_meters_disp_flags.incl.pl1 */ 4 2 4 3 4 4 /* This include file defines named values for the bits in the flags argument passed 4 5* to the various MPX_meters_$display entries. 4 6**/ 4 7 4 8 /* Created April 1981 by Robert Coren */ 4 9 4 10 dcl DISPLAY_MPX_BRIEF bit (36) internal static options (constant) init ("1"b); 4 11 dcl DISPLAY_MPX_ERROR bit (36) internal static options (constant) init ("01"b); 4 12 dcl DISPLAY_MPX_SUMMARY bit (36) internal static options (constant) init ("001"b); 4 13 dcl DISPLAY_MPX_SINCE_BOOT bit (36) internal static options (constant) init ("0001"b); 4 14 4 15 /* END INCLUDE FILE ... comm_meters_disp_flags.incl.pl1 */ 674 675 5 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 5 2 5 3 /* Written November 10 1975 by Paul Green */ 5 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 5 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 5 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 5 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 5 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 5 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 5 10 5 11 5 12 /****^ HISTORY COMMENTS: 5 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 5 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 15* Add a DSA line type. 5 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 5 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 18* Add HASP_OPR to identify HASP workstation consoles with login service. 5 19* END HISTORY COMMENTS */ 5 20 5 21 5 22 declare (LINE_MC initial (-2), 5 23 LINE_TELNET initial (-1), 5 24 LINE_UNKNOWN initial (0), 5 25 LINE_ASCII initial (1), 5 26 LINE_1050 initial (2), 5 27 LINE_2741 initial (3), 5 28 LINE_ARDS initial (4), 5 29 LINE_SYNCH initial (5), 5 30 LINE_G115 initial (6), 5 31 LINE_BSC initial (7), 5 32 LINE_ETX initial (8), 5 33 LINE_VIP initial (9), 5 34 LINE_ASYNC1 initial (10), 5 35 LINE_ASYNC2 initial (11), 5 36 LINE_ASYNC3 initial (12), 5 37 LINE_SYNC1 initial (13), 5 38 LINE_SYNC2 initial (14), 5 39 LINE_SYNC3 initial (15), 5 40 LINE_POLLED_VIP initial (16), 5 41 LINE_X25LAP initial (17), 5 42 LINE_HDLC initial (18), 5 43 LINE_COLTS initial (19), 5 44 LINE_DSA initial (20), 5 45 LINE_HASP_OPR initial (21) 5 46 ) fixed bin internal static options (constant); 5 47 5 48 dcl max_line_type fixed bin int static options (constant) init (21); 5 49 5 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 5 51 5 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 5 53 5 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 5 55 "MC", /* -2 */ 5 56 "TELNET", /* -1 */ 5 57 "none", /* 0 */ 5 58 "ASCII", /* 1 */ 5 59 "1050", /* 2 */ 5 60 "2741", /* 3 */ 5 61 "ARDS", /* 4 */ 5 62 "Sync", /* 5 */ 5 63 "G115", /* 6 */ 5 64 "BSC", /* 7 */ 5 65 "202ETX", /* 8 */ 5 66 "VIP", /* 9 */ 5 67 "ASYNC1", /* 10 */ 5 68 "ASYNC2", /* 11 */ 5 69 "ASYNC3", /* 12 */ 5 70 "SYNC1", /* 13 */ 5 71 "SYNC2", /* 14 */ 5 72 "SYNC3", /* 15 */ 5 73 "POLLED_VIP", /* 16 */ 5 74 "X25LAP", /* 17 */ 5 75 "HDLC", /* 18 */ 5 76 "COLTS", /* 19 */ 5 77 "DSA", /* 20 */ 5 78 "HASP_OPR"); /* 21 */ 5 79 5 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 676 677 6 1 /* Begin include file ...... iom_data.incl.pl1 6 2* First written in August 1971 by R F Mabee. 6 3* Modified for paged IOM November 1980 by C. Hornig. 6 4* More IIOC changes by C. Hornig, June 1982. 6 5* Modified for channel reconfiguration by Chris Jones, January 1984. 6 6* Modified to remove support of non-paged IOMs by Chris Jones, August 1984. 6 7* Modified to add IMW read protocol flags by M. Pandolf, January 1985. 6 8**/ 6 9 6 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 11 dcl iom_data$ external; 6 12 dcl iom_mailbox$ external; 6 13 6 14 dcl n_devices fixed bin; 6 15 dcl iom_data_ptr ptr; 6 16 6 17 dcl 1 iom_data based (iom_data_ptr) aligned, 6 18 2 n_devices fixed bin, /* (0) Maximum number of channels. */ 6 19 2 stop_lpw bit (36), /* (1) LPW pointing to stop_dcw. */ 6 20 2 stop_dcw bit (36), /* (2) DCW to stop channel, probably storing bad status. */ 6 21 2 stop_scw bit (36), /* (3) SCW for same */ 6 22 2 imw_lock fixed bin (35), /* (4) Essentially a lock for iom switch checking: */ 6 23 /* 1 : OK to poll IMW */ 6 24 /* 0 : lock in transition */ 6 25 /* -1 : DONT poll IMW */ 6 26 2 n_intr_procs fixed bin (35), /* (5) Number of processors in interrupt handler */ 6 27 2 pad1 (2) bit (36), 6 28 2 stop_status bit (72), /* (10) All unused channels store status here. */ 6 29 2 rfh1 (6) bit (36), /* can't use this */ 6 30 2 stop_ext_status bit (8 * 36), /* (20) Unused channels' extended status */ 6 31 2 pad3 (5) bit (36), 6 32 2 invalid_interrupts fixed bin (35), /* (35) interrupts on unused channels */ 6 33 2 null_interrupts fixed bin (35), /* (36) spurious interrupts */ 6 34 2 multiple_interrupts 6 35 fixed bin (35), /* (37) several interrupts at a time */ 6 36 2 per_iom (4) like per_iom, /* (40) for each IOM */ 6 37 2 per_device (n_devices refer (iom_data.n_devices)) like per_device; 6 38 /* (240) Data for assigned channels. */ 6 39 6 40 dcl 1 per_iom aligned based, 6 41 2 lock bit (36), /* (40) connect mailbox lock */ 6 42 2 flags, /* (41) */ 6 43 3 configured bit (1) unal, /* is configured */ 6 44 3 on_line bit (1) unal, /* is ON */ 6 45 3 pad1 bit (34) unal, 6 46 2 model char (4), /* (42) what kind of IOM */ 6 47 2 port fixed bin (3), /* (43) SC port */ 6 48 2 connect_time fixed bin (71), /* (44) time of last connect */ 6 49 2 connect_lpw bit (36), /* (46) LPW for connect channel */ 6 50 2 cow bit (36), /* (47) Connect Operand Word */ 6 51 2 special_chx fixed bin (35), /* (50) chx of special status channel */ 6 52 2 fault_chx fixed bin (35), /* (51) chx of system fault channel */ 6 53 2 pad2 (4) bit (36), 6 54 2 abandoned_connects fixed bin (35), /* (56) times we couldn't get IOM to listen at all */ 6 55 2 reconnects fixed bin (35), /* (57) times a connect was lost */ 6 56 2 chantab (0:63) uns fixed bin (9) unal; 6 57 /* (60) packed devtab indices */ 6 58 6 59 dcl 1 per_device aligned based, 6 60 2 status bit (72), /* (0) Status for channel is stored here. */ 6 61 2 rfh1 (6) bit (36), 6 62 2 ext_status bit (8 * 36), /* (10) extended status stored by IIOC */ 6 63 2 iom uns fixed bin (3), /* (20) IOM# (1-4) */ 6 64 2 channel uns fixed bin (6), /* (21) channel # */ 6 65 2 handler entry (fixed bin (35), fixed bin (3), bit (36) aligned), 6 66 /* (22) Interrupt handler for device. */ 6 67 2 flags, /* (26) */ 6 68 3 in_use bit (1) unal, /* assigned */ 6 69 3 queue_status bit (1) unal, /* maintain status queue */ 6 70 3 on_line bit (1) unal, /* can be assigned */ 6 71 2 index fixed bin (35), /* (27) Channel identification index. */ 6 72 2 pcw bit (72), /* (30) Peripheral Control Word */ 6 73 2 lpw bit (72), /* (32) List Pointer Word */ 6 74 2 scw bit (36), /* (34) Status Control Word */ 6 75 2 pad1 fixed bin (35), 6 76 2 status_queue_ptr ptr, /* (36) Status queue */ 6 77 2 connect_time fixed bin (71), /* (40) time of last connect */ 6 78 2 connects fixed bin (71), /* (42) Total connects */ 6 79 2 interrupts fixed bin (71), /* (44) Total number of interrupts for this channel. */ 6 80 2 interrupt_time fixed bin (71); /* (46) Total interrupt time for this channel. */ 6 81 6 82 dcl iom_mailbox_seg_ptr ptr; 6 83 dcl 1 iom_mailbox_seg aligned based (iom_mailbox_seg_ptr), 6 84 2 imw_array (0:31) bit (32), /* Indexed by interrupt cell number. One bit for each channel. */ 6 85 2 system_fault (4) aligned like status_queue, 6 86 /* system faults store here (12 words/IOM) */ 6 87 2 special_status (4) aligned like status_queue, 6 88 /* special status words here (12 words/IOM) */ 6 89 2 iom_mailbox (4) like iom_mailbox; /* Used to communicate with the IOM. */ 6 90 6 91 dcl status_queue_ptr ptr; 6 92 dcl 1 status_queue aligned based (status_queue_ptr), 6 93 2 status (12) bit (36); 6 94 6 95 dcl 1 iom_mailbox aligned based, 6 96 2 channel_mailbox (0:63) like channel_mailbox; 6 97 6 98 dcl 1 channel_mailbox aligned based, 6 99 2 lpw bit (72), /* List pointer word. Points to DCW list. */ 6 100 2 scw bit (36), /* Status control word. Points to channel_table.status. */ 6 101 2 dcw bit (36); /* Data control word. Primarily scratch space for IOM. */ 6 102 6 103 /* Defined channel numbers. */ 6 104 6 105 dcl ( 6 106 system_fault_channel init (1), /* Stores system fault words using LPW and DCW. */ 6 107 connect_channel init (2), /* Starts other channels using LPW pointing to PCW. */ 6 108 special_status_channel init (6) /* Stores special status using LPW and DCW. */ 6 109 ) fixed bin (6) static options (constant); 6 110 6 111 /* End of include file ..... iom_data.incl.pl1 */ 678 679 7 1 /* BEGIN INCLUDE FILE ... channel_summary.incl.pl1 */ 7 2 7 3 /* Include file describing structure filled in by mpx_summary and subchan_summary 7 4* entries of multiplexer-specific metering subroutines for use by comm_channel_meters -summary 7 5**/ 7 6 7 7 /* Created April 1981 by Robert Coren */ 7 8 7 9 dcl summary_ptr ptr; 7 10 dcl CHANNEL_SUMMARY_VERSION_1 fixed bin internal static options (constant) init (1); 7 11 7 12 dcl 1 channel_summary based (summary_ptr) aligned, 7 13 2 version fixed bin, 7 14 2 baud_rate fixed bin, 7 15 2 time_since_dial fixed bin (71), 7 16 2 flags, 7 17 3 invalid_input bit (1) unal, 7 18 3 output_re_xmit bit (1) unal, 7 19 3 timeout bit (1) unal, 7 20 3 pre_exhaust bit (1) unal, 7 21 3 exhaust bit (1) unal, 7 22 3 xte bit (1) unal, 7 23 3 bell_quit bit (1) unal, 7 24 3 echo_overflow bit (1) unal, 7 25 3 parity bit (1) unal, 7 26 3 ssqo bit (1) unal, 7 27 3 hsqo bit (1) unal, 7 28 3 alloc_failure bit (1) unal, 7 29 3 synchronous bit (1) unal, 7 30 3 breakall bit (1) unal, 7 31 3 echoplex bit (1) unal, 7 32 3 padb bit (21) unal, 7 33 2 error_count fixed bin, 7 34 2 user_process bit (36); 7 35 7 36 /* END INCLUDE FILE ... channel_summary.incl.pl1 */ 680 681 end mcs_meters_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1540.7 mcs_meters_.pl1 >special_ldd>install>MR12.1-1054>mcs_meters_.pl1 668 1 03/29/82 1006.8 fnp_meters.incl.pl1 >ldd>include>fnp_meters.incl.pl1 670 2 08/10/81 1843.6 fnp_channel_meters.incl.pl1 >ldd>include>fnp_channel_meters.incl.pl1 672 3 06/19/81 2115.0 channel_meters.incl.pl1 >ldd>include>channel_meters.incl.pl1 674 4 06/19/81 2115.0 comm_meters_disp_flags.incl.pl1 >ldd>include>comm_meters_disp_flags.incl.pl1 676 5 08/04/87 1140.0 line_types.incl.pl1 >spec>install>1056>line_types.incl.pl1 678 6 04/11/85 1452.4 iom_data.incl.pl1 >ldd>include>iom_data.incl.pl1 680 7 06/19/81 2115.0 channel_summary.incl.pl1 >ldd>include>channel_summary.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. DISPLAY_MPX_BRIEF constant bit(36) initial unaligned dcl 4-10 ref 657 DISPLAY_MPX_ERROR constant bit(36) initial unaligned dcl 4-11 ref 661 DISPLAY_MPX_SINCE_BOOT constant bit(36) initial unaligned dcl 4-13 ref 377 DISPLAY_MPX_SUMMARY constant bit(36) initial unaligned dcl 4-12 ref 654 FNP_CHANNEL_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 2-8 ref 158 FNP_METERS_VERSION_2 constant fixed bin(17,0) initial dcl 1-57 ref 179 LINE_BSC constant fixed bin(17,0) initial dcl 5-22 ref 426 LINE_G115 constant fixed bin(17,0) initial dcl 5-22 ref 413 LINE_X25LAP constant fixed bin(17,0) initial dcl 5-22 ref 447 a_area_ptr parameter pointer dcl 29 ref 144 149 164 169 a_chan_meterp parameter pointer dcl 33 ref 208 371 492 498 650 a_chan_name parameter char(32) unaligned dcl 31 ref 208 371 a_code parameter fixed bin(35,0) dcl 37 set ref 144 150* 153* 164 170* 173* 186 193* 198 205* 208 371 492 497* 652* a_flags parameter bit(36) dcl 34 ref 208 371 651 a_iocbp parameter pointer dcl 32 ref 208 371 646 a_meterp parameter pointer dcl 30 set ref 144 157* 158 164 178* 179 186 191 198 203 a_since_boot parameter bit(1) unaligned dcl 35 ref 492 500 a_summary_ptr parameter pointer dcl 36 ref 492 499 abnormal_dia_status 11 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 1-35 ref 253 addr builtin function dcl 142 ref 541 607 alloc_failure 4(11) based bit(1) level 3 packed unaligned dcl 7-12 set ref 525* alloc_failures 000221 automatic fixed bin(35,0) dcl 96 set ref 487* 525 527 584* 616* area 000244 stack reference condition dcl 141 ref 151 171 areap 000100 automatic pointer dcl 41 set ref 149* 157 169* 178 avg_space_available 000115 automatic fixed bin(35,0) dcl 51 set ref 270* 273* 275 based_time based fixed bin(71,0) dcl 113 ref 310 bell_quit 4(06) based bit(1) level 3 packed unaligned dcl 7-12 set ref 507* bell_quits 13 based fixed bin(18,0) level 2 in structure "fnp_async_meters" packed unsigned unaligned dcl 2-46 in procedure "mcs_meters_" ref 571 634 bell_quits 000232 automatic fixed bin(35,0) dcl 105 in procedure "mcs_meters_" set ref 476* 507 509 602* 634* brief 000107 automatic bit(1) unaligned dcl 45 set ref 225 251 293 411 457 464 657* 659* buffer_allocations 12 based fixed bin(35,0) level 3 dcl 1-35 set ref 277* 279 buffer_pool 11(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 1-35 ref 266 buffers_preallocated 13 based fixed bin(35,0) level 3 dcl 1-35 set ref 279* 279 chan_meterp 000256 automatic pointer dcl 3-7 set ref 215 218 219 413 426 447 498* 538 539 650* channel_mailbox based structure level 1 dcl 6-98 channel_meters based structure level 1 dcl 3-11 channel_summary based structure level 1 dcl 7-12 channels_dialed_cum 2 based fixed bin(35,0) level 3 dcl 1-35 ref 229 channels_dialed_updates 3 based fixed bin(35,0) level 3 dcl 1-35 ref 229 chantab 60 based fixed bin(9,0) array level 3 packed unsigned unaligned dcl 6-17 ref 318 char_time 000126 automatic char(10) unaligned dcl 57 set ref 309* clock builtin function dcl 142 ref 217 code 000102 automatic fixed bin(35,0) dcl 42 set ref 302* 303* 305 309* 310 converted_output_chars 25 based fixed bin(35,0) level 3 dcl 3-11 ref 219 counters 000233 automatic fixed bin(35,0) array dcl 106 in procedure "mcs_meters_" set ref 403* 403 406* 406 409* 415* 416* 418* 420* 422* 430* 432* 436* 438* 440* 449* 450* 451* 452* 453* 454* 513 514 515 516 595* 627* counters 17 based fixed bin(35,0) array level 2 in structure "fnp_sync_meters" dcl 2-35 in procedure "mcs_meters_" ref 563 564 594 626 627 cpu_time 000142 automatic fixed bin(71,0) dcl 60 set ref 310* 312* 329* cum_length 12 based fixed bin(35,0) level 3 in structure "fnp_sync_meters" dcl 2-35 in procedure "mcs_meters_" ref 560 623 cum_length 15 based fixed bin(35,0) level 3 in structure "fnp_sync_meters" dcl 2-35 in procedure "mcs_meters_" ref 562 625 cumulative 24 based structure level 2 dcl 3-11 cur_ptrs 000132 automatic pointer array dcl 58 set ref 309* 310 317 current_meterp 000152 automatic pointer dcl 65 set ref 390 390 393 393 541* 545 546 547 548 549 550 551 552 553 554 555 559 560 561 562 563 564 569 570 571 594 current_meters 2 based structure level 2 dcl 2-10 set ref 541 defined 000010 internal static bit(1) initial unaligned dcl 135 set ref 300 305* dia_q_len 000211 automatic fixed bin(35,0) dcl 88 set ref 460 576* 608* dia_q_updates 000212 automatic fixed bin(35,0) dcl 89 set ref 460 577* 609* dia_request_q_len based fixed bin(35,0) level 3 dcl 2-18 ref 545 608 dia_rql_updates 1 based fixed bin(35,0) level 3 dcl 2-18 ref 546 609 divide builtin function dcl 142 ref 246 246 246 246 259 259 270 echo_buf_overflow 12 based fixed bin(35,0) level 2 dcl 2-46 ref 570 633 echo_overflow 4(07) based bit(1) level 3 packed unaligned dcl 7-12 set ref 508* echo_overflows 000230 automatic fixed bin(35,0) dcl 103 set ref 477* 508 509 601* 633* error 000110 automatic bit(1) unaligned dcl 46 set ref 221 259 264 298 385 428 457 473 482 661* 663* error_count 5 based fixed bin(17,0) level 2 dcl 7-12 set ref 502* 509* 516* 527* 527 error_table_$noalloc 000032 external static fixed bin(35,0) dcl 130 ref 153 173 exhaust 4(04) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 520* exhaust 000227 automatic fixed bin(35,0) dcl 102 in procedure "mcs_meters_" set ref 468* 509 520 585* 617* exhaust 7 based fixed bin(35,0) level 3 in structure "fnp_channel_meters" dcl 2-18 in procedure "mcs_meters_" ref 554 617 flags 1 based structure level 2 in structure "fnp_chan_meter_struc" dcl 2-10 in procedure "mcs_meters_" flags 4 based structure level 2 in structure "channel_summary" dcl 7-12 in procedure "mcs_meters_" flags 000106 automatic bit(36) dcl 44 in procedure "mcs_meters_" set ref 377 651* 654 657 661 fnp_async_meters based structure level 1 dcl 2-46 fnp_chan_meter_struc based structure level 1 dcl 2-10 set ref 157 192 fnp_chan_meterp 000254 automatic pointer dcl 2-7 set ref 191* 192 539* 540 541 607 fnp_channel_meters based structure level 1 dcl 2-18 fnp_global_meters based structure level 1 dcl 1-13 fnp_mem_size 43 based fixed bin(17,0) level 2 dcl 1-35 ref 259 259 fnp_meterp 000252 automatic pointer dcl 1-11 set ref 203* 204 215* 216 217 228 229 229 233 233 235 238 238 253 255 259 259 266 270 270 277 279 279 279 283 287 289 295 318 318 332 335 338 341 344 344 344 344 348 348 353 353 357 361 364 365 365 fnp_meters based structure level 1 dcl 1-35 set ref 178 204 fnp_meters_available 000116 automatic bit(1) unaligned dcl 52 set ref 216* 223 251 262 348 fnp_space_restricted_output 42 based fixed bin(17,0) level 2 dcl 1-35 ref 295 fnp_sync_meters based structure level 1 dcl 2-35 from_fnp 2 based structure level 2 dcl 1-35 set ref 216 hardware_status_overflows 5(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 2-18 ref 552 615 hbound builtin function dcl 142 ref 563 594 626 header 34 based structure level 3 in structure "fnp_chan_meter_struc" dcl 2-10 in procedure "mcs_meters_" header 2 based structure level 3 in structure "fnp_chan_meter_struc" dcl 2-10 in procedure "mcs_meters_" header based structure level 2 in structure "fnp_channel_meters" dcl 2-18 in procedure "mcs_meters_" hsqo 000220 automatic fixed bin(35,0) dcl 95 in procedure "mcs_meters_" set ref 486* 524 527 583* 615* hsqo 4(10) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 524* i 000304 automatic fixed bin(17,0) dcl 536 set ref 563* 564 564* 594* 595 595* 626* 627 627 627* idle_count_updates 21 based fixed bin(35,0) level 3 dcl 1-35 ref 233 input 11 based structure level 2 dcl 2-35 input_alloc_failures 6 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 2-18 ref 553 616 input_chars 000122 automatic fixed bin(35,0) dcl 54 set ref 218* 244* 246 246 input_control_transactions 40 based fixed bin(35,0) level 2 dcl 1-35 set ref 338* 344 input_data_transactions 36 based fixed bin(35,0) level 2 dcl 1-35 set ref 332* 344 365 input_length 000223 automatic fixed bin(35,0) dcl 98 set ref 396 591* 623* input_mbx_in_use_cum 6 based fixed bin(35,0) level 3 dcl 1-35 ref 348 input_mbx_updates 7 based fixed bin(35,0) level 3 dcl 1-35 ref 348 input_messages 000222 automatic fixed bin(35,0) dcl 97 set ref 388* 396 403 590* 622* input_rejects 33 based fixed bin(17,0) level 2 dcl 1-35 ref 364 365 interrupt_time 306 based fixed bin(71,0) array level 3 in structure "iom_data" dcl 6-17 in procedure "mcs_meters_" ref 322 interrupt_time 000146 automatic fixed bin(71,0) dcl 62 in procedure "mcs_meters_" set ref 316* 322* 327* 329 interrupts 304 based fixed bin(71,0) array level 3 dcl 6-17 ref 321 invalid_input 4 based bit(1) level 3 packed unaligned dcl 7-12 set ref 513* ioa_$ioa_switch 000012 constant entry external dcl 118 ref 225 228 229 235 238 243 244 246 253 255 259 267 273 275 277 279 283 287 289 295 325 327 329 332 335 338 341 344 348 353 357 361 364 365 387 388 390 393 396 403 406 409 415 416 418 420 422 430 432 436 438 440 449 450 451 452 453 454 459 460 466 468 469 473 476 477 480 482 485 486 487 iocbp 000104 automatic pointer dcl 43 set ref 225* 228* 229* 235* 238* 243* 244* 246* 253* 255* 259* 267* 273* 275* 277* 279* 283* 287* 289* 295* 325* 327* 329* 332* 335* 338* 341* 344* 348* 353* 357* 361* 364* 365* 387* 388* 390* 393* 396* 403* 406* 409* 415* 416* 418* 420* 422* 430* 432* 436* 438* 440* 449* 450* 451* 452* 453* 454* 459* 460* 466* 468* 469* 473* 476* 477* 480* 482* 485* 486* 487* 646* 647 647* iom_chan_no 45 based fixed bin(17,0) level 2 dcl 1-35 ref 318 iom_data based structure level 1 dcl 6-17 iom_data_len 000150 automatic fixed bin(19,0) dcl 63 set ref 302* 303* iom_data_ptr 000260 automatic pointer dcl 6-15 set ref 317* 318 321 322 iom_mailbox based structure level 1 dcl 6-95 iom_number 44 based fixed bin(17,0) level 2 dcl 1-35 ref 318 iomx 000151 automatic fixed bin(17,0) dcl 64 set ref 318* 319 321 322 iox_$user_output 000030 external static pointer dcl 129 ref 647 line_type 3 based fixed bin(17,0) level 2 dcl 3-11 ref 413 426 447 m_area based area(256) dcl 112 ref 157 178 max_idle_count 22 based fixed bin(35,0) level 3 dcl 1-35 ref 233 238 max_length 16(18) based fixed bin(18,0) level 3 in structure "fnp_sync_meters" packed unsigned unaligned dcl 2-35 in procedure "mcs_meters_" ref 393 max_length 13(18) based fixed bin(18,0) level 3 in structure "fnp_sync_meters" packed unsigned unaligned dcl 2-35 in procedure "mcs_meters_" ref 393 max_output_mbx_in_use 31 based fixed bin(17,0) level 2 dcl 1-35 set ref 357* max_possible_idle_count 000156 automatic fixed bin(35,0) dcl 67 set ref 233* 235 memory_parity_errors 24 based fixed bin(35,0) level 3 dcl 1-35 set ref 255* message_count 14 based fixed bin(35,0) level 3 in structure "fnp_sync_meters" dcl 2-35 in procedure "mcs_meters_" ref 561 624 message_count 11 based fixed bin(35,0) level 3 in structure "fnp_sync_meters" dcl 2-35 in procedure "mcs_meters_" ref 559 622 meter_format_$picture 000016 constant entry external dcl 120 ref 244 244 246 246 253 255 267 273 277 279 283 287 289 295 325 332 335 338 341 344 361 364 388 388 390 390 393 393 403 406 409 415 416 418 420 422 430 432 436 438 440 449 450 451 452 453 454 459 468 469 473 476 477 480 485 486 487 meter_format_$quotient 000020 constant entry external dcl 121 ref 229 235 238 275 279 327 329 348 353 365 396 396 403 406 460 482 meter_format_$time 000014 constant entry external dcl 119 ref 225 225 meter_time 000124 automatic fixed bin(71,0) dcl 56 set ref 309* metering_util_$define_regions 000022 constant entry external dcl 122 ref 303 metering_util_$fill_buffers 000024 constant entry external dcl 123 ref 309 min_idle_count 23 based fixed bin(35,0) level 3 dcl 1-35 ref 238 min_length 13 based fixed bin(18,0) level 3 in structure "fnp_sync_meters" packed unsigned unaligned dcl 2-35 in procedure "mcs_meters_" ref 390 min_length 16 based fixed bin(18,0) level 3 in structure "fnp_sync_meters" packed unsigned unaligned dcl 2-35 in procedure "mcs_meters_" ref 390 mpx_specific_meterp 16 based pointer level 2 dcl 3-11 ref 215 mu_index 000011 internal static fixed bin(17,0) dcl 136 set ref 303* 309* multiplexed 000113 automatic bit(1) unaligned dcl 49 set ref 401 516 538* multiplexer_type 1 based fixed bin(17,0) level 2 dcl 3-11 ref 538 n_channels 25 based fixed bin(17,0) level 2 dcl 1-35 set ref 228* n_interrupts 000144 automatic fixed bin(35,0) dcl 61 set ref 316* 321* 325* 327 no_preallocated_available 15 based fixed bin(35,0) level 3 dcl 1-35 set ref 287* null builtin function dcl 142 ref 647 output 14 based structure level 2 dcl 2-35 output_chars 000123 automatic fixed bin(35,0) dcl 55 set ref 219* 244* 246 246 output_control_transactions 41 based fixed bin(35,0) level 2 dcl 1-35 set ref 341* 344 output_data_transactions 37 based fixed bin(35,0) level 2 dcl 1-35 set ref 335* 344 output_length 000225 automatic fixed bin(35,0) dcl 100 set ref 396 593* 625* output_mbx_in_use_cum 26 based fixed bin(35,0) level 2 dcl 1-35 ref 353 output_mbx_unavailable 30 based fixed bin(35,0) level 2 dcl 1-35 set ref 361* output_mbx_updates 27 based fixed bin(35,0) level 2 dcl 1-35 ref 353 output_messages 000224 automatic fixed bin(35,0) dcl 99 set ref 388* 396 406 592* 624* output_overlaps 000215 automatic fixed bin(35,0) dcl 92 in procedure "mcs_meters_" set ref 459* 580* 612* output_overlaps 4 based fixed bin(18,0) level 3 in structure "fnp_channel_meters" packed unsigned unaligned dcl 2-18 in procedure "mcs_meters_" ref 549 612 output_re_xmit 4(01) based bit(1) level 3 packed unaligned dcl 7-12 set ref 514* parent_meterp 20 based pointer level 2 dcl 3-11 ref 539 parity 4(08) based bit(1) level 3 packed unaligned dcl 7-12 set ref 522* parity_errors 000216 automatic fixed bin(35,0) dcl 93 in procedure "mcs_meters_" set ref 480* 522 527 581* 613* parity_errors 4(18) based fixed bin(18,0) level 3 in structure "fnp_channel_meters" packed unsigned unaligned dcl 2-18 in procedure "mcs_meters_" ref 550 613 pending_status 2 based fixed bin(35,0) level 3 in structure "fnp_channel_meters" dcl 2-18 in procedure "mcs_meters_" ref 547 610 pending_status 000213 automatic fixed bin(35,0) dcl 90 in procedure "mcs_meters_" set ref 482 578* 610* pending_status_updates 3 based fixed bin(35,0) level 3 dcl 2-18 ref 548 611 per_device 240 based structure array level 2 in structure "iom_data" dcl 6-17 in procedure "mcs_meters_" per_device based structure level 1 dcl 6-59 in procedure "mcs_meters_" per_iom 40 based structure array level 2 in structure "iom_data" dcl 6-17 in procedure "mcs_meters_" per_iom based structure level 1 dcl 6-40 in procedure "mcs_meters_" pool 000114 automatic fixed bin(35,0) dcl 50 set ref 266* 267* 275 pre_exhaust 000226 automatic fixed bin(35,0) dcl 101 in procedure "mcs_meters_" set ref 473* 506 600* 632* pre_exhaust 11 based fixed bin(35,0) level 2 in structure "fnp_async_meters" dcl 2-46 in procedure "mcs_meters_" ref 569 632 pre_exhaust 4(03) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 506* prev_ptrs 000136 automatic pointer array dcl 59 set ref 309* ring_zero_peek_$get_max_length 000026 constant entry external dcl 124 ref 302 saved_meterp 000154 automatic pointer dcl 66 set ref 607* 608 609 610 611 612 613 614 615 616 617 618 622 623 624 625 626 627 632 633 634 saved_meters 34 based structure level 2 dcl 2-10 set ref 607 since_boot 000111 automatic bit(1) unaligned dcl 47 set ref 377* 379* 500* 574 software_status_overflows 5 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 2-18 ref 551 614 software_xte 10 based fixed bin(18,0) level 3 packed unsigned unaligned dcl 2-18 ref 555 618 space_alloc_failures 10(18) based fixed bin(18,0) level 3 packed unsigned unaligned dcl 1-35 ref 289 space_available_cum 4 based fixed bin(35,0) level 3 dcl 1-35 ref 270 space_available_updates 5 based fixed bin(35,0) level 3 dcl 1-35 ref 270 ssqo 4(09) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 523* ssqo 000217 automatic fixed bin(35,0) dcl 94 in procedure "mcs_meters_" set ref 485* 523 527 582* 614* status_queue based structure level 1 dcl 6-92 status_updates 000214 automatic fixed bin(35,0) dcl 91 set ref 482 579* 611* summary_ptr 000262 automatic pointer dcl 7-9 set ref 499* 502 506 507 508 509 513 514 515 516 520 521 522 523 524 525 526 527 527 synchronous 000112 automatic bit(1) unaligned dcl 48 in procedure "mcs_meters_" set ref 383 471 504 526 540* 557 588 620 synchronous 1 based bit(1) level 3 in structure "fnp_chan_meter_struc" packed unaligned dcl 2-10 in procedure "mcs_meters_" ref 540 synchronous 4(12) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 526* time_booted 16 based fixed bin(71,0) level 3 dcl 1-35 ref 217 time_up 000120 automatic fixed bin(71,0) dcl 53 set ref 217* 225* 225* 246 246 246 246 timeout 4(02) based bit(1) level 3 packed unaligned dcl 7-12 set ref 515* total_alloc_failures 000167 automatic fixed bin(35,0) dcl 76 set ref 553* 584 616 total_bell_quits 000200 automatic fixed bin(35,0) dcl 85 set ref 571* 602 634 total_counters 000201 automatic fixed bin(35,0) array dcl 86 set ref 564* 595 627 total_dia_q_len 000157 automatic fixed bin(35,0) dcl 68 set ref 545* 576 608 total_dia_q_updates 000160 automatic fixed bin(35,0) dcl 69 set ref 546* 577 609 total_echo_overflows 000176 automatic fixed bin(35,0) dcl 83 set ref 570* 601 633 total_exhaust 000175 automatic fixed bin(35,0) dcl 82 set ref 554* 585 617 total_hsqo 000166 automatic fixed bin(35,0) dcl 75 set ref 552* 583 615 total_idle_count 20 based fixed bin(35,0) level 3 dcl 1-35 ref 235 total_input_length 000171 automatic fixed bin(35,0) dcl 78 set ref 560* 591 623 total_input_messages 000170 automatic fixed bin(35,0) dcl 77 set ref 559* 590 622 total_output_length 000173 automatic fixed bin(35,0) dcl 80 set ref 562* 593 625 total_output_messages 000172 automatic fixed bin(35,0) dcl 79 set ref 561* 592 624 total_output_overlaps 000163 automatic fixed bin(35,0) dcl 72 set ref 549* 580 612 total_parity_errors 000164 automatic fixed bin(35,0) dcl 73 set ref 550* 581 613 total_pending_status 000161 automatic fixed bin(35,0) dcl 70 set ref 547* 578 610 total_pre_exhaust 000174 automatic fixed bin(35,0) dcl 81 set ref 569* 600 632 total_ssqo 000165 automatic fixed bin(35,0) dcl 74 set ref 551* 582 614 total_status_updates 000162 automatic fixed bin(35,0) dcl 71 set ref 548* 579 611 total_xte 000177 automatic fixed bin(35,0) dcl 84 set ref 555* 586 618 unconverted_input_chars 24 based fixed bin(35,0) level 3 dcl 3-11 ref 218 unspec builtin function dcl 142 ref 216 used_preallocated_buffer 14 based fixed bin(35,0) level 3 dcl 1-35 set ref 283* version based fixed bin(17,0) level 2 in structure "fnp_chan_meter_struc" dcl 2-10 in procedure "mcs_meters_" set ref 158* version based fixed bin(17,0) level 2 in structure "fnp_meters" dcl 1-35 in procedure "mcs_meters_" set ref 179* xte 4(05) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 7-12 in procedure "mcs_meters_" set ref 521* xte 000231 automatic fixed bin(35,0) dcl 104 in procedure "mcs_meters_" set ref 469* 509 521 586* 618* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHANNEL_METERS_VERSION_1 internal static fixed bin(17,0) initial dcl 3-9 CHANNEL_SUMMARY_VERSION_1 internal static fixed bin(17,0) initial dcl 7-10 LINE_1050 internal static fixed bin(17,0) initial dcl 5-22 LINE_2741 internal static fixed bin(17,0) initial dcl 5-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 5-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 5-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 5-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 5-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 5-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 5-22 LINE_DSA internal static fixed bin(17,0) initial dcl 5-22 LINE_ETX internal static fixed bin(17,0) initial dcl 5-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 5-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 5-22 LINE_MC internal static fixed bin(17,0) initial dcl 5-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 5-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 5-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 5-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 5-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 5-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 5-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 5-22 LINE_VIP internal static fixed bin(17,0) initial dcl 5-22 bin builtin function dcl 142 connect_channel internal static fixed bin(6,0) initial dcl 6-105 iom_data$ external static fixed bin(17,0) dcl 6-11 iom_mailbox$ external static fixed bin(17,0) dcl 6-12 iom_mailbox_seg based structure level 1 dcl 6-83 iom_mailbox_seg_ptr automatic pointer dcl 6-82 line_types internal static char(16) initial array unaligned dcl 5-54 max_line_type internal static fixed bin(17,0) initial dcl 5-48 n_devices automatic fixed bin(17,0) dcl 6-14 n_sync_line_types internal static fixed bin(17,0) initial dcl 5-50 size builtin function dcl 142 special_status_channel internal static fixed bin(6,0) initial dcl 6-105 status_queue_ptr automatic pointer dcl 6-91 sync_line_type internal static fixed bin(17,0) initial array dcl 5-52 system_fault_channel internal static fixed bin(6,0) initial dcl 6-105 NAMES DECLARED BY EXPLICIT CONTEXT. allocate_mpx 001246 constant entry external dcl 164 allocate_subchan 001173 constant entry external dcl 144 display_mpx 001374 constant entry external dcl 208 display_subchan 004374 constant entry external dcl 371 exit 001243 constant label dcl 160 ref 154 174 free_mpx 001346 constant entry external dcl 198 free_subchan 001323 constant entry external dcl 186 mcs_meters_ 001161 constant entry external dcl 12 set_subchan_values 007504 constant entry internal dcl 531 ref 381 501 setup_display 010126 constant entry internal dcl 641 ref 213 376 subchan_summary 007273 constant entry external dcl 492 NAME DECLARED BY CONTEXT OR IMPLICATION. sum builtin function ref 516 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10422 10456 10172 10432 Length 11136 10172 34 443 230 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mcs_meters_ 327 external procedure is an external procedure. on unit on line 151 64 on unit on unit on line 171 64 on unit set_subchan_values internal procedure shares stack frame of external procedure mcs_meters_. setup_display internal procedure shares stack frame of external procedure mcs_meters_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 defined mcs_meters_ 000011 mu_index mcs_meters_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mcs_meters_ 000100 areap mcs_meters_ 000102 code mcs_meters_ 000104 iocbp mcs_meters_ 000106 flags mcs_meters_ 000107 brief mcs_meters_ 000110 error mcs_meters_ 000111 since_boot mcs_meters_ 000112 synchronous mcs_meters_ 000113 multiplexed mcs_meters_ 000114 pool mcs_meters_ 000115 avg_space_available mcs_meters_ 000116 fnp_meters_available mcs_meters_ 000120 time_up mcs_meters_ 000122 input_chars mcs_meters_ 000123 output_chars mcs_meters_ 000124 meter_time mcs_meters_ 000126 char_time mcs_meters_ 000132 cur_ptrs mcs_meters_ 000136 prev_ptrs mcs_meters_ 000142 cpu_time mcs_meters_ 000144 n_interrupts mcs_meters_ 000146 interrupt_time mcs_meters_ 000150 iom_data_len mcs_meters_ 000151 iomx mcs_meters_ 000152 current_meterp mcs_meters_ 000154 saved_meterp mcs_meters_ 000156 max_possible_idle_count mcs_meters_ 000157 total_dia_q_len mcs_meters_ 000160 total_dia_q_updates mcs_meters_ 000161 total_pending_status mcs_meters_ 000162 total_status_updates mcs_meters_ 000163 total_output_overlaps mcs_meters_ 000164 total_parity_errors mcs_meters_ 000165 total_ssqo mcs_meters_ 000166 total_hsqo mcs_meters_ 000167 total_alloc_failures mcs_meters_ 000170 total_input_messages mcs_meters_ 000171 total_input_length mcs_meters_ 000172 total_output_messages mcs_meters_ 000173 total_output_length mcs_meters_ 000174 total_pre_exhaust mcs_meters_ 000175 total_exhaust mcs_meters_ 000176 total_echo_overflows mcs_meters_ 000177 total_xte mcs_meters_ 000200 total_bell_quits mcs_meters_ 000201 total_counters mcs_meters_ 000211 dia_q_len mcs_meters_ 000212 dia_q_updates mcs_meters_ 000213 pending_status mcs_meters_ 000214 status_updates mcs_meters_ 000215 output_overlaps mcs_meters_ 000216 parity_errors mcs_meters_ 000217 ssqo mcs_meters_ 000220 hsqo mcs_meters_ 000221 alloc_failures mcs_meters_ 000222 input_messages mcs_meters_ 000223 input_length mcs_meters_ 000224 output_messages mcs_meters_ 000225 output_length mcs_meters_ 000226 pre_exhaust mcs_meters_ 000227 exhaust mcs_meters_ 000230 echo_overflows mcs_meters_ 000231 xte mcs_meters_ 000232 bell_quits mcs_meters_ 000233 counters mcs_meters_ 000252 fnp_meterp mcs_meters_ 000254 fnp_chan_meterp mcs_meters_ 000256 chan_meterp mcs_meters_ 000260 iom_data_ptr mcs_meters_ 000262 summary_ptr mcs_meters_ 000304 i set_subchan_values THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out return_mac tra_ext_1 mpfx2 enable_op ext_entry int_entry divide_fx4 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$ioa_switch meter_format_$picture meter_format_$quotient meter_format_$time metering_util_$define_regions metering_util_$fill_buffers ring_zero_peek_$get_max_length THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noalloc iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 001160 25 001166 144 001167 149 001205 150 001211 151 001212 153 001226 154 001231 157 001234 158 001241 160 001243 164 001244 169 001260 170 001264 171 001265 173 001301 174 001304 178 001307 179 001314 181 001316 186 001317 191 001335 192 001340 193 001342 194 001343 198 001344 203 001360 204 001363 205 001365 206 001366 208 001367 213 001406 215 001407 216 001412 217 001417 218 001423 219 001426 221 001430 223 001432 225 001434 228 001473 229 001520 233 001601 235 001605 238 001666 243 001752 244 001775 246 002056 251 002153 253 002157 255 002224 259 002271 262 002326 264 002330 266 002332 267 002336 270 002377 273 002403 275 002444 277 002524 279 002566 283 002671 287 002733 289 002775 293 003042 295 003044 298 003110 300 003112 302 003115 303 003137 305 003216 309 003223 310 003257 312 003264 316 003266 317 003271 318 003273 319 003310 321 003311 322 003315 325 003317 327 003360 329 003435 332 003513 335 003555 338 003617 341 003664 344 003731 348 004004 353 004067 357 004150 361 004175 364 004237 365 004306 369 004371 371 004372 376 004406 377 004407 379 004415 381 004416 383 004417 385 004421 387 004423 388 004446 390 004527 393 004620 396 004711 401 005030 403 005032 406 005133 409 005234 411 005276 413 005300 415 005304 416 005346 418 005407 420 005450 422 005511 424 005552 426 005553 428 005555 430 005557 432 005621 436 005662 438 005723 440 005764 447 006030 449 006034 450 006100 451 006141 452 006202 453 006246 454 006307 457 006350 459 006354 460 006415 464 006475 466 006477 468 006514 469 006560 471 006621 473 006623 476 006671 477 006733 480 006774 482 007040 485 007122 486 007163 487 007224 490 007265 492 007266 497 007305 498 007306 499 007311 500 007315 501 007322 502 007323 504 007325 506 007327 507 007335 508 007343 509 007351 510 007357 513 007360 514 007365 515 007373 516 007401 520 007423 521 007431 522 007437 523 007445 524 007453 525 007461 526 007467 527 007474 529 007503 531 007504 538 007505 539 007511 540 007513 541 007516 545 007520 546 007522 547 007524 548 007526 549 007530 550 007533 551 007536 552 007541 553 007544 554 007547 555 007551 557 007554 559 007556 560 007560 561 007562 562 007564 563 007566 564 007573 565 007577 566 007601 569 007602 570 007604 571 007606 574 007611 576 007613 577 007615 578 007617 579 007621 580 007623 581 007625 582 007627 583 007631 584 007633 585 007635 586 007637 588 007641 590 007643 591 007645 592 007647 593 007651 594 007653 595 007661 596 007664 597 007666 600 007667 601 007671 602 007673 604 007675 607 007676 608 007701 609 007707 610 007715 611 007723 612 007731 613 007742 614 007753 615 007764 616 007775 617 010006 618 010014 620 010025 622 010027 623 010035 624 010043 625 010051 626 010057 627 010065 628 010075 629 010077 632 010100 633 010106 634 010114 638 010125 641 010126 646 010127 647 010133 650 010143 651 010146 652 010150 654 010151 657 010154 659 010161 661 010162 663 010170 664 010171 ----------------------------------------------------------- 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