COMPILATION LISTING OF SEGMENT priv_mcs_trace Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1022.0 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 priv_mcs_trace: procedure; 14 15 /* Control entrypoints for the MCM tracing software. */ 16 /* Written by C. Hornig, March 1980 */ 17 /* Updated for set_channel_trace, set_global_trace, 10 March 82, W. Olin Sibert */ 18 19 declare Table_size fixed bin parameter; /* entries in trace table */ 20 declare Global_trace_flags bit (*) parameter; 21 declare Devx fixed bin parameter; 22 declare Channel_trace_flags bit (2) aligned parameter; 23 declare Code fixed bin (35) parameter; 24 25 declare 1 trace_flags unaligned automatic like tty_buf.trace.flags; 26 27 declare devx fixed bin; 28 declare channel_trace_flags bit (2) aligned; 29 30 declare (addr, binary, bit, currentsize, mod, null, pointer, rel, size, stacq, string, substr, unspec) builtin; 31 1 1 /* Begin include file mcs_trace_data.incl.pl1 */ 1 2 1 3 dcl (trace_array_ptr, trace_entry_ptr) pointer; 1 4 dcl trace_array_size uns fixed bin (18); 1 5 1 6 dcl 1 trace_array aligned based (trace_array_ptr), /* trace control information */ 1 7 2 num_entries uns fixed bin (18), /* number of entries in trace table */ 1 8 2 idx bit (36) aligned, /* index of next entry to use */ 1 9 2 entry (trace_array_size refer (trace_array.num_entries)) aligned like trace_entry; 1 10 1 11 dcl 1 trace_entry aligned based (trace_entry_ptr), 1 12 2 time fixed bin (71), /* time sample taken */ 1 13 2 devx unsigned fixed bin (18) unaligned, /* channel traced */ 1 14 2 message char (54) unaligned; 1 15 1 16 /* End include file mcs_trace_data.incl.pl1 */ 32 33 34 declare (error_table_$invalid_state, 35 error_table_$invalid_device, 36 error_table_$noalloc) fixed bin (35) external static; 37 38 declare bit_offset_ entry (pointer) returns (fixed bin (24)); 39 40 41 /* * * * * * * * * * SET_TRACE_TABLE_SIZE * * * * * * * * * */ 42 43 set_trace_table_size: entry (Table_size, Code); 44 45 Code = 0; 46 trace_array_size = Table_size; 47 call find_stuff; 48 49 if trace_array_size <= 0 50 then do; /* wants to delete table */ 51 if trace_array_ptr = null () then return; 52 if tty_buf.trace.enable then do; /* must be disabled */ 53 Code = error_table_$invalid_state; 54 return; 55 end; 56 57 tty_buf.trace.data_offset = ""b; 58 call tty_space_man$free_space (currentsize (trace_array), trace_array_ptr); /* free the array */ 59 end; 60 61 else do; /* allocate a table */ 62 if trace_array_ptr ^= null () then do; 63 Code = error_table_$invalid_state; 64 return; 65 end; 66 67 call tty_space_man$get_space (size (trace_array), trace_array_ptr); 68 if trace_array_ptr = null () then do; 69 Code = error_table_$noalloc; 70 return; 71 end; 72 73 trace_array.num_entries = trace_array_size; 74 trace_array.idx = bit (binary (1, 36)); 75 unspec (trace_array.entry) = ""b; 76 tty_buf.trace.data_offset = rel (trace_array_ptr); 77 string (tty_buf.trace.flags) = ""b; /* Turn it all off to start with */ 78 end; 79 80 return; 81 82 83 /* * * * * * * * * * GET_TRACE_TABLE_SIZE * * * * * * * * * */ 84 85 get_trace_table_size: entry (Table_size, Code); 86 87 Code, Table_size = 0; 88 call find_stuff; 89 if trace_array_ptr ^= null () 90 then Table_size = trace_array.num_entries; 91 else Table_size = 0; 92 return; 93 94 95 /* * * * * * * * * * * SET_GLOBAL_TRACE * * * * * * * * * * */ 96 97 set_global_trace: 98 entry (Global_trace_flags, Code); 99 100 call find_stuff; 101 102 if trace_array_ptr = null () then do; 103 Code = error_table_$invalid_state; 104 return; 105 end; 106 107 string (trace_flags) = Global_trace_flags; 108 tty_buf.trace.flags = trace_flags; 109 110 Code = 0; 111 return; 112 113 114 /* * * * * * * * * * * SET_CHANNEL_TRACE * * * * * * * * * * */ 115 116 /* Turns on tracing for an individual channel entry. Note that the channel does 117* not have to be currently in use or anything like that. The word containing 118* the trace flags is updated with stacq for precisely this reason, since we 119* don't lock the channel here, either. */ 120 121 set_channel_trace: 122 entry (Devx, Channel_trace_flags, Code); 123 124 call find_stuff; 125 126 devx = Devx; 127 channel_trace_flags = Channel_trace_flags; 128 Code = 0; 129 130 if (devx < 1) | (devx > lct.max_no_lctes) then do; 131 Code = error_table_$invalid_device; 132 return; 133 end; 134 135 lctep = addr (lct.lcte_array (devx)); 136 137 call setbit (lcte.trace, substr (channel_trace_flags, 1, 1)); 138 call setbit (lcte.trace_force, substr (channel_trace_flags, 2, 1)); 139 140 Code = 0; 141 return; 142 143 144 /* * * * * * * * * * * SETBIT * * * * * * * * * * */ 145 146 setbit: 147 procedure (P_bit, P_value); 148 149 declare P_bit bit (1) unaligned parameter; 150 declare P_value bit (1) unaligned parameter; 151 152 declare word_ptr pointer; 153 declare based_word bit (36) aligned based; 154 declare old_value bit (36) aligned; 155 declare new_value bit (36) aligned; 156 declare bit_number fixed bin; 157 158 /* This procedure is used to set the bits in the lcte flag word which control tracing. It uses stacq 159* in this fashion because it doesn't want to try locking the lcte, since it might be uninitialized 160* or something like that, and tracing is supposed to be completely independent of the rest of MCS. */ 161 162 /* ***** Note that the use of stacq here depends on the ability for stacq to interlock with RAR type 163* instructions (ansa, orsa) which are used elsewhere to set bits. */ 164 165 word_ptr = addr (P_bit); /* Find the word, and which bit we're to set */ 166 bit_number = 1 + mod (bit_offset_ (word_ptr), 36); 167 word_ptr = pointer (word_ptr, rel (word_ptr)); /* Align to word boundary */ 168 169 old_value = word_ptr -> based_word; /* Set the requested bit */ 170 new_value = old_value; 171 substr (new_value, bit_number, 1) = P_value; 172 173 do while (^stacq (word_ptr -> based_word, new_value, old_value)); 174 old_value = word_ptr -> based_word; /* Keep trying to update indivisibly */ 175 new_value = old_value; 176 substr (new_value, bit_number, 1) = P_value; 177 end; 178 179 return; 180 end setbit; 181 182 183 /* * * * * * * * * * * FIND_STUFF * * * * * * * * * * */ 184 185 find_stuff: procedure; 186 ttybp = addr (tty_buf$); 187 lctp = tty_buf.lct_ptr; 188 if tty_buf.trace.data_offset = ""b 189 then trace_array_ptr = null (); 190 else trace_array_ptr = pointer (ttybp, tty_buf.trace.data_offset); 191 end find_stuff; 192 193 /* * * * * * * * * * * * * * * * * * * */ 194 2 1 /* BEGIN INCLUDE FILE ... tty_buf.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 January 1978 by Robert Coren and Larry Johnson for variable-size buffers 2 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 2 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 2 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 2 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 2 10* Modified November 1979 by C. Hornig for MCS tracing. 2 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 2 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 2 13* Modified March 1980 by Robert Coren to reorganize metering information 2 14* Modified December 1980 by Robert Coren to add FNP-specific events 2 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 2 16* Modified November 1984 by Robert Coren to add tty_area_lock 2 17**/ 2 18 2 19 dcl ttybp ptr, 2 20 tty_buf$ ext static, /* tty buffer segment */ 2 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 2 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 2 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 2 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 2 25 2 26 2 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 2 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 2 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 2 30 2 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 2 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 2 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 2 34 2 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 2 36 2 slock bit (36), /* per system lock */ 2 37 2 absorig fixed bin (24), /* abs address of this seg */ 2 38 2 borig bit (18), /* index of start of buffer area */ 2 39 2 bleft fixed bin (18), /* words left in pool */ 2 40 2 free bit (18), /* pointer to start of free pool */ 2 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 2 42 2 padb1 bit (28) unaligned, 2 43 2 lct_ptr ptr, /* pointer to logical channel table */ 2 44 2 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 2 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 2 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 2 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 2 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 2 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 2 51 2 minbuf fixed bin (18), /* min output buffer size */ 2 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 2 53 2 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 2 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 2 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 2 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 2 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 2 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 2 60 2 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 2 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 2 63 2 bfx fixed bin, /* used in calls to iobm */ 2 64 2 nquits fixed bin (35), /* number of quits */ 2 65 2 space_needed_data, 2 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 2 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 2 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 2 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 2 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 2 71 2 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 2 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 2 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 2 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 2 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 2 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 2 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 2 79 2 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 2 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 2 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 2 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 2 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 2 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 2 86 2 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 2 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 2 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 2 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 2 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 2 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 2 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 2 94 2 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 2 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 2 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 2 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 2 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 2 100 2 echo_neg_mux_nonecho fixed bin (35), 2 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 2 102 2 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 2 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 2 105 2 trace unaligned, /* tracing information */ 2 106 3 flags, 2 107 4 enable bit, /* global tracing control */ 2 108 4 default_mode bit, /* whether to trace channels by default */ 2 109 4 read bit, /* read */ 2 110 4 write bit, /* write */ 2 111 4 data bit, /* buffers on reads and writes */ 2 112 4 control bit, /* control, priv_control, and hpriv_control */ 2 113 4 modes bit, /* (get set check)_modes */ 2 114 4 interrupt bit, /* interrupt, interrupt_later */ 2 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 2 116 4 start bit, /* start, stop */ 2 117 4 shutdown bit, /* shutdown */ 2 118 4 space_man bit, /* tty_space_man$* */ 2 119 4 pad_flags bit (6), 2 120 3 data_offset bit (18), /* offset of tracing data */ 2 121 2 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 2 123 2 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 2 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 2 126 2 timer_count fixed bin, /* Number of timers outstanding */ 2 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 2 128 2 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 2 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 2 131 2 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 2 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 2 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 2 135 2 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 2 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 2 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 2 139 2 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 2 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 2 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 2 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 2 144 2 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 2 146 2 147 2 pad2 (13) fixed bin (35), 2 148 2 149 2 free_space fixed bin; /* start of free space region */ 2 150 2 151 3 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 3 2 3 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 3 4 3 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 3 6 3 7 /* format: style3 */ 3 8 3 9 declare lock_ptr pointer; 3 10 declare 1 hc_fast_lock aligned based (lock_ptr), 3 11 2 pid bit (36) aligned, /* holder of lock */ 3 12 2 event bit (36) aligned, /* event associated with lock */ 3 13 2 flags aligned, 3 14 3 notify_sw bit (1) unaligned, 3 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 3 16 3 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 2 152 2 153 2 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 195 4 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 4 2 4 3 /* Created by J. Stern 7/26/78 */ 4 4 /* Metering information added by C. Hornig, March 1980. */ 4 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 4 6 4 7 dcl lctp ptr; /* ptr to logical channel table */ 4 8 dcl lctep ptr; /* ptr to logical channel table entry */ 4 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 4 10 4 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 4 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 4 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 4 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 4 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 4 16 2 pad (11) fixed bin, 4 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 4 18 4 19 4 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 4 21 2 lock bit (36), /* channel lock */ 4 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 4 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 4 24 2 flags unal, 4 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 4 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 4 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 4 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 4 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 4 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 4 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 4 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 4 33 3 trace bit (1) unal, /* ON to trace this channel */ 4 34 3 unused bit (1) unal, 4 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 4 36 2 major_channel_info, 4 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 4 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 4 39 2 queue_entries, 4 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 4 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 4 42 2 word_counts, 4 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 4 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 4 45 4 46 2 meters, 4 47 3 in_bytes fixed bin (35), 4 48 3 out_bytes fixed bin (35), 4 49 3 in, 4 50 4 calls fixed bin (35), 4 51 4 interrupts fixed bin (35), 4 52 4 call_time fixed bin (71), 4 53 4 interrupt_time fixed bin (71), 4 54 3 out like lcte.meters.in, 4 55 3 control like lcte.meters.in, 4 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 4 57 4 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 4 59 4 60 2 pad (3) fixed bin (35); 4 61 4 62 4 63 dcl lcntp ptr; /* ptr to logical channel name table */ 4 64 4 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 4 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 4 67 4 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 4 69 4 70 4 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 196 5 1 /* BEGIN INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 5 2 5 3 /* This include file declares all the entries in tty_space_man and defines the constants 5 4** to be used for the flags argument 5 5** Modified 08/21/78 by Robert Coren to eliminate "masked" flag 5 6** Modified March 1981 by Robert Coren to add get_perm_space entry 5 7** Modified April 1981 by Robert Coren to add switch_chain entry 5 8**/ 5 9 5 10 dcl tty_space_man$get_space entry (fixed bin, ptr); 5 11 dcl tty_space_man$get_perm_space entry (fixed bin, ptr); 5 12 dcl tty_space_man$free_space entry (fixed bin, ptr); 5 13 dcl tty_space_man$get_buffer entry (fixed bin, fixed bin, bit (1), ptr); 5 14 dcl tty_space_man$free_buffer entry (fixed bin, bit (1), ptr); 5 15 dcl tty_space_man$get_chain entry (fixed bin, fixed bin, fixed bin, bit (1), ptr); 5 16 dcl tty_space_man$free_chain entry (fixed bin, bit (1), ptr); 5 17 dcl tty_space_man$switch_chain entry (fixed bin, fixed bin, bit (1), bit (1), ptr); 5 18 dcl tty_space_man$needs_space entry (fixed bin); 5 19 5 20 dcl INPUT bit (1) int static options (constant) init ("0"b); 5 21 dcl OUTPUT bit (1) int static options (constant) init ("1"b); 5 22 5 23 /* END INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 197 198 199 end priv_mcs_trace; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0802.3 priv_mcs_trace.pl1 >spec>install>1111>priv_mcs_trace.pl1 32 1 06/30/80 1400.3 mcs_trace_data.incl.pl1 >ldd>include>mcs_trace_data.incl.pl1 195 2 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 2-152 3 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 196 4 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 197 5 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.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. Channel_trace_flags parameter bit(2) dcl 22 ref 121 127 Code parameter fixed bin(35,0) dcl 23 set ref 43 45* 53* 63* 69* 85 87* 97 103* 110* 121 128* 131* 140* Devx parameter fixed bin(17,0) dcl 21 ref 121 126 Global_trace_flags parameter bit packed unaligned dcl 20 ref 97 107 P_bit parameter bit(1) packed unaligned dcl 149 set ref 146 165 P_value parameter bit(1) packed unaligned dcl 150 ref 146 171 176 Table_size parameter fixed bin(17,0) dcl 19 set ref 43 46 85 87* 89* 91* addr builtin function dcl 30 ref 135 165 186 based_word based bit(36) dcl 153 ref 169 173 174 binary builtin function dcl 30 ref 74 bit builtin function dcl 30 ref 74 bit_number 000132 automatic fixed bin(17,0) dcl 156 set ref 166* 171 176 bit_offset_ 000016 constant entry external dcl 38 ref 166 channel_trace_flags 000102 automatic bit(2) dcl 28 set ref 127* 137 137 138 138 currentsize builtin function dcl 30 ref 58 58 data_offset 102(18) based bit(18) level 3 packed packed unaligned dcl 2-35 set ref 57* 76* 188 190 devx 000101 automatic fixed bin(17,0) dcl 27 set ref 126* 130 130 135 enable 102 based bit(1) level 4 packed packed unaligned dcl 2-35 set ref 52 entry 2 based structure array level 2 dcl 1-6 set ref 75* error_table_$invalid_device 000012 external static fixed bin(35,0) dcl 34 ref 131 error_table_$invalid_state 000010 external static fixed bin(35,0) dcl 34 ref 53 63 103 error_table_$noalloc 000014 external static fixed bin(35,0) dcl 34 ref 69 flags 2(09) based structure level 2 in structure "lcte" packed packed unaligned dcl 4-20 in procedure "priv_mcs_trace" flags 102 based structure level 3 in structure "tty_buf" packed packed unaligned dcl 2-35 in procedure "priv_mcs_trace" set ref 77* 108* hc_fast_lock based structure level 1 dcl 3-10 idx 1 based bit(36) level 2 dcl 1-6 set ref 74* in 30 based structure array level 4 in structure "lct" dcl 4-11 in procedure "priv_mcs_trace" in 2 based structure level 2 in structure "saved_meters" dcl 4-68 in procedure "priv_mcs_trace" in 10 based structure level 3 in structure "lcte" dcl 4-20 in procedure "priv_mcs_trace" lct based structure level 1 dcl 4-11 lct_ptr 6 based pointer level 2 dcl 2-35 ref 187 lcte based structure level 1 dcl 4-20 lcte_array 20 based structure array level 2 dcl 4-11 set ref 135 lctep 000114 automatic pointer dcl 4-8 set ref 135* 137 138 lctp 000112 automatic pointer dcl 4-7 set ref 130 135 187* max_no_lctes based fixed bin(17,0) level 2 dcl 4-11 ref 130 meters 26 based structure array level 3 in structure "lct" dcl 4-11 in procedure "priv_mcs_trace" meters 6 based structure level 2 in structure "lcte" dcl 4-20 in procedure "priv_mcs_trace" mod builtin function dcl 30 ref 166 new_value 000131 automatic bit(36) dcl 155 set ref 170* 171* 173 175* 176* null builtin function dcl 30 ref 51 62 68 89 102 188 num_entries based fixed bin(18,0) level 2 unsigned dcl 1-6 set ref 58 58 73* 75 89 old_value 000130 automatic bit(36) dcl 154 set ref 169* 170 173 174* 175 pointer builtin function dcl 30 ref 167 190 rel builtin function dcl 30 ref 76 167 size builtin function dcl 30 ref 67 67 stacq builtin function dcl 30 ref 173 string builtin function dcl 30 set ref 77* 107* substr builtin function dcl 30 set ref 137 137 138 138 171* 176* trace 102 based structure level 2 in structure "tty_buf" packed packed unaligned dcl 2-35 in procedure "priv_mcs_trace" trace 2(16) based bit(1) level 3 in structure "lcte" packed packed unaligned dcl 4-20 in procedure "priv_mcs_trace" set ref 137* trace_array based structure level 1 dcl 1-6 set ref 58 58 67 67 trace_array_ptr 000104 automatic pointer dcl 1-3 set ref 51 58 58 58* 62 67 67 67* 68 73 74 75 76 89 89 102 188* 190* trace_array_size 000106 automatic fixed bin(18,0) unsigned dcl 1-4 set ref 46* 49 67 67 73 trace_entry based structure level 1 dcl 1-11 trace_flags 000100 automatic structure level 1 packed packed unaligned dcl 25 set ref 107* 108 trace_force 2(15) based bit(1) level 3 packed packed unaligned dcl 4-20 set ref 138* tty_buf based structure level 1 dcl 2-35 tty_buf$ 000020 external static fixed bin(17,0) dcl 2-19 set ref 186 tty_space_man$free_space 000024 constant entry external dcl 5-12 ref 58 tty_space_man$get_space 000022 constant entry external dcl 5-10 ref 67 ttybp 000110 automatic pointer dcl 2-19 set ref 52 57 76 77 108 186* 187 188 190 190 unspec builtin function dcl 30 set ref 75* word_ptr 000126 automatic pointer dcl 152 set ref 165* 166* 167* 167 167 169 173 174 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 2-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 2-32 INPUT internal static bit(1) initial packed unaligned dcl 5-20 OUTPUT internal static bit(1) initial packed unaligned dcl 5-21 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 2-33 abs_buf_limit internal static fixed bin(18,0) initial dcl 2-19 bsizec internal static fixed bin(17,0) initial dcl 2-28 buf_per_second internal static fixed bin(17,0) initial dcl 2-29 input_bpart internal static fixed bin(18,0) initial dcl 2-19 lcnt based structure level 1 dcl 4-65 lcntp automatic pointer dcl 4-63 lct_size automatic fixed bin(17,0) dcl 4-9 lock_ptr automatic pointer dcl 3-9 output_bpart internal static fixed bin(18,0) initial dcl 2-19 qblock_size internal static fixed bin(17,0) initial dcl 2-27 saved_meters based structure level 1 dcl 4-68 trace_entry_ptr automatic pointer dcl 1-3 tty_ev internal static fixed bin(17,0) initial dcl 2-19 tty_space_man$free_buffer 000000 constant entry external dcl 5-14 tty_space_man$free_chain 000000 constant entry external dcl 5-16 tty_space_man$get_buffer 000000 constant entry external dcl 5-13 tty_space_man$get_chain 000000 constant entry external dcl 5-15 tty_space_man$get_perm_space 000000 constant entry external dcl 5-11 tty_space_man$needs_space 000000 constant entry external dcl 5-18 tty_space_man$switch_chain 000000 constant entry external dcl 5-17 NAMES DECLARED BY EXPLICIT CONTEXT. find_stuff 000442 constant entry internal dcl 185 ref 47 88 100 124 get_trace_table_size 000166 constant entry external dcl 85 priv_mcs_trace 000013 constant entry external dcl 13 set_channel_trace 000271 constant entry external dcl 121 set_global_trace 000221 constant entry external dcl 97 set_trace_table_size 000025 constant entry external dcl 43 setbit 000364 constant entry internal dcl 146 ref 137 138 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 636 664 464 646 Length 1150 464 26 250 151 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME priv_mcs_trace 125 external procedure is an external procedure. setbit internal procedure shares stack frame of external procedure priv_mcs_trace. find_stuff internal procedure shares stack frame of external procedure priv_mcs_trace. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME priv_mcs_trace 000100 trace_flags priv_mcs_trace 000101 devx priv_mcs_trace 000102 channel_trace_flags priv_mcs_trace 000104 trace_array_ptr priv_mcs_trace 000106 trace_array_size priv_mcs_trace 000110 ttybp priv_mcs_trace 000112 lctp priv_mcs_trace 000114 lctep priv_mcs_trace 000126 word_ptr setbit 000130 old_value setbit 000131 new_value setbit 000132 bit_number setbit THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac mdfx1 ext_entry ext_entry_desc stacq_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bit_offset_ tty_space_man$free_space tty_space_man$get_space THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_device error_table_$invalid_state error_table_$noalloc tty_buf$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000012 43 000020 45 000035 46 000036 47 000041 49 000042 51 000044 52 000050 53 000054 54 000057 57 000060 58 000062 59 000077 62 000100 63 000104 64 000107 67 000110 68 000125 69 000131 70 000134 73 000135 74 000137 75 000145 76 000155 77 000161 80 000163 85 000164 87 000176 88 000201 89 000202 91 000212 92 000214 97 000215 100 000237 102 000240 103 000244 104 000247 107 000250 108 000256 110 000263 111 000264 121 000265 124 000301 126 000302 127 000305 128 000310 130 000311 131 000316 132 000321 135 000322 137 000326 138 000343 140 000362 141 000363 146 000364 165 000366 166 000370 167 000406 169 000412 170 000414 171 000415 173 000422 174 000427 175 000431 176 000432 177 000440 179 000441 185 000442 186 000443 187 000446 188 000450 190 000457 191 000462 ----------------------------------------------------------- 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