/* BEGIN INCLUDE FILE ... tcm.incl.pl1 ... used to generate tc_data cds */ /* NOTE -- This include file has TWO counterparts in ALM: tc_meters.incl.alm and */ /* wcte.incl.alm. They cannot be produced with cif, and must be kept up to date manually. */ /* Modified 830914 to replace tty_polling_time with opc_polling_time... -E. A. Ranzenbach */ /* Modified 1984.05.21 by M. Pandolf to add tc_suspend_lock */ /* Modified 1984.11.26 by Keith Loepere for uid_array. */ /* Modified 1984.12.06 by Keith Loepere for page create delaying. */ dcl tcmp ptr; dcl 1 tcm aligned based (tcmp), 2 tc_suspend_lock like lock, /* when locked, tc is suspended */ 2 cid2 fixed bin (18), 2 cid3 fixed bin (18), 2 cid4 fixed bin (18), 2 depth_count fixed bin (18), /* depth last process run */ 2 loadings fixed bin (18), /* number of process loadings */ 2 blocks fixed bin (18), /* number of calls to block */ 2 wakeups fixed bin (18), /* number of calls to wakeup */ 2 waits fixed bin (18), /* number of calls to wait */ 2 notifies fixed bin (18), /* number of calls to notify */ 2 schedulings fixed bin (18), 2 interactions fixed bin (18), /* number of interactive schedulings */ 2 avequeue fixed bin (35, 18), /* recent time average of number in queue */ 2 te_wait fixed bin (18), /* times te called from wait */ 2 te_block fixed bin (18), /* times te updated from block */ 2 te_i_stop fixed bin (18), /* times te updated from i_stop */ 2 te_pre_empt fixed bin (18), /* times te updated from pre_empt */ 2 p_interactions fixed bin, /* times interaction bit turned off because of high priority */ 2 idle fixed bin (71), /* total idle time */ 2 mp_idle fixed bin (71), /* multi-programming idle */ 2 nmp_idle fixed bin (71), /* non-multi-programming idle time */ 2 zero_idle fixed bin (71), /* zero idle time */ 2 last_time fixed bin (71), /* last time a process was run */ 2 loop_locks fixed bin (18), /* times looped on the APT lock */ 2 loop_lock_time fixed bin (18), /* time looping on the APT lock */ 2 ave_eligible fixed bin (35, 18), /* average length of eligible queue */ 2 sort_to_elhead fixed bin (18), /* 0=> no one,1 => int've only, 2 => everybody */ 2 processor_time fixed bin (71), /* total processor time on system */ 2 response_time fixed bin (71), /* estimate of response time */ 2 eligible_time fixed bin (71), /* estimate of eligible time */ 2 response_count fixed bin, /* count of response meters */ 2 eligible_count fixed bin, /* count of eligible meters */ 2 quit_counts (0:5) fixed bin, /* array of buckets indexed by state */ 2 loading_idle fixed bin (71), /* loading_idle time */ 2 delta_vcpu fixed bin (71), /* delta virtual CPU time for the system */ 2 post_purge_switch fixed bin, /* ON if post purging is to be done */ 2 time_out_severity fixed bin, /* syserr first arg for notify time outs */ 2 notify_check fixed bin, /* obsolete */ 2 quit_priority fixed bin, /* factor for scheduler quit response */ 2 iobm_polling_time fixed bin (71), /* time to poll iobm */ 2 end_of_time fixed bin (71), /* very large time */ 2 gp_at_notify fixed bin (18), /* 0 => just do get_idle_processor */ 2 gp_at_ptlnotify fixed bin (18), /* 0 => just do get_idle_processor */ 2 int_q_enabled fixed bin (18), /* 0 => no intv q in percent mode */ 2 fnp_buffer_threshold fixed bin (18), /* if fewer free buffs then stingy alloc strategy */ /* set this to >= half n_ttylines/fnp for safety */ /* 100 octal */ 2 depths (8) fixed bin (18), /* histogram of run depths */ 2 tdepths (8) fixed bin (71), /* histogram of times run per depth */ 2 pfdepth (8) fixed bin (18), /* histogram of page faults per depth */ 2 ptl_not_waits fixed bin (18), /* times ptl_wait noticed ptl was unlocked */ 2 gw_gp_window_count fixed bin (18), /* times window noticed */ 2 metering_lock fixed bin (18), /* 0=locked, else unlocked */ 2 ptl_waits fixed bin (18), /* num calls to ptl_wait */ 2 gp_start_count fixed bin (18), /* to detect gw_gp window lossage */ 2 gp_done_count fixed bin (18), 2 nto_check_time fixed bin (71), /* next time at which nto code will be called */ 2 nto_delta fixed bin (35), /* microsec between nto checks */ 2 nto_count fixed bin (18), /* number of times nto detected */ 2 tcpu_scheduling fixed bin (18), /* obsolete */ 2 nto_event bit (36), /* last event which NTO'd */ 2 page_notifies fixed bin (18), 2 notify_nobody_count fixed bin (18), 2 notify_nobody_event bit (36), 2 system_type fixed bin, /* used to be tcm.inter */ 2 stat (0:15) fixed bin (18), /* num apte's in each state */ /* 200 octal */ 2 wait (8), 3 time fixed bin (18), /* histogram of page fault waiting times versus did */ 3 count fixed bin (18), 2 ready (8), 3 time fixed bin (18), /* histogram of times in ready queue */ 3 count fixed bin (18), 2 total_pf_time fixed bin (71), /* total time spent from start to end of all page faults */ 2 total_pf_count fixed bin (18), /* total number of page faults metered */ 2 auto_tune_ws fixed bin (18), /* 0=> dont, atherwise compensate for quantum len */ 2 ocore_delta fixed bin (18), /* number of pages reserved for int users */ 2 ws_sum fixed bin (18), /* total of eligible's ws_sizes */ 2 nonidle_force_count fixed bin (18), /* count of eligibilities forced */ 2 itt_list_lock bit (36) aligned, /* Lock on ITT free list */ 2 cpu_pf_time fixed bin (71), /* total cpu time spent handling page faults */ 2 cpu_pf_count fixed bin (18), /* total count of cpu time meterings */ 2 special_offsets unaligned, 3 apt_offset bit (18), 3 pad bit (18), 2 getwork_time fixed bin (71), /* total time spent in getwork */ 2 getwork_count fixed bin (18), /* total times through getwork */ 2 short_pf_count fixed bin (18), /* number of short page faults */ 2 interrupt_time fixed bin (71), /* total time spent in interrupt */ 2 interrupt_count fixed bin (71), /* total number of metered interrupts */ 2 ocore fixed bin (35, 18), /* fraction of core for int've users */ 2 pre_empt_flag bit (36) aligned, /* controls whether preempting at done time */ 2 cumulative_memory_usage fixed binary (71), /* total number of memory usage units */ 2 processor_time_at_define_wc fixed bin (71), /* value of processor_time when WC's last defined */ 2 boost_priority fixed bin, /* number of times priority process given high priority */ 2 lost_priority fixed bin, /* number of times priority process lost eligibility */ 2 total_clock_lag fixed bin (71), /* sum of all simulated clock delays */ 2 clock_simulations fixed bin, /* number of times alarm clock interrupt was simulated */ 2 max_clock_lag fixed bin, /* largest simulated alarm clock delay */ /* 300 octal */ 2 pdscopyl fixed bin (18), /* amount of pds to copy for new process */ 2 max_hproc_segno fixed bin, /* largest allowed hardcore segment number */ 2 prds_length fixed bin (18), /* length of PRDS */ 2 pds_length fixed bin (18), /* length of PDS */ 2 lock fixed bin (18), /* process id generator lock */ 2 id bit (36) aligned, /* next uid to be added to uid_array */ 2 system_shutdown fixed bin (18), 2 working_set_factor fixed bin (35, 18), /* working set factor */ 2 ncpu fixed bin (18), /* number of processors currently being used */ 2 last_eligible bit (18), /* last process to gain eligibility */ 2 apt_lock fixed bin (35), /* + write; 0 hidden; -1 unlocked; -(N+1) Nreaders */ 2 apt_size fixed bin (18), /* number of APT entries */ 2 realtime_q aligned like based_sentinel, /* processes with realtime deadlines */ 2 aht_size fixed bin (18), /* APT hash table size */ 2 itt_size fixed bin (18), /* number of ITT entries */ 2 dst_size fixed bin (18), /* number of allowed DST entries */ 2 itt_free_list bit (18), /* pointer to ITT free list */ 2 used_itt fixed bin (18), /* number of used ITT entries */ 2 initializer_id bit (36) aligned, /* process id of initializer */ 2 n_eligible fixed bin (18), /* number of processes eligible */ 2 max_eligible fixed bin (30), /* maximum allowed number of eligible processes */ 2 wait_enable fixed bin (18), /* turned on when waiting mechanism works */ 2 apt_entry_size fixed bin (18), /* size of an APT entry */ 2 interactive_q aligned like based_sentinel, /* head of interactive queue */ 2 dst_ptr ptr, /* pointer to device signal table */ 2 old_user ptr, /* last process to run (apt ptr ) */ 2 initialize_time fixed bin (71), /* time of initialization */ 2 init_event fixed bin (18), /* wait event during initialization */ 2 oldt fixed bin (18), /* timer reading from previous process */ 2 newt fixed bin (18), /* timer setting for new process */ 2 tefirst fixed bin (30), /* first eligible time */ 2 telast fixed bin (30), /* last eligible time */ 2 timax fixed bin (35), /* time in queue for lowest level */ 2 empty_q bit (18), /* thread of empty APT entries */ 2 working_set_addend fixed bin (18), /* additive working set parameter */ 2 ready_q_head bit (0) aligned, /* for added segdef */ 2 eligible_q_head aligned like based_sentinel, /* head of eligible queue */ 2 ready_q_tail bit (0) aligned, /* for added segdef */ 2 eligible_q_tail aligned like based_sentinel, /* tail of eligible queue */ 2 idle_tail aligned like based_sentinel, /* tail of idle list */ 2 min_eligible fixed bin (30), 2 alarm_timer_list bit (18) aligned, /* rel pointer to apt entry for next alarm timer */ 2 guaranteed_elig_inc fixed bin (35), /* amount of guaranteed eligibility time in microsecs. */ 2 priority_sched_inc fixed bin (35), /* amount of block time before process is given priority */ 2 next_alarm_time fixed bin (71), /* clock time for next alarm timer */ 2 priority_sched_time fixed bin (71), /* time for priority process to be given priority */ 2 opc_polling_time fixed bin (71), /* time to poll console DIM */ 2 disk_polling_time fixed bin (71), /* time to poll disk DIM */ 2 tape_polling_time fixed bin (71), /* time to poll tape DIM */ 2 imp_polling_time fixed bin (71), /* time to poll imp */ 2 imp_polling_lock fixed bin (18), /* do not poll if lock set */ 2 max_channels fixed bin (18), /* num special channels per process */ /* 400 octal */ 2 system_virtual_time fixed bin (71), /* non-idle virtual time */ 2 credit_bank fixed bin (71), /* credits not yet passed out */ 2 min_wct_index bit (18) aligned, /* offset of initializer work class table entry */ 2 max_wct_index bit (18) aligned, /* offset of highest wcte currently defined */ 2 delta_vt fixed bin (71), /* temp used by pxss.compute_virtual_clocks */ 2 gross_idle_time fixed bin (71), /* idle time_used_clock */ 2 credits_per_scatter fixed bin (35), /* total number of credits awarded at once */ 2 best_credit_value fixed bin (18), /* temp for pxss.find_next_eligible */ 2 define_wc_time fixed bin (71), /* clock time when workclasses last degined */ 2 max_batch_elig fixed bin (35), 2 num_batch_elig fixed bin (35), 2 deadline_mode fixed bin (35), /* 0=> ti sorts, else deadline sorts */ 2 credits_scattered fixed bin (35), 2 max_max_eligible fixed bin (30), /* Maximum of maxe */ 2 max_stopped_stack_0 fixed bin (35), /* Maximum stack_0's suspended by stopped procs */ 2 stopped_stack_0 fixed bin (35), /* Number stack_0's suspended by stopped procs */ 2 mos_polling_interval fixed bin (35), /* for heals */ 2 mos_polling_time fixed bin (71), /* for heals */ 2 vcpu_response_bounds (VCPU_RESPONSE_BOUNDS) fixed bin (35), 2 vcpu_response_bounds_size fixed bin (35), 2 meter_response_time_calls fixed bin (35), 2 meter_response_time_invalid fixed bin (35), 2 meter_response_time_overhead fixed bin (71), 2 init_wait_time fixed bin (71), /* used by wait/notify during initialization */ 2 init_wait_timeout fixed bin (71), /* notify-timeout interval during initialization */ 2 init_timeout_severity fixed bin, /* notify-timeout severity during initialization */ 2 init_timeout_recurse fixed bin, /* count of NTO recursion during initialization */ 2 max_timer_register fixed bin (71), /* max cpu burst = # cpus x pre_empt_sample_time */ 2 pre_empt_sample_time fixed bin (35), /* tuning parameter - max time between samples */ 2 governing_credit_bank fixed bin (35), /* used for limiting eligibility on governed work classes*/ 2 process_initial_quantum fixed bin (35), /* eligibility quantum first eligibility */ 2 default_procs_required bit (8) aligned, /* default mask of CPUs required */ 2 work_class_idle fixed bin (71), /* idle time due to work class restrictions */ /* Tuning Parameters for Stack Truncation */ 2 stk_truncate bit (1) aligned, 2 stk_truncate_always bit (1) aligned, 2 stk_trunc_avg_f1 fixed bin (35, 18), 2 stk_trunc_avg_f2 fixed bin (35, 18), 2 lock_error_severity fixed bin, /* syserr severity */ 2 gv_integration fixed bin (35), /* Integration interval for governing */ 2 gv_integration_set bit (1) aligned, /* ON => gv_integration set by ctp */ 2 pauses fixed bin (35), /* Calls to pause (reschedule) */ 2 volmap_polling_time fixed bin (71), 2 next_ring0_timer fixed bin (71), /* next time that ring 0 timer goes off */ 2 realtime_io_priority_switch fixed bin, /* 0 => give I/O interrupt wakeups realtime priotiry */ 2 realtime_io_deadline fixed bin (35), /* Delta to clock for I/O realtime deadline */ 2 realtime_io_quantum fixed bin (35), /* Quantum for I/O realtime burst */ 2 realtime_priorities fixed bin (35), /* Count for metering */ 2 relinquishes fixed bin (35), /* Calls to relinquish_priority */ 2 abort_ips_mask bit (36) aligned, /* IPS mask for tc_util$check_abort */ /* 500 octal */ 2 uid_array (0:15) bit (36) aligned, /* array from which a uid is chosen (randomly) */ 2 pad5 (176) fixed bin (35), /* room for expansion compatibly */ /* 1000 octal */ 2 pad7 (64) fixed bin (35), /* 1100 octal */ 2 pad6 (8) fixed bin (35), 2 work_class_table aligned, /* array of per workclass information */ 3 wcte (0:16) aligned like wct_entry, /* 3000 octal */ 2 apt fixed bin; dcl wctep ptr; dcl 1 wct_entry aligned based (wctep), /* Work class entry */ 2 thread unaligned, /* Ready list */ 3 fp bit (18), /* Head of ready list */ 3 bp bit (18), /* Tail of ready list */ 2 flags unaligned, 3 mnbz bit (1), /* Sentinel bit must not be zero. */ 3 defined bit (1), 3 io_priority bit (1), 3 governed bit (1), 3 interactive_q bit (1), 3 pad bit (31), 2 credits fixed bin (35), /* Current worthiness of group */ 2 minf fixed bin (35), /* min fraction of cpu */ 2 pin_weight fixed bin (35), /* number of cycles to pin pages */ 2 eligibilities fixed bin (35), /* Count of eligibilities awarded */ 2 cpu_sum fixed bin (71), /* CPU used by members */ 2 resp1 fixed bin (71), 2 resp2 fixed bin (71), 2 quantum1 fixed bin (35), 2 quantum2 fixed bin (35), 2 rmeter1 fixed bin (71), 2 rmeter2 fixed bin (71), 2 rcount1 fixed bin (35), 2 rcount2 fixed bin (35), 2 realtime fixed bin (35), 2 purging fixed bin (35), 2 maxel fixed bin (35), 2 nel fixed bin (35), 2 number_thinks fixed bin (35), /* number times process entered "think" state */ 2 number_queues fixed bin (35), /* number times process entered "queued" state */ 2 total_think_time fixed bin (71), 2 total_queue_time fixed bin (71), /* The next three arrays correspond to the array vcpu_response_bounds */ 2 number_processing (VCPU_RESPONSE_BOUNDS+1) fixed bin (35), /* number times entered "processing" state */ 2 total_processing_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 2 total_vcpu_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 2 maxf fixed bin (35), /* maximum fraction of cpu time */ 2 governing_credits fixed bin (35), /* for limiting cpu resources */ 2 pad1 (4) fixed bin (35); dcl 1 based_sentinel aligned based, /* format of pxss-style sentinel */ 2 fp bit (18) unal, 2 bp bit (18) unal, 2 sentinel bit (36) aligned; dcl VCPU_RESPONSE_BOUNDS fixed bin init (3) int static options (constant); /* END INCLUDE FILE tcm.incl.pl1 */ */ ----------------------------------------------------------- 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 */