COMPILATION LISTING OF SEGMENT tty_meters_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1611.4 mst Mon 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 tty_meters_: 13 procedure; 14 15 /* This procedure contains entries to allocate and free metering structures, and display meters, 16* for tty-type (non-multiplexed) channels. Only the _mpx entries are needed; a tty channel 17* can never be a parent. 18**/ 19 20 /* Written February 1981 by Robert Coren */ 21 22 return; /* main entry should never be called */ 23 24 /* PARAMETERS */ 25 26 dcl a_area_ptr pointer; /* pointer to area in which to perform allocations */ 27 dcl a_tty_meterp pointer; /* pointer to structure to be allocated/freed (OUTPUT for alloc, INPUT for free */ 28 dcl a_chan_name char (*); /* name of channel for display_mpx entry */ 29 dcl a_iocbp pointer; /* pointer to IOCB for display_mpx */ 30 dcl a_chan_meterp pointer; /* pointer to channel_meters structure, for display_mpx */ 31 dcl a_flags bit (36) aligned; /* indicates what options were specified */ 32 dcl a_since_boot bit (1); /* indicates -since_bootload specified (summary entry) */ 33 dcl a_summary_ptr pointer; /* pointer to structure used by summary entry */ 34 dcl a_code fixed bin (35); /* status code (OUTPUT) */ 35 36 /* AUTOMATIC */ 37 38 dcl areap pointer; 39 dcl code fixed bin (35); 40 dcl chan_name char (32); 41 dcl iocbp pointer; 42 dcl flags bit (36) aligned; 43 dcl brief bit (1); 44 dcl since_boot bit (1); 45 dcl total_in_before_conv fixed bin (35); 46 dcl total_in_after_conv fixed bin (35); 47 dcl total_out_before_conv fixed bin (35); 48 dcl total_out_after_conv fixed bin (35); 49 dcl total_read_calls fixed bin (35); 50 dcl total_write_calls fixed bin (35); 51 dcl total_control_calls fixed bin (35); 52 dcl total_read_time fixed bin (71); 53 dcl total_write_time fixed bin (71); 54 dcl total_control_time fixed bin (71); 55 dcl total_ints fixed bin (35); 56 dcl total_int_time fixed bin (71); 57 dcl in_before_conv fixed bin (35); 58 dcl in_after_conv fixed bin (35); 59 dcl out_before_conv fixed bin (35); 60 dcl out_after_conv fixed bin (35); 61 dcl read_calls fixed bin (35); 62 dcl write_calls fixed bin (35); 63 dcl control_calls fixed bin (35); 64 dcl read_time fixed bin (71); 65 dcl write_time fixed bin (71); 66 dcl control_time fixed bin (71); 67 dcl interrupts fixed bin (35); 68 dcl int_time fixed bin (71); 69 dcl start_time fixed bin (71); 70 dcl elapsed_time fixed bin (71); 71 72 73 /* BASED */ 74 75 dcl m_area area (256) based (areap); 76 77 78 /* ENTRIES */ 79 80 dcl ioa_$ioa_switch entry options (variable); 81 dcl system_info_$timeup entry (fixed bin (71)); 82 dcl meter_format_$picture entry (fixed bin (35), fixed bin) returns (char (15) varying); 83 dcl meter_format_$quotient entry (fixed bin (71), fixed bin (71), char (*)) returns (char (12) varying); 84 85 86 /* EXTERNAL STATIC */ 87 88 dcl error_table_$noalloc fixed bin (35) external static; 89 dcl iox_$user_output pointer external static; 90 91 92 /* CONDITIONS */ 93 94 dcl area condition; 95 96 allocate_mpx: 97 entry (a_area_ptr, a_tty_meterp, a_code); 98 99 /* entry to allocate a tty_channel_meters structure */ 100 101 areap = a_area_ptr; 102 a_code = 0; 103 on area 104 begin; 105 a_code = error_table_$noalloc; 106 go to exit; 107 end; 108 109 allocate tty_channel_meters in (m_area) set (a_tty_meterp); 110 a_tty_meterp -> tty_channel_meters.version = TTY_CHANNEL_METERS_VERSION_1; 111 112 exit: 113 return; 114 115 116 117 free_mpx: 118 entry (a_tty_meterp, a_code); 119 120 /* entry to free the tty_meters structure */ 121 122 tty_meterp = a_tty_meterp; 123 free tty_channel_meters; 124 a_code = 0; 125 return; 126 127 display_mpx: 128 entry (a_chan_name, a_iocbp, a_chan_meterp, a_flags, a_code); 129 130 chan_name = a_chan_name; 131 iocbp = a_iocbp; 132 if iocbp = null () 133 then iocbp = iox_$user_output; 134 chan_meterp = a_chan_meterp; 135 flags = a_flags; 136 a_code = 0; 137 138 tty_meterp = channel_meters.mpx_specific_meterp; 139 140 if flags & DISPLAY_MPX_SUMMARY /* this routine doesn't do anything for summary */ 141 then return; 142 143 if flags & DISPLAY_MPX_ERROR /* this routine doesn't display any error conditions */ 144 then return; 145 146 brief = flags & DISPLAY_MPX_BRIEF; 147 total_in_before_conv = channel_meters.cumulative.unconverted_input_chars; 148 total_in_after_conv = tty_channel_meters.current_meters.read_chars; 149 total_out_before_conv = tty_channel_meters.current_meters.write_chars; 150 total_out_after_conv = channel_meters.cumulative.converted_output_chars; 151 total_read_calls = tty_channel_meters.current_meters.read_calls; 152 total_write_calls = tty_channel_meters.current_meters.write_calls; 153 total_control_calls = channel_meters.cumulative.control_calls; 154 total_read_time = tty_channel_meters.current_meters.read_time; 155 total_write_time = tty_channel_meters.current_meters.write_time; 156 total_control_time = channel_meters.cumulative.control_call_time; 157 total_ints = channel_meters.cumulative.software_interrupts; 158 total_int_time = channel_meters.cumulative.interrupt_time; 159 160 if flags & DISPLAY_MPX_SINCE_BOOT 161 then do; /* totals are the numbers we want */ 162 in_before_conv = total_in_before_conv; 163 in_after_conv = total_in_after_conv; 164 out_before_conv = total_out_before_conv; 165 out_after_conv = total_out_after_conv; 166 read_calls = total_read_calls; 167 write_calls = total_write_calls; 168 control_calls = total_control_calls; 169 read_time = total_read_time; 170 write_time = total_write_time; 171 control_time = total_control_time; 172 interrupts = total_ints; 173 int_time = total_int_time; 174 call system_info_$timeup (start_time); 175 end; 176 177 else do; 178 in_before_conv = total_in_before_conv - channel_meters.saved.unconverted_input_chars; 179 in_after_conv = total_in_after_conv - tty_channel_meters.saved_meters.read_chars; 180 out_before_conv = total_out_before_conv - tty_channel_meters.saved_meters.write_chars; 181 out_after_conv = total_out_after_conv - channel_meters.saved.converted_output_chars; 182 read_calls = total_read_calls - tty_channel_meters.saved_meters.read_calls; 183 write_calls = total_write_calls - tty_channel_meters.saved_meters.write_calls; 184 control_calls = total_control_calls - channel_meters.saved.control_calls; 185 read_time = total_read_time - tty_channel_meters.saved_meters.read_time; 186 write_time = total_write_time - tty_channel_meters.saved_meters.write_time; 187 control_time = total_control_time - channel_meters.saved.control_call_time; 188 interrupts = total_ints - channel_meters.saved.software_interrupts; 189 int_time = total_int_time - channel_meters.saved.interrupt_time; 190 start_time = tty_channel_meters.last_dialed_time; 191 end; 192 193 elapsed_time = clock () - start_time; 194 195 call ioa_$ioa_switch (iocbp, "^25tbefore conversion^45tafter conversion^64tratio"); 196 call ioa_$ioa_switch (iocbp, "Total characters input^25t^a^45t^a^65t^a", 197 meter_format_$picture (in_before_conv, 9), meter_format_$picture (in_after_conv, 9), 198 meter_format_$quotient ((in_after_conv), (in_before_conv), "^.2f")); 199 200 call ioa_$ioa_switch (iocbp, "Total characters output^25t^a^45t^a^65t^a", 201 meter_format_$picture (out_before_conv, 9), meter_format_$picture (out_after_conv, 9), 202 meter_format_$quotient ((out_after_conv), (out_before_conv), "^.2f")); 203 204 call ioa_$ioa_switch (iocbp, "Average length of input^29t^a^49t^a", 205 meter_format_$quotient ((in_before_conv), (read_calls), "^5.1f"), 206 meter_format_$quotient ((in_after_conv), (read_calls), "^5.1f")); 207 208 call ioa_$ioa_switch (iocbp, "Average length of output^29t^a^49t^a", 209 meter_format_$quotient ((out_before_conv), (write_calls), "^5.1f"), 210 meter_format_$quotient ((out_after_conv), (write_calls), "^5.1f")); 211 212 if ^brief 213 then do; 214 call ioa_$ioa_switch (iocbp, "^/^34tread^45twrite^56tcontrol^64ttotal"); 215 call ioa_$ioa_switch (iocbp, "Number of calls^34t^a^45t^a^56t^a^65t^a", 216 meter_format_$picture (read_calls, 5), meter_format_$picture (write_calls, 5), 217 meter_format_$picture (control_calls, 5), 218 meter_format_$picture (read_calls + write_calls + control_calls, 5)); 219 220 call ioa_$ioa_switch (iocbp, "Average time per call (msec.)^35t^a^46t^a^57t^a^66t^a", 221 meter_format_$quotient (read_time, 1000 * read_calls, "^4.1f"), 222 meter_format_$quotient (write_time, 1000 * write_calls, "^4.1f"), 223 meter_format_$quotient (control_time, 1000 * control_calls, "^4.1f"), 224 meter_format_$quotient (read_time + write_time + control_time, 225 1000 * (read_calls + write_calls + control_calls), "^4.1f")); 226 227 call ioa_$ioa_switch (iocbp, "Average chars. processed per call^34t^a^45t^a", 228 meter_format_$quotient ((in_before_conv), (read_calls), "^5.1f"), 229 meter_format_$quotient ((out_before_conv), (write_calls), "^5.1f")); 230 231 call ioa_$ioa_switch (iocbp, "Number of software interrupts^34t^a", meter_format_$picture (interrupts, 9)); 232 233 call ioa_$ioa_switch (iocbp, "Average time per interrupt (msec.)^35t^a^/", 234 meter_format_$quotient (int_time, 1000 * interrupts, "^4.1f")); 235 end; 236 237 call ioa_$ioa_switch (iocbp, "^/^34tinput^45toutput"); 238 239 call ioa_$ioa_switch (iocbp, "Effective speed (cps)^34t^a^45t^a", 240 meter_format_$quotient (1000000 * in_before_conv, elapsed_time, "^7.1f"), 241 meter_format_$quotient (1000000 * out_before_conv, elapsed_time, "^7.1f")); 242 243 return; 244 245 mpx_summary: 246 entry (a_chan_meterp, a_since_boot, a_summary_ptr, a_code); 247 248 /* entry to fill in structure used by channel_comm_meters -summary */ 249 250 a_code = 0; /* no errors are possible */ 251 summary_ptr = a_summary_ptr; 252 chan_meterp = a_chan_meterp; 253 since_boot = a_since_boot; 254 tty_meterp = channel_meters.mpx_specific_meterp; 255 256 channel_summary.baud_rate = tty_channel_meters.baud_rate; 257 channel_summary.user_process = tty_channel_meters.user_process; 258 if tty_channel_meters.last_dialed_time ^= 0 259 then channel_summary.time_since_dial = clock () - tty_channel_meters.last_dialed_time; 260 channel_summary.breakall = tty_channel_meters.breakall; 261 channel_summary.echoplex = tty_channel_meters.echoplex; 262 return; 263 1 1 /* BEGIN INCLUDE FILE...tty_channel_meters.incl.pl1 */ 1 2 1 3 /* Include file to define structure for meters specific to tty (non-multiplexed) channels */ 1 4 /* Programs that include this file must also include tcb.incl.pl1. */ 1 5 1 6 /* Created February 1981 by Robert Coren */ 1 7 1 8 dcl tty_meterp pointer; 1 9 1 10 dcl TTY_CHANNEL_METERS_VERSION_1 int static options (constant) init (1); 1 11 1 12 dcl 1 tty_channel_meters aligned based (tty_meterp), 1 13 2 version fixed bin, 1 14 2 flags, 1 15 3 breakall bit (1) unaligned, 1 16 3 echoplex bit (1) unaligned, 1 17 3 padb bit (34) unaligned, 1 18 2 last_dialed_time fixed bin (71), /* time channel last dialed up */ 1 19 2 baud_rate fixed bin, 1 20 2 user_process bit (36), /* = wtcb.uproc */ 1 21 2 current_meters like tcb.cumulative_meters, /* meters accumulated for the "life" of the channel */ 1 22 2 saved_meters like tcb.cumulative_meters; /* meters saved when channel most recently dialed up */ 1 23 1 24 /* END INCLUDE FILE...tty_channel_meters.incl.pl1 */ 264 265 2 1 /* BEGIN INCLUDE FILE ... tcb.incl.pl1 */ 2 2 2 3 /* Date Last Modified and Reason 2 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 2 5* Modified 2/6/78 by Robert Coren to add input_msg_size 2 6* Modified 4/18/78 by Robert Coren to add framing_chars 2 7* Modified 8/31/78 by J. Nicholls to add scroll mode 2 8* Extracted 9/12/78 by J. Stern from tty_data.incl.pl1 2 9* Modified Oct.1979 by Robert Coren to expand to 36 possible modes 2 10* Modified 1/21/80 by Robert Coren to add no_outp, oddp, & eight_bit modes 2 11* Modified 10/08/80 by Robert Coren to add meters for tty_read & tty_write 2 12* Modified: 10 November 1980 by G. Palter to add can_type and explicit padding 2 13* Modified 12/04/80 by Robert Coren to add saved copy of meters 2 14* Modified 2/24/81 by Robert Coren to add time spent in tty_read and _write 2 15* Modified April 1981 by Robert Coren to add time last dialed up 2 16**/ 2 17 2 18 dcl tcbp ptr; 2 19 2 20 dcl 1 tcb based (tcbp) aligned, /* declaration of per terminal control block */ 2 21 2 22 2 terminal_type char (32) unaligned, /* terminal type name */ 2 23 2 tables, 2 24 3 input_mvtrp bit (18) unaligned, /* rel pointer to current input mvt table */ 2 25 3 output_mvtrp bit (18) unaligned, /* rel pointer to current output mvt table */ 2 26 3 input_tctrp bit (18) unaligned, /* rel pointer to current input tct table */ 2 27 3 output_tctrp bit (18) unaligned, /* rel pointer to current output tct table */ 2 28 3 specialrp bit (18) unaligned, /* rel pointer to current special chars table */ 2 29 3 delayrp bit (18) unaligned, /* rel pointer to current delay table */ 2 30 2 default_tables, 2 31 3 df_input_mvtrp bit (18) unaligned, /* rel pointer to default input mvt table */ 2 32 3 df_output_mvtrp bit (18) unaligned, /* rel pointer to default output mvt table */ 2 33 3 df_input_tctrp bit (18) unaligned, /* rel pointer to default input tct table */ 2 34 3 df_output_tctrp bit (18) unaligned, /* rel pointer to default output tct table */ 2 35 3 df_specialrp bit (18) unaligned, /* rel pointer to default special chars table */ 2 36 3 df_delayrp bit (18) unaligned, /* rel pointer to default delay table */ 2 37 2 special_input_chars unaligned, 2 38 3 erase char (1) unaligned, /* erase character */ 2 39 3 kill char (1) unaligned, /* kill character */ 2 40 2 old_type fixed bin (17) unaligned, /* old terminal type number */ 2 41 2 42 2 modes unaligned, /* modes set by order call */ 2 43 3 edited bit (1) unaligned, /* edited output mode */ 2 44 3 tabm bit (1) unaligned, /* insert output tabs mode */ 2 45 3 canm bit (1) unaligned, /* do canonical form conversion */ 2 46 2 47 3 escm bit (1) unaligned, /* do input escape conversions */ 2 48 3 erklm bit (1) unaligned, /* do erase kill processing */ 2 49 3 rawim bit (1) unaligned, /* don't convert input */ 2 50 2 51 3 rawom bit (1) unaligned, /* don't convert output */ 2 52 3 redm bit (1) unaligned, /* has red-shift function */ 2 53 3 vertsp bit (1) unaligned, /* send real ff's and vt's if on, else escape them */ 2 54 2 55 3 echo_cr bit (1) unaligned, /* echo carriage returns */ 2 56 3 echo_lf bit (1) unaligned, /* echo line feeds */ 2 57 3 echo_tab bit (1) unaligned, /* echo tabs */ 2 58 2 59 3 hndlquit bit (1) unaligned, /* cr's on quit */ 2 60 3 full_duplex bit (1) unaligned, /* xmit and receive simultaneously */ 2 61 3 echoplex bit (1) unaligned, /* echo input characters on terminal */ 2 62 2 63 3 upper_case bit (1) unaligned, /* map lower-case output into upper-case */ 2 64 3 replay bit (1) unaligned, /* replay interrupted input */ 2 65 3 polite bit (1) unaligned, /* output must start at left margin */ 2 66 2 67 3 control bit (1) unaligned, /* accept control characters */ 2 68 3 blk_xfer bit (1) unaligned, /* block transfer or "frame" mode */ 2 69 3 breakall bit (1) unaligned, /* break on all characters */ 2 70 2 71 3 scroll bit (1) unaligned, /* scroll mode for crt terminals */ 2 72 3 prefixnl bit (1) unaligned, /* prefix output iwth nl when input interrupted */ 2 73 3 wake_tbl bit (1) unaligned, /* input wakeups determined by wakeup table */ 2 74 2 75 3 iflow bit (1) unaligned, /* input flow control */ 2 76 3 oflow bit (1) unaligned, /* output flow control */ 2 77 3 no_outp bit (1) unaligned, /* don't generate output parity */ 2 78 2 79 3 eight_bit bit (1) unaligned, /* don't strip input parity */ 2 80 3 odd_parity bit (1) unaligned, /* generate odd parity (if any) */ 2 81 2 82 3 modes_pad bit (7) unaligned, 2 83 2 84 2 id char (4) unaligned, /* terminal id */ 2 85 2 86 2 colmax fixed bin (8) unaligned, /* current maximum number of columns */ 2 87 2 linemax fixed bin (8) unaligned, /* current maximum number of lines/frame */ 2 88 2 wrt_lchar fixed bin (17) unaligned, /* char within last write block */ 2 89 2 90 2 input_msg_size fixed bin, /* maximum input message size in chars */ 2 91 2 framing_chars unaligned, 2 92 3 frame_begin char (1) unaligned, /* frame-begin character */ 2 93 3 frame_end char (1) unaligned, /* frame-end character */ 2 94 2 max_output_block fixed bin (18) unsigned unaligned, /* maximum size of output block in block_acknowledge */ 2 95 2 96 2 input_suspend_seq unaligned, /* sequence for input suspension */ 2 97 3 count fixed bin (9) unsigned, 2 98 3 chars char (3), 2 99 2 input_resume_seq unaligned, /* likewise for input resumption */ 2 100 3 count fixed bin (9) unsigned, 2 101 3 chars char (3), 2 102 2 103 2 output_suspend_etb_seq unaligned, /* sequence for output suspension or end_of_block */ 2 104 3 count fixed bin (9) unsigned, 2 105 3 chars char (3), 2 106 2 output_resume_ack_seq unaligned, /* likewise for resumption or ack */ 2 107 3 count fixed bin (9) unsigned, 2 108 3 chars char (3), 2 109 2 110 2 flags unaligned, /* tty dim flag bits */ 2 111 3 breakall_enabled bit (1) unaligned, /* channel is permitted to use breakall mode */ 2 112 3 dont_count_next bit (1) unaligned, /* next output character is escaped */ 2 113 3 keyboard_locking bit (1) unaligned, /* ON if doing keybd locking for ASCIi line type */ 2 114 3 no_printer_off bit (1) unaligned, /* reject printer_off/printer_on orders */ 2 115 3 break_char_pending bit (1) unaligned, /* break character is in preconverted buffer */ 2 116 3 uproc_attached bit (1) unaligned, /* user process has attached device */ 2 117 3 block_acknowledge bit (1) unaligned, /* block acknowledgement output protocol */ 2 118 3 flags_pad bit (27) unaligned, 2 119 2 120 2 actshift bit (2) unaligned, /* tty shift, 00 none, 01 lower, 10 upper, 11 unknown */ 2 121 2 122 2 cumulative_meters, /* continuously running meters */ 2 123 3 read_calls fixed bin (35), /* number of calls to tty_read */ 2 124 3 write_calls fixed bin (35), /* number of calls to tty_write */ 2 125 3 read_chars fixed bin (35), /* after conversion */ 2 126 3 write_chars fixed bin (35), /* before conversion */ 2 127 3 read_time fixed bin (71), /* total time spent in tty_read */ 2 128 3 write_time fixed bin (71), /* total time spent in tty_write */ 2 129 2 saved_meters like tcb.cumulative_meters, /* meters saved at last dialup */ 2 130 2 131 2 can_type fixed binary (9) unaligned unsigned, /* type of canonicalization to use on this channel */ 2 132 2 pad1 bit (27) unaligned, /* to word boundary */ 2 133 2 time_dialed fixed bin (71); /* clock time of last copy_meters order */ 2 134 2 135 /* END INCLUDE FILE ... tcb.incl.pl1 */ 266 267 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 */ 268 269 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 */ 270 271 5 1 /* BEGIN INCLUDE FILE ... channel_summary.incl.pl1 */ 5 2 5 3 /* Include file describing structure filled in by mpx_summary and subchan_summary 5 4* entries of multiplexer-specific metering subroutines for use by comm_channel_meters -summary 5 5**/ 5 6 5 7 /* Created April 1981 by Robert Coren */ 5 8 5 9 dcl summary_ptr ptr; 5 10 dcl CHANNEL_SUMMARY_VERSION_1 fixed bin internal static options (constant) init (1); 5 11 5 12 dcl 1 channel_summary based (summary_ptr) aligned, 5 13 2 version fixed bin, 5 14 2 baud_rate fixed bin, 5 15 2 time_since_dial fixed bin (71), 5 16 2 flags, 5 17 3 invalid_input bit (1) unal, 5 18 3 output_re_xmit bit (1) unal, 5 19 3 timeout bit (1) unal, 5 20 3 pre_exhaust bit (1) unal, 5 21 3 exhaust bit (1) unal, 5 22 3 xte bit (1) unal, 5 23 3 bell_quit bit (1) unal, 5 24 3 echo_overflow bit (1) unal, 5 25 3 parity bit (1) unal, 5 26 3 ssqo bit (1) unal, 5 27 3 hsqo bit (1) unal, 5 28 3 alloc_failure bit (1) unal, 5 29 3 synchronous bit (1) unal, 5 30 3 breakall bit (1) unal, 5 31 3 echoplex bit (1) unal, 5 32 3 padb bit (21) unal, 5 33 2 error_count fixed bin, 5 34 2 user_process bit (36); 5 35 5 36 /* END INCLUDE FILE ... channel_summary.incl.pl1 */ 272 273 end tty_meters_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1449.2 tty_meters_.pl1 >dumps>old>recomp>tty_meters_.pl1 264 1 06/18/81 0900.8 tty_channel_meters.incl.pl1 >ldd>include>tty_channel_meters.incl.pl1 266 2 06/18/81 0900.8 tcb.incl.pl1 >ldd>include>tcb.incl.pl1 268 3 06/19/81 2115.0 channel_meters.incl.pl1 >ldd>include>channel_meters.incl.pl1 270 4 06/19/81 2115.0 comm_meters_disp_flags.incl.pl1 >ldd>include>comm_meters_disp_flags.incl.pl1 272 5 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 146 DISPLAY_MPX_ERROR constant bit(36) initial unaligned dcl 4-11 ref 143 DISPLAY_MPX_SINCE_BOOT constant bit(36) initial unaligned dcl 4-13 ref 160 DISPLAY_MPX_SUMMARY constant bit(36) initial unaligned dcl 4-12 ref 140 TTY_CHANNEL_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 1-10 ref 110 a_area_ptr parameter pointer dcl 26 ref 96 101 a_chan_meterp parameter pointer dcl 30 ref 127 134 245 252 a_chan_name parameter char unaligned dcl 28 ref 127 130 a_code parameter fixed bin(35,0) dcl 34 set ref 96 102* 105* 117 124* 127 136* 245 250* a_flags parameter bit(36) dcl 31 ref 127 135 a_iocbp parameter pointer dcl 29 ref 127 131 a_since_boot parameter bit(1) unaligned dcl 32 ref 245 253 a_summary_ptr parameter pointer dcl 33 ref 245 251 a_tty_meterp parameter pointer dcl 27 set ref 96 109* 110 117 122 area 000166 stack reference condition dcl 94 ref 103 areap 000100 automatic pointer dcl 38 set ref 101* 109 baud_rate 4 based fixed bin(17,0) level 2 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 256 baud_rate 1 based fixed bin(17,0) level 2 in structure "channel_summary" dcl 5-12 in procedure "tty_meters_" set ref 256* breakall 4(13) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 5-12 in procedure "tty_meters_" set ref 260* breakall 1 based bit(1) level 3 in structure "tty_channel_meters" packed unaligned dcl 1-12 in procedure "tty_meters_" ref 260 brief 000115 automatic bit(1) unaligned dcl 43 set ref 146* 212 chan_meterp 000176 automatic pointer dcl 3-7 set ref 134* 138 147 150 153 156 157 158 178 181 184 187 188 189 252* 254 chan_name 000102 automatic char(32) unaligned dcl 40 set ref 130* channel_meters based structure level 1 dcl 3-11 channel_summary based structure level 1 dcl 5-12 control_call_time 36 based fixed bin(71,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 156 control_call_time 60 based fixed bin(71,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 187 control_calls 52 based fixed bin(17,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 184 control_calls 000146 automatic fixed bin(35,0) dcl 63 in procedure "tty_meters_" set ref 168* 184* 215* 215 220 220 control_calls 30 based fixed bin(17,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 153 control_time 000154 automatic fixed bin(71,0) dcl 66 set ref 171* 187* 220* 220 converted_output_chars 47 based fixed bin(35,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 181 converted_output_chars 25 based fixed bin(35,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 150 cumulative 24 based structure level 2 dcl 3-11 cumulative_meters 32 based structure level 2 dcl 2-20 current_meters 6 based structure level 2 dcl 1-12 echoplex 1(01) based bit(1) level 3 in structure "tty_channel_meters" packed unaligned dcl 1-12 in procedure "tty_meters_" ref 261 echoplex 4(14) based bit(1) level 3 in structure "channel_summary" packed unaligned dcl 5-12 in procedure "tty_meters_" set ref 261* elapsed_time 000164 automatic fixed bin(71,0) dcl 70 set ref 193* 239* 239* error_table_$noalloc 000020 external static fixed bin(35,0) dcl 88 ref 105 flags 4 based structure level 2 in structure "channel_summary" dcl 5-12 in procedure "tty_meters_" flags 000114 automatic bit(36) dcl 42 in procedure "tty_meters_" set ref 135* 140 143 146 160 flags 1 based structure level 2 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" in_after_conv 000141 automatic fixed bin(35,0) dcl 58 set ref 163* 179* 196* 196 204 in_before_conv 000140 automatic fixed bin(35,0) dcl 57 set ref 162* 178* 196* 196 204 227 239 int_time 000160 automatic fixed bin(71,0) dcl 68 set ref 173* 189* 233* interrupt_time 40 based fixed bin(71,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 158 interrupt_time 62 based fixed bin(71,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 189 interrupts 000156 automatic fixed bin(35,0) dcl 67 set ref 172* 188* 231* 233 ioa_$ioa_switch 000010 constant entry external dcl 80 ref 195 196 200 204 208 214 215 220 227 231 233 237 239 iocbp 000112 automatic pointer dcl 41 set ref 131* 132 132* 195* 196* 200* 204* 208* 214* 215* 220* 227* 231* 233* 237* 239* iox_$user_output 000022 external static pointer dcl 89 ref 132 last_dialed_time 2 based fixed bin(71,0) level 2 dcl 1-12 ref 190 258 258 m_area based area(256) dcl 75 ref 109 meter_format_$picture 000014 constant entry external dcl 82 ref 196 196 200 200 215 215 215 215 231 meter_format_$quotient 000016 constant entry external dcl 83 ref 196 200 204 204 208 208 220 220 220 220 227 227 233 239 239 mpx_specific_meterp 16 based pointer level 2 dcl 3-11 ref 138 254 out_after_conv 000143 automatic fixed bin(35,0) dcl 60 set ref 165* 181* 200* 200 208 out_before_conv 000142 automatic fixed bin(35,0) dcl 59 set ref 164* 180* 200* 200 208 227 239 read_calls 000144 automatic fixed bin(35,0) dcl 61 in procedure "tty_meters_" set ref 166* 182* 204 204 215* 215 220 220 227 read_calls 6 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 151 read_calls 16 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 182 read_chars 10 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 148 read_chars 20 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 179 read_time 000150 automatic fixed bin(71,0) dcl 64 in procedure "tty_meters_" set ref 169* 185* 220* 220 read_time 22 based fixed bin(71,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 185 read_time 12 based fixed bin(71,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 154 saved 46 based structure level 2 dcl 3-11 saved_meters 16 based structure level 2 dcl 1-12 since_boot 000116 automatic bit(1) unaligned dcl 44 set ref 253* software_interrupts 53 based fixed bin(17,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 188 software_interrupts 31 based fixed bin(17,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 157 start_time 000162 automatic fixed bin(71,0) dcl 69 set ref 174* 190* 193 summary_ptr 000200 automatic pointer dcl 5-9 set ref 251* 256 257 258 260 261 system_info_$timeup 000012 constant entry external dcl 81 ref 174 tcb based structure level 1 dcl 2-20 time_since_dial 2 based fixed bin(71,0) level 2 dcl 5-12 set ref 258* total_control_calls 000125 automatic fixed bin(35,0) dcl 51 set ref 153* 168 184 total_control_time 000132 automatic fixed bin(71,0) dcl 54 set ref 156* 171 187 total_in_after_conv 000120 automatic fixed bin(35,0) dcl 46 set ref 148* 163 179 total_in_before_conv 000117 automatic fixed bin(35,0) dcl 45 set ref 147* 162 178 total_int_time 000136 automatic fixed bin(71,0) dcl 56 set ref 158* 173 189 total_ints 000134 automatic fixed bin(35,0) dcl 55 set ref 157* 172 188 total_out_after_conv 000122 automatic fixed bin(35,0) dcl 48 set ref 150* 165 181 total_out_before_conv 000121 automatic fixed bin(35,0) dcl 47 set ref 149* 164 180 total_read_calls 000123 automatic fixed bin(35,0) dcl 49 set ref 151* 166 182 total_read_time 000126 automatic fixed bin(71,0) dcl 52 set ref 154* 169 185 total_write_calls 000124 automatic fixed bin(35,0) dcl 50 set ref 152* 167 183 total_write_time 000130 automatic fixed bin(71,0) dcl 53 set ref 155* 170 186 tty_channel_meters based structure level 1 dcl 1-12 set ref 109 123 tty_meterp 000174 automatic pointer dcl 1-8 set ref 122* 123 138* 148 149 151 152 154 155 179 180 182 183 185 186 190 254* 256 257 258 258 260 261 unconverted_input_chars 46 based fixed bin(35,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 178 unconverted_input_chars 24 based fixed bin(35,0) level 3 in structure "channel_meters" dcl 3-11 in procedure "tty_meters_" ref 147 user_process 6 based bit(36) level 2 in structure "channel_summary" dcl 5-12 in procedure "tty_meters_" set ref 257* user_process 5 based bit(36) level 2 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 257 version based fixed bin(17,0) level 2 dcl 1-12 set ref 110* write_calls 000145 automatic fixed bin(35,0) dcl 62 in procedure "tty_meters_" set ref 167* 183* 208 208 215* 215 220 220 227 write_calls 7 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 152 write_calls 17 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 183 write_chars 11 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 149 write_chars 21 based fixed bin(35,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 180 write_time 000152 automatic fixed bin(71,0) dcl 65 in procedure "tty_meters_" set ref 170* 186* 220* 220 write_time 14 based fixed bin(71,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 155 write_time 24 based fixed bin(71,0) level 3 in structure "tty_channel_meters" dcl 1-12 in procedure "tty_meters_" ref 186 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 5-10 code automatic fixed bin(35,0) dcl 39 tcbp automatic pointer dcl 2-18 NAMES DECLARED BY EXPLICIT CONTEXT. allocate_mpx 000260 constant entry external dcl 96 display_mpx 000363 constant entry external dcl 127 exit 000330 constant label dcl 112 ref 106 free_mpx 000335 constant entry external dcl 117 mpx_summary 002341 constant entry external dcl 245 tty_meters_ 000246 constant entry external dcl 12 NAMES DECLARED BY CONTEXT OR IMPLICATION. clock builtin function ref 193 258 null builtin function ref 132 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2562 2606 2417 2572 Length 3120 2417 24 275 143 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_meters_ 254 external procedure is an external procedure. on unit on line 103 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tty_meters_ 000100 areap tty_meters_ 000102 chan_name tty_meters_ 000112 iocbp tty_meters_ 000114 flags tty_meters_ 000115 brief tty_meters_ 000116 since_boot tty_meters_ 000117 total_in_before_conv tty_meters_ 000120 total_in_after_conv tty_meters_ 000121 total_out_before_conv tty_meters_ 000122 total_out_after_conv tty_meters_ 000123 total_read_calls tty_meters_ 000124 total_write_calls tty_meters_ 000125 total_control_calls tty_meters_ 000126 total_read_time tty_meters_ 000130 total_write_time tty_meters_ 000132 total_control_time tty_meters_ 000134 total_ints tty_meters_ 000136 total_int_time tty_meters_ 000140 in_before_conv tty_meters_ 000141 in_after_conv tty_meters_ 000142 out_before_conv tty_meters_ 000143 out_after_conv tty_meters_ 000144 read_calls tty_meters_ 000145 write_calls tty_meters_ 000146 control_calls tty_meters_ 000150 read_time tty_meters_ 000152 write_time tty_meters_ 000154 control_time tty_meters_ 000156 interrupts tty_meters_ 000160 int_time tty_meters_ 000162 start_time tty_meters_ 000164 elapsed_time tty_meters_ 000174 tty_meterp tty_meters_ 000176 chan_meterp tty_meters_ 000200 summary_ptr tty_meters_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext mpfx2 enable ext_entry ext_entry_desc int_entry alloc_based free_based clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$ioa_switch meter_format_$picture meter_format_$quotient system_info_$timeup 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 000245 22 000253 96 000254 101 000272 102 000276 103 000277 105 000313 106 000316 109 000321 110 000326 112 000330 117 000331 122 000347 123 000352 124 000354 125 000355 127 000356 130 000403 131 000411 132 000414 134 000424 135 000427 136 000431 138 000432 140 000434 143 000436 146 000440 147 000443 148 000445 149 000447 150 000451 151 000453 152 000455 153 000457 154 000461 155 000463 156 000465 157 000467 158 000471 160 000473 162 000476 163 000500 164 000502 165 000504 166 000506 167 000510 168 000512 169 000514 170 000516 171 000520 172 000522 173 000524 174 000526 175 000535 178 000536 179 000544 180 000552 181 000560 182 000566 183 000574 184 000602 185 000610 186 000613 187 000616 188 000621 189 000627 190 000632 193 000634 195 000637 196 000657 200 001000 204 001121 208 001240 212 001357 214 001361 215 001401 220 001527 227 001742 231 002061 233 002122 237 002177 239 002222 243 002333 245 002334 250 002353 251 002354 252 002360 253 002363 254 002370 256 002372 257 002375 258 002377 260 002404 261 002411 262 002416 ----------------------------------------------------------- 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