THIS FILE IS DAMAGED ry Johnson for variable-size buffers 3 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 3 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 3 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 3 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 3 10* Modified November 1979 by C. Hornig for MCS tracing. 3 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 3 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 3 13* Modified March 1980 by Robert Coren to reorganize metering information 3 14* Modified December 1980 by Robert Coren to add FNP-specific events 3 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 3 16* Modified November 1984 by Robert Coren to add tty_area_lock 3 17**/ 3 18 3 19 dcl ttybp ptr, 3 20 tty_buf$ ext static, /* tty buffer segment */ 3 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 3 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 3 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 3 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 3 25 3 26 3 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 3 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 3 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 3 30 3 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 3 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 3 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 3 34 3 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 3 36 2 slock bit (36), /* per system lock */ 3 37 2 absorig fixed bin (24), /* abs address of this seg */ 3 38 2 borig bit (18), /* index of start of buffer area */ 3 39 2 bleft fixed bin (18), /* words left in pool */ 3 40 2 free bit (18), /* pointer to start of free pool */ 3 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 3 42 2 padb1 bit (28) unaligned, 3 43 2 lct_ptr ptr, /* pointer to logical channel table */ 3 44 3 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 3 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 3 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 3 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 3 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 3 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 3 51 2 minbuf fixed bin (18), /* min output buffer size */ 3 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 3 53 3 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 3 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 3 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 3 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 3 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 3 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 3 60 3 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 3 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 3 63 2 bfx fixed bin, /* used in calls to iobm */ 3 64 2 nquits fixed bin (35), /* number of quits */ 3 65 2 space_needed_data, 3 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 3 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 3 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 3 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 3 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 3 71 3 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 3 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 3 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 3 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 3 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 3 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 3 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 3 79 3 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 3 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 3 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 3 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 3 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 3 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 3 86 3 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 3 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 3 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 3 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 3 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 3 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 3 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 3 94 3 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 3 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 3 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 3 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 3 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 3 100 2 echo_neg_mux_nonecho fixed bin (35), 3 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 3 102 3 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 3 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 3 105 2 trace unaligned, /* tracing information */ 3 106 3 flags, 3 107 4 enable bit, /* global tracing control */ 3 108 4 default_mode bit, /* whether to trace channels by default */ 3 109 4 read bit, /* read */ 3 110 4 write bit, /* write */ 3 111 4 data bit, /* buffers on reads and writes */ 3 112 4 control bit, /* control, priv_control, and hpriv_control */ 3 113 4 modes bit, /* (get set check)_modes */ 3 114 4 interrupt bit, /* interrupt, interrupt_later */ 3 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 3 116 4 start bit, /* start, stop */ 3 117 4 shutdown bit, /* shutdown */ 3 118 4 space_man bit, /* tty_space_man$* */ 3 119 4 pad_flags bit (6), 3 120 3 data_offset bit (18), /* offset of tracing data */ 3 121 3 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 3 123 3 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 3 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 3 126 2 timer_count fixed bin, /* Number of timers outstanding */ 3 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 3 128 3 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 3 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 3 131 3 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 3 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 3 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 3 135 3 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 3 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 3 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 3 139 3 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 3 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 3 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 3 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 3 144 3 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 3 146 3 147 2 pad2 (13) fixed bin (35), 3 148 3 149 2 free_space fixed bin; /* start of free space region */ 3 150 3 151 4 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 4 2 4 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 4 4 4 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 4 6 4 7 /* format: style3 */ 4 8 4 9 declare lock_ptr pointer; 4 10 declare 1 hc_fast_lock aligned based (lock_ptr), 4 11 2 pid bit (36) aligned, /* holder of lock */ 4 12 2 event bit (36) aligned, /* event associated with lock */ 4 13 2 flags aligned, 4 14 3 notify_sw bit (1) unaligned, 4 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 4 16 4 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 3 152 3 153 3 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 490 491 5 1 /* BEGIN INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 5 2 5 3 /* Defines constants and structures used by MCS interrupt handlers */ 5 4 5 5 /* Created 08/21/78 by Robert Coren */ 5 6 /* Echo negotiation types added sometime by Bernie Greenberg */ 5 7 /* TIMER and USER_INTERRUPT added in spring of 1982 by Olin Sibert */ 5 8 /* MASKED type added June 23, 1982, by Robert Coren */ 5 9 5 10 dcl DIALUP fixed bin int static options (constant) init (1); 5 11 dcl HANGUP fixed bin int static options (constant) init (2); 5 12 dcl CRASH fixed bin int static options (constant) init (3); 5 13 dcl SEND_OUTPUT fixed bin int static options (constant) init (4); 5 14 dcl INPUT_AVAILABLE fixed bin int static options (constant) init (5); 5 15 dcl ACCEPT_INPUT fixed bin int static options (constant) init (6); 5 16 dcl INPUT_REJECTED fixed bin int static options (constant) init (7); 5 17 dcl QUIT fixed bin int static options (constant) init (8); 5 18 dcl LINE_STATUS fixed bin int static options (constant) init (9); 5 19 dcl DIAL_STATUS fixed bin int static options (constant) init (10); 5 20 dcl WRU_TIMEOUT fixed bin int static options (constant) init (11); 5 21 dcl SPACE_AVAILABLE fixed bin int static options (constant) init (12); 5 22 dcl ACKNOWLEDGE_ECHNEGO_INIT fixed bin int static options (constant) init (13); 5 23 dcl ACKNOWLEDGE_ECHNEGO_STOP fixed bin int static options (constant) init (14); 5 24 dcl TIMER fixed bin int static options (constant) init (15); 5 25 dcl USER_INTERRUPT fixed bin int static options (constant) init (16); 5 26 dcl MASKED fixed bin int static options (constant) init (17); 5 27 5 28 dcl interrupt_info bit (72) aligned; 5 29 5 30 dcl 1 dialup_info aligned, /* for use with DIALUP interrupt */ 5 31 2 line_type fixed bin (9) unal uns, 5 32 2 buffer_pad fixed bin (9) unal uns, /* free space multiplexer would like in output bufs */ 5 33 2 baud_rate fixed bin (18) unal uns, 5 34 2 max_buf_size fixed bin (9) unal uns, 5 35 2 receive_mode_device bit (1) unal, /* device must be told to enter receive mode */ 5 36 2 pad bit (26) unal; 5 37 5 38 dcl 1 rtx_info aligned, /* for use with ACCEPT_INPUT interrupt */ 5 39 2 input_chain unaligned, 5 40 3 chain_head bit (18) unaligned, 5 41 3 chain_tail bit (18) unaligned, 5 42 2 input_count fixed bin (18) unal uns, 5 43 2 flags unaligned, 5 44 3 break_char bit (1), /* data contains a break character */ 5 45 3 output_in_fnp bit (1), /* there is output in the FNP */ 5 46 3 output_in_ring_0 bit (1), /* there is output in ring 0 */ 5 47 3 formfeed_present bit (1), /* input contains a formfeed character */ 5 48 3 pad bit (14); 5 49 5 50 dcl 1 timer_info aligned, /* Info supplied with TIMER interrupt */ 5 51 2 id bit (36) aligned, /* ID which was supplied in call to mcs_timer$set */ 5 52 2 subchan_idx fixed bin; /* Index of subchannel on whose behalf timer was set */ 5 53 5 54 /* END INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 492 6 1 /* BEGIN INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 6 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 6 8* Add data needed for the uncp multiplexer (DSA gateway) interface 6 9* implementation. 6 10* END HISTORY COMMENTS */ 6 11 6 12 6 13 /* 6 14* Separated from tty_buf.incl.pl1 aug 78 by J. Nicholls 6 15* Modified May 1979 by Larry Johnson to add max_buffer_tally array and to use unsigned variables. 6 16* Reported in February 1982 the modifications to add the "turn" bit in flags. 6 17**/ 6 18 6 19 dcl blockp ptr; /* pointer which block entry is based on */ 6 20 dcl free_blockp ptr; /* pointer to head of free space chain */ 6 21 6 22 6 23 dcl 1 free_block aligned based (free_blockp), /* format of start of free block */ 6 24 2 next bit (18), /* foward pointer to next free block */ 6 25 2 size fixed bin; /* number of words in this block */ 6 26 6 27 6 28 dcl 1 buffer based (blockp) aligned, /* buffer definition */ 6 29 2 next fixed bin (18) unal uns, /* addr of next buffer */ 6 30 2 flags unaligned, 6 31 3 end_of_page bit (1) unaligned, /* buffer contains end of page */ 6 32 3 converted bit (1) unaligned, /* buffer contains converted input */ 6 33 3 break bit (1) unaligned, /* buffer contains break character */ 6 34 3 mark bit (1) unaligned, /* buffer contains first character after "mark" */ 6 35 3 turn bit (1) unaligned, /* ON if the turn must be sent */ 6 36 3 pad bit (1) unaligned, 6 37 2 size_code fixed bin (3) unal uns, /* (nwords/16) - 1 */ 6 38 2 tally fixed bin (9) unal uns, /* number of characters in buffer */ 6 39 2 chars (0:59) char (1) unaligned; /* room for 60 data characters */ 6 40 6 41 /* the following array, if indexed by buffer.size_code will give maximum number of characters permitted in that buffer */ 6 42 6 43 dcl max_buffer_tally (0:7) fixed bin int static options (constant) init (60, 124, 188, 252, 316, 380, 444, 508); 6 44 6 45 /* END INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 493 7 1 /* BEGIN INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 7 2 7 3 /* This include file defines the info structure(s) used with the get_meters order to MCM */ 7 4 /* A program that includes this include file must alos include lct.incl.pl1 */ 7 5 7 6 /* Written Decemeber 1980 by Robert Coren */ 7 7 7 8 dcl 1 get_comm_meters_info aligned based, /* info_ptr points to this */ 7 9 2 version fixed bin, 7 10 2 pad fixed bin, 7 11 2 subchan_ptr pointer, /* pointer to meters kept by the subchannel */ 7 12 2 logical_chan_ptr pointer, /* pointer to meters kept by channel_manager */ 7 13 2 parent_ptr pointer, /* pointer to meters kept by the parent multiplexer */ 7 14 2 subchan_type fixed bin, /* multiplexer type of subchannel */ 7 15 2 parent_type fixed bin; /* multiplexer type of parent */ 7 16 7 17 dcl 1 logical_chan_meters based aligned, /* pointed to by get_comm_meters_info.logical_chan_ptr */ 7 18 2 current_meters like lcte.meters, /* latest values */ 7 19 2 saved_meters like lcte.meters; /* values as of last copy_meters */ 7 20 7 21 dcl GET_COMM_METERS_INFO_VERSION_1 fixed bin int static options (constant) init (1); 7 22 7 23 /* END INCLUDE FILE...get_comm_meters_info.incl.pl1 */ 494 495 496 end; /* channel_manager_ */ 497 498 /* BEGIN MESSAGE DOCUMENTATION 499* 500* Message: 501* channel_manager: Cleanup while processing interrupt for devx N. 502* 503* S: $crash 504* 505* T: $run 506* 507* M: The cleanup condition was signalled while processing an 508* interrupt for the channel with devx N. 509* 510* A: $inform 511* 512* 513* Message: 514* channel_manager: Error while processing interrupt for devx N. REASON 515* 516* S: $crash 517* 518* T: $run 519* 520* M: An error occurred while processing an interrupt for the channel 521* with devx N. The specific kind of error is explained by REASON. 522* 523* END MESSAGE DOCUMENTATION */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0824.9 channel_manager.pl1 >special_ldd>install>MR12.3-1114>channel_manager.pl1 486 1 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 488 2 10/26/89 2011.9 cmtv.incl.pl1 >ldd>include>cmtv.incl.pl1 490 3 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 3-152 4 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 492 5 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 493 6 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.incl.pl1 494 7 06/18/81 0900.6 get_comm_meters_info.incl.pl1 >ldd>include>get_comm_meters_info.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. ACCEPT_INPUT constant fixed bin(17,0) initial dcl 5-15 ref 289 303 CHECK_MODES 000001 constant fixed bin(17,0) initial dcl 2-36 set ref 231* CONTROL 000003 constant fixed bin(17,0) initial dcl 2-36 set ref 185* GET_MODES 000000 constant fixed bin(17,0) initial dcl 2-36 set ref 251* INTERRUPT constant fixed bin(17,0) initial dcl 2-36 set ref 297* Meters parameter structure level 1 dcl 390 set ref 388 398 READ 000005 constant fixed bin(17,0) initial dcl 2-36 set ref 109* SEND_OUTPUT constant fixed bin(17,0) initial dcl 5-13 ref 309 SET_MODES 000002 constant fixed bin(17,0) initial dcl 2-36 set ref 211* WRITE 000004 constant fixed bin(17,0) initial dcl 2-36 set ref 153* addr builtin function dcl 82 ref 352 361 363 382 441 blockp 000166 automatic pointer dcl 6-19 set ref 111* 111* 115* 116 149* 149* 151* 152 156* 156* 159* 160 buffer based structure level 1 dcl 6-28 chain_head 000164 automatic bit(18) level 3 packed packed unaligned dcl 5-38 set ref 293 293 chan_type parameter fixed bin(17,0) dcl 430 ref 426 441 chan_type_index 2 based fixed bin(17,0) array level 2 dcl 2-29 ref 441 channel_type 2 based fixed bin(8,0) level 2 packed packed unaligned dcl 1-20 ref 109 153 185 211 231 251 297 417 check_modes_ev 000146 automatic entry variable dcl 2-95 set ref 231* 232 cleanup 000112 stack reference condition dcl 63 ref 107 147 183 209 229 249 271 341 clock builtin function dcl 82 ref 355 393 402 cmtv based structure level 1 dcl 2-29 cmtv$cmtv 000034 external static fixed bin(17,0) dcl 2-24 set ref 363 cmtvp 000124 automatic pointer dcl 2-26 set ref 363* 441 441 code 000254 automatic fixed bin(35,0) dcl 462 set ref 468* 469 469* code_ptr 000234 automatic pointer dcl 432 in procedure "make_entry" set ref 441* 442 445 code_ptr 000242 automatic pointer level 2 in structure "entry_var" dcl 436 in procedure "make_entry" set ref 445* code_word based fixed bin(17,0) dcl 433 ref 442 control 24 based structure level 3 in structure "lcte" dcl 1-20 in procedure "channel_manager" set ref 313* control 24 based structure level 3 in structure "minor_lcte" dcl 58 in procedure "channel_manager" set ref 189* 215* 235* 255* control 102(05) based bit(1) level 4 in structure "tty_buf" packed packed unaligned dcl 3-35 in procedure "channel_manager" ref 179 control_ev 000136 automatic entry variable dcl 2-89 set ref 185* 186 crash_system 000143 constant fixed bin(17,0) initial dcl 68 set ref 271* 341* 358* 377* 469* current_meters based structure level 2 dcl 7-17 set ref 419* data 102(04) based bit(1) level 4 packed packed unaligned dcl 3-35 ref 124 143 289 data_base_ptr 1 based pointer level 2 packed packed unaligned dcl 1-20 ref 110 154 186 212 232 252 298 devx 000102 automatic fixed bin(17,0) dcl 49 set ref 271* 274* 277* 287* 293* 300* 337* 341* 343* 357* 358 358 358* 361 377* 381* 382 468* 469* 480* enable 102 based bit(1) level 4 packed packed unaligned dcl 3-35 ref 103 119 138 164 179 205 225 245 277 284 337 entries 23 based bit(72) array level 2 dcl 2-29 set ref 441 entry_type parameter fixed bin(17,0) dcl 429 ref 426 441 entry_var 000242 automatic structure level 1 dcl 436 set ref 447 env_ptr 2 000242 automatic pointer level 2 dcl 436 set ref 446* flags 2(09) based structure level 2 in structure "lcte" packed packed unaligned dcl 1-20 in procedure "channel_manager" flags 102 based structure level 3 in structure "tty_buf" packed packed unaligned dcl 3-35 in procedure "channel_manager" get_comm_meters_info based structure level 1 dcl 7-8 get_modes_ev 000152 automatic entry variable dcl 2-98 set ref 251* 252 hc_fast_lock based structure level 1 dcl 4-10 in 30 based structure array level 4 in structure "lct" dcl 1-11 in procedure "channel_manager" in 10 based structure level 3 in structure "minor_lcte" dcl 58 in procedure "channel_manager" set ref 128* in 2 based structure level 2 in structure "saved_meters" dcl 1-68 in procedure "channel_manager" in 26 based structure level 3 in structure "logical_chan_meters" dcl 7-17 in procedure "channel_manager" in 10 based structure level 3 in structure "lcte" dcl 1-20 in procedure "channel_manager" set ref 307* in 2 based structure level 3 in structure "logical_chan_meters" dcl 7-17 in procedure "channel_manager" in_bytes 6 based fixed bin(35,0) level 3 in structure "lcte" dcl 1-20 in procedure "channel_manager" set ref 306* 306 in_bytes 6 based fixed bin(35,0) level 3 in structure "minor_lcte" dcl 58 in procedure "channel_manager" set ref 115* 115 info_ptr 000224 automatic pointer dcl 414 set ref 416* 417 418 input_chain 000164 automatic structure level 2 packed packed unaligned dcl 5-38 input_count 1 000164 automatic fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-38 set ref 306 int_type 000101 automatic fixed bin(17,0) dcl 48 set ref 266* 274* 277 287 289 298* 303 309 333* 337 343* int_type_names 000006 constant char(16) initial array dcl 69 set ref 277* 287* 337* interrupt 102(07) based bit(1) level 4 packed packed unaligned dcl 3-35 ref 277 284 337 interrupt_ev 000156 automatic entry variable dcl 2-101 set ref 297* 298 lcmp 000222 automatic pointer dcl 413 set ref 418* 419 420 lct based structure level 1 dcl 1-11 lct_ptr 6 based pointer level 2 dcl 3-35 ref 353 lcte based structure level 1 dcl 1-20 lcte_array 20 based structure array level 2 dcl 1-11 set ref 361 382 lctep 000122 automatic pointer dcl 1-8 set ref 109 110 153 154 185 186 211 212 231 232 251 252 297 298 306 306 307 311 313 343 361* 376 377 379 381 382* 417 465 lctp 000120 automatic pointer dcl 1-7 set ref 353* 358 361 382 lock based bit(36) level 2 dcl 1-20 ref 377 locked 000104 automatic bit(1) dcl 51 set ref 274* 275 351* 471* 480 482* logical_chan_meters based structure level 1 dcl 7-17 logical_chan_ptr 4 based pointer level 2 dcl 7-8 ref 418 major_channel_devx 3 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-20 ref 343 381 major_channel_info 3 based structure level 2 dcl 1-20 max_no_lctes based fixed bin(17,0) level 2 dcl 1-11 ref 358 mcs_trace 000014 constant entry external dcl 87 ref 103 122 141 164 179 205 225 245 277 287 337 mcs_trace$buffer_chain 000016 constant entry external dcl 88 ref 124 143 293 meters 6 based structure level 2 in structure "lcte" dcl 1-20 in procedure "channel_manager" meters 26 based structure array level 3 in structure "lct" dcl 1-11 in procedure "channel_manager" meters 6 based structure level 2 in structure "minor_lcte" dcl 58 in procedure "channel_manager" set ref 190 419 minor_lcte based structure level 1 dcl 58 minor_lctep 000106 automatic pointer dcl 52 set ref 115 115 128 151 151 159 159 169 189 190 190 215 235 255 376* 419 420 modes 102(06) based bit(1) level 4 packed packed unaligned dcl 3-35 ref 205 225 245 new_entry 000236 automatic entry variable dcl 435 set ref 442* 447* 449 next based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 6-28 ref 116 141 152 160 no_channel_types based fixed bin(17,0) level 2 dcl 2-29 ref 441 441 null builtin function dcl 82 ref 111 122 156 164 446 out 16 based structure level 3 in structure "minor_lcte" dcl 58 in procedure "channel_manager" set ref 169* out 16 based structure level 3 in structure "lcte" dcl 1-20 in procedure "channel_manager" set ref 311* out_bytes 7 based fixed bin(35,0) level 3 dcl 58 set ref 151* 151 159* 159 parent_type 11 based fixed bin(17,0) level 2 dcl 7-8 set ref 417* pds$process_id 000010 external static bit(36) packed unaligned dcl 76 ref 377 pds$virtual_delta 000012 external static fixed bin(71,0) dcl 77 ref 355 393 402 pm_chain_ptr parameter pointer dcl 35 set ref 98 110* 111 111 122 122* 124* 133 141* 141 141 143* 149 154* 156 156 164 164* pm_code parameter fixed bin(35,0) dcl 42 set ref 98 110* 111 122 122* 133 154* 164 164* 174 186* 200 212* 220 232* 240 252* pm_control_type parameter char packed unaligned dcl 37 set ref 174 179* 186* 190 193 pm_devx parameter fixed bin(17,0) dcl 33 set ref 98 103* 122* 124* 133 141* 143* 164* 174 179* 200 205* 220 225* 240 245* 260 319 327 357 pm_info_ptr parameter pointer dcl 34 set ref 174 179* 186* 416 pm_int_data parameter bit(72) dcl 41 set ref 260 274* 277* 287* 292 298* 305 319 327 337* 343* pm_int_type parameter fixed bin(17,0) dcl 40 ref 260 266 319 327 333 pm_modes parameter char packed unaligned dcl 39 set ref 240 252* pm_modes_change_list_ptr parameter pointer dcl 38 set ref 200 205* 212* 220 225* 232* pm_more_input_flag parameter bit(1) dcl 36 set ref 98 110* 122* pointer builtin function dcl 82 ref 116 152 160 293 293 queued_entry 000100 automatic bit(1) dcl 47 set ref 263* 272 287* 300 322* read 102(02) based bit(1) level 4 packed packed unaligned dcl 3-35 ref 103 119 read_ev 000126 automatic entry variable dcl 2-83 set ref 109* 110 rel builtin function dcl 82 ref 111 149 156 rtx_info 000164 automatic structure level 1 dcl 5-38 set ref 292* 305* saved_meters based structure level 1 dcl 1-68 in procedure "channel_manager" set ref 190* 420 saved_meters 24 based structure level 2 in structure "logical_chan_meters" dcl 7-17 in procedure "channel_manager" set ref 420* saved_meters_ptr 32 based pointer level 2 dcl 58 ref 190 420 set_modes_ev 000142 automatic entry variable dcl 2-92 set ref 211* 212 special_lock 2(14) based bit(1) level 3 packed packed unaligned dcl 1-20 ref 465 subchan parameter fixed bin(17,0) dcl 372 in procedure "setup_major" set ref 369 379* subchan 000103 automatic fixed bin(17,0) dcl 50 in procedure "channel_manager" set ref 101* 110* 136* 154* 177* 186* 203* 212* 223* 232* 243* 252* subchannel 3(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-20 ref 379 syserr 000032 constant entry external dcl 94 ref 271 341 358 377 469 tally 0(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 6-28 set ref 115 141* 151 159 time_in 000110 automatic fixed bin(71,0) dcl 53 set ref 355* 393 402 trace 102 based structure level 2 packed packed unaligned dcl 3-35 tty_buf based structure level 1 dcl 3-35 tty_buf$ 000036 external static fixed bin(17,0) dcl 3-19 set ref 352 tty_lock$lock_channel 000020 constant entry external dcl 89 ref 468 tty_lock$lock_channel_int 000024 constant entry external dcl 91 ref 274 tty_lock$queue_interrupt 000030 constant entry external dcl 93 ref 343 tty_lock$unlock_channel 000022 constant entry external dcl 90 ref 480 tty_lock$unlock_channel_int 000026 constant entry external dcl 92 ref 300 ttybp 000162 automatic pointer dcl 3-19 set ref 103 103 116 119 119 124 138 138 143 152 160 164 164 179 179 205 205 225 225 245 245 277 277 284 284 289 293 293 337 337 352* 353 unspec builtin function dcl 82 set ref 292* 305* 447* 447 write 102(03) based bit(1) level 4 packed packed unaligned dcl 3-35 ref 138 164 write_ev 000132 automatic entry variable dcl 2-86 set ref 153* 154 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACKNOWLEDGE_ECHNEGO_INIT internal static fixed bin(17,0) initial dcl 5-22 ACKNOWLEDGE_ECHNEGO_STOP internal static fixed bin(17,0) initial dcl 5-23 CRASH internal static fixed bin(17,0) initial dcl 5-12 DIALUP internal static fixed bin(17,0) initial dcl 5-10 DIAL_STATUS internal static fixed bin(17,0) initial dcl 5-19 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 3-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 3-32 GET_COMM_METERS_INFO_VERSION_1 internal static fixed bin(17,0) initial dcl 7-21 HANGUP internal static fixed bin(17,0) initial dcl 5-11 HPRIV_CONTROL internal static fixed bin(17,0) initial dcl 2-36 INIT_CHANNEL internal static fixed bin(17,0) initial dcl 2-36 INIT_MULTIPLEXER internal static fixed bin(17,0) initial dcl 2-36 INPUT_AVAILABLE internal static fixed bin(17,0) initial dcl 5-14 INPUT_REJECTED internal static fixed bin(17,0) initial dcl 5-16 LINE_STATUS internal static fixed bin(17,0) initial dcl 5-18 MASKED internal static fixed bin(17,0) initial dcl 5-26 PRIV_CONTROL internal static fixed bin(17,0) initial dcl 2-36 QUIT internal static fixed bin(17,0) initial dcl 5-17 SHUTDOWN internal static fixed bin(17,0) initial dcl 2-36 SPACE_AVAILABLE internal static fixed bin(17,0) initial dcl 5-21 START internal static fixed bin(17,0) initial dcl 2-36 STOP internal static fixed bin(17,0) initial dcl 2-36 TERMINATE_CHANNEL internal static fixed bin(17,0) initial dcl 2-36 TERMINATE_MULTIPLEXER internal static fixed bin(17,0) initial dcl 2-36 TIMER internal static fixed bin(17,0) initial dcl 5-24 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 3-33 USER_INTERRUPT internal static fixed bin(17,0) initial dcl 5-25 WRU_TIMEOUT internal static fixed bin(17,0) initial dcl 5-20 abs_buf_limit internal static fixed bin(18,0) initial dcl 3-19 bsizec internal static fixed bin(17,0) initial dcl 3-28 buf_per_second internal static fixed bin(17,0) initial dcl 3-29 dialup_info automatic structure level 1 dcl 5-30 free_block based structure level 1 dcl 6-23 free_blockp automatic pointer dcl 6-20 hpriv_control_ev automatic entry variable dcl 2-80 init_channel_ev automatic entry variable dcl 2-56 init_multiplexer_ev automatic entry variable dcl 2-62 input_bpart internal static fixed bin(18,0) initial dcl 3-19 interrupt_info automatic bit(72) dcl 5-28 lcnt based structure level 1 dcl 1-65 lcntp automatic pointer dcl 1-63 lct_size automatic fixed bin(17,0) dcl 1-9 lock_ptr automatic pointer dcl 4-9 max_buffer_tally internal static fixed bin(17,0) initial array dcl 6-43 no_entry_types internal static fixed bin(17,0) initial dcl 2-36 output_bpart internal static fixed bin(18,0) initial dcl 3-19 priv_control_ev automatic entry variable dcl 2-77 qblock_size internal static fixed bin(17,0) initial dcl 3-27 shutdown_ev automatic entry variable dcl 2-74 start_ev automatic entry variable dcl 2-68 stop_ev automatic entry variable dcl 2-71 terminate_channel_ev automatic entry variable dcl 2-59 terminate_multiplexer_ev automatic entry variable dcl 2-65 timer_info automatic structure level 1 dcl 5-50 tty_ev internal static fixed bin(17,0) initial dcl 3-19 NAMES DECLARED BY EXPLICIT CONTEXT. channel_manager 000374 constant entry external dcl 14 check_modes 001570 constant entry external dcl 220 control 001217 constant entry external dcl 174 get_lc_meters 003017 constant entry internal dcl 408 ref 193 get_modes 001732 constant entry external dcl 240 interrupt 002105 constant entry external dcl 260 interrupt_common 002113 constant label dcl 266 set ref 323 interrupt_later 002473 constant entry external dcl 327 lock_channel 003115 constant entry internal dcl 459 ref 108 148 184 210 230 250 make_entry 003043 constant entry internal dcl 426 ref 109 153 185 211 231 251 297 meter_call 002762 constant entry internal dcl 388 ref 128 169 189 215 235 255 meter_interrupt 003000 constant entry internal dcl 398 ref 307 311 313 queued_interrupt 002461 constant entry external dcl 319 read 000407 constant entry external dcl 98 set_modes 001430 constant entry external dcl 200 setup 002634 constant entry internal dcl 348 ref 269 335 375 setup_major 002711 constant entry internal dcl 369 ref 101 136 177 203 223 243 undefined_entry 003107 constant entry internal dcl 452 ref 442 unlock_channel 003171 constant entry internal dcl 477 ref 107 117 147 162 183 187 209 213 229 233 249 253 write 000675 constant entry external dcl 133 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3640 3700 3310 3650 Length 4300 3310 40 364 327 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME channel_manager 332 external procedure is an external procedure. on unit on line 107 64 on unit on unit on line 147 64 on unit on unit on line 183 64 on unit on unit on line 209 64 on unit on unit on line 229 64 on unit on unit on line 249 64 on unit on unit on line 271 94 on unit on unit on line 341 94 on unit setup internal procedure shares stack frame of external procedure channel_manager. setup_major internal procedure shares stack frame of external procedure channel_manager. meter_call internal procedure shares stack frame of external procedure channel_manager. get_lc_meters internal procedure shares stack frame of external procedure channel_manager. make_entry internal procedure shares stack frame of external procedure channel_manager. undefined_entry 64 internal procedure is assigned to an entry variable. lock_channel internal procedure shares stack frame of external procedure channel_manager. unlock_channel 68 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME channel_manager 000100 queued_entry channel_manager 000101 int_type channel_manager 000102 devx channel_manager 000103 subchan channel_manager 000104 locked channel_manager 000106 minor_lctep channel_manager 000110 time_in channel_manager 000120 lctp channel_manager 000122 lctep channel_manager 000124 cmtvp channel_manager 000126 read_ev channel_manager 000132 write_ev channel_manager 000136 control_ev channel_manager 000142 set_modes_ev channel_manager 000146 check_modes_ev channel_manager 000152 get_modes_ev channel_manager 000156 interrupt_ev channel_manager 000162 ttybp channel_manager 000164 rtx_info channel_manager 000166 blockp channel_manager 000222 lcmp get_lc_meters 000224 info_ptr get_lc_meters 000234 code_ptr make_entry 000236 new_entry make_entry 000242 entry_var make_entry 000254 code lock_channel THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry ext_entry_desc int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mcs_trace mcs_trace$buffer_chain syserr tty_lock$lock_channel tty_lock$lock_channel_int tty_lock$queue_interrupt tty_lock$unlock_channel tty_lock$unlock_channel_int THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cmtv$cmtv pds$process_id pds$virtual_delta tty_buf$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000373 98 000401 101 000417 103 000421 107 000450 108 000472 109 000473 110 000501 111 000523 115 000540 116 000547 117 000555 119 000561 122 000570 124 000643 128 000661 129 000670 133 000671 136 000705 138 000707 141 000716 143 000762 147 001000 148 001022 149 001023 151 001032 152 001041 153 001047 154 001055 156 001075 159 001110 160 001122 162 001130 164 001134 169 001202 170 001211 174 001212 177 001235 179 001237 183 001303 184 001325 185 001326 186 001334 187 001370 189 001374 190 001403 193 001420 196 001425 200 001426 203 001440 205 001442 209 001501 210 001523 211 001524 212 001532 213 001552 215 001556 216 001565 220 001566 223 001600 225 001602 229 001641 230 001663 231 001664 232 001672 233 001712 235 001716 236 001725 240 001726 243 001750 245 001752 249 002003 250 002025 251 002026 252 002034 253 002065 255 002071 256 002100 260 002101 263 002112 266 002113 269 002116 271 002117 272 002157 274 002162 275 002200 277 002203 280 002250 284 002251 287 002260 289 002317 292 002326 293 002333 297 002351 298 002357 300 002375 303 002407 305 002412 306 002417 307 002426 308 002434 309 002435 311 002437 312 002446 313 002447 315 002456 319 002457 322 002466 323 002470 327 002471 333 002500 335 002503 337 002504 341 002551 343 002611 344 002633 348 002634 351 002635 352 002636 353 002641 355 002643 357 002647 358 002652 361 002700 363 002705 365 002710 369 002711 375 002713 376 002714 377 002716 379 002744 381 002752 382 002755 384 002761 388 002762 392 002764 393 002770 394 002777 398 003000 401 003002 402 003010 403 003016 408 003017 416 003020 417 003024 418 003030 419 003032 420 003036 421 003042 426 003043 441 003045 442 003062 445 003070 446 003071 447 003073 449 003077 452 003106 454 003114 459 003115 465 003116 468 003123 469 003134 471 003165 473 003167 477 003170 480 003176 482 003210 484 003212 ----------------------------------------------------------- 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