COMPILATION LISTING OF SEGMENT x25_analyze_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/25/89 1052.8 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* subroutine called by tty_analyze for X.25 multiplexers */ 11 /* Written sometime-or-other by Charles Hornig */ 12 /* Modified July 1983 by Robert Coren to make print_chain subroutine check for 13* null chain pointer. */ 14 15 /* format: style4,delnl,insnl,tree,ifthenstmt,indnoniterend */ 16 x25_analyze_: 17 procedure (Ttybp, Areap, Devx, Check_used, Long); 18 19 dcl (Ttybp, Areap) ptr parameter; 20 dcl Devx fixed bin parameter; 21 dcl Check_used entry (ptr, fixed bin) parameter; 22 dcl Long bit (1) aligned parameter; 23 24 dcl x25_dump_ entry (ptr, ptr, ptr, fixed bin, bit (1) aligned); 25 26 dcl i fixed bin; 27 28 dcl (addr, binary, currentsize, pointer, rel) builtin; 29 30 x25_data_ptr = 31 pointer (Ttybp, 32 rel (addr (pointer (Ttybp, rel (Ttybp -> tty_buf.lct_ptr)) -> lct.lcte_array (Devx)) -> lcte.data_base_ptr) 33 ); 34 35 call x25_dump_ (Ttybp, Areap, x25_data_ptr, -1, ^Long); 36 call trace_chain (x25_data.write_head); 37 do i = 1 to x25_data.n_sc; 38 call x25_dump_ (Ttybp, Areap, x25_data_ptr, i, ^Long); 39 end; 40 do i = 1 to x25_data.n_sc; 41 call trace_chain (x25_data.sc (i).write_head); 42 end; 43 if x25_data.lc_ptr ^= null () then do; 44 x25_data.lc_ptr = ptr (Ttybp, rel (x25_data.lc_ptr)); 45 call Check_used (x25_data.lc_ptr, currentsize (x25_lces)); 46 end; 47 call Check_used (x25_data_ptr, currentsize (x25_data)); 48 return; 49 50 /* * * * * * * * * TRACE_CHAIN * * * * * * * * * * */ 51 52 trace_chain: 53 procedure (Chain); 54 dcl Chain ptr parameter; 55 dcl buf_offset fixed bin (18); 56 57 if Chain = null () then return; 58 buf_offset = binary (rel (Chain), 18); 59 do while ((buf_offset ^= 0) & (buf_offset < 261120)); 60 blockp = pointer (Ttybp, buf_offset); 61 buf_offset = buffer.next; 62 call Check_used (blockp, 16 * (binary (buffer.size_code, 3) + 1)); 63 end; 64 return; 65 end trace_chain; 66 1 1 /* BEGIN INCLUDE FILE ... x25_data.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(89-03-20,Parisek), approve(89-06-01,MCR8110), 1 6* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 1 7* Add support of protocol mpx. 1 8* END HISTORY COMMENTS */ 1 9 1 10 1 11 /* Created june 9, 1979 by B.Westcott */ 1 12 /* Revised January 1982 by C. Hornig */ 1 13 /* Modified May 1982, by D. W. Cousins for level 2 activation data */ 1 14 /* Modified August 1983 by Jeff Schiller to implement the "reverse charging" facility. */ 1 15 /* Modified October 1984 by R.J.C. Kissel to have a value for the idle timer to use for breakall mode. */ 1 16 /* Modified October 1984 by R.J.C. Kissel to add the write_status_sync_sent flag. */ 1 17 1 18 dcl x25_data_ptr ptr; 1 19 dcl x25_data_n_sc fixed bin; /* number of Multics subchannels */ 1 20 1 21 dcl 1 x25_data aligned based (x25_data_ptr), /* level 3 data */ 1 22 2 name char (32), /* channel name for messages */ 1 23 2 devx fixed bin, /* device index of multiplexer */ 1 24 2 state fixed bin, /* see below */ 1 25 2 n_lc fixed bin, /* number of logical channels */ 1 26 2 n_sc fixed bin, /* number of subchannels */ 1 27 2 n_pvc fixed bin, /* number of Permanent Virtual Circuits */ 1 28 2 flags, 1 29 3 send_output bit (1) unaligned, 1 30 3 mpx_started bit (1) unaligned, 1 31 3 bypass_restart bit (1) unaligned, 1 32 3 no_d bit (1) unaligned, /* end-to-end ack not available */ 1 33 3 out_calls_collect bit (1) unaligned, 1 34 3 packet_trace_sw bit (1) unaligned, /* Log packets? */ 1 35 3 pad1 bit (30) unaligned, 1 36 2 seq_mod uns fixed bin (8), /* modulus for packet sequencing */ 1 37 2 gfid bit (2), /* format code to use */ 1 38 2 load_proc_id bit (36), /* bootload process id */ 1 39 2 load_ev_chan fixed bin (71), /* bootload event channel */ 1 40 2 net_type char (8), /* type of net this is */ 1 41 2 restart_time fixed bin (71), /* time last restart sent */ 1 42 2 dialup_info like dialup_info, /* dialup interrupt info */ 1 43 2 lc_ptr ptr, /* LC table */ 1 44 2 (write_head, write_tail) ptr, /* chain of packets to write */ 1 45 2 long_packet_size fixed bin (11), /* smallest long packet */ 1 46 2 long_packet_head fixed bin, /* head of long packet SC chain */ 1 47 2 long_packet_tail fixed bin, /* tail of long packet SC chain */ 1 48 2 breakall_idle_timer fixed bin, /* breakall idle timer in 1/20 sec. */ 1 49 2 my_address varying char (15), /* local DTE address */ 1 50 2 sc (x25_data_n_sc refer (x25_data.n_sc)) like xsce;/* subchannel tables */ 1 51 1 52 dcl ( 1 53 X25_HUNGUP init (0), /* values of x25_data.state */ 1 54 X25_LISTENING init (1), 1 55 X25_RESTARTING init (2), 1 56 X25_ACTIVE init (3) 1 57 ) fixed bin static options (constant); 1 58 1 59 dcl 1 x25_lces aligned based (x25_data.lc_ptr), /* logical channel table */ 1 60 2 lc (x25_data.n_lc) like xlce; 1 61 1 62 dcl xlcep ptr; 1 63 dcl 1 xlce aligned based (xlcep), 1 64 2 state fixed bin, /* see definitions below */ 1 65 2 scx fixed bin, /* index of associated subchannel */ 1 66 2 max_packet_size uns fixed bin (18), /* maximum data packet allowed */ 1 67 2 max_window_size uns fixed bin (7), 1 68 2 baud_rate fixed bin, /* speed of remote correspondent */ 1 69 2 flags aligned, /* start on a word. */ 1 70 3 iti_call bit (1) unaligned, /* set if iti call */ 1 71 3 int_issued bit (1) unaligned, /* interrupt packet issued */ 1 72 3 rnr_received bit (1) unaligned, /* dce sent rnr packet */ 1 73 3 iti_break bit (1) unaligned, /* iti break being serviced */ 1 74 3 rnr_sent bit (1) unaligned, /* we sent a RNR */ 1 75 3 originate bit (1) unaligned, /* we started this call */ 1 76 3 timer_set bit (1) unaligned, /* timing out on RR */ 1 77 3 collect_call bit (1) unaligned, /* who pays for call */ 1 78 3 write_status_sync_sent bit (1) unaligned, /* we sent one, and haven't heard the result. */ 1 79 3 pad bit (27) unaligned, 1 80 2 window_size fixed bin, /* V (W) current window size */ 1 81 2 force_ack_time fixed bin (71), /* deadline for sending RR */ 1 82 2 state_time fixed bin (71), /* time of last state change */ 1 83 2 next_recv_seq unsigned fixed bin (7), /* V(R) next receive sequence number */ 1 84 2 next_send_seq unsigned fixed bin (7), /* V(S) next sequence for transmssion */ 1 85 2 last_recv_seq unsigned fixed bin (7), /* P(R) last issued receive sequence */ 1 86 2 next_ack_seq unsigned fixed bin (7), /* P(S) sequence of next ack to be issued */ 1 87 2 his_address varying char (15), /* outgoing host number */ 1 88 2 call_data varying char (16), /* call user data */ 1 89 2 iti_params (18) uns fixed bin (9) unaligned; /* PAD simulation parameters */ 1 90 1 91 /* state definitions */ 1 92 1 93 dcl ( 1 94 READY init (1), 1 95 DTE_WAITING init (2), 1 96 FLOW_CONTROL_READY init (3), 1 97 DTE_CLEAR_REQUEST init (4), 1 98 DTE_RESET_REQUEST init (5), 1 99 CONRESP_WAITING init (6) 1 100 ) fixed bin static options (constant); 1 101 1 102 dcl xscep ptr; 1 103 dcl 1 xsce aligned based (xscep), 1 104 2 name char (32), /* name of the channel */ 1 105 2 devx fixed bin, /* device index */ 1 106 2 lcx fixed bin, /* index of xlce */ 1 107 2 state fixed bin, /* see definitions below */ 1 108 2 flags, 1 109 3 output_ready bit (1) unaligned, /* set if window full */ 1 110 3 end_of_page bit (1) unaligned, /* set if output read end-of-page */ 1 111 3 wru_done bit (1) unaligned, /* user has done a WRU */ 1 112 3 need_ftd bit (1) unaligned, /* user has done get_foreign_terminal_data */ 1 113 3 long_packet_pending bit (1) unaligned, /* there is a long packet "on hold" */ 1 114 3 pad bit (13) unaligned, 1 115 3 mode (18) bit (1) unaligned, /* rawi, echoplex, breakall, iflow, oflow, hndlquit, polite, lfecho, 8bit */ 1 116 2 long_packet_next_scx fixed bin, /* thread of held sc's */ 1 117 2 service char (12), /* name of service offered here */ 1 118 2 (write_head, write_tail) ptr, /* data packet chain */ 1 119 2 trans_table_ptr ptr; /* translation table */ 1 120 1 121 dcl ( 1 122 SC_HUNGUP init (0), 1 123 SC_LISTENING init (1), 1 124 SC_DIALING init (2), 1 125 SC_DIALED init (3) 1 126 ) fixed bin static options (constant); 1 127 2 1 /* BEGIN INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 2 2 2 3 /* Defines constants and structures used by MCS interrupt handlers */ 2 4 2 5 /* Created 08/21/78 by Robert Coren */ 2 6 /* Echo negotiation types added sometime by Bernie Greenberg */ 2 7 /* TIMER and USER_INTERRUPT added in spring of 1982 by Olin Sibert */ 2 8 /* MASKED type added June 23, 1982, by Robert Coren */ 2 9 2 10 dcl DIALUP fixed bin int static options (constant) init (1); 2 11 dcl HANGUP fixed bin int static options (constant) init (2); 2 12 dcl CRASH fixed bin int static options (constant) init (3); 2 13 dcl SEND_OUTPUT fixed bin int static options (constant) init (4); 2 14 dcl INPUT_AVAILABLE fixed bin int static options (constant) init (5); 2 15 dcl ACCEPT_INPUT fixed bin int static options (constant) init (6); 2 16 dcl INPUT_REJECTED fixed bin int static options (constant) init (7); 2 17 dcl QUIT fixed bin int static options (constant) init (8); 2 18 dcl LINE_STATUS fixed bin int static options (constant) init (9); 2 19 dcl DIAL_STATUS fixed bin int static options (constant) init (10); 2 20 dcl WRU_TIMEOUT fixed bin int static options (constant) init (11); 2 21 dcl SPACE_AVAILABLE fixed bin int static options (constant) init (12); 2 22 dcl ACKNOWLEDGE_ECHNEGO_INIT fixed bin int static options (constant) init (13); 2 23 dcl ACKNOWLEDGE_ECHNEGO_STOP fixed bin int static options (constant) init (14); 2 24 dcl TIMER fixed bin int static options (constant) init (15); 2 25 dcl USER_INTERRUPT fixed bin int static options (constant) init (16); 2 26 dcl MASKED fixed bin int static options (constant) init (17); 2 27 2 28 dcl interrupt_info bit (72) aligned; 2 29 2 30 dcl 1 dialup_info aligned, /* for use with DIALUP interrupt */ 2 31 2 line_type fixed bin (9) unal uns, 2 32 2 buffer_pad fixed bin (9) unal uns, /* free space multiplexer would like in output bufs */ 2 33 2 baud_rate fixed bin (18) unal uns, 2 34 2 max_buf_size fixed bin (9) unal uns, 2 35 2 receive_mode_device bit (1) unal, /* device must be told to enter receive mode */ 2 36 2 pad bit (26) unal; 2 37 2 38 dcl 1 rtx_info aligned, /* for use with ACCEPT_INPUT interrupt */ 2 39 2 input_chain unaligned, 2 40 3 chain_head bit (18) unaligned, 2 41 3 chain_tail bit (18) unaligned, 2 42 2 input_count fixed bin (18) unal uns, 2 43 2 flags unaligned, 2 44 3 break_char bit (1), /* data contains a break character */ 2 45 3 output_in_fnp bit (1), /* there is output in the FNP */ 2 46 3 output_in_ring_0 bit (1), /* there is output in ring 0 */ 2 47 3 formfeed_present bit (1), /* input contains a formfeed character */ 2 48 3 pad bit (14); 2 49 2 50 dcl 1 timer_info aligned, /* Info supplied with TIMER interrupt */ 2 51 2 id bit (36) aligned, /* ID which was supplied in call to mcs_timer$set */ 2 52 2 subchan_idx fixed bin; /* Index of subchannel on whose behalf timer was set */ 2 53 2 54 /* END INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 1 128 1 129 1 130 /* End include file x25_data.incl.pl1 */ 67 3 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 3 2 3 3 /* Date Last Modified and Reason 3 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 3 5* Modified January 1978 by Robert Coren and Larry 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 */ 68 5 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 5 2 5 3 /* Created by J. Stern 7/26/78 */ 5 4 /* Metering information added by C. Hornig, March 1980. */ 5 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 5 6 5 7 dcl lctp ptr; /* ptr to logical channel table */ 5 8 dcl lctep ptr; /* ptr to logical channel table entry */ 5 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 5 10 5 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 5 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 5 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 5 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 5 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 5 16 2 pad (11) fixed bin, 5 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 5 18 5 19 5 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 5 21 2 lock bit (36), /* channel lock */ 5 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 5 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 5 24 2 flags unal, 5 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 5 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 5 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 5 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 5 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 5 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 5 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 5 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 5 33 3 trace bit (1) unal, /* ON to trace this channel */ 5 34 3 unused bit (1) unal, 5 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 5 36 2 major_channel_info, 5 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 5 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 5 39 2 queue_entries, 5 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 5 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 5 42 2 word_counts, 5 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 5 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 5 45 5 46 2 meters, 5 47 3 in_bytes fixed bin (35), 5 48 3 out_bytes fixed bin (35), 5 49 3 in, 5 50 4 calls fixed bin (35), 5 51 4 interrupts fixed bin (35), 5 52 4 call_time fixed bin (71), 5 53 4 interrupt_time fixed bin (71), 5 54 3 out like lcte.meters.in, 5 55 3 control like lcte.meters.in, 5 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 5 57 5 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 5 59 5 60 2 pad (3) fixed bin (35); 5 61 5 62 5 63 dcl lcntp ptr; /* ptr to logical channel name table */ 5 64 5 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 5 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 5 67 5 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 5 69 5 70 5 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 69 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 */ 70 71 72 end x25_analyze_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/89 1003.8 x25_analyze_.pl1 >special_ldd>install>MR12.3-1100>x25_analyze_.pl1 67 1 10/25/89 0959.9 x25_data.incl.pl1 >special_ldd>install>MR12.3-1100>x25_data.incl.pl1 1-128 2 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 68 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 69 5 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 70 6 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.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. Areap parameter pointer dcl 19 set ref 16 35* 38* Chain parameter pointer dcl 54 ref 52 57 58 Check_used parameter entry variable dcl 21 ref 16 45 47 62 Devx parameter fixed bin(17,0) dcl 20 ref 16 30 Long parameter bit(1) dcl 22 ref 16 35 38 Ttybp parameter pointer dcl 19 set ref 16 30 30 30 35* 38* 44 60 addr builtin function dcl 28 ref 30 binary builtin function dcl 28 ref 58 62 blockp 000106 automatic pointer dcl 6-19 set ref 60* 61 62* 62 buf_offset 000120 automatic fixed bin(18,0) dcl 55 set ref 58* 59 59 60 61* buffer based structure level 1 dcl 6-28 currentsize builtin function dcl 28 ref 45 45 47 47 data_base_ptr 1 based pointer level 2 packed packed unaligned dcl 5-20 ref 30 dialup_info 000104 automatic structure level 1 dcl 2-30 hc_fast_lock based structure level 1 dcl 4-10 i 000100 automatic fixed bin(17,0) dcl 26 set ref 37* 38* 40* 41* in 2 based structure level 2 in structure "saved_meters" dcl 5-68 in procedure "x25_analyze_" in 30 based structure array level 4 in structure "lct" dcl 5-11 in procedure "x25_analyze_" in 10 based structure level 3 in structure "lcte" dcl 5-20 in procedure "x25_analyze_" lc_ptr 32 based pointer level 2 dcl 1-21 set ref 43 44* 44 45* 45 45 lct based structure level 1 dcl 5-11 lct_ptr 6 based pointer level 2 dcl 3-35 ref 30 lcte based structure level 1 dcl 5-20 lcte_array 20 based structure array level 2 dcl 5-11 set ref 30 meters 26 based structure array level 3 in structure "lct" dcl 5-11 in procedure "x25_analyze_" meters 6 based structure level 2 in structure "lcte" dcl 5-20 in procedure "x25_analyze_" n_lc 12 based fixed bin(17,0) level 2 dcl 1-21 ref 45 45 n_sc 13 based fixed bin(17,0) level 2 dcl 1-21 ref 37 40 47 47 next based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 6-28 ref 61 pointer builtin function dcl 28 ref 30 30 60 rel builtin function dcl 28 ref 30 30 44 58 sc 52 based structure array level 2 dcl 1-21 size_code 0(24) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 6-28 ref 62 tty_buf based structure level 1 dcl 3-35 write_head 72 based pointer array level 3 in structure "x25_data" dcl 1-21 in procedure "x25_analyze_" set ref 41* write_head 34 based pointer level 2 in structure "x25_data" dcl 1-21 in procedure "x25_analyze_" set ref 36* x25_data based structure level 1 dcl 1-21 set ref 47 47 x25_data_ptr 000102 automatic pointer dcl 1-18 set ref 30* 35* 36 37 38* 40 41 43 44 44 45 45 45 45 45 47* 47 47 x25_dump_ 000010 constant entry external dcl 24 ref 35 38 x25_lces based structure level 1 dcl 1-59 ref 45 45 xlce based structure level 1 dcl 1-63 xsce based structure level 1 dcl 1-103 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT_INPUT internal static fixed bin(17,0) initial dcl 2-15 ACKNOWLEDGE_ECHNEGO_INIT internal static fixed bin(17,0) initial dcl 2-22 ACKNOWLEDGE_ECHNEGO_STOP internal static fixed bin(17,0) initial dcl 2-23 CONRESP_WAITING internal static fixed bin(17,0) initial dcl 1-93 CRASH internal static fixed bin(17,0) initial dcl 2-12 DIALUP internal static fixed bin(17,0) initial dcl 2-10 DIAL_STATUS internal static fixed bin(17,0) initial dcl 2-19 DTE_CLEAR_REQUEST internal static fixed bin(17,0) initial dcl 1-93 DTE_RESET_REQUEST internal static fixed bin(17,0) initial dcl 1-93 DTE_WAITING internal static fixed bin(17,0) initial dcl 1-93 FLOW_CONTROL_READY internal static fixed bin(17,0) initial dcl 1-93 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 HANGUP internal static fixed bin(17,0) initial dcl 2-11 INPUT_AVAILABLE internal static fixed bin(17,0) initial dcl 2-14 INPUT_REJECTED internal static fixed bin(17,0) initial dcl 2-16 LINE_STATUS internal static fixed bin(17,0) initial dcl 2-18 MASKED internal static fixed bin(17,0) initial dcl 2-26 QUIT internal static fixed bin(17,0) initial dcl 2-17 READY internal static fixed bin(17,0) initial dcl 1-93 SC_DIALED internal static fixed bin(17,0) initial dcl 1-121 SC_DIALING internal static fixed bin(17,0) initial dcl 1-121 SC_HUNGUP internal static fixed bin(17,0) initial dcl 1-121 SC_LISTENING internal static fixed bin(17,0) initial dcl 1-121 SEND_OUTPUT internal static fixed bin(17,0) initial dcl 2-13 SPACE_AVAILABLE internal static fixed bin(17,0) initial dcl 2-21 TIMER internal static fixed bin(17,0) initial dcl 2-24 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 3-33 USER_INTERRUPT internal static fixed bin(17,0) initial dcl 2-25 WRU_TIMEOUT internal static fixed bin(17,0) initial dcl 2-20 X25_ACTIVE internal static fixed bin(17,0) initial dcl 1-52 X25_HUNGUP internal static fixed bin(17,0) initial dcl 1-52 X25_LISTENING internal static fixed bin(17,0) initial dcl 1-52 X25_RESTARTING internal static fixed bin(17,0) initial dcl 1-52 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 free_block based structure level 1 dcl 6-23 free_blockp automatic pointer dcl 6-20 input_bpart internal static fixed bin(18,0) initial dcl 3-19 interrupt_info automatic bit(72) dcl 2-28 lcnt based structure level 1 dcl 5-65 lcntp automatic pointer dcl 5-63 lct_size automatic fixed bin(17,0) dcl 5-9 lctep automatic pointer dcl 5-8 lctp automatic pointer dcl 5-7 lock_ptr automatic pointer dcl 4-9 max_buffer_tally internal static fixed bin(17,0) initial array dcl 6-43 output_bpart internal static fixed bin(18,0) initial dcl 3-19 qblock_size internal static fixed bin(17,0) initial dcl 3-27 rtx_info automatic structure level 1 dcl 2-38 saved_meters based structure level 1 dcl 5-68 timer_info automatic structure level 1 dcl 2-50 tty_buf$ external static fixed bin(17,0) dcl 3-19 tty_ev internal static fixed bin(17,0) initial dcl 3-19 ttybp automatic pointer dcl 3-19 x25_data_n_sc automatic fixed bin(17,0) dcl 1-19 xlcep automatic pointer dcl 1-62 xscep automatic pointer dcl 1-102 NAMES DECLARED BY EXPLICIT CONTEXT. trace_chain 000216 constant entry internal dcl 52 ref 36 41 x25_analyze_ 000013 constant entry external dcl 16 NAMES DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 43 57 ptr builtin function ref 44 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 322 334 266 332 Length 622 266 12 252 33 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME x25_analyze_ 108 external procedure is an external procedure. trace_chain internal procedure shares stack frame of external procedure x25_analyze_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME x25_analyze_ 000100 i x25_analyze_ 000102 x25_data_ptr x25_analyze_ 000104 dialup_info x25_analyze_ 000106 blockp x25_analyze_ 000120 buf_offset trace_chain THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. x25_dump_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000006 30 000020 35 000034 36 000062 37 000071 38 000101 39 000125 40 000127 41 000137 42 000147 43 000151 44 000156 45 000164 47 000177 48 000215 52 000216 57 000220 58 000225 59 000232 60 000236 61 000243 62 000246 63 000264 64 000265 ----------------------------------------------------------- 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