ASSEMBLY LISTING OF SEGMENT >spec>install>1112>pxss.alm ASSEMBLED ON: 11/11/89 0925.8 mst Sat OPTIONS USED: -target l68 list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1002.3 mst Fri 1 " *********************************************************** 2 " * * 3 " * Copyright, (C) Honeywell Bull Inc., 1987 * 4 " * * 5 " * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6 " * * 7 " * Copyright (c) 1972 by Massachusetts Institute of * 8 " * Technology and Honeywell Information Systems, Inc. * 9 " * * 10 " *********************************************************** 11 12 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 13 " 14 " pxss -- The Multics Traffic Controller (Scheduler) 15 " 16 " Last Modified: (Date and Reason) 17 " 18 " February 1985 by Keith Loepere to fix initialization disk polling. 19 " January 1985 by Keith Loepere to fix window in ips sending and oob in 20 " set_work_class. 21 " December 1984 by Keith Loepere for page_pause and pause functions. 22 " 84-11-21 by E. Swenson for IPC event channel validation. 23 " October 1984 by M. Pandolf for getwork suspension 24 " 84-07-23 by E. Swenson to clean up ittes of dead processes 25 " correctly. 26 " 07/16/84 by R. Michael Tague: Changed the $ips_wakeup and 27 " $ips_wakeup_int entries to expect an ips bit mask 28 " as an indicator of the signal to be sent instead 29 " of a name. 30 " 84-02 BIM for sst$ references instead of sst. 31 " October 1983 by Keith Loepere for disk polling during initialization. 32 " June 1983 by E. A. Ranzenbach for operator console polling. 33 " June 1983 by Chris Jones to call the new IOI entries. 34 " May 1983 by BIM for call-side pre-empt and stop. 35 " April 1983 by E. N. Kittlitz to DRL instead of 0,ic looping. 36 " February 1983 by E. N. Kittlitz for hex floating point. 37 " December 1982 by C. Hornig to punt NCP 38 " October 1982 by C. Hornig for no ITT message on fast channels. 39 " August 1982 by J. Bongiovanni for realtime_io priority, 40 " relinquish_priority 41 " April 1982 by J. Bongiovanni to enhance governing 42 " February 1982 by J. Bongiovanni to fix masking bug 43 " September 1981 by J. Bongiovanni for procs_required, moving 44 " code to tc_util 45 " June 1981 by J. Bongiovanni for governed work classes, 46 " -tcpu, +pre_empt_sample_time 47 " May 1981 by J. Bongiovanni for response time metering 48 " 03/01/81 by W. Olin Sibert, for Phase One of ADP conversion 49 " March 1981 by J. Bongiovanni for page pinning, saved stack_0's, 50 " argument copying protocol, initialization NTO 51 " February 1981 by J. Bongiovanni for fast connect 52 " March 1981 by E. Donner for new ipc - include file for itt entry 53 " and to change check for fast channel 54 " February 1981 by J. Bongiovanni to fix set_proc_required 55 " January 1981 by J. Bongiovanni to fix ITT overflow, credit 56 " clipping 57 " Spring 1979 by B. Greenberg for shared stack_0's. 58 " Fall 1978 RE Mullen for +ptl_NTO, +disable int_q, -XED's 59 " Winter 1977 RE Mullen for lockless (lockfull?) scheduler: 60 " concurrent read_lock, ptlocking state, apte.lock, 61 " unique_wakeup entry, tcpu_scheduling 62 " Spring 1976 by RE Mullen for deadline scheduler 63 " 02/17/76 by S. Webber for new reconfiguration 64 " 3/10/76 by B Greenberg for page table locking event 65 " Spring 1975 RE Mullen to implement priority scheduler and 66 " delete loop_wait code. Also fixed plm/lost_notify bug. 67 " Last modified on 02/11/75 at 19:49:10 by R F Mabee. Fixed arg-copying & other bugs. 68 " 12/10/74 by RE Mullen to add tforce, ocore, steh, tfmax & atws 69 " disciplines to insure response in spite of long quanta, and 70 " fix bugs in get_processor, set_newt, and loop_wait unthreading. 71 " 12/6/74 by D. H. Hunt to add access isolation mechanism checks 72 " 4/8/74 by S.H.Webber to merge privileged and unprivileged code. 73 " and to add quit priority and fix lost notify bug 74 " 5/1/74 by B. Greenberg to add cache code 75 " 8/8/72 by R.B.Snyder for follow-on 76 " 2/2/72 by R. J. Feiertag to a simulated alarm clock 77 " 9/16/71 by Richard H. Gumpertz to add entry rws_notify 78 " 7/**/69 by Steve H. Webber 79 " 80 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 81 82 " HISTORY COMMENTS: 83 " 1) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 84 " audit(86-05-13,Martinson), install(86-05-14,MR12.0-1056): 85 " Correct error message documentation. 86 " 2) change(86-08-09,Kissel), approve(86-08-12,MCR7479), 87 " audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 88 " Changed to check the flags in an event channel name when sending a 89 " wakeup. If the flags indicate that this is an asynchronous event 90 " channel, then send an IPS wkp_ signal in addition to the normal IPC 91 " wakeup. This code uses an algorithm copied from ipc_validate_ to decode 92 " the event channel flags, hence, any changes must be reflected in both 93 " places. 94 " 3) change(88-09-16,Fawcett), approve(88-10-06,MCR8004), 95 " audit(88-10-06,Farley), install(88-10-10,MR12.2-1156): 96 " Removed check in compute_virtual_clocks which was testing for a zero 97 " second word in prds$last_recorded_time to determine if it should be 98 " initialized. The initialization is already done in init_processor. All 99 " this check was doing was opening a timing hole for errors to occur (i.e. 100 " the last 36 bits of the clock roll over ~ every 19 hours). 101 " 4) change(88-10-05,Fawcett), approve(88-10-05,MCR7999), 102 " audit(88-10-06,Farley), install(88-10-10,MR12.2-1156): 103 " Changed to always reset the number a pages in use used before giving 104 " the processor the process. This enables a more acturate measure of 105 " memory units. 106 " END HISTORY COMMENTS 107 000000 108 name pxss 109 110 111 iftarget adp " warn (This has not been converted yet for the ADP. Beware.) " ifend 114 115 000010 116 link prds_link,prds$+0 117 118 even 000000 119 channel_mask_set: 000000 aa 000000 000017 120 oct 17,17 000001 aa 000000 000017 121 000002 aa 077777 000043 122 null: its -1,1 null pointer 000003 aa 000001 000000 123 000004 124 null_epaq: 000004 aa 077777 000000 125 vfd 3/0,15/-1,18/0,18/1,18/0 000005 aa 000001 000000 126 000006 127 ring0_timer_event: 000006 aa 144 154 141 171 128 aci "dlay" 000007 aa 000000 0110 03 129 even 130 " 131 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 132 " 133 " Table of contents 134 " 135 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 136 137 002067 138 entry addevent 000010 139 entry block 002102 140 entry delevent 002424 141 entry dvctl_retry_ptlwait 000667 142 entry empty_t 000012 143 entry fast_ipc_block 000104 144 entry fast_ipc_get_event 000530 145 entry force_stop 000266 146 entry free_itt 001007 147 entry get_entry 000102 148 entry get_event 001143 149 entry guaranteed_eligibility_off 001135 150 entry guaranteed_eligibility_on 000116 151 entry io_wakeup 004527 152 entry ips_wakeup 004524 153 entry ips_wakeup_int 001224 154 entry lock_apt 001234 155 entry lock_apte 002300 156 entry notify 002262 157 entry page_notify 002152 158 entry page_pause 002111 159 entry page_wait 002176 160 entry pause 000344 161 entry pre_empt 000342 162 entry pre_empt_poll 002430 163 entry ptl_notify 002372 164 entry ptl_wait 001155 165 entry relinquish_priority 000107 166 entry ring_0_wakeup 001203 167 entry set_cpu_timer 000602 168 entry set_procs_required 001172 169 entry set_timer 001041 170 entry set_work_class 000510 171 entry start 000427 172 entry stop 000427 173 entry stop_wakeup 005305 174 entry suspend_getwork 002644 175 entry thread_in_idle 000113 176 entry unique_ring_0_wakeup 001230 177 entry unlock_apt 001247 178 entry unlock_apte 002660 179 entry unthread_apte 002513 180 entry usage_values 002240 181 entry wait 002231 182 entry waitp 000122 183 entry wakeup 000107 184 entry wakeup_int 185 186 " 187 include apte 1-1 " BEGIN INCLUDE FILE apte.incl.alm 1-2 " 1-3 " 1-4 " HISTORY COMMENTS: 1-5 " 1) change(86-08-09,Kissel), approve(86-08-12,MCR7479), 1-6 " audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 1-7 " Added the ipc_r_offset, ipc_r_factor, and apad fields from the pl1 1-8 " include file to support async event channel wakeups. 1-9 " END HISTORY COMMENTS 1-10 000000 1-11 equ apte.thread,0 000000 1-12 equ apte.fp,0 "UPPER 000000 1-13 equ apte.bp,0 "LOWER 1-14 000001 1-15 equ apte.flags,1 000001 1-16 equ apte.sentinel,1 400000 1-17 bool apte.mbz,400000 "DU 200000 1-18 bool apte.wakeup_waiting,200000 "DU 100000 1-19 bool apte.stop_pending,100000 "DU 040000 1-20 bool apte.pre_empted,040000 "DU 020000 1-21 bool apte.hproc,020000 "DU 010000 1-22 bool apte.loaded,010000 "DU 004000 1-23 bool apte.eligible,004000 "DU 002000 1-24 bool apte.idle,002000 "DU 001000 1-25 bool apte.interaction,001000 "DU 000400 1-26 bool apte.pre_empt_pending,000400 "DU 000200 1-27 bool apte.default_procs_required,000200 "DU 000100 1-28 bool apte.realtime_burst,000100 "DU 000040 1-29 bool apte.always_loaded,000040 "DU 000020 1-30 bool apte.dbr_loaded,000020 "DU 000010 1-31 bool apte.being_loaded,000010 "DU 000004 1-32 bool apte.shared_stack_0,000004 "DU 000002 1-33 bool apte.page_wait_flag,000002 "DU 000001 1-34 bool apte.firstsw,000001 "DU 000001 1-35 equ apte.state,1 "LOWER 1-36 000002 1-37 equ apte.page_faults,2 1-38 000003 1-39 equ apte.processid,3 1-40 000004 1-41 equ apte.te,4 1-42 000005 1-43 equ apte.ts,5 1-44 000006 1-45 equ apte.ti,6 1-46 000007 1-47 equ apte.timax,7 1-48 000010 1-49 equ apte.ipc_pointers,8 000010 1-50 equ apte.event_thread,8 "UPPER 1-51 000011 1-52 equ apte.ips_message,9 1-53 000012 1-54 equ apte.asteps,10 000012 1-55 equ apte.pds,10 "UPPER 000012 1-56 equ apte.dseg,10 "LOWER 1-57 000013 1-58 equ apte.prds,11 "UPPER 000013 1-59 equ apte.savex7,11 "LOWER 1-60 000014 1-61 equ apte.term_processid,12 1-62 000015 1-63 equ apte.lock_id,13 000016 1-64 equ apte.time_used_clock,14 1-65 000020 1-66 equ apte.wait_event,16 1-67 000021 1-68 equ apte.wct_index,17 "UPPER 000021 1-69 equ apte.flags2,17 "LOWER 400000 1-70 bool apte.prior_sched,400000 "DL 000023 1-71 equ apte.chans_offset,19 374000 1-72 bool apte.special_chans,374000 "DL 000021 1-73 equ apte.batch_word,17 000010 1-74 bool apte.batch,000010 "DL 000007 1-75 bool apte.pr_tag_mask,000007 1-76 000022 1-77 equ apte.state_change_time,18 1-78 000024 1-79 equ apte.alarm_event,20 1-80 000026 1-81 equ apte.alarm_time_thread,22 "UPPER 000026 1-82 equ apte.alarm_time,22 1-83 000030 1-84 equ apte.term_channel,24 1-85 000032 1-86 equ apte.ws_size,26 1-87 000033 1-88 equ apte.temax,27 1-89 000034 1-90 equ apte.deadline,28 1-91 000036 1-92 equ apte.lock,30 1-93 000037 1-94 equ apte.cpu_monitor,31 units = 1/1024 sec 1-95 000040 1-96 equ apte.paging_measure,32 1-97 000042 1-98 equ apte.access_authorization,34 "DOUBLE WORD 400000 1-99 bool apte.no_ipc_check,400000 "DL 1-100 000044 1-101 equ apte.dbr,36 1-102 000046 1-103 equ apte.virtual_cpu_time,38 1-104 000050 1-105 equ apte.ittes_sent,40 000051 1-106 equ apte.ittes_got,41 1-107 000052 1-108 equ apte.current_response_state,42 " DU 000053 1-109 equ apte.number_processing,43 000054 1-110 equ apte.last_response_state_time,44 000056 1-111 equ apte.total_processing_time,46 000060 1-112 equ apte.begin_interaction_vcpu,48 1-113 000062 1-114 equ apte.saved_temax,50 000063 1-115 equ apte.procs_required,51 776000 1-116 bool apte.procs_required_mask,776000 " DU 1-117 000064 1-118 equ apte.ipc_r_offset,52 000065 1-119 equ apte.ipc_r_factor,53 000066 1-120 equ apte.apad,54 1-121 000100 1-122 equ size_of_apt_entry,64 1-123 1-124 " MISC OLD DCLS. 1-125 000013 1-126 equ apte.le_shift,11 000175 1-127 bool apte.timer_factor,175 1-128 1-129 1-130 " 1-131 " END INCLUDE FILE apte.incl.alm 1-132 " 188 " 189 include aste 2-1 2-2 2-3 "BEGIN INCLUDE FILE aste.incl.alm 2-4 2-5 2-6 "Created 01/14/85 1523.3 est Mon by convert_include_file, 2-7 " Version of 01/09/85 0954.4 est Wed. 2-8 2-9 "Made from >Pool>m>loe>incl>aste.incl.pl1, 2-10 " modified 01/08/85 1115.0 est Tue 2-11 2-12 " 2-13 " Structure aste 2-14 " 000014 2-15 equ aste_size,12 2-16 000000 2-17 equ aste.fp,0 " UPPER 000000 2-18 equ aste.bp,0 " LOWER 2-19 000001 2-20 equ aste.infl,1 " UPPER 000001 2-21 equ aste.infp,1 " LOWER 2-22 000002 2-23 equ aste.strp,2 " UPPER 000002 2-24 equ aste.par_astep,2 " LOWER 2-25 000003 2-26 equ aste.uid,3 2-27 000004 2-28 equ aste.msl_word,4 000033 2-29 equ aste.msl_shift,27 000777 2-30 bool aste.msl_mask,000777 000004 2-31 equ aste.pvtx_word,4 000022 2-32 equ aste.pvtx_shift,18 000777 2-33 bool aste.pvtx_mask,000777 000004 2-34 equ aste.vtocx,4 " LOWER 2-35 000005 2-36 equ aste.usedf_word,5 400000 2-37 bool aste.usedf,400000 " DU 000005 2-38 equ aste.init_word,5 200000 2-39 bool aste.init,200000 " DU 000005 2-40 equ aste.gtus_word,5 100000 2-41 bool aste.gtus,100000 " DU 000005 2-42 equ aste.gtms_word,5 040000 2-43 bool aste.gtms,040000 " DU 000005 2-44 equ aste.hc_word,5 020000 2-45 bool aste.hc,020000 " DU 000005 2-46 equ aste.hc_sdw_word,5 010000 2-47 bool aste.hc_sdw,010000 " DU 000005 2-48 equ aste.any_access_on_word,5 004000 2-49 bool aste.any_access_on,004000 " DU 000005 2-50 equ aste.write_access_on_word,5 002000 2-51 bool aste.write_access_on,002000 " DU 000005 2-52 equ aste.inhibit_cache_word,5 001000 2-53 bool aste.inhibit_cache,001000 " DU 000005 2-54 equ aste.explicit_deact_ok_word,5 000400 2-55 bool aste.explicit_deact_ok,000400 " DU 000005 2-56 equ aste.deact_error_word,5 000200 2-57 bool aste.deact_error,000200 " DU 000005 2-58 equ aste.hc_part_word,5 000100 2-59 bool aste.hc_part,000100 " DU 000005 2-60 equ aste.fm_damaged_word,5 000040 2-61 bool aste.fm_damaged,000040 " DU 000005 2-62 equ aste.multi_class_word,5 000020 2-63 bool aste.multi_class,000020 " DU 000005 2-64 equ aste.dius_word,5 000002 2-65 bool aste.dius,000002 " DU 000005 2-66 equ aste.nid_word,5 000001 2-67 bool aste.nid,000001 " DU 000005 2-68 equ aste.dmpr_pad_word,5 400000 2-69 bool aste.dmpr_pad,400000 " DL 000005 2-70 equ aste.ehs_word,5 200000 2-71 bool aste.ehs,200000 " DL 000005 2-72 equ aste.nqsw_word,5 100000 2-73 bool aste.nqsw,100000 " DL 000005 2-74 equ aste.dirsw_word,5 040000 2-75 bool aste.dirsw,040000 " DL 000005 2-76 equ aste.master_dir_word,5 020000 2-77 bool aste.master_dir,020000 " DL 000005 2-78 equ aste.volmap_seg_word,5 010000 2-79 bool aste.volmap_seg,010000 " DL 000005 2-80 equ aste.tqsw_word,5 004000 2-81 bool aste.tqsw,004000 " DL 2-82 000006 2-83 equ aste.dtu,6 000007 2-84 equ aste.dtm,7 2-85 000010 2-86 equ aste.quota,8 " UPPER 2-87 000011 2-88 equ aste.used,9 " UPPER 2-89 000012 2-90 equ aste.csl_word,10 000033 2-91 equ aste.csl_shift,27 000777 2-92 bool aste.csl_mask,000777 000012 2-93 equ aste.fmchanged_word,10 000400 2-94 bool aste.fmchanged,000400 " DU 000012 2-95 equ aste.fms_word,10 000200 2-96 bool aste.fms,000200 " DU 000012 2-97 equ aste.npfs_word,10 000100 2-98 bool aste.npfs,000100 " DU 000012 2-99 equ aste.gtpd_word,10 000040 2-100 bool aste.gtpd,000040 " DU 000012 2-101 equ aste.dnzp_word,10 000020 2-102 bool aste.dnzp,000020 " DU 000012 2-103 equ aste.per_process_word,10 000010 2-104 bool aste.per_process,000010 " DU 000012 2-105 equ aste.ddnp_word,10 000004 2-106 bool aste.ddnp,000004 " DU 000012 2-107 equ aste.records_word,10 000011 2-108 equ aste.records_shift,9 000777 2-109 bool aste.records_mask,000777 000012 2-110 equ aste.np_word,10 000000 2-111 equ aste.np_shift,0 000777 2-112 bool aste.np_mask,000777 2-113 000013 2-114 equ aste.ht_fp,11 " UPPER 000013 2-115 equ aste.fmchanged1_word,11 400000 2-116 bool aste.fmchanged1,400000 " DL 000013 2-117 equ aste.damaged_word,11 200000 2-118 bool aste.damaged,200000 " DL 000013 2-119 equ aste.pack_ovfl_word,11 100000 2-120 bool aste.pack_ovfl,100000 " DL 000013 2-121 equ aste.synchronized_word,11 040000 2-122 bool aste.synchronized,040000 " DL 000013 2-123 equ aste.ptsi_word,11 000006 2-124 equ aste.ptsi_shift,6 000003 2-125 bool aste.ptsi_mask,000003 000013 2-126 equ aste.marker_word,11 000000 2-127 equ aste.marker_shift,0 000077 2-128 bool aste.marker_mask,000077 2-129 2-130 " 2-131 " Structure aste_part 2-132 " 000014 2-133 equ aste_part_size,12 2-134 2-135 000000 2-136 equ aste_part.one,0 000001 2-137 equ aste_part.two,1 " DOUBLE 2-138 000013 2-139 equ aste_part.three_word,11 000000 2-140 equ aste_part.three_shift,0 000377 2-141 bool aste_part.three_mask,000377 2-142 2-143 " 2-144 " Structure seg_aste 2-145 " 000014 2-146 equ seg_aste_size,12 2-147 2-148 000010 2-149 equ seg_aste.usage,8 2-150 2-151 "END INCLUDE FILE aste.incl.alm 190 " 191 include drl_macros 3-1 " 3-2 " BEGIN INCLUDE FILE ... drl_macros.incl.alm 3-3 " 3-4 " These macros define operators for conditional tests to cause a system crash. 3-5 " If the condition is met, a derail is executed. The macro operand field is the 3-6 " a string (length <=32 characters) of the form: 3-7 " MODULE: REASON. 3-8 " 3-9 " By enabling the commented line: zero &2.tst,0, you get a word preceding 3-10 " the DRL instruction which points back to the test that caused the derail. 3-11 " This is not done by default because history registers do the same thing. 3-12 3-13 macro drl_mac 1 3-14 ife &3,() 2 3-15 warn (&1: Argument missing.) 3 3-16 ifend 4 3-17 use .derails. 5 3-18 " zero &2.tst,0 6 3-19 &2.drl: drl &2.acc 7 3-20 use .drlmsg. 8 3-21 &2.acc: acc /&3/ 9 3-22 use .text. 10 3-23 &end 3-24 3-25 macro drlmi 1 3-26 &U.tst: tmi &U.drl 2 3-27 maclist off,save 3 3-28 drl_mac drlmi,&U,(&1) 4 3-29 maclist restore 5 3-30 &end 3-31 3-32 macro drlmoz 1 3-33 &U.tst: tmoz &U.drl 2 3-34 maclist off,save 3 3-35 drl_mac drlmoz,&U,(&1) 4 3-36 maclist restore 5 3-37 &end 3-38 3-39 macro drlnz 1 3-40 &U.tst: tnz &U.drl 2 3-41 maclist off,save 3 3-42 drl_mac drlnz,&U,(&1) 4 3-43 maclist restore 5 3-44 &end 3-45 3-46 macro drltra 1 3-47 &U.tst: tra &U.drl 2 3-48 maclist off,save 3 3-49 drl_mac drltra,&U,(&1) 4 3-50 maclist restore 5 3-51 &end 3-52 3-53 macro drlpl 1 3-54 &U.tst: tpl &U.drl 2 3-55 maclist off,save 3 3-56 drl_mac drlpl,&U,(&1) 4 3-57 maclist restore 5 3-58 &end 3-59 3-60 macro drlpnz 1 3-61 &U.tst: tpnz &U.drl 2 3-62 maclist off,save 3 3-63 drl_mac drlpnz,&U,(&1) 4 3-64 maclist restore 5 3-65 &end 3-66 3-67 macro drlze 1 3-68 &U.tst: tze &U.drl 2 3-69 maclist off,save 3 3-70 drl_mac drlze,&U,(&1) 4 3-71 maclist restore 5 3-72 &end 3-73 " 3-74 " END INCLUDE FILE drl_macros.incl.alm 3-75 " 192 " 193 include event_channel_name 4-1 4-2 4-3 "BEGIN INCLUDE FILE event_channel_name.incl.alm 4-4 4-5 4-6 "Created 08/09/86 1104.1 edt Sat by convert_include_file, 4-7 " Version of 01/09/85 1054.4 edt Wed. 4-8 4-9 " HISTORY COMMENTS: 4-10 " 1) change(86-08-09,Kissel), approve(86-08-12,MCR7479), 4-11 " audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 4-12 " Converted from event_channel_name.incl.pl1. The field, encoded_index, 4-13 " has been named encoded_idx to get around the ALM length restriction. 4-14 " END HISTORY COMMENTS 4-15 4-16 " 4-17 " Structure event_channel_name 4-18 " 000002 4-19 equ event_channel_name_size,2 4-20 000000 4-21 equ event_channel_name.encoded_idx,0 " UPPER 000000 4-22 equ event_channel_name.verifier,0 " LOWER 4-23 000001 4-24 equ event_channel_name.ring_word,1 000041 4-25 equ event_channel_name.ring_shift,33 000007 4-26 bool event_channel_name.ring_mask,000007 000001 4-27 equ event_channel_name.type_word,1 040000 4-28 bool event_channel_name.type,040000 " DU 000001 4-29 equ event_channel_name.mbz_word,1 000022 4-30 equ event_channel_name.mbz_shift,18 037777 4-31 bool event_channel_name.mbz_mask,037777 000001 4-32 equ event_channel_name.unique_id,1 " LOWER 4-33 000000 4-34 bool FAST_CHANNEL_TYPE,000000 " DU MANIFEST 400000 4-35 bool REGULAR_CHANNEL_TYPE,400000 " DU MANIFEST 000000 4-36 bool NORMAL_CHANNEL_FLAGS,000000 " DU MANIFEST 100000 4-37 bool SEND_IPS_WKP_CHANNEL_FLAGS,100000 " DU MANIFEST 4-38 4-39 " 4-40 " Structure decoded_index 4-41 " 000041 4-42 equ decoded_index.flags_shift,33 000007 4-43 bool decoded_index.flags_mask,000007 000022 4-44 equ decoded_index.index_shift,18 077777 4-45 bool decoded_index.index_mask,077777 4-46 000001 000000 4-47 equ ENCODED_INDEX_CONSTANT,262144 " MANIFEST 4-48 4-49 "END INCLUDE FILE event_channel_name.incl.alm 194 " 195 include ips_mask_data 5-1 " 5-2 " BEGIN INCLUDE FILE ips_mask_data.incl.alm 5-3 " 000000 5-4 equ ips.count,0 000001 5-5 equ ips.data,1 000001 5-6 equ ips.data.name,ips.data+0 000011 5-7 equ ips.data.mask,ips.data+8 000011 5-8 equ ips.size,9 5-9 " 5-10 " END INCLUDE FILE ips_mask_data.incl.alm 5-11 " 196 " 197 include itt_entry 6-1 6-2 6-3 "BEGIN INCLUDE FILE itt_entry.incl.alm 6-4 6-5 6-6 "Created 04/02/81 1446.7 est Thu by convert_include_file, 6-7 " Version of 02/27/81 0031.1 est Fri. 6-8 6-9 "Made from >udd>m>e>ipc>itt_entry.incl.pl1, 6-10 " modified 04/02/81 1446.7 est Thu 6-11 6-12 " 6-13 " Structure itt_entry 6-14 " 000010 6-15 equ itt_entry_size,8 6-16 000000 6-17 equ itt_entry.next_itt_relp,0 " UPPER 6-18 000001 6-19 equ itt_entry.sender,1 000002 6-20 equ itt_entry.origin,2 " LEVEL 2 6-21 000002 6-22 equ itt_entry.dev_signal,2 " UPPER 000002 6-23 equ itt_entry.ring,2 " LOWER 6-24 000003 6-25 equ itt_entry.target_id,3 000004 6-26 equ itt_entry.channel_id,4 " DOUBLE 000006 6-27 equ itt_entry.message,6 " DOUBLE 6-28 6-29 "END INCLUDE FILE itt_entry.incl.alm 198 " 199 include mc 7-1 " 7-2 " BEGIN INCLUDE FILE mc.incl.alm 6/72 SHW 7-3 " Modified 8/80 by J. A. Bush for dps8/70M CPU 7-4 " 7-5 7-6 " General layout of data items. 7-7 000000 7-8 equ mc.prs,0 pointer registers 000020 7-9 equ mc.regs,16 registers 000030 7-10 equ mc.scu,24 SCU data 000050 7-11 equ mc.eis_info,40 pointers and lengths for EIS 7-12 7-13 " Temporary storage for software 7-14 000040 7-15 equ mc.mask,32 system controller mask at time of fault 000042 7-16 equ mc.ips_temp,34 temporary storage for IPS info 000043 7-17 equ mc.errcode,35 error code 000044 7-18 equ mc.fim_temp,36 temporary to hold fault index and unique index 000045 7-19 equ mc.fault_reg,37 fault register 000046 7-20 equ mc.fault_time,38 time of fault 000046 7-21 equ mc.cpu_type_word,38 CPU type from rsw (2). overlays part of time word 300000 7-22 bool mc.cpu_type_mask,300000 DU 000046 7-23 equ mc.ext_fault_reg,38 ext fault reg for dps8. overlays part of time word 077774 7-24 bool mc.ext_fault_reg_mask,77774 DU 000003 7-25 equ mc.cpu_type_shift,3 positions to shift right or left 7-26 7-27 7-28 7-29 " SCU DATA 7-30 7-31 " WORD (0) PROCEDURE POINTER REGISTER 7-32 000030 7-33 equ mc.scu.ppr.prr_word,24 Procedure Ring Register 000000 7-34 equ scu.ppr.prr_word,0 700000 7-35 bool scu.ppr.prr_mask,700000 DU 000041 7-36 equ scu.ppr.prr_shift,33 7-37 000030 7-38 equ mc.scu.ppr.psr_word,24 Procedure Segment Register 000000 7-39 equ scu.ppr.psr_word,0 077777 7-40 bool scu.ppr.psr_mask,077777 DU 000022 7-41 equ scu.ppr.psr_shift,18 7-42 000030 7-43 equ mc.scu.ppr.p_word,24 Procedure Privileged Bit 000000 7-44 equ scu.ppr.p_word,0 400000 7-45 bool scu.ppr.p,400000 DL 7-46 7-47 " APPENDING UNIT STATUS 000030 7-48 equ mc.scu.apu_stat_word,24 APPENDING UNIT STATUS 000000 7-49 equ scu.apu_stat_word,0 7-50 200000 7-51 bool scu.apu.xsf,200000 DL - Ext Seg Flag - IT mod. 100000 7-52 bool scu.apu.sdwm,100000 DL - Match in SDW Ass. Mem. 040000 7-53 bool scu.apu.sd_on,040000 DL - SDW Ass. Mem. ON 020000 7-54 bool scu.apu.ptwm,020000 DL - Match in PTW Ass. Mem. 010000 7-55 bool scu.apu.pt_on,010000 DL - PTW Ass. Mem. ON 004000 7-56 bool scu.apu.pi_ap,004000 DL - Instr fetch or Append cycle 002000 7-57 bool scu.apu.dsptw,002000 DL - Fetch of DSPTW 001000 7-58 bool scu.apu.sdwnp,001000 DL - Fetch of SDW non-paged 000400 7-59 bool scu.apu.sdwp,000400 DL - Fetch of SDW paged 000200 7-60 bool scu.apu.ptw,000200 DL - Fetch of PTW 000100 7-61 bool scu.apu.ptw2,000100 DL - Fetch of pre-paged PTW 000040 7-62 bool scu.apu.fap,000040 DL - Fetch of final address paged 000020 7-63 bool scu.apu.fanp,000020 DL - Fetch final address non-paged 000010 7-64 bool scu.apu.fabs,000010 DL - Fetch of final address absolute 7-65 000030 7-66 equ mc.scu.fault_cntr_word,24 Num of retrys of EIS instructions. 000000 7-67 equ scu.fault_cntr_word,0 7-68 000007 7-69 bool scu.fault_cntr_mask,000007 7-70 7-71 7-72 " WORD (1) FAULT DATA 7-73 000031 7-74 equ mc.scu.fault_data_word,25 FAULT DATA 000001 7-75 equ scu.fault_data_word,1 7-76 400000 7-77 bool scu.fd.iro,400000 DU - Illegal Ring Order 200000 7-78 bool scu.fd.oeb,200000 DU - Not In Execute Bracket 100000 7-79 bool scu.fd.e_off,100000 DU - No Execute 040000 7-80 bool scu.fd.orb,040000 DU - Not In Read Bracket 020000 7-81 bool scu.fd.r_off,020000 DU - No Read 010000 7-82 bool scu.fd.owb,010000 DU - Not In Write Bracket 004000 7-83 bool scu.fd.w_off,004000 DU - No Write 002000 7-84 bool scu.fd.no_ga,002000 DU - Not A Gate 001000 7-85 bool scu.fd.ocb,001000 DU - Not in Call Bracket 000400 7-86 bool scu.fd.ocall,000400 DU - Outward Call 000200 7-87 bool scu.fd.boc,000200 DU - Bad Outward Call 000100 7-88 bool scu.fd.inret,000100 DU - Inward Return 000040 7-89 bool scu.fd.crt,000040 DU - Cross Ring Transfer 000020 7-90 bool scu.fd.ralr,000020 DU - Ring Alarm 000010 7-91 bool scu.fd.am_er,000010 DU - Assoc. Mem. Fault 000004 7-92 bool scu.fd.oosb,000004 DU - Out Of Bounds 000002 7-93 bool scu.fd.paru,000002 DU - Parity Upper 000001 7-94 bool scu.fd.parl,000001 DU - Parity Lower 7-95 400000 7-96 bool scu.fd.onc_1,400000 DL - Op Not Complete 200000 7-97 bool scu.fd.onc_2,200000 DL - Op Not Complete 7-98 7-99 " GROUP II FAULT DATA 400000 7-100 bool scu.fd.isn,400000 DU - Illegal Segment Number 200000 7-101 bool scu.fd.ioc,200000 DU - Illegal Op Code 100000 7-102 bool scu.fd.ia_im,100000 DU - Illegal Addr - Modifier 040000 7-103 bool scu.fd.isp,040000 DU - Illegal Slave Procedure 020000 7-104 bool scu.fd.ipr,020000 DU - Illegal Procedure 010000 7-105 bool scu.fd.nea,010000 DU - Non Existent Address 004000 7-106 bool scu.fd.oobb,004000 DU - Out Of Bounds 7-107 000031 7-108 equ mc.scu.port_stat_word,25 PORT STATUS 000001 7-109 equ scu.port_stat_word,1 7-110 170000 7-111 bool scu.ial_mask,170000 DL - Illegal Action Lines 000014 7-112 equ scu.ial_shift,12 7-113 007000 7-114 bool scu.iac_mask,007000 DL - Illegal Action Channel 000011 7-115 equ scu.iac_shift,9 7-116 000700 7-117 bool scu.con_chan_mask,000700 DL - Connect Channel 000006 7-118 equ scu.con_chan_shift,6 7-119 000076 7-120 bool scu.fi_num_mask,000076 DL - Fault / Interrupt Number 000001 7-121 equ scu.fi_num_shift,1 7-122 000001 7-123 bool scu.fi_flag_mask,000001 DL - Fault / Interrupt Flag 7-124 7-125 7-126 " WORD (2) TEMPORARY POINTER REGISTER 7-127 000032 7-128 equ mc.scu.tpr.trr_word,26 Temporary Ring Register 000002 7-129 equ scu.tpr.trr_word,2 700000 7-130 bool scu.tpr.trr_mask,700000 DU 000041 7-131 equ scu.tpr.trr_shift,33 7-132 000032 7-133 equ mc.scu.tpr.tsr_word,26 Temporary Segment Register 000002 7-134 equ scu.tpr.tsr_word,2 077777 7-135 bool scu.tpr.tsr_mask,077777 DU 000022 7-136 equ scu.tpr.tsr_shift,18 7-137 000032 7-138 equ mc.scu.cpu_no_word,26 CPU Number 000002 7-139 equ scu.cpu_no_word,2 7-140 000700 7-141 bool scu.cpu_no_mask,000700 DL 000006 7-142 equ scu.cpu_shift,6 7-143 000032 7-144 equ mc.scu.delta_word,26 Tally Modification DELTA 000002 7-145 equ scu.delta_word,2 7-146 000077 7-147 bool scu.delta_mask,000077 DL 7-148 7-149 7-150 " WORD (3) TSR STATUS 7-151 000033 7-152 equ mc.scu.tsr_stat_word,27 TSR STATUS for 1,2, and 3 000003 7-153 equ scu.tsr_stat_word,3 Word Instructions 7-154 777700 7-155 bool scu.tsr_stat_mask,777700 DL - All of Status 000006 7-156 equ scu.tsr_stat_shift,6 7-157 740000 7-158 bool scu.tsna_mask,740000 DL - Word 1 Status 700000 7-159 bool scu.tsna.prn_mask,700000 DL - Word 1 PR num 000017 7-160 equ scu.tsna.prn_shift,15 040000 7-161 bool scu.tsna.prv,040000 DL - Word 1 PR valid bit 7-162 036000 7-163 bool scu.tsnb_mask,036000 DL - Word 2 Status 034000 7-164 bool scu.tsnb.prn_mask,034000 DL - Word 2 PR num 000013 7-165 equ scu.tsnb.prn_shift,11 002000 7-166 bool scu.tsnb.prv,002000 DL - Word 2 PR valid bit 7-167 000013 7-168 bool scu.tsnc_mask,0013 DL - Word 3 Status 001600 7-169 bool scu.tsnc.prn_mask,001600 DL - Word 3 PR num 000007 7-170 equ scu.tsnc.prn_shift,7 000100 7-171 bool scu.tsnc.prv,000100 DL - Word 3 PR valid bit 7-172 7-173 000033 7-174 equ mc.scu.tpr.tbr_word,27 TPR.TBR Field 000003 7-175 equ scu.tpr.tbr_word,3 7-176 000077 7-177 bool scu.tpr.tbr_mask,000077 DL 7-178 7-179 7-180 " WORD (4) INSTRUCTION COUNTER 7-181 000034 7-182 equ mc.scu.ilc_word,28 INSTRUCTION COUNTER 000004 7-183 equ scu.ilc_word,4 000022 7-184 equ scu.ilc_shift,18 7-185 000034 7-186 equ mc.scu.indicators_word,28 INDICATOR REGISTERS 000004 7-187 equ scu.indicators_word,4 7-188 400000 7-189 bool scu.ir.zero,400000 DL - Zero Indicator 200000 7-190 bool scu.ir.neg,200000 DL - Negative Indicator 100000 7-191 bool scu.ir.carry,100000 DL - Carry Indicator 040000 7-192 bool scu.ir.ovfl,040000 DL - Overflow Indicator 020000 7-193 bool scu.ir.eovf,020000 DL - Exponent Overflow Ind 010000 7-194 bool scu.ir.eufl,010000 DL - Exponent Underflow Ind 004000 7-195 bool scu.ir.oflm,004000 DL - Overflow Mask Indicator 002000 7-196 bool scu.ir.tro,002000 DL - Tally Runout Indicator 001000 7-197 bool scu.ir.par,001000 DL - Parity Indicator 000400 7-198 bool scu.ir.parm,000400 DL - Parity Mask Indicator 000200 7-199 bool scu.ir.bm,000200 DL - Bar Mode Indicator 000100 7-200 bool scu.ir.tru,000100 DL - Truncation Indicator 000040 7-201 bool scu.ir.mif,000040 DL - Multiword Indicator 000020 7-202 bool scu.ir.abs,000020 DL - Absolute Indicator 000010 7-203 bool scu.ir.hex,000010 DL - Hexadecimal Indicator 7-204 7-205 " WORD (5) COMPUTED ADDRESS 7-206 000035 7-207 equ mc.scu.ca_word,29 COMPUTED ADDRESS 000005 7-208 equ scu.ca_word,5 000022 7-209 equ scu.ca_shift,18 7-210 000035 7-211 equ mc.scu.cu_stat_word,29 CONTROL UNIT STATUS 000005 7-212 equ scu.cu_stat_word,5 7-213 400000 7-214 bool scu.cu.rf,400000 DL - Repeat First 7-215 " On First Cycle of Repeat Inst. 200000 7-216 bool scu.cu.rpt,200000 DL - Repeat Instruction 100000 7-217 bool scu.cu.rd,100000 DL - Repeat Double Instr. 040000 7-218 bool scu.cu.rl,040000 DL - Repeat Link Instr. 7-219 020000 7-220 bool scu.cu.pot,020000 DL - IT Modification 010000 7-221 bool scu.cu.pon,010000 DL - Return Type Instruction 7-222 004000 7-223 bool scu.cu.xde,004000 DL - XDE from Even Location 002000 7-224 bool scu.cu.xdo,002000 DL - XDE from Odd Location 7-225 001000 7-226 bool scu.cu.poa,001000 DL - Operand Preparation 000400 7-227 bool scu.cu.rfi,000400 DL - Tells CPU to refetch instruction 7-228 " This Bit Not Used (000200) 000100 7-229 bool scu.cu.if,000100 DL - Fault occurred during instruction fetch 7-230 000035 7-231 equ mc.scu.cpu_tag_word,29 Computed Tag Field 000005 7-232 equ scu.cpu_tag_word,5 7-233 000007 7-234 bool scu.cpu_tag_mask,000007 DL 7-235 7-236 7-237 " WORDS (6,7) INSTRUCTIONS 7-238 000036 7-239 equ scu.even_inst_word,30 Even Instruction 7-240 000037 7-241 equ scu.odd_inst_word,31 Odd Instruction 7-242 7-243 7-244 " END INCLUDE FILE incl.alm 200 " 201 include mode_reg 8-1 " BEGIN INCLUDE FILE mode_reg.incl.alm 8-2 " 777770 8-3 bool mr.floating_fv_mask,777770 floating fault vector address (DU) 000001 8-4 bool mr.trap_address_match,000001 trap on address match flag 777400 8-5 bool mr.opcode_field,777400 opcode field of mode reg (DL) 000200 8-6 bool mr.trap_opcode_match,000200 trap on opcode match flag 000060 8-7 bool mr.enable_hist,000060 enable strobe of history reg for most faults 000004 8-8 bool mr.enable_hfp,000004 enable hex floating point (DL) 000001 8-9 bool mr.enable_mr,000001 enable the mode register (DL) 8-10 8-11 " 8-12 " END INCLUDE FILE mode_reg.incl.alm 202 " 203 include ptw 9-1 " BEGIN INCLUDE FILE ... ptw.incl.alm ... 03/01/81, for ADP conversion 9-2 9-3 iftarget l68 " Include whichever seems appropriate include ptw.l68 10-1 10-2 10-3 "BEGIN INCLUDE FILE ptw.l68.incl.alm 10-4 10-5 10-6 "Created 04/05/81 1616.0 est Sun by convert_include_file, 10-7 " Version of 04/05/81 1606.8 est Sun. 10-8 10-9 "Made from >udd>Multics>hardcore_pool>new_pc>include>ptw.l68.incl.pl1, 10-10 " modified 03/20/81 1815.9 est Fri 10-11 10-12 " 10-13 " Structure core_ptw 10-14 " 000026 10-15 equ core_ptw.frame_shift,22 037777 10-16 bool core_ptw.frame_mask,037777 000000 10-17 equ core_ptw.flags,0 " LOWER 000016 10-18 equ core_ptw.add_type_shift,14 000017 10-19 bool core_ptw.add_type_mask,000017 020000 10-20 bool core_ptw.first,020000 " DL 010000 10-21 bool core_ptw.er,010000 " DL 002000 10-22 bool core_ptw.unusable1,002000 " DL 001000 10-23 bool core_ptw.phu,001000 " DL 000400 10-24 bool core_ptw.phm1,000400 " DL 000200 10-25 bool core_ptw.nypd,000200 " DL 000100 10-26 bool core_ptw.phm,000100 " DL 000040 10-27 bool core_ptw.phu1,000040 " DL 000020 10-28 bool core_ptw.wired,000020 " DL 000010 10-29 bool core_ptw.os,000010 " DL 000004 10-30 bool core_ptw.valid,000004 " DL 000000 10-31 equ core_ptw.df_no_shift,0 000003 10-32 bool core_ptw.df_no_mask,000003 10-33 10-34 " 10-35 " Structure ptw 10-36 " 000000 10-37 equ ptw.add,0 " UPPER 000000 10-38 equ ptw.flags,0 " LOWER 000016 10-39 equ ptw.add_type_shift,14 000017 10-40 bool ptw.add_type_mask,000017 020000 10-41 bool ptw.first,020000 " DL 010000 10-42 bool ptw.er,010000 " DL 002000 10-43 bool ptw.unusable1,002000 " DL 001000 10-44 bool ptw.phu,001000 " DL 000400 10-45 bool ptw.phm1,000400 " DL 000200 10-46 bool ptw.nypd,000200 " DL 000100 10-47 bool ptw.phm,000100 " DL 000040 10-48 bool ptw.phu1,000040 " DL 000020 10-49 bool ptw.wired,000020 " DL 000010 10-50 bool ptw.os,000010 " DL 000004 10-51 bool ptw.valid,000004 " DL 000000 10-52 equ ptw.df_no_shift,0 000003 10-53 bool ptw.df_no_mask,000003 10-54 10-55 "END INCLUDE FILE ptw.l68.incl.alm " ifend 9-6 9-7 iftarget adp " include ptw.adp " ifend 9-10 9-11 " END INCLUDE FILE ... ptw.incl.alm 204 " 205 include pxss_page_stack 11-1 " 11-2 " BEGIN INCLUDE FILE pxss_page_stack.incl.alm July 1982 11-3 " 11-4 000006 11-5 equ pxss_stack_size,6 " size of x7 save stack used by pxss 000015 11-6 equ stack_size,13 " size of x7 save stack used by page control 11-7 11-8 temp8 notify_regs 11-9 temp save_stack(stack_size),stackp 11-10 tempd pre_time,pre_temp(3) 11-11 tempd arg(11),temp 11-12 tempd stock_temp,volmap_temp,volmap_save_ptr 11-13 tempd tmp_ev_channel,tmp_ev_message,apt_ptr,getwork_temp,delta_t 11-14 tempd lock_volmap_temp_1,free_store_temp_1,volmap_save_sdw 11-15 temp cmep,total_steps,temp1,temp2,volmap_temp_1,volmap_temp_2 11-16 temp pvtx,core_add,count,entry_sw,ptp_astep,inter,devadd,errcode 11-17 temp tmp_ring,dev_signal,before,depth,x5 11-18 temp tmp_event,pxss_save_stack(pxss_stack_size),pxss_stackp 11-19 temp stock_temp_1,stock_temp_2,free_store_temp,savx2_3 11-20 temp lock_volmap_temp 11-21 temp volmap_page_temp 11-22 tempd free_store_start_time,post_io_start_time 11-23 11-24 temp done_astep,volmap_page_temp_1 11-25 temp vtocx,pageno 11-26 11-27 tempd page_synch_temp,page_synch_time 11-28 temp page_synch_index 11-29 11-30 temp pc_err_type,pc_err_ptwp,pc_err_astep 11-31 tempd pf_sdw 11-32 11-33 temp pad(22) " to grow compatibly 11-34 " 11-35 " END INCLUDE FILE pxss_page_stack.incl.alm 11-36 " 206 " 207 include response_transitions 12-1 " BEGIN INCLUDE FILE response_transitions.incl.alm 12-2 " 12-3 " Written April 1981 by J. Bongiovanni 12-4 " 000001 12-5 equ AWARD_ELIGIBILITY,1 000002 12-6 equ CALL_RING_0_TTY,2 000003 12-7 equ RETURN_RING_0_TTY,3 000004 12-8 equ BLOCK_PROCESS,4 000005 12-9 equ NON_TTY_WAKEUP,5 000006 12-10 equ TTY_WAKEUP,6 12-11 000006 12-12 equ MAX_TRANSITION,6 12-13 12-14 12-15 " END INCLUDE FILE response_transitions.incl.alm 208 " 209 include scs 13-1 " BEGIN INCLUDE FILE scs.incl.alm 2/4/76 S. Webber 13-2 " Modified 80 Sep 19 by Art Beattie: added hbound_processor_data. 13-3 400000 13-4 bool processor_data.online,400000 "DU 200000 13-5 bool processor_data.offline,200000 "DU 020000 13-6 bool processor_data.delete_cpu,020000 "DU 010000 13-7 bool processor_data.interrupt_cpu,010000 "DU 004000 13-8 bool processor_data.halted_cpu,004000 "DU 000007 13-9 bool processor_data.port_mask,000007 "DL 000007 13-10 bool hbound_processor_data,7 13-11 13-12 " END INCLUDE FILE scs.incl.alm 210 " 211 include stack_0_data 14-1 14-2 14-3 "BEGIN INCLUDE FILE stack_0_data.incl.alm 14-4 14-5 "Created 05/10/79 1312.1 edt Thu by convert_include_file, 14-6 " Version of 03/21/77 1355.7 edt Mon. 14-7 14-8 "Made from >udd>m>hardcore_pool>stack>stack_0_data.incl.pl1, 14-9 " modified 05/10/79 1255.0 edt Thu 14-10 14-11 " 14-12 " Structure sdt 14-13 " 14-14 000000 14-15 equ sdt.lock,0 000001 14-16 equ sdt.num_stacks,1 14-17 000002 14-18 equ sdt.freep,2 "UPPER 14-19 000004 14-20 equ sdt.stacks,4 "LEVEL 2 14-21 000004 14-22 equ sdt.nextp,4 "UPPER 14-23 000005 14-24 equ sdt.astep,5 "UPPER 000005 14-25 equ sdt.aptep,5 "LOWER 14-26 000006 14-27 equ sdt.sdw,6 "DOUBLE 14-28 14-29 " 14-30 " Structure sdte 14-31 " 000004 14-32 equ sdte_size,4 14-33 000000 14-34 equ sdte.nextp,0 "UPPER 14-35 000001 14-36 equ sdte.astep,1 "UPPER 000001 14-37 equ sdte.aptep,1 "LOWER 14-38 000002 14-39 equ sdte.sdw,2 "DOUBLE 14-40 14-41 "END INCLUDE FILE stack_0_data.incl.alm 212 " 213 include stack_frame 15-1 " 15-2 " BEGIN INCLUDE FILE ... stack_frame.incl.alm 6/72 RBS 15-3 " 15-4 " Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr 15-5 " Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager_bit & main_proc_bit 15-6 " Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr 15-7 " 000020 15-8 equ stack_frame.prev_sp,16 000020 15-9 equ stack_frame.condition_word,16 000022 15-10 equ stack_frame.next_sp,18 000022 15-11 equ stack_frame.signaller_word,18 000024 15-12 equ stack_frame.return_ptr,20 000026 15-13 equ stack_frame.entry_ptr,22 000030 15-14 equ stack_frame.operator_ptr,24 000030 15-15 equ stack_frame.lp_ptr,24 000032 15-16 equ stack_frame.arg_ptr,26 000034 15-17 equ stack_frame.static_ptr,28 000035 15-18 equ stack_frame.support_ptr,29 " only used by fortran I/O 000036 15-19 equ stack_frame.on_unit_rel_ptrs,30 000037 15-20 equ stack_frame.operator_ret_ptr,31 000037 15-21 equ stack_frame.translator_id,31 000040 15-22 equ stack_frame.regs,32 000060 15-23 equ stack_frame.min_length,48 000020 15-24 equ stack_frame.flag_word,16 020000 15-25 bool stack_frame.main_proc_bit,020000 (DL) 010000 15-26 bool stack_frame.run_unit_manager,010000 (DL) 004000 15-27 bool stack_frame.signal_bit,004000 (DL) 002000 15-28 bool stack_frame.crawl_out_bit,002000 (DL) 001000 15-29 bool stack_frame.signaller_bit,001000 (DL) 000400 15-30 bool stack_frame.link_trap_bit,000400 (DL) 000200 15-31 bool stack_frame.support_bit,000200 (DL) 000100 15-32 bool stack_frame.condition_bit,000100 (DL) 15-33 15-34 " 15-35 " END INCLUDE FILE ... stack_frame.incl.alm 15-36 " 214 " 215 include stack_header 16-1 " BEGIN INCLUDE FILE ... stack_header.incl.alm 3/72 Bill Silver 16-2 " 16-3 " modified 7/76 by M. Weaver for *system links and more system use of areas 16-4 " modified 3/77 by M. Weaver to add rnt_ptr 16-5 " modified 7/77 by S. Webber to add run_unit_depth and assign_linkage_ptr 16-6 " modified 6/83 by J. Ives to add trace_frames and in_trace. 16-7 16-8 " HISTORY COMMENTS: 16-9 " 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 16-10 " audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 16-11 " added the heap_header_ptr definition 16-12 " 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 16-13 " audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 16-14 " Modified to support control point management. These changes were 16-15 " actually made in February 1985 by G. Palter. 16-16 " 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 16-17 " audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 16-18 " Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 16-19 " bit pad after cur_lot_size for the cpm_enabled. This was done to save 16-20 " some space int the stack header and change the cpd_ptr unal to 16-21 " cpm_data_ptr (ITS pair). 16-22 " END HISTORY COMMENTS 16-23 000004 16-24 equ stack_header.cpm_data_ptr,4 ptr to control point for this stack 000006 16-25 equ stack_header.combined_stat_ptr,6 ptr to separate static area 16-26 000010 16-27 equ stack_header.clr_ptr,8 ptr to area containing linkage sections 000012 16-28 equ stack_header.max_lot_size,10 number of words allowed in lot (DU) 000012 16-29 equ stack_header.main_proc_invoked,10 nonzero if main proc was invoked in run unit (DL) 000012 16-30 equ stack_header.run_unit_depth,10 number of active run units stacked (DL) 000013 16-31 equ stack_header.cur_lot_size,11 DU number of words (entries) in lot 000013 16-32 equ stack_header.cpm_enabled,11 DL non-zero if control point management is enabled 000014 16-33 equ stack_header.system_free_ptr,12 ptr to system storage area 000016 16-34 equ stack_header.user_free_ptr,14 ptr to user storage area 16-35 000020 16-36 equ stack_header.parent_ptr,16 ptr to parent stack or null 000022 16-37 equ stack_header.stack_begin_ptr,18 ptr to first stack frame 000024 16-38 equ stack_header.stack_end_ptr,20 ptr to next useable stack frame 000026 16-39 equ stack_header.lot_ptr,22 ptr to the lot for the current ring 16-40 000030 16-41 equ stack_header.signal_ptr,24 ptr to signal proc for current ring 000032 16-42 equ stack_header.bar_mode_sp,26 value of sp before entering bar mode 000034 16-43 equ stack_header.pl1_operators_ptr,28 ptr: pl1_operators_$operator_table 000036 16-44 equ stack_header.call_op_ptr,30 ptr to standard call operator 16-45 000040 16-46 equ stack_header.push_op_ptr,32 ptr to standard push operator 000042 16-47 equ stack_header.return_op_ptr,34 ptr to standard return operator 000044 16-48 equ stack_header.ret_no_pop_op_ptr,36 ptr: stand. return/ no pop operator 000046 16-49 equ stack_header.entry_op_ptr,38 ptr to standard entry operator 16-50 000050 16-51 equ stack_header.trans_op_tv_ptr,40 ptr to table of translator operator ptrs 000052 16-52 equ stack_header.isot_ptr,42 pointer to ISOT 000054 16-53 equ stack_header.sct_ptr,44 pointer to System Condition Table 000056 16-54 equ stack_header.unwinder_ptr,46 pointer to unwinder for current ring 16-55 000060 16-56 equ stack_header.sys_link_info_ptr,48 ptr to *system link name table 000062 16-57 equ stack_header.rnt_ptr,50 ptr to reference name table 000064 16-58 equ stack_header.ect_ptr,52 ptr to event channel table 000066 16-59 equ stack_header.assign_linkage_ptr,54 ptr to area for hcs_$assign_linkage calls 000070 16-60 equ stack_header.heap_header_ptr,56 ptr to heap header. 000072 16-61 equ stack_header.trace_frames,58 stack of trace_catch_ frames 000073 16-62 equ stach_header.trace_top_ptr,59 trace pointer 000074 16-63 equ stack_header.in_trace,60 trace antirecurse bit 000100 16-64 equ stack_header_end,64 length of stack header 16-65 16-66 16-67 16-68 000000 16-69 equ trace_frames.count,0 number of trace frames on stack 000001 16-70 equ trace_frames.top_ptr,1 packed pointer to top one 16-71 16-72 " The following constant is an offset within the pl1 operators table. 16-73 " It references a transfer vector table. 16-74 000551 16-75 bool tv_offset,551 16-76 16-77 16-78 " The following constants are offsets within this transfer vector table. 16-79 001170 16-80 equ call_offset,tv_offset+271 001171 16-81 equ push_offset,tv_offset+272 001172 16-82 equ return_offset,tv_offset+273 001173 16-83 equ return_no_pop_offset,tv_offset+274 001174 16-84 equ entry_offset,tv_offset+275 16-85 16-86 16-87 " END INCLUDE FILE stack_header.incl.alm 216 " 217 include state_equs 17-1 " BEGIN INCLUDE FILE state_equs.incl.alm 17-2 000000 17-3 equ empty,0 000001 17-4 equ running,1 000002 17-5 equ ready,2 000003 17-6 equ waiting,3 000004 17-7 equ blocked,4 000005 17-8 equ stopped,5 000006 17-9 equ ptlocking,6 17-10 17-11 " END INCLUDE FILE state_equs.incl.alm 218 " 219 include tc_meters 18-1 " 18-2 " BEGIN INCLUDE FILE tc_meters.incl.alm 18-3 " 18-4 " BOS knows the offsets of some of these cells within tc_data 18-5 " These cells should not be moved without changing BOS: 18-6 " apt_offset - o253 - offset of first apte in upper 18-7 " apt_size - o313 - number of apte's in lower 18-8 " apt_entry_size - o327 - size of an apte in lower 18-9 " 18-10 " Modified 84.12.06 by Keith Loepere for page create delaying. 18-11 " Modified 84.11.26 by Keith Loepere for uid_array. 18-12 " Modified 84.05.21 by M. Pandolf to add tc_suspend_lock 18-13 " Modified 830913 to replace tty_polling_time with opc_polling_time... -E. A. Ranzenbach 18-14 000000 18-15 equ tc_suspend_lock,0 000003 18-16 equ cid2,3 000004 18-17 equ cid3,4 000005 18-18 equ cid4,5 000006 18-19 equ depth_count,6 000007 18-20 equ loadings,7 000010 18-21 equ blocks,8 000011 18-22 equ wakeups,9 000012 18-23 equ waits,10 000013 18-24 equ notifies,11 000014 18-25 equ schedulings,12 000015 18-26 equ interactions,13 000016 18-27 equ avequeue,14 000017 18-28 equ te_wait,15 000020 18-29 equ te_block,16 000021 18-30 equ te_i_stop,17 000022 18-31 equ te_pre_empt,18 000023 18-32 equ p_interactions,19 000024 18-33 equ idle_time,20 DOUBLE 000026 18-34 equ mp_idle,22 DOUBLE 000030 18-35 equ nmp_idle,24 DOUBLE 000032 18-36 equ zero_idle,26 DOUBLE 000034 18-37 equ last_time,28 DOUBLE 000036 18-38 equ loop_locks,30 000037 18-39 equ loop_lock_time,31 000040 18-40 equ ave_eligible,32 000041 18-41 equ sort_to_elhead,33 000042 18-42 equ processor_time,34 DOUBLE 000044 18-43 equ response_time,36 DOUBLE 000046 18-44 equ eligible_time,38 DOUBLE 000050 18-45 equ response_count,40 000051 18-46 equ eligible_count,41 000052 18-47 equ quit_counts,42 " array of buckets indexed by process state 000060 18-48 equ loading_idle,48 DOUBLE 000062 18-49 equ delta_vcpu,50 DOUBLE 000064 18-50 equ post_purge_switch,52 000065 18-51 equ time_out_severity,53 000066 18-52 equ notify_check,54 000067 18-53 equ quit_priority,55 000070 18-54 equ iobm_polling_time_loc,56 DOUBLE 000072 18-55 equ end_of_time_loc,58 DOUBLE 000074 18-56 equ gp_at_notify,60 000075 18-57 equ gp_at_ptlnotify,61 000076 18-58 equ int_q_enabled,62 000077 18-59 equ fnp_buffer_threshold,63 18-60 000010 18-61 equ max_depth,8 000100 18-62 equ depths,64 000110 18-63 equ tdepth,depths+max_depth ARRAY OF DOUBLE 000130 18-64 equ pfdepth,tdepth+2*max_depth 18-65 000140 18-66 equ ptl_not_waits,96 000141 18-67 equ gw_gp_window_count,97 000142 18-68 equ metering_lock,98 000143 18-69 equ ptl_waits,99 000144 18-70 equ gp_start_count,100 000145 18-71 equ gp_done_count,101 000146 18-72 equ nto_check_time,102 "DOUBLE 000150 18-73 equ nto_delta,104 000151 18-74 equ nto_count,105 000152 18-75 equ tcpu_scheduling,106 000153 18-76 equ nto_event,107 000154 18-77 equ page_notifies,108 000155 18-78 equ notify_nobody_count,109 000156 18-79 equ notify_nobody_event,110 000157 18-80 equ system_type,111 000160 18-81 equ statistics,112 sixteen words RESERVED for states 18-82 000200 18-83 equ waittime,128 000220 18-84 equ readytime,waittime+2*max_depth 000240 18-85 equ total_pf_time,readytime+2*max_depth DOUBLE 000242 18-86 equ total_pf_count,total_pf_time+2 000243 18-87 equ auto_tune_ws,total_pf_time+3 000244 18-88 equ ocore_delta,total_pf_time+4 000245 18-89 equ ws_sum,total_pf_time+5 000246 18-90 equ nonidle_force_count,total_pf_time+6 000247 18-91 equ itt_list_lock,total_pf_time+7 000250 18-92 equ cpu_pf_time,total_pf_time+8 000252 18-93 equ cpu_pf_count,cpu_pf_time+2 000253 18-94 equ apt_offset,cpu_pf_time+3 UPPER, BOS looks at tc_data|o253 (d171) for APT offset 000254 18-95 equ getwork_time,cpu_pf_time+4 DOUBLE 000256 18-96 equ getwork_count,cpu_pf_time+6 000257 18-97 equ short_pf_count,cpu_pf_time+7 000260 18-98 equ interrupt_time,cpu_pf_time+8 DOUBLE 000262 18-99 equ interrupt_count,interrupt_time+2 DOUBLE 000264 18-100 equ ocore,180 000265 18-101 equ pre_empt_flag,181 000266 18-102 equ cumulative_memory_usage,182 DOUBLE 000270 18-103 equ processor_time_at_define_wc,184 DOUBLE 18-104 000272 18-105 equ boost_priority,186 000273 18-106 equ lost_priority_eligibility,187 000274 18-107 equ total_clock_lag,188 DOUBLE 000276 18-108 equ clock_simulations,190 000277 18-109 equ max_clock_lag,191 18-110 18-111 18-112 "300 octal 000300 18-113 equ pdscopyl,192 000301 18-114 equ max_hproc_segno,193 000302 18-115 equ prds_length,194 000303 18-116 equ pds_length,195 000304 18-117 equ lock,196 000305 18-118 equ id,197 000306 18-119 equ system_shutdown,198 000307 18-120 equ working_set_factor,199 18-121 000310 18-122 equ ncpu,200 000311 18-123 equ last_eligible,201 000312 18-124 equ apt_lock,202 000313 18-125 equ apt_size,203 BOS looks at tc_data|o313 for number of aptes 000314 18-126 equ realtime_q,204 DBL 000316 18-127 equ aht_size,206 000317 18-128 equ itt_size,207 18-129 000320 18-130 equ dst_size,208 000321 18-131 equ itt_free_list,209 000322 18-132 equ used_itt,210 000323 18-133 equ initializer_id,211 000324 18-134 equ n_eligible,212 000325 18-135 equ max_eligible,213 000326 18-136 equ wait_enable,214 000327 18-137 equ apt_entry_size,215 BOS looks at tc_data|o327 for size of APTE 18-138 000330 18-139 equ interactive_q,216 DBL 000332 18-140 equ dst_ptr,218 DBL 000334 18-141 equ old_user,220 DBL 000336 18-142 equ initialize_time,222 DBL 18-143 000340 18-144 equ init_event,224 000341 18-145 equ oldt,225 000342 18-146 equ newt,226 000343 18-147 equ tefirst,227 000344 18-148 equ telast,228 000345 18-149 equ timax,229 000346 18-150 equ empty_q,230 000347 18-151 equ working_set_addend,231 18-152 000350 18-153 equ eligible_q_head,232 DBL 000350 18-154 equ ready_q_head,eligible_q_head OBS 000352 18-155 equ eligible_q_tail,234 DBL 000352 18-156 equ ready_q_tail,eligible_q_tail OBS 000354 18-157 equ idle_tail,236 DBL 000356 18-158 equ min_eligible,238 000357 18-159 equ alarm_timer_list,239 18-160 000360 18-161 equ guaranteed_elig_inc,240 000361 18-162 equ priority_sched_inc,241 000362 18-163 equ next_alarm_time,242 DBL 000364 18-164 equ priority_sched_time,244 DBL 000366 18-165 equ opc_polling_time_loc,246 DBL 18-166 000370 18-167 equ disk_polling_time_loc,248 DBL 000372 18-168 equ tape_polling_time_loc,250 DBL 000374 18-169 equ imp_polling_time_loc,252 DBL 000376 18-170 equ imp_polling_lock,254 000377 18-171 equ max_channels,255 18-172 18-173 "400 octal 000400 18-174 equ system_virtual_time,256 DOUBLE 000402 18-175 equ credit_bank,256+2 DOUBLE 000404 18-176 equ min_wct_index,256+4 UPPER 000405 18-177 equ max_wct_index,256+5 UPPER 000406 18-178 equ delta_vt,256+6 DBL for pxss(compute_vc) 000410 18-179 equ gross_idle_time,256+8 DOUBLE 000412 18-180 equ credits_per_scatter,256+10 000413 18-181 equ best_credit_value,256+11 000414 18-182 equ define_wc_time,256+12 DOUBLE 000416 18-183 equ max_batch_elig,256+14 000417 18-184 equ num_batch_elig,256+15 000420 18-185 equ deadline_mode,256+16 000421 18-186 equ credits_scattered,256+17 000422 18-187 equ max_max_eligible,256+18 000423 18-188 equ max_stopped_stack_0,256+19 000424 18-189 equ stopped_stack_0,256+20 000425 18-190 equ mos_polling_interval,256+21 000426 18-191 equ mos_polling_time_loc,256+22 DOUBLE 000430 18-192 equ vcpu_response_bounds,256+24 ARRAY 000433 18-193 equ vcpu_response_bounds_size,256+27 000434 18-194 equ meter_response_time_calls,256+28 000435 18-195 equ meter_response_time_invalid,256+29 000436 18-196 equ meter_response_time_overhead,256+30 DOUBLE 000440 18-197 equ init_wait_time,256+32 DOUBLE 000442 18-198 equ init_wait_timeout,256+34 DOUBLE 000444 18-199 equ init_timeout_severity,256+36 000445 18-200 equ init_timeout_recurse,256+37 000446 18-201 equ max_timer_register,256+38 DOUBLE 000450 18-202 equ pre_empt_sample_time,256+40 000451 18-203 equ governing_credit_bank,256+41 000452 18-204 equ process_initial_quantum,256+42 000453 18-205 equ default_procs_required,256+43 776000 18-206 bool all_procs_required,776000 " DU 000454 18-207 equ work_class_idle,256+44 DOUBLE 000456 18-208 equ stk_truncate,256+46 000457 18-209 equ stk_truncate_always,256+47 000460 18-210 equ stk_trunc_avg_f1,256+48 000461 18-211 equ stk_trunc_avg_f2,256+49 18-212 000462 18-213 equ lock_error_severity,256+50 18-214 000463 18-215 equ gv_integration,256+51 000464 18-216 equ gv_integration_set,256+52 000465 18-217 equ pauses,256+53 18-218 000466 18-219 equ volmap_polling_time,256+54 " DOUBLE 000470 18-220 equ next_ring0_timer,256+56 " DOUBLE 000472 18-221 equ realtime_io_priority_switch,256+58 000473 18-222 equ realtime_io_deadline,256+59 000474 18-223 equ realtime_io_quantum,256+60 000475 18-224 equ realtime_priorities,256+61 000476 18-225 equ relinquishes,256+62 000477 18-226 equ abort_ips_mask,256+63 18-227 18-228 "500 octal 000500 18-229 equ uid_array,320 18-230 " 18-231 " words thru 584 are available for general use 18-232 " 18-233 " Under present format, the wcte's begin at 1110 (octal), 18-234 " and the apte's begin at 3000 (octal). These tables should 18-235 " not be accessed by fixed offsets, but rather through offset 18-236 " cells - apt_offset (first apte), min_wct_index (first wcte) 18-237 18-238 " 18-239 " END INCLUDE FILE tc_meters.incl.alm 18-240 " 220 " 221 include wcte 19-1 " 19-2 " BEGIN INCLUDE FILE wcte.incl.alm 19-3 " 19-4 " 000000 19-5 equ wcte.thread,0 000000 19-6 equ wcte.fp,0 UPPER 000000 19-7 equ wcte.bp,0 LOWER 19-8 000001 19-9 equ wcte.flags,1 400000 19-10 bool wcte.mnbz,400000 UPPER 200000 19-11 bool wcte.defined,200000 UPPER 100000 19-12 bool wcte.io_priority,100000 UPPER 040000 19-13 bool wcte.governed,040000 UPPER 020000 19-14 bool wcte.interactive_q,020000 UPPER 000001 19-15 equ wcte.mnbz_word,wcte.flags 000001 19-16 equ wcte.defined_word,wcte.flags 000001 19-17 equ wcte.io_priority_word,wcte.flags 000001 19-18 equ wcte.governed_word,wcte.flags 000001 19-19 equ wcte.interactive_q_word,wcte.flags 19-20 000002 19-21 equ wcte.credits,2 000003 19-22 equ wcte.minf,3 000004 19-23 equ wcte.pin_weight,4 000005 19-24 equ wcte.eligibilities,5 000006 19-25 equ wcte.cpu_sum,6 DOUBLE 000010 19-26 equ wcte.resp1,8 DBL 000012 19-27 equ wcte.resp2,10 DBL 000014 19-28 equ wcte.quantum1,12 000015 19-29 equ wcte.quantum2,13 000016 19-30 equ wcte.rmeter1,14 DBL 000020 19-31 equ wcte.rmeter2,16 DBL 000022 19-32 equ wcte.rcount1,18 000023 19-33 equ wcte.rcount2,19 000024 19-34 equ wcte.realtime,20 000025 19-35 equ wcte.purging,21 000026 19-36 equ wcte.maxel,22 000027 19-37 equ wcte.nel,23 19-38 000030 19-39 equ wcte.number_thinks,24 000031 19-40 equ wcte.number_queues,25 000032 19-41 equ wcte.total_think_time,26 DOUBLE 000034 19-42 equ wcte.total_queue_time,28 DOUBLE 19-43 19-44 " The following entries are arrays which parallel tc_data$vcpu_bounds 000036 19-45 equ wcte.number_processing,30 000042 19-46 equ wcte.total_processing_time,34 DOUBLE 000052 19-47 equ wcte.total_vcpu_time,42 DOUBLE 19-48 000062 19-49 equ wcte.maxf,50 000063 19-50 equ wcte.governing_credits,51 19-51 19-52 " Words 52 - 55 are available 19-53 000070 19-54 equ size_of_wct_entry,56 19-55 19-56 " 19-57 " END INCLUDE FILE wcte.incl.alm 19-58 " 222 " 223 224 macro read_clock 1 225 rccl sys_info$clock_,* 2 226 &end 227 228 " 229 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 230 " 231 " BLOCK -- entry to block a process. 232 " 233 " Call is 234 " call pxss$block; 235 " 236 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 237 000010 0a 002076 3520 00 238 block: eppbp short_ret 000011 4a 4 00046 5421 20 239 sprpbp pds$ipc_block_return 240 000001 241 equ ipcv.retsw,1 242 000012 243 fast_ipc_block: 000012 0a 001403 6710 00 244 tsplb setup_mask mask, switch_stack 000013 aa 3 00020 0541 00 245 aos bb|te_block 000014 aa 3 00010 0541 00 246 aos bb|blocks 000015 aa 2 00001 2351 00 247 lda bp|apte.flags check for wakeup waiting 000016 aa 200000 3150 03 248 cana apte.wakeup_waiting,du 000017 0a 000100 6010 00 249 tnz block_ez able to avoid heavy lock! 000020 0a 002477 7070 00 250 tsx7 update_te update te in own APT entry 000021 0a 001302 7060 00 251 tsx6 WRITE_LOCK block locks 000022 0a 001351 7060 00 252 tsx6 LOCK_bp block locks 000023 aa 2 00001 2351 00 253 lda bp|apte.flags check for wakeup waiting 000024 aa 200000 3150 03 254 cana apte.wakeup_waiting,du 000025 0a 000076 6010 00 255 tnz block_not there is one, return 000026 aa 000004 2360 07 256 ldq BLOCK_PROCESS,dl 000027 4a 4 00050 7071 20 257 tsx7 meter_response_time$tc this is a response transition 000030 0a 000770 7070 00 258 tsx7 unthread thread out of ready list 000031 aa 000004 2200 03 259 ldx0 blocked,du set state to blocked 000032 0a 000753 7070 00 260 tsx7 update_execution_state 000033 0a 004644 7070 00 261 tsx7 revoke_elig block 000034 0a 004736 7070 00 262 tsx7 reschedule block 000035 0a 005003 7070 00 263 tsx7 purge_UNLOCK block 000036 0a 003241 7070 00 264 tsx7 getwork 000037 aa 2 00046 2371 00 265 ldaq bp|apte.virtual_cpu_time note vtime at gain elig 000040 4a 4 00052 7571 20 266 staq pds$virtual_time_at_eligibility 000041 0a 001351 7060 00 267 tsx6 LOCK_bp 000042 268 block_returns: 000042 aa 200001 3200 03 269 lcx0 apte.wakeup_waiting+1,du turn off wakeup waiting 000043 aa 2 00001 3401 00 270 ansx0 bp|apte.flags 000044 271 return_event_messages: 000044 aa 2 00001 2351 00 272 lda bp|apte.flags check for interrupts pending 000045 aa 100000 3750 03 273 ana apte.stop_pending,du look for stop connect 000046 aa 2 00011 2751 00 274 ora bp|apte.ips_message or ips signals 000047 0a 000051 6000 00 275 tze *+2 if interrupt pending leave 1 000050 aa 000001 2350 07 276 lda 1,dl .. 000051 aa 2 00021 2361 00 277 ldq bp|apte.flags2 get special interrupts 000052 aa 374000 3760 07 278 anq apte.special_chans,dl .. 000053 aa 2 00021 6561 00 279 ersq bp|apte.flags2 turn off special chans 000054 aa 000023 7360 00 280 qls apte.chans_offset .. 000055 aa 000021 7370 00 281 lls 17 put info together 000056 aa 000000 6230 05 282 eax3 0,al remember info 000057 aa 000000 6240 00 283 eax4 0 use to zero event thread 000060 aa 2 00010 2221 00 284 ldx2 bp|apte.ipc_pointers return event thread 000061 aa 2 00010 7441 00 285 stx4 bp|apte.ipc_pointers zero event thread in APT entry 000062 0a 001354 7060 00 286 tsx6 UNLOCK_bp 000063 0a 001444 7070 00 287 tsx7 switch_back_ret_pds 000064 4a 4 00054 4501 20 288 stz pds$itt_head 000065 4a 4 00054 7421 20 289 stx2 pds$itt_head 000066 aa 000000 6360 13 290 eaq 0,3 get info 000067 aa 000000 2350 07 291 lda 0,dl zero a 000070 aa 000001 7370 00 292 lls 1 split info 000071 4a 4 00056 2561 20 293 orsq pds$events_pending store special chans 000072 4a 4 00060 2551 20 294 orsa pds$ipc_vars+ipcv.retsw store return sw 000073 4a 4 00046 7621 20 295 lprpbp pds$ipc_block_return 000074 4a 4 00062 3731 20 296 epbpsb pds$stack_0_ptr,* Load this up for fast_hc_ipc, 297 "who can't do it himself. 000075 aa 2 00000 7101 00 298 tra bp|0 299 300 " 301 "here if find wakeup_waiting after full lock, to back off big lock 302 " 000076 303 block_not: 000076 0a 001324 7060 00 304 tsx6 UNLOCK only need self locked 000077 0a 000042 7100 00 305 tra block_returns 306 307 " 308 "here if notice wakeup_waiting before locking anything 309 " 000100 0a 001351 7060 00 310 block_ez: tsx6 LOCK_bp only need to lock self 000101 0a 000042 7100 00 311 tra block_returns 312 313 " 314 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 315 " 316 " GET_EVENT -- procedure to return a process' event thread 317 " 318 " Call is 319 " call pxss$get_event(event) 320 " 321 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 322 000102 323 get_event: 000102 0a 002076 3520 00 324 eppbp short_ret 000103 4a 4 00046 5421 20 325 sprpbp pds$ipc_block_return 000104 326 fast_ipc_get_event: 000104 0a 001403 6710 00 327 tsplb setup_mask 000105 0a 001351 7060 00 328 tsx6 LOCK_bp 000106 0a 000044 7100 00 329 tra return_event_messages 330 " 331 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 332 " 333 " WAKEUP 334 " 335 " call pxss$wakeup(processid,event_channel,event_message,state) 336 " 337 " entry to wake up a process given event channel and event message 338 " 339 " The following entries have the same calling sequence: 340 " 341 " wakeup - send wakeup, give interactive credit if blocked 342 " more than priority_sched_inc 343 " 344 " ring_0_wakeup - send wakeup, give interactive credit if blocked 345 " 346 " unique_ring_0_wakeup - send wakeup only if this wakeup is unique 347 " in ITT for this process, give interactive credit if 348 " blocked. 349 " 350 " io_wakeup - send wakeup, give interactive credit if blocked, 351 " give realtime credit if blocked and tuning parameter 352 " set. 353 " 354 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 355 000107 356 ring_0_wakeup: 000107 357 wakeup_int: 000107 0a 001376 7060 00 358 tsx6 setup_ 000110 aa 000001 3350 07 359 lca 1,dl set flag saying ring_0_wakeup entry 000111 4a 4 00064 7551 20 360 sta pds$wakeup_flag set flag saying ring_0_wakeup entry 000112 0a 000124 7100 00 361 tra wjoin 000113 362 unique_ring_0_wakeup: 000113 0a 001376 7060 00 363 tsx6 setup_ 000114 4a 4 00064 4501 20 364 stz pds$wakeup_flag set flag for unique_ring_0_wakeup 000115 0a 000124 7100 00 365 tra wjoin 000116 366 io_wakeup: 000116 0a 001376 7060 00 367 tsx6 setup_ 000117 aa 000002 3350 07 368 lca 2,dl set flag for io_wakeup entry 000120 4a 4 00064 7551 20 369 sta pds$wakeup_flag set flag for io_wakeup entry 000121 0a 000124 7100 00 370 tra wjoin 371 000122 372 wakeup: 000122 0a 001376 7060 00 373 tsx6 setup_ 000123 4a 4 00064 5541 20 374 stc1 pds$wakeup_flag set flag saying wakeup entry 000124 375 wjoin: 000124 aa 0 00002 2351 20 376 lda ap|2,* get processid 000125 4a 4 00066 7551 20 377 sta pds$arg_1 000126 aa 0 00004 2371 20 378 ldaq ap|4,* save event channel in pds$arg_2 000127 4a 4 00070 7571 20 379 staq pds$arg_2 000130 aa 0 00006 2371 20 380 ldaq ap|6,* save event message in pds$arg_3 000131 4a 4 00072 7571 20 381 staq pds$arg_3 000132 0a 001400 6710 00 382 tsplb setup_check switch stacks and lock 000133 aa 000000 0000 16 383 arg 0,6 384 000134 4a 4 00064 2341 20 385 szn pds$wakeup_flag see if ring_0_wakeup entry 000135 0a 000142 6044 00 386 tmoz w_rz it is. do later code 000136 4a 4 00074 2351 20 387 lda pds$validation_level it isn't. 000137 aa 6 00202 7551 00 388 sta tmp_ring get ready to make ITT message 000140 aa 6 00203 4501 00 389 stz dev_signal 000141 0a 000145 7100 00 390 tra copy_evs skip code for ring_0_wakeup entry 000142 aa 6 00202 4501 00 391 w_rz: stz tmp_ring 000143 aa 000001 2350 07 392 lda 1,dl 000144 aa 6 00203 7551 00 393 sta dev_signal must be a device signal 000145 394 copy_evs: 000145 4a 4 00070 2371 20 395 ldaq pds$arg_2 finish setup for make ITT message 000146 aa 6 00144 7571 00 396 staq tmp_ev_channel 000147 4a 4 00072 2371 20 397 ldaq pds$arg_3 000150 aa 6 00146 7571 00 398 staq tmp_ev_message 399 000151 aa 000000 2220 03 400 ldx2 0,du pre-set execution state to zero 000152 0a 001302 7060 00 401 tsx6 WRITE_LOCK Wakeup may need to thread in 000153 0a 004502 7070 00 402 tsx7 hash_LOCK wakeup finds and locks 000154 0a 000222 0000 00 403 arg wakeup_returns_nul indirect if error 000155 aa 2 00001 2351 00 404 lda bp|apte.flags see if this is idle process 000156 aa 002000 3150 03 405 cana apte.idle,du 000157 0a 000221 6010 00 406 tnz wakeup_returns can't wakeup an idle process 000160 aa 3 00011 0541 00 407 aos bb|wakeups 000161 aa 2 00001 7201 00 408 lxl0 bp|apte.state check for stopped process 000162 aa 000005 1000 03 409 cmpx0 stopped,du 000163 0a 000221 6000 00 410 tze wakeup_returns 411 000164 aa 000005 2360 07 412 ldq NON_TTY_WAKEUP,dl 000165 4a 4 00050 7071 20 413 tsx7 meter_response_time$tc response transition 414 000166 4a 4 00064 2361 20 415 ldq pds$wakeup_flag should we give priority ? 000167 0a 000227 6054 00 416 tpnz non_ring_0 no,normal wakeup 000170 aa 2 00001 7201 00 417 lxl0 bp|apte.state recover process state 000171 aa 000004 1000 03 418 cmpx0 blocked,du no interaction credit unless blocked 000172 0a 000203 6010 00 419 tnz no_int_credit ..at time of wakeup. 000173 aa 001000 2350 03 420 lda apte.interaction,du give priority ... turn on interaction sw. 000174 aa 2 00001 2551 00 421 orsa bp|apte.flags in APT entry of process getting wakeup 000175 0a 006372 1160 00 422 cmpq =-2 io_wakeup? 000176 0a 000203 6010 00 423 tnz no_int_credit no 000177 aa 3 00472 2341 00 424 szn bb|realtime_io_priority_switch are we giving realtime priority? 000200 0a 000203 6000 00 425 tze no_int_credit no 000201 aa 000100 2350 03 426 lda apte.realtime_burst,du 000202 aa 2 00001 2551 00 427 orsa bp|apte.flags yes 000203 428 no_int_credit: 000203 0a 001512 7070 00 429 tsx7 make_itt_message wakeup adds itt_msg to process' queue 430 431 " See if we have to send an IPS wkp_ signal 432 " This algorithm is copied from ipc_validate_ 433 000204 4a 4 00070 2351 20 434 lda pds$arg_2 Get event_channel_name.encoded_idx 000205 aa 000022 7710 00 435 arl 18 in al 000206 aa 2 00064 1751 00 436 sba bp|apte.ipc_r_offset Subtract the r_offset to get the decoded_index 000207 aa 000017 7710 00 437 arl decoded_index.flags_shift-18 Get the flag bits (we already shifted 18 above) 000210 aa 000007 3750 07 438 ana decoded_index.flags_mask,dl For now there are only 2 possibilities 000211 0a 000214 6000 00 439 tze wakeup_wake We have the normal flags 440 " We have to send an IPS wkp_ signal 441 000212 4a 4 00076 2351 20 442 lda sys_info$wkp_mask We want to send a wkp_ signal 000213 0a 004553 7060 00 443 tsx6 send_ips_wakeup Do the real work, destroys pds$arg_3 444 " Next instruction may be skipped on return 000214 445 wakeup_wake: 000214 0a 000243 7070 00 446 tsx7 wake Go to common wakeup code 000215 aa 2 00001 7221 00 447 lxl2 bp|apte.state return arg in x2 000216 aa 6 00201 2341 00 448 szn errcode 000217 0a 000221 6000 00 449 tze *+2 000220 aa 6 00201 7221 00 450 lxl2 errcode 000221 451 wakeup_returns: 000221 0a 001354 7060 00 452 tsx6 UNLOCK_bp Wakeup unlocks target apte 000222 453 wakeup_returns_nul: 000222 0a 001324 7060 00 454 tsx6 UNLOCK Wakeup unlocks 000223 0a 001437 7070 00 455 tsx7 switch_back_ret Exit from wakeup if pid invalid and no apte locked 000224 aa 0 00010 4501 20 456 stz ap|8,* return execution state 000225 aa 0 00010 4421 20 457 sxl2 ap|8,* 000226 aa 7 00044 7101 20 458 short_return 459 000227 460 non_ring_0: 461 "Here are the checks for the 462 "Access Isolation Mechanism 463 000227 aa 2 00042 2371 00 464 ldaq bp|apte.access_authorization if target has ipc privilege 000230 4a 4 00100 2761 20 465 orq pds$access_authorization+1 or if sender has ipc privilege, 000231 aa 400000 3160 07 466 canq apte.no_ipc_check,dl 000232 0a 000203 6010 00 467 tnz no_int_credit then it is OK to send the wakeup. 000233 aa 2 00043 2201 00 468 ldx0 bp|apte.access_authorization+1 get level of target process 000234 4a 4 00100 1001 20 469 cmpx0 pds$access_authorization+1 if it's less than sender's level, 000235 0a 000241 6040 00 470 tmi send_down do not allow wakeup to be sent. 000236 4a 4 00102 3751 20 471 ana pds$access_authorization if the category set of the sender 000237 4a 4 00102 1151 20 472 cmpa pds$access_authorization is contained in (or equal to) 000240 0a 000203 6000 00 473 tze no_int_credit the category set of the target, 474 "then it is OK to send the wakeup. 000241 475 send_down: 000241 aa 000144 2220 03 476 ldx2 100,du this error code indicates 000242 0a 000221 7100 00 477 tra wakeup_returns an IPC send-down attempt. 478 479 " 480 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 481 " 482 " WAKE -- internal subroutine used to wake up a process 483 " and award it a processor if it is warrented. 484 " 485 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 486 000243 487 wake: 000243 0a 001467 7060 00 488 tsx6 subroutine_save 000244 aa 2 00036 2341 00 489 szn bp|apte.lock ASSUME bp locked 490 drlnz (pxss: APTE not locked) ASSUME bp locked 000245 0a 005404 6010 00 .._00000.tst: tnz .._00000.drl 000246 aa 200000 2350 03 491 lda apte.wakeup_waiting,du turn on wakeup waiting flag 000247 aa 2 00001 2551 00 492 orsa bp|apte.flags 000250 aa 2 00001 7201 00 493 lxl0 bp|apte.state make sure process is blocked 000251 aa 000004 1000 03 494 cmpx0 blocked,du 000252 0a 001472 6010 00 495 tnz subroutine_unsave 496 read_clock " check for long time block 000253 4a 4 00104 6331 20 rccl sys_info$clock_,* 000254 aa 2 00022 1771 00 497 sbaq bp|apte.state_change_time subtract out last state chage time 000255 aa 3 00361 1161 00 498 cmpq bb|priority_sched_inc see if process has been asleep too long 000256 0a 000260 6040 00 499 tmi short_time just went blocked, no priority 000257 0a 004614 7000 00 500 tsx0 setup_p_int boost priority 000260 501 short_time: 000260 aa 000002 2200 03 502 ldx0 ready,du change state to ready 000261 0a 000753 7070 00 503 tsx7 update_execution_state 000262 0a 002532 7070 00 504 tsx7 sort_in schedule and thread in 000263 aa 2 00000 6221 00 505 eax2 bp|0 fp = entry waking up 000264 0a 002676 7070 00 506 tsx7 get_processor does he get a processor? 000265 0a 001472 7100 00 507 tra subroutine_unsave 508 " 509 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 510 " 511 " FREE_ITT - entry to put a list of ITT entries into the list of free ITT 512 " entries. It is always called after a process returns from block, 513 " to release its event message queue. 514 " 515 " Nothing is locked when this code is entered. 516 " Apte's are locked to validate that the processes exist. 517 " If the pid has changed we know empty_t zeroed the counter. 518 " Never looplock an APTE while holding the itt_free_list. 519 " 520 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 521 000266 522 free_itt: 000266 0a 001376 7060 00 523 tsx6 setup_ 000267 aa 0 00002 2351 20 524 lda ap|2,* pick up pointer to list to be freed 000270 4a 4 00066 7551 20 525 sta pds$arg_1 000271 0a 001400 6710 00 526 tsplb setup_check switch stacks and lock 000272 aa 000000 0000 16 527 arg 0,6 528 000273 4a 4 00066 2201 20 529 ldx0 pds$arg_1 get head of process's itt queue 000274 0a 000276 7070 00 530 tsx7 free_itt_ free them 000275 0a 001436 7100 00 531 tra switch_back free_itt exits 532 " 533 000276 534 free_itt_: 535 "Come here to free X0->ITTE's 000276 aa 000000 6250 10 536 eax5 0,0 Remember newly freed head in X5 000277 0a 000341 6000 00 537 tze free_itt_exit there is nothing to free 000300 4a 4 00106 3531 20 538 epbpbb tc_data$ get pointer to base of tc_data 000301 aa 777777 2240 03 539 ldx4 -1,du put all-seven into RX4 000302 aa 000000 6350 00 540 eaa 0 count num freed 000303 541 follow_itt_list: 000303 aa 3 00000 4441 10 542 sxl4 bb|itt_entry.next_itt_relp,0 tag the discarded entry for debugging 000304 aa 000001 1750 07 543 sba 1,dl maintain counter 000305 aa 3 00002 2231 10 544 ldx3 bb|itt_entry.origin,0 see if dev_signal 000306 0a 000317 6010 00 545 tnz fi_skip_sender nz means dev_signal 000307 aa 3 00001 2231 10 546 ldx3 bb|itt_entry.sender,0 was dev_signal 000310 0a 001367 7060 00 547 tsx6 LOCK_x3 free_itt locks sender 000311 aa 3 00003 2361 13 548 ldq bb|apte.processid,3 if process still exists 000312 aa 3 00001 1161 10 549 cmpq bb|itt_entry.sender,0 000313 0a 000316 6010 00 550 tnz fi_sender_gone processid has changed! 000314 aa 000001 3360 07 551 lcq 1,dl ok to decrement 000315 aa 3 00050 0561 13 552 asq bb|apte.ittes_sent,3 000316 553 fi_sender_gone: 000316 0a 001372 7060 00 554 tsx6 UNLOCK_x3 free_itt unlocks sender 000317 555 fi_skip_sender: 556 " get following entry's forward pointer 000317 aa 3 00000 2221 10 557 ldx2 bb|itt_entry.next_itt_relp,0 000320 0a 000323 6000 00 558 tze thread_in_itt_queue 000321 aa 000000 6200 12 559 eax0 0,2 put index 2 into XR0 000322 0a 000303 7100 00 560 tra follow_itt_list 561 " 562 "x5->first_freed, x0 ->last_freed, A has count 000323 563 thread_in_itt_queue: 000323 aa 3 00321 0321 00 564 ldqc bb|itt_free_list free_itt LOCKS free list 000324 0a 000326 6010 00 565 tnz *+2 000325 0a 000323 7100 00 566 tra thread_in_itt_queue If zero somebody else has it 567 000326 aa 000000 6210 02 568 eax1 0,qu 569 " make tail of new -> old head 000327 aa 3 00000 7411 10 570 stx1 bb|itt_entry.next_itt_relp,0 000330 aa 3 00003 2231 10 571 ldx3 bb|itt_entry.target_id,0 prepare to decrement target counter 000331 aa 3 00003 2361 10 572 ldq bb|itt_entry.target_id,0 get rcvr pid 000332 aa 3 00322 0551 00 573 asa bb|used_itt use A-reg to decrement 000333 aa 3 00321 7451 00 574 stx5 bb|itt_free_list free_itt UNLOCKS free_list 000334 0a 001367 7060 00 575 tsx6 LOCK_x3 free_itt locks target 000335 aa 3 00003 1161 13 576 cmpq bb|apte.processid,3 compare processid 000336 0a 000340 6010 00 577 tnz rcvr_gone processid has changed! 000337 aa 3 00051 0551 13 578 asa bb|apte.ittes_got,3 use A-reg to decrement 000340 579 rcvr_gone: 000340 0a 001372 7060 00 580 tsx6 UNLOCK_x3 free_itt unlocks target 000341 581 free_itt_exit: 000341 aa 000000 7100 17 582 tra 0,7 free_itt_ exits 583 584 " 585 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 586 " 587 " PRE_EMPT 588 " TIMER_RUNOUT 589 " 590 " This procedure is called at timer runout time and 591 " when a process gets pre-empted by a higher priority 592 " process. Pre-empt merely gives the processor away. 593 " Timer-runout gives up eligibility as well. 594 " 595 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 596 000342 597 pre_empt_poll: 000342 0a 001403 6710 00 598 tsplb setup_mask 000343 0a 000346 7100 00 599 tra pre_empt.common 600 000344 601 pre_empt: 000344 4a 4 00110 4501 20 602 stz pds$pre_empt_poll_return 603 000345 0a 001463 7060 00 604 tsx6 init_pxss_save_stack init x7 save stack 000346 605 pre_empt.common: 000346 0a 002477 7070 00 606 tsx7 update_te 000347 aa 3 00022 0541 00 607 aos bb|te_pre_empt 000350 aa 2 00001 2351 00 608 lda bp|apte.flags 000351 aa 002000 3150 03 609 cana apte.idle,du Idle suffers pre-empt not timer-runout 000352 0a 000403 6010 00 610 tnz pmt_idle 000353 aa 2 00033 2351 00 611 lda bp|apte.temax See if time left in quantum 000354 aa 2 00004 1151 00 612 cmpa bp|apte.te 000355 0a 000410 6040 00 613 tmi tro_ None left give up elig 614 000356 0a 001351 7060 00 615 pmt_: tsx6 LOCK_bp pre-empt changes state 000357 aa 000401 3200 03 616 lcx0 apte.pre_empt_pending+1,du turn OFF flag 000360 aa 2 00001 3401 00 617 ansx0 bp|apte.flags .. 000361 aa 000002 2200 03 618 ldx0 ready,du set state to ready 000362 0a 000753 7070 00 619 tsx7 update_execution_state 000363 0a 001354 7060 00 620 tsx6 UNLOCK_bp pre-empt unlocks before getwk 000364 0a 003241 7070 00 621 tsx7 getwork 000365 622 pre_empt.return: 000365 4a 4 00110 2341 20 623 szn pds$pre_empt_poll_return zero => this process entered pre-empt through connect fault 000366 4a 4 00112 6001 20 624 tze wired_fim$pre_empt_return Return from connect 625 626 " Switch back by hand, since the circumstances are peculiar. 627 " Code adapted from switch_back. 628 000367 4a 4 00114 2371 20 629 ldaq prds$+stack_header.stack_begin_ptr restore stack end ptr 000370 4a 4 00116 7571 20 630 staq prds$+stack_header.stack_end_ptr .. 631 000371 4a 4 00120 2371 20 632 ldaq pds$tc_mask restore previous mask 000372 0a 000000 2770 00 633 oraq channel_mask_set 000373 4a 4 00122 3771 20 634 anaq scs$open_level 000374 4a 4 00124 7211 20 635 lxl1 prds$processor_tag 000375 4a 4 00126 7611 20 636 lprpab scs$mask_ptr,1 get set for masking 000376 4a 4 00130 7161 20 637 xec scs$set_mask,1 638 000377 4a 4 00132 3721 20 639 eppsp pds$pre_empt_poll_return,* Adopt outer ring stack frame 000400 4a 4 00110 4501 20 640 stz pds$pre_empt_poll_return Au resevoir 000401 4a 4 00062 3731 20 641 epbpsb pds$stack_0_ptr,* So we can get to operators 000402 aa 7 00044 7101 20 642 short_return and return to caller of gate 643 644 645 000403 aa 3 00326 2341 00 646 pmt_idle: szn bb|wait_enable If idle make sure not shutting down 000404 0a 000356 6010 00 647 tnz pmt_ Idle pmt ok if multiprog 000405 aa 3 00306 2341 00 648 szn bb|system_shutdown 000406 0a 000356 6000 00 649 tze pmt_ Idle pmt ok if not shutdown 650 " Idles never get ring alarms 000407 4a 4 00112 7101 20 651 tra wired_fim$pre_empt_return Must not do getwork! 652 653 000410 0a 001302 7060 00 654 tro_: tsx6 WRITE_LOCK tro_ unthreads 000411 0a 001351 7060 00 655 tsx6 LOCK_bp tro_ locks apte 000412 aa 000401 3200 03 656 lcx0 apte.pre_empt_pending+1,du 000413 aa 2 00001 3401 00 657 ansx0 bp|apte.flags 000414 0a 000770 7070 00 658 tsx7 unthread tro_ 000415 aa 000002 2200 03 659 ldx0 ready,du tro_ 000416 0a 000753 7070 00 660 tsx7 update_execution_state tro_ 000417 0a 004644 7070 00 661 tsx7 revoke_elig tro_ 000420 0a 004736 7070 00 662 tsx7 reschedule tro_ 000421 0a 002532 7070 00 663 tsx7 sort_in tro_ 000422 0a 005003 7070 00 664 tsx7 purge_UNLOCK tro_ 000423 0a 003241 7070 00 665 tsx7 getwork tro_ 000424 aa 2 00046 2371 00 666 ldaq bp|apte.virtual_cpu_time note vtime at gain elig 000425 4a 4 00052 7571 20 667 staq pds$virtual_time_at_eligibility 000426 0a 000365 7100 00 668 tra pre_empt.return 669 670 " 671 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 672 " 673 " stop - called by hcs_$stop_proc to stop a process 674 " stop is unusual in that it is a call side 675 " operation which must unthread and sort_in 676 " a ready non-eligible process 677 " 678 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 679 000427 680 stop_wakeup: 000427 681 stop: 000427 0a 001376 7060 00 682 tsx6 setup_ 000430 aa 0 00002 2351 20 683 lda ap|2,* get processid 000431 4a 4 00066 7551 20 684 sta pds$arg_1 000432 0a 001400 6710 00 685 tsplb setup_check switch stacks and lock 000433 aa 000000 0000 16 686 arg 0,6 000434 0a 001302 7060 00 687 tsx6 WRITE_LOCK stop may need rethread 688 000435 4a 4 00074 2351 20 689 lda pds$validation_level get caller's ring number 000436 aa 6 00202 7551 00 690 sta tmp_ring 691 000437 aa 000000 2220 03 692 ldx2 0,du pre-set execution state to zero 000440 0a 004502 7070 00 693 tsx7 hash_LOCK stop finds and locks target 000441 0a 000503 0000 00 694 arg stop_returns_nul indirect if error 695 000442 aa 3 00453 2351 00 696 lda bb|default_procs_required set process to default 000443 aa 776000 3750 03 697 ana apte.procs_required_mask,du just in case 698 drlze (pxss: APTE disdains all processors) should never happen 000444 0a 005405 6000 00 .._00001.tst: tze .._00001.drl 000445 aa 2 00063 6751 00 699 era bp|apte.procs_required 000446 aa 2 00063 6551 00 700 ersa bp|apte.procs_required 000447 aa 000200 2220 03 701 ldx2 apte.default_procs_required,du set default flag 000450 aa 2 00001 2421 00 702 orsx2 bp|apte.flags 703 000451 aa 2 00001 7221 00 704 lxl2 bp|apte.state target's state to x2 000452 aa 000005 1020 03 705 cmpx2 stopped,du Compare to the stopped state 000453 0a 000502 6000 00 706 tze stop_returns If equal, target already stopped 000454 aa 6 00203 4501 00 707 stz dev_signal count it as dev_signal 000455 aa 6 00203 0541 00 708 aos dev_signal count it as dev_signal 000456 0a 006373 2350 00 709 lda =aquit put recognizable pattern in message 000457 0a 006374 2360 00 710 ldq =astop ... namely "quitstop" 000460 aa 6 00144 7571 00 711 staq tmp_ev_channel 000461 aa 6 00146 7571 00 712 staq tmp_ev_message pattern into channel & message 000462 4a 4 00064 5541 20 713 stc1 pds$wakeup_flag not require unique message 000463 0a 001512 7070 00 714 tsx7 make_itt_message now go make "quitstop" message 715 000464 0a 004614 7000 00 716 tsx0 setup_p_int boost priority 000465 aa 2 00001 7201 00 717 lxl0 bp|apte.state 000466 aa 000004 1000 03 718 cmpx0 blocked,du Blocked? 000467 0a 000475 6000 00 719 tze st_wake Yes, wake him. 720 000470 aa 2 00001 2201 00 721 ldx0 bp|apte.flags Eligible? 000471 aa 004000 3000 03 722 canx0 apte.eligible,du 000472 0a 000475 6010 00 723 tnz st_wake Yes, don't unthread 000473 0a 000770 7070 00 724 tsx7 unthread No, move up in queue 000474 0a 002530 7070 00 725 tsx7 sort_in_before 726 000475 0a 000243 7070 00 727 st_wake: tsx7 wake Awaken blocked target 000476 aa 100000 2350 03 728 lda apte.stop_pending,du turn on stop pending 000477 aa 2 00001 2551 00 729 orsa bp|apte.flags 000500 0a 001474 7070 00 730 tsx7 send_connect send connect if processor running 000501 aa 2 00001 7221 00 731 lxl2 bp|apte.state return state to caller 000502 732 stop_returns: 000502 0a 001354 7060 00 733 tsx6 UNLOCK_bp 000503 734 stop_returns_nul: 000503 0a 001324 7060 00 735 tsx6 UNLOCK stop is done 000504 0a 001437 7070 00 736 tsx7 switch_back_ret 000505 aa 0 00004 4501 20 737 stz ap|4,* return execution state 000506 aa 0 00004 4421 20 738 sxl2 ap|4,* 000507 aa 7 00044 7101 20 739 short_return 740 " 741 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 742 " 743 " start - called by hcs_$start_proc to start a process 744 " 745 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 746 000510 747 start: 000510 0a 001376 7060 00 748 tsx6 setup_ 000511 aa 0 00002 2351 20 749 lda ap|2,* get processid 000512 4a 4 00066 7551 20 750 sta pds$arg_1 000513 0a 001400 6710 00 751 tsplb setup_check switch stacks and lock 000514 aa 000000 0000 16 752 arg 0,6 753 000515 0a 001302 7060 00 754 tsx6 WRITE_LOCK start must protect pid, rethreads 000516 aa 000000 2220 03 755 ldx2 0,du pre-set state to zero 000517 0a 004502 7070 00 756 tsx7 hash_LOCK Get pointer to apt entry 000520 0a 000503 0000 00 757 arg stop_returns_nul start: indirect if error 000521 aa 100001 3200 03 758 lcx0 apte.stop_pending+1,du turn off stop pending 000522 aa 2 00001 3401 00 759 ansx0 bp|apte.flags 760 " lxl0 bp|state pick up target's state 761 " cmpx0 stopped,du Compare it to stopped state 762 " tnz stop_returns If not equal, return 000523 aa 000004 2200 03 763 ldx0 blocked,du Otherwise redefine target state 000524 0a 000753 7070 00 764 tsx7 update_execution_state 000525 0a 000243 7070 00 765 tsx7 wake And awaken target 000526 aa 2 00001 7221 00 766 lxl2 bp|apte.state return target's state 000527 0a 000502 7100 00 767 tra stop_returns return 768 " 769 770 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 771 " 772 " FORCE_STOP -- called to make the current process stop itself. 773 " sometimes known as I_stop. 774 " 775 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 776 000530 777 force_stop: 000530 aa 7 00046 2721 20 778 getlp 000531 0a 001403 6710 00 779 tsplb setup_mask 000532 aa 3 00021 0541 00 780 aos bb|te_i_stop 000533 0a 002477 7070 00 781 tsx7 update_te 000534 0a 001302 7060 00 782 tsx6 WRITE_LOCK I_stop unthreads 000535 0a 001351 7060 00 783 tsx6 LOCK_bp 000536 aa 2 00001 2351 00 784 lda bp|apte.flags 000537 aa 100000 3150 03 785 cana apte.stop_pending,du check for stop pending 000540 0a 000577 6000 00 786 tze force_stop_not no, return 000541 aa 2 00014 2341 00 787 szn bp|apte.term_processid Is there a buzzard for this process? 788 drlze (pxss: No term_processid) NO - CRASH 000542 0a 005406 6000 00 .._00002.tst: tze .._00002.drl 000543 aa 2 00026 2371 00 789 ldaq bp|apte.alarm_time check for alarm pending 000544 0a 000562 6000 00 790 tze force_stop_getwork no alarm pending 791 000545 aa 2 00000 6201 00 792 eax0 bp|0 thread out of alarm list 000546 aa 3 00357 1001 00 793 cmpx0 bb|alarm_timer_list see if first on list 000547 0a 000553 6010 00 794 tnz is_scan 795 000550 aa 2 00026 2221 00 796 ldx2 bp|apte.alarm_time if so thread out 000551 aa 3 00357 7421 00 797 stx2 bb|alarm_timer_list 000552 0a 000562 7100 00 798 tra force_stop_getwork 799 000553 aa 3 00357 2221 00 800 is_scan: ldx2 bb|alarm_timer_list search list for entry 000554 aa 3 00026 1001 12 801 is_loop: cmpx0 bb|apte.alarm_time,2 000555 0a 000560 6000 00 802 tze is_done 000556 aa 3 00026 2221 12 803 ldx2 bb|apte.alarm_time,2 000557 0a 000554 7100 00 804 tra is_loop 000560 aa 2 00026 2201 00 805 is_done: ldx0 bp|apte.alarm_time thread out of list 000561 aa 3 00026 7401 12 806 stx0 bb|apte.alarm_time,2 807 000562 808 force_stop_getwork: 000562 0a 000770 7070 00 809 tsx7 unthread istop 000563 aa 000005 2200 03 810 ldx0 stopped,du set state to stopped 000564 0a 000753 7070 00 811 tsx7 update_execution_state 000565 0a 004644 7070 00 812 tsx7 revoke_elig istop 000566 0a 004736 7070 00 813 tsx7 reschedule istop 000567 0a 005003 7070 00 814 tsx7 purge_UNLOCK istop 000570 aa 000000 6240 00 815 eax4 0 000571 aa 2 00010 2201 00 816 ldx0 bp|apte.ipc_pointers 000572 aa 2 00010 7441 00 817 stx4 bp|apte.ipc_pointers 000573 0a 000276 7070 00 818 tsx7 free_itt_ 000574 0a 003241 7070 00 819 tsx7 getwork 820 drltra (pxss: Stop returned from getwork) should never get here, nohow 000575 0a 005407 7100 00 .._00003.tst: tra .._00003.drl 821 822 000576 823 stop_return: 000576 aa 7 00044 7101 20 824 short_return 825 000577 826 force_stop_not: 000577 827 UNLOCK2_switch_back: 000577 0a 001354 7060 00 828 tsx6 UNLOCK_bp force_stop done 000600 0a 001324 7060 00 829 tsx6 UNLOCK force_stop done 000601 0a 001436 7100 00 830 tra switch_back 831 " 832 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 833 " 834 " set_procs_required - entry to set and reset the 835 " group of CPUs on which this process can run. 836 " 837 " call pxss$set_procs_required (cpu_set, code) 838 " cpu_set = bit (8) aligned CPU mask 839 " ("0"b => set to system default) 840 " code = non-standard error code 841 " 0 => group set and now running in group 842 " ^0 => no member of group online 843 " 844 " 845 " system default is a CPU mask stored in tc_data$default_procs_required 846 " It is used for processes which have not requested explicitly 847 " CPUs required, and for those which have reset to the default. 848 " To avoid various races (with reconfiguration, default changing, etc.), 849 " this cell should not be used or set without the global APT lock held 850 " 851 " THIS ENTRY MUST NOT BE CALLED ON THE PRDS 852 " 853 " It may, however, be called from a wired environment 854 " (the reason for non-standard error codes) 855 " 856 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 857 000602 858 set_procs_required: 000602 4a 4 00010 2201 00 859 ldx0 lp|prds_link check whether we're on the prds 000603 aa 7 00022 1001 00 860 cmpx0 sb|stack_header.stack_begin_ptr already 861 drlze (pxss: sprq already on prds) invalid call--can't do much else 000604 0a 005410 6000 00 .._00004.tst: tze .._00004.drl 862 000605 0a 001376 7060 00 863 tsx6 setup_ 000606 aa 0 00002 2361 20 864 ldq ap|2,* save argument in pds 000607 4a 4 00066 7561 20 865 stq pds$arg_1 000610 aa 0 00004 4501 20 866 stz ap|4,* clear error code 000611 0a 001400 6710 00 867 tsplb setup_check switch stacks and lock 000612 aa 000000 0000 16 868 arg 0,6 000613 0a 001302 7060 00 869 tsx6 WRITE_LOCK sprq locks out getwork and reset_proc_req 870 000614 aa 000000 6220 00 871 eax2 0 assume set_procs (to non-default) 000615 4a 4 00066 2361 20 872 ldq pds$arg_1 refetch the argument 000616 aa 776000 3760 03 873 anq apte.procs_required_mask,du strip out garbage 000617 0a 000624 6010 00 874 tnz pr_set set 000620 aa 3 00453 2361 00 875 ldq bb|default_procs_required system default 000621 aa 776000 3760 03 876 anq apte.procs_required_mask,du shouldn't be garbage, but ... 877 drlze (pxss: APTE disdains all processors) we do this, nobody's running anyway 000622 0a 005411 6000 00 .._00005.tst: tze .._00005.drl 000623 aa 000001 6220 00 878 eax2 1 reset (to default) 000624 879 pr_set: 000624 4a 4 00134 3161 20 880 canq scs$processor is any CPU in the set online 000625 0a 000663 6000 00 881 tze UNLOCK_sprq_error yes--don't set, return error code 000626 aa 000000 6350 02 882 eaa 0,qu save group mask for check 000627 0a 001347 7060 00 883 tsx6 LOCK_me_bp sprq 000630 aa 2 00063 6761 00 884 erq bp|apte.procs_required set into APTE 000631 aa 776000 3760 03 885 anq apte.procs_required_mask,du 000632 aa 2 00063 6561 00 886 ersq bp|apte.procs_required 887 000633 aa 000000 6220 12 888 eax2 0,2 set to default 000634 0a 000640 6010 00 889 tnz set_default_flag yes 000635 aa 000201 3200 03 890 lcx0 apte.default_procs_required+1,du 000636 aa 2 00001 3401 00 891 ansx0 bp|apte.flags 000637 0a 000642 7100 00 892 tra set_reset_done 000640 893 set_default_flag: 000640 aa 000200 2200 03 894 ldx0 apte.default_procs_required,du 000641 aa 2 00001 2401 00 895 orsx0 bp|apte.flags 000642 896 set_reset_done: 897 898 " 899 " Now check to see if we're on a CPU in the group. If not 900 " go thru getwork (which won't run us unless we're on such a CPU). 901 " 000642 4a 4 00136 3151 20 902 cana prds$processor_pattern 000643 0a 000577 6010 00 903 tnz UNLOCK2_switch_back already on one, unlock everything and return 904 000644 aa 6 00000 2541 00 905 call page$cam clear all caches if wrong cpu 000645 0a 006376 3500 00 000646 4a 4 00012 3521 20 000647 aa 6 00040 7531 00 000650 aa 7 00036 6701 20 000651 aa 6 00000 1731 00 000652 aa 6 00040 0731 00 000653 0a 002477 7070 00 906 tsx7 update_te get set for getwork 000654 aa 000002 2200 03 907 ldx0 ready,du 000655 0a 000753 7070 00 908 tsx7 update_execution_state 000656 0a 001354 7060 00 909 tsx6 UNLOCK_bp sprq unlock for getwk 000657 0a 001324 7060 00 910 tsx6 UNLOCK sprq unlocks before getwork 000660 0a 003241 7070 00 911 tsx7 getwork 000661 aa 000000 6270 00 912 eax7 0 short_return after switch back 000662 0a 001444 7100 00 913 tra switch_back_ret_pds 914 000663 915 UNLOCK_sprq_error: 000663 0a 001324 7060 00 916 tsx6 UNLOCK 000664 0a 001444 7070 00 917 tsx7 switch_back_ret_pds 000665 aa 0 00004 5541 20 918 stc1 ap|4,* error code 000666 aa 7 00044 7101 20 919 short_return 920 921 " 922 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 923 " 924 " EMPTY_T -- procedure to thread an APT entry into the APT 925 " free list. 926 " 927 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 928 000667 929 empty_t: 000667 0a 001376 7060 00 930 tsx6 setup_ 000670 aa 0 00002 2371 20 931 ldaq ap|2,* save input apt pointer 000671 4a 4 00066 7571 20 932 staq pds$arg_1 000672 0a 001400 6710 00 933 tsplb setup_check switch stacks and lock 000673 aa 000000 0000 16 934 arg 0,6 000674 0a 001302 7060 00 935 tsx6 WRITE_LOCK emtpty_t rethreads 000675 4a 4 00140 3521 20 936 eppbp pds$arg_1,* get pointer to desired APT entry 000676 0a 001351 7060 00 937 tsx6 LOCK_bp empty_t changes state 000677 aa 2 00001 7201 00 938 lxl0 bp|apte.state Check state first 000700 aa 000000 1000 03 939 cmpx0 empty,du Already empty OK 000701 0a 000706 6000 00 940 tze et_1 000702 aa 000005 1000 03 941 cmpx0 stopped,du Also stopped OK 942 drlnz (pxss: empty_t APTE not stopped or empty) 000703 0a 005412 6010 00 .._00006.tst: tnz .._00006.drl 000704 aa 000000 2200 03 943 ldx0 empty,du 000705 0a 000753 7070 00 944 tsx7 update_execution_state Changed stopped to empty. 000706 945 et_1: 000706 aa 000000 6270 00 946 eax7 0 000707 aa 2 00010 2251 00 947 ldx5 bp|apte.ipc_pointers claim ITTE's while locked, free later 000710 aa 2 00010 7471 00 948 stx7 bp|apte.ipc_pointers 000711 aa 2 00050 4501 00 949 stz bp|apte.ittes_sent safe to zero these since piud=0 000712 aa 2 00051 4501 00 950 stz bp|apte.ittes_got 951 952 " Return any stack_0 owned by the defunct process 953 000713 aa 2 00001 2351 00 954 lda bp|apte.flags 000714 aa 000004 3150 03 955 cana apte.shared_stack_0,du Is there as stack_0 to return? 000715 0a 000740 6000 00 956 tze check_stack_0_none No 957 000716 0a 005241 7060 00 958 tsx6 lock_stack_queue 000717 aa 2 00000 6351 00 959 eaa bp|0 au = apte offset 000720 aa 000022 7710 00 960 arl 18 al = apte offset 000721 aa 777777 2360 03 961 ldq -1,du comparison mask 000722 aa 1 00001 7201 00 962 lxl0 ab|sdt.num_stacks number of stack_0's 000723 aa 000000 6240 00 963 eax4 0 index into sdt 000724 964 check_stack_0_loop: 000724 aa 1 00005 2111 14 965 cmk ab|sdt.aptep,4 this stack_0 belong to deadproc 000725 0a 000734 6010 00 966 tnz bump_next_stack_0 no 000726 0a 005267 7060 00 967 tsx6 free_stack_0 yes--give it up 000727 aa 000001 2200 03 968 ldx0 1,du 000730 aa 3 00422 0401 00 969 asx0 bb|max_max_eligible number available stack_0's 000731 aa 000001 3350 07 970 lca 1,dl 000732 aa 3 00424 0551 00 971 asa bb|stopped_stack_0 count of suspended stack_0's 000733 0a 000737 7100 00 972 tra check_stack_0_done 000734 973 bump_next_stack_0: 000734 aa 000004 6240 14 974 eax4 sdte_size,4 bump sdt index 000735 aa 777777 6200 10 975 eax0 -1,0 one less sdte 000736 0a 000724 6054 00 976 tpnz check_stack_0_loop transfer if more to go 000737 977 check_stack_0_done: 000737 0a 005255 7060 00 978 tsx6 unlock_stack_queue 979 000740 980 check_stack_0_none: 000740 0a 001354 7060 00 981 tsx6 UNLOCK_bp 000741 aa 3 00346 2241 00 982 ldx4 bb|empty_q thread into free list 000742 aa 2 00000 7441 00 983 stx4 bp|apte.thread singly threaded 000743 aa 2 00000 6241 00 984 eax4 bp|0 get pointer to this entry 000744 aa 3 00346 7441 00 985 stx4 bb|empty_q to update into empty_q 000745 0a 001324 7060 00 986 tsx6 UNLOCK empty_t uses lock to protect empty_q 000746 aa 000000 6240 00 987 eax4 0 000747 aa 2 00010 7441 00 988 stx4 bp|apte.ipc_pointers zero itt thread in apte 000750 aa 000000 6200 15 989 eax0 0,5 restore old itt thread 000751 0a 000276 7070 00 990 tsx7 free_itt_ 000752 0a 001436 7100 00 991 tra switch_back 992 " 993 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 994 " 995 " UPDATE_EXECUTION_STATE -- subroutine to store the execution 996 " state passed in x0 into the APTE pointed to by bp. The 997 " appropriate counters in tc_data are also updated. 998 " 999 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1000 000753 1001 update_execution_state: 000753 aa 2 00036 2341 00 1002 szn bp|apte.lock ASSUME bp locked 1003 drlnz (pxss: APTE not locked) ASSUME bp locked 000754 0a 005413 6010 00 .._00007.tst: tnz .._00007.drl 000755 aa 2 00001 2351 00 1004 lda bp|apte.flags dont change meters for idle 000756 aa 002000 3150 03 1005 cana apte.idle,du 000757 0a 000764 6010 00 1006 tnz update_exec_ret 000760 aa 2 00001 7241 00 1007 lxl4 bp|apte.state get previous (old) state 000761 aa 000001 3350 07 1008 lca 1,dl 000762 aa 3 00160 0551 14 1009 asa bb|statistics,4 000763 aa 3 00160 0541 10 1010 aos bb|statistics,0 1011 "old_assume_state_change_ok 000764 1012 update_exec_ret: 000764 aa 2 00001 4401 00 1013 sxl0 bp|apte.state 1014 read_clock " read the clock 000765 4a 4 00104 6331 20 rccl sys_info$clock_,* 000766 aa 2 00022 7571 00 1015 staq bp|apte.state_change_time for state change time 000767 aa 000000 7100 17 1016 tra 0,7 1017 1018 1019 1020 " 1021 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1022 " 1023 " UNTHREAD -- procedure to thread the APT entry pointed to by 1024 " bp out of the list it is in. 1025 " 1026 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1027 000770 1028 unthread: 000770 4a 4 00142 2341 20 1029 szn tc_data$apt_lock ASSUME write locked 1030 drlmi (pxss: APT not locked) ASSUME write locked 000771 0a 005414 6040 00 .._00010.tst: tmi .._00010.drl 000772 aa 2 00000 2341 00 1031 szn bp|apte.thread check if not in a list 000773 aa 000000 6000 17 1032 tze 0,7 return if not in a list 000774 aa 2 00000 7241 00 1033 lxl4 bp|apte.thread x4 -> previous entry in list 1034 drlze (pxss: unthread null back ptr) ASSUME cur.bp nonzero 000775 0a 005415 6000 00 .._00011.tst: tze .._00011.drl 000776 aa 2 00000 6201 00 1035 eax0 bp|0 ASSUME prev.fp -> cur 000777 aa 3 00000 1001 14 1036 cmpx0 bb|apte.thread,4 ASSUME prev.fp -> cur 1037 drlnz (pxss: unthread prev.fp ^= cur) ASSUME prev.fp -> cur 001000 0a 005416 6010 00 .._00012.tst: tnz .._00012.drl 001001 aa 2 00000 2201 00 1038 ldx0 bp|apte.thread x0 -> next entry in list 1039 drlze (pxss: unthread null cur.fp) ASSUME cur.fp nonzero 001002 0a 005417 6000 00 .._00013.tst: tze .._00013.drl 001003 aa 3 00000 7401 14 1040 stx0 bb|apte.thread,4 store old forward in previous 001004 aa 3 00000 4441 10 1041 sxl4 bb|apte.thread,0 store old back in next 001005 aa 2 00000 4501 00 1042 stz bp|apte.thread zero thread pointers 001006 aa 000000 7100 17 1043 tra 0,7 1044 " 1045 1046 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1047 " 1048 " GET_ENTRY - returns pointer to empty entry 1049 " 1050 " On return, apte is unthreaded, unlocked, and procs_required 1051 " is set to the system default. Other fields are cleared. 1052 " 1053 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1054 001007 1055 get_entry: 001007 0a 001403 6710 00 1056 tsplb setup_mask 001010 0a 001302 7060 00 1057 tsx6 WRITE_LOCK get_entry unthreads 001011 aa 3 00346 2201 00 1058 ldx0 bb|empty_q x0 points to first entry on list 001012 0a 001015 6010 00 1059 tnz available_entries ok if non-zero 001013 0a 000002 3520 20 1060 eppbp null,* None available 001014 0a 001035 7100 00 1061 tra get_entry_returns So return 001015 1062 available_entries: 001015 aa 000001 3350 07 1063 lca 1,dl Decrement count of free APTE's 001016 aa 3 00160 0551 00 1064 asa bb|statistics+empty Caller must AOS new state 001017 aa 3 00000 2211 10 1065 ldx1 bb|apte.thread,0 thread entry out of free list 001020 aa 3 00346 7411 00 1066 stx1 bb|empty_q 001021 aa 3 00000 3521 10 1067 eppbp bb|0,0 001022 0a 001351 7060 00 1068 tsx6 LOCK_bp get_entry locks before zeroing 001023 aa 000100 1004 00 1069 mlr (),(pr),fill(0) Zero out APTE 001024 aa 000000 000000 1070 desc9a 0,0 001025 aa 200000 000400 1071 desc9a bp|0,size_of_apt_entry*4 001026 aa 000200 2200 03 1072 ldx0 apte.default_procs_required,du system default 001027 aa 2 00001 2401 00 1073 orsx0 bp|apte.flags 001030 aa 3 00453 2351 00 1074 lda bb|default_procs_required 001031 aa 776000 3750 03 1075 ana apte.procs_required_mask,du 1076 drlze (pxss: APTE disdains all processors) never happen 001032 0a 005420 6000 00 .._00014.tst: tze .._00014.drl 001033 aa 2 00063 7551 00 1077 sta bp|apte.procs_required 001034 0a 001354 7060 00 1078 tsx6 UNLOCK_bp get_entry makes apte lockable 001035 1079 get_entry_returns: 001035 0a 001324 7060 00 1080 tsx6 UNLOCK get_entry done 001036 0a 001437 7070 00 1081 tsx7 switch_back_ret 001037 aa 0 00002 2521 20 1082 spribp ap|2,* return pointer to new APT entry 001040 aa 7 00044 7101 20 1083 short_return 1084 1085 1086 " 1087 1088 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1089 " 1090 " SET_WORK_CLASS -- entry to move a process from one work_class to 1091 " another. Call is: 1092 " call pxss$set_work_class (processid, new_wc, old_wc, code) 1093 " 1094 " processid -bit (36) aligned specifies process (INPUT) 1095 " new_wc -fixed bin specifies new work class (INPUT) 1096 " old_wc -fixed bin previous value of work_class (OUTPUT) 1097 " code -fixed bin. 0=>OK, 1=>bad_processid, 2=>bad_work_class (OUTPUT) 1098 " 1099 " The steps are: 1100 " 1. Find apte given processid. 1101 " 2. Compute old_wc from apte.wct_index. 1102 " 3. Compute new wct_index from new_wc. 1103 " 4. If ready & not eligible move to new queue. 1104 " 1105 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1106 001041 1107 set_work_class: 001041 0a 001376 7060 00 1108 tsx6 setup_ 001042 aa 0 00002 2351 20 1109 lda ap|2,* get processid 001043 4a 4 00066 7551 20 1110 sta pds$arg_1 001044 aa 0 00004 2351 20 1111 lda ap|4,* get new_wc 001045 4a 4 00070 7551 20 1112 sta pds$arg_2 into wired storage. 1113 001046 0a 001400 6710 00 1114 tsplb setup_check switch stacks and lock 001047 aa 000000 0000 16 1115 arg 0,6 001050 0a 001302 7060 00 1116 tsx6 WRITE_LOCK set_work_class rethreads, protects pid 001051 4a 4 00072 4501 20 1117 stz pds$arg_3 Clear old_wc now. 001052 aa 000001 2350 07 1118 lda 1,dl Assume processid bad, 001053 4a 4 00144 7551 20 1119 sta pds$arg_4 set code to 1. 001054 0a 004502 7070 00 1120 tsx7 hash_LOCK 001055 0a 001116 0000 00 1121 arg swc_ret_nul indirect if error 001056 aa 2 00001 2351 00 1122 lda bp|apte.flags If process is idle 001057 aa 002000 3150 03 1123 cana apte.idle,du skip craziness. 001060 0a 001115 6010 00 1124 tnz swc_ret Return code = 1. 1125 001061 4a 4 00144 0541 20 1126 aos pds$arg_4 Preset code to 2, bad new_wc 001062 aa 2 00021 2361 00 1127 ldq bp|apte.wct_index Pick up old index into WCT. 001063 aa 000000 6210 02 1128 eax1 0,qu oldwc in X1 001064 aa 3 00404 1761 00 1129 sbq bb|min_wct_index Convert it to a number. 001065 aa 000070 5060 03 1130 div size_of_wct_entry,du The first wc_num is zero. 001066 4a 4 00072 7561 20 1131 stq pds$arg_3 Reurn old_wc. 1132 001067 4a 4 00070 2361 20 1133 ldq pds$arg_2 Pick up new wc number. 001070 0a 001115 6040 00 1134 tmi swc_ret Return code = 2, bad new_wc. 001071 aa 000070 4020 03 1135 mpy size_of_wct_entry,du Convert number to index. 001072 aa 3 00404 0361 00 1136 adlq bb|min_wct_index 001073 0a 001115 6040 00 1137 tmi swc_ret user gave us very big wc 001074 aa 3 00405 1161 00 1138 cmpq bb|max_wct_index Make sure not oob on WCT 001075 0a 001115 6054 00 1139 tpnz swc_ret Return code = 2, bad new_wc. 001076 aa 3 00001 2351 02 1140 lda bb|wcte.flags,qu Make sure this wc is defined. 001077 aa 200000 3150 03 1141 cana wcte.defined,du 001100 0a 001115 6000 00 1142 tze swc_ret Return code = 2, bad new_wc. 001101 aa 2 00021 5521 60 1143 stbq bp|apte.wct_index,60 OK- set new value. 001102 4a 4 00144 4501 20 1144 stz pds$arg_4 Clear code now. 1145 001103 aa 2 00000 2341 00 1146 szn bp|apte.thread Threaded in some queue? 001104 0a 001115 6000 00 1147 tze swc_ret No. All done. 001105 aa 2 00001 2351 00 1148 lda bp|apte.flags Yes. 001106 aa 004000 3150 03 1149 cana apte.eligible,du In the eligible queue? 001107 0a 001126 6010 00 1150 tnz swc_elig Yes. Don't mess around. 001110 0a 000770 7070 00 1151 tsx7 unthread Not eligible, remove from curr rdyq. 001111 aa 2 00005 2351 00 1152 lda bp|apte.ts If ts is non-zero then sort in before 001112 aa 6 00204 7551 00 1153 sta before but if ts is zero, sort in after. 001113 aa 2 00006 2351 00 1154 lda bp|apte.ti Prepare to jump into sort subr 001114 0a 002554 7070 00 1155 tsx7 sort_in_again which requires ti in the A. 001115 1156 swc_ret: 001115 0a 001354 7060 00 1157 tsx6 UNLOCK_bp set_wc unlocks APTE 001116 1158 swc_ret_nul: 001116 0a 001324 7060 00 1159 tsx6 UNLOCK set_wc unlocks 001117 4a 4 00144 7221 20 1160 lxl2 pds$arg_4 Get pseudo errcode 001120 0a 001437 7070 00 1161 tsx7 switch_back_ret 001121 4a 4 00072 2351 20 1162 lda pds$arg_3 Return output args to caller. 001122 aa 0 00006 7551 20 1163 sta ap|6,* 001123 0a 001132 7160 12 1164 xec swc_code_table,2 Load A with real errcode 001124 aa 0 00010 7551 20 1165 sta ap|8,* 1166 001125 aa 7 00044 7101 20 1167 short_return 1168 001126 1169 swc_elig: 001126 aa 000001 3350 07 1170 lca 1,dl 001127 aa 3 00027 0551 11 1171 asa bb|wcte.nel,1 Reduce former wc 001130 aa 3 00027 0541 02 1172 aos bb|wcte.nel,qu Increm new 001131 0a 001115 7100 00 1173 tra swc_ret 1174 " 1175 "Table to map err = 0|1|2 to real (but unwired) error_code 001132 1176 swc_code_table: 001132 aa 000000 6350 00 1177 eaa 0 No error 001133 4a 4 00146 2351 20 1178 lda error_table_$bad_processid 001134 4a 4 00150 2351 20 1179 lda error_table_$bad_work_class 1180 1181 1182 1183 " 1184 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1185 " 1186 " GUARANTEED_ELIGIBILITY_ON - this primitive guarantees that this 1187 " process has at least a certain minimum amount of time left in its 1188 " eligibility quantum. The primitive does not return until the process will 1189 " retain eligibility for the specified minimum time. Also if the process 1190 " loses its eligibility it is given a higher priority scheduling quaranteeing 1191 " the process some fixed percentage of an eligibility slot. The high priority 1192 " scheduling is in effect until turned off. 1193 " 1194 " GUARANTEED_ELIGIBILITY_OFF - this primitive turns off the high 1195 " priority scheduling granted by guarranteed_eligibility_on. 1196 " 1197 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1198 001135 1199 guaranteed_eligibility_on: 001135 4a 4 00152 3521 20 1200 eppbp pds$apt_ptr,* set bp-> own apte 001136 aa 400000 2350 07 1201 lda apte.prior_sched,dl Turn on high priority mode 001137 aa 2 00021 2551 00 1202 orsa bp|apte.flags2 001140 aa 000004 2350 03 1203 lda 4,du Boost time slice 001141 aa 2 00033 0551 00 1204 asa bp|apte.temax 001142 aa 7 00044 7101 20 1205 short_return 1206 001143 1207 guaranteed_eligibility_off: 001143 4a 4 00152 3521 20 1208 eppbp pds$apt_ptr,* set bp-> own apte 001144 aa 400001 3350 07 1209 lca apte.prior_sched+1,dl turn off priority scheduling 001145 aa 2 00021 3551 00 1210 ansa bp|apte.flags2 .. 001146 aa 2 00033 2351 00 1211 lda bp|apte.temax Reduce time slice if need be 001147 0a 001154 6040 00 1212 tmi ge_off_ret 001150 aa 000004 1750 03 1213 sba 4,du 001151 0a 001153 6050 00 1214 tpl *+2 Leave positive, tho .. 001152 aa 001750 2350 07 1215 lda 1000,dl 001153 aa 2 00033 7551 00 1216 sta bp|apte.temax 001154 1217 ge_off_ret: 001154 aa 7 00044 7101 20 1218 short_return 1219 " 1220 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1221 " 1222 " RELINQUISH_PRIORITY 1223 " 1224 " This primitive lowers the traffic control priority of the 1225 " invoking process by moving it to the tail of the eligible queue. 1226 " This is intended for long-running ring-0 functions which operate 1227 " as background (e.g., the scavenger). A long-running ring-0 1228 " function migrates to the head of the eligible queue and thereby 1229 " gains a high priority. 1230 " 1231 " call pxss$relinquish_priority 1232 " 1233 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1234 001155 1235 relinquish_priority: 001155 0a 001403 6710 00 1236 tsplb setup_mask " Switch stacks and mask 001156 0a 001302 7060 00 1237 tsx6 WRITE_LOCK " We rethread 001157 0a 001351 7060 00 1238 tsx6 LOCK_bp " And change state 1239 001160 0a 000770 7070 00 1240 tsx7 unthread " Remove from eligible queue 001161 aa 000002 2200 03 1241 ldx0 ready,du 001162 0a 000753 7070 00 1242 tsx7 update_execution_state " Change state from running 001163 aa 3 00352 6211 00 1243 eax1 bb|eligible_q_tail " Thread to end of eligible queue 001164 0a 002620 7070 00 1244 tsx7 thread_him_in 1245 001165 0a 001354 7060 00 1246 tsx6 UNLOCK_bp 001166 0a 001324 7060 00 1247 tsx6 UNLOCK 001167 aa 3 00476 0541 00 1248 aos bb|relinquishes " Meter 001170 0a 003241 7070 00 1249 tsx7 getwork 001171 0a 001434 7100 00 1250 tra switch_back_pds 1251 1252 " 1253 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1254 " 1255 " SET_TIMER -- entry to set the per-process cpu timer. 1256 " Call is: 1257 " call pxss$set_timer(delta_t, ev_channel) 1258 " 1259 " dcl delta_t fixed bin (35), /* time to be added to current time. 1260 " ev_channel fixed bin (71) 1261 " 1262 " If ev_channel is zero an IPS signal will be sent rather than 1263 " a wakeup. 1264 " Nothing need be locked for setting timer, provided the 1265 " time_out cell is cleared while operating. This is so getwork 1266 " will ignore the timer channel if we happen through getwork. 1267 " 1268 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1269 001172 1270 set_timer: 001172 4a 4 00152 3521 20 1271 eppbp pds$apt_ptr,* Get ptr to own apte 001173 aa 000000 4310 07 1272 fld 0,dl Put zero in AQ 001174 4a 4 00154 7571 20 1273 staq pds$timer_time_out Cancel any timer 001175 aa 0 00004 2371 20 1274 ldaq ap|4,* Now safe to set channel 001176 4a 4 00156 7571 20 1275 staq pds$timer_channel 1276 001177 aa 000000 4310 07 1277 fld 0,dl Want two words but given one 001200 aa 0 00002 2361 20 1278 ldq ap|2,* Pick up delta_t 001201 0a 001216 6044 00 1279 tmoz zero_chan if delta_t <= 0 then reset 001202 0a 001221 7100 00 1280 tra rel_time else set relative timer 1281 001203 1282 set_cpu_timer: 001203 4a 4 00152 3521 20 1283 eppbp pds$apt_ptr,* Get ptr to own apte 001204 aa 000000 4310 07 1284 fld 0,dl Cancel any timer 001205 4a 4 00154 7571 20 1285 staq pds$timer_time_out Now if we getwork we will not have timer go off 001206 aa 0 00006 2371 20 1286 ldaq ap|6,* safe to set channel now 001207 4a 4 00156 7571 20 1287 staq pds$timer_channel 1288 001210 aa 0 00002 2371 20 1289 ldaq ap|2,* Put time arg in AQ 1290 001211 aa 0 00004 7201 20 1291 lxl0 ap|4,* pick up timesw arg 001212 aa 000002 1000 03 1292 cmpx0 2,du Absolute timer? 001213 0a 001222 6000 00 1293 tze abs_time If so go do it 001214 aa 000001 1000 03 1294 cmpx0 1,du Relative timer? 001215 0a 001221 6000 00 1295 tze rel_time If so then relative 1296 001216 1297 zero_chan: 001216 aa 000000 4310 07 1298 fld 0,dl resetting--timeout already zero 001217 4a 4 00156 7571 20 1299 staq pds$timer_channel 001220 aa 7 00044 7101 20 1300 short_return 1301 001221 aa 2 00046 0771 00 1302 rel_time: adaq bp|apte.virtual_cpu_time 001222 4a 4 00154 7571 20 1303 abs_time: staq pds$timer_time_out Now safe to set timeout 001223 aa 7 00044 7101 20 1304 short_return 1305 " 1306 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1307 " 1308 " PXSS$LOCK_APT PXSS$UNLOCK_APT 1309 " 1310 " Externally available entries to manipulate 1311 " apt lock. Caller must be wired and masked. 1312 " 1313 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1314 001224 aa 000300 6270 00 1315 lock_apt: push 001225 aa 7 00040 2721 20 001226 0a 001302 7060 00 1316 tsx6 WRITE_LOCK Give caller protection. 001227 aa 7 00042 7101 20 1317 return 1318 1319 001230 1320 unlock_apt: 001230 aa 000300 6270 00 1321 push 001231 aa 7 00040 2721 20 001232 0a 001324 7060 00 1322 tsx6 UNLOCK 001233 aa 7 00042 7101 20 1323 return 1324 1325 " 1326 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1327 " 1328 " PXSS$LOCK_APTE 1329 " 1330 " Externally available routine to lock an APTE 1331 " 1332 " call pxss$lock_apte (processid, aptep, code) 1333 " 1334 " processid is Input 1335 " aptep is set on return (null if APTE) not locked 1336 " code = 0 => APTE locked 1337 " ^=0 => processid invalid 1338 " 1339 " Caller must be wired and masked and real careful 1340 " 1341 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1342 001234 1343 lock_apte: 001234 aa 000300 6270 00 1344 push 001235 aa 7 00040 2721 20 001236 4a 4 00106 3535 20 1345 eppbb tc_data$ 001237 aa 0 00002 2351 20 1346 lda ap|2,* processid 001240 4a 4 00066 7551 20 1347 sta pds$arg_1 for hash_LOCK 001241 aa 0 00006 5541 20 1348 stc1 ap|6,* non-zero return code 001242 0a 004502 7070 00 1349 tsx7 hash_LOCK Try to lock APTE 001243 0a 001245 0000 00 1350 arg lock_apte_null Fail 001244 aa 0 00006 4501 20 1351 stz ap|6,* Succeed - zero return code 001245 1352 lock_apte_null: 001245 aa 0 00004 2521 20 1353 spribp ap|4,* aptep 001246 aa 7 00042 7101 20 1354 return 1355 1356 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1357 " 1358 " PXSS$UNLOCK_APTE 1359 " 1360 " Externally available entry to unlock an APTE 1361 " 1362 " call pxss$unlock_apte (aptep) 1363 " 1364 " aptep is a pointer to the APTE to unlock 1365 " caller should still be masked and wired 1366 " 1367 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1368 001247 1369 unlock_apte: 001247 aa 000300 6270 00 1370 push 001250 aa 7 00040 2721 20 001251 aa 0 00002 3521 20 1371 eppbp ap|2,* ptr to aptep 001252 aa 2 00000 3521 20 1372 eppbp bp|0,* aptep 001253 aa 2 00000 3531 00 1373 epbpbb bp|0 tc_data 001254 0a 001354 7060 00 1374 tsx6 UNLOCK_bp Unlock APTE 001255 aa 7 00042 7101 20 1375 return 1376 " 1377 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1378 " 1379 " Subroutines to lock and unlock the APT 1380 " Meaning of lock values is 1381 " +N APT is locked for single writer with caller||cpu_tag 1382 " 0 lock is busy/hidden/out_to_lunch 1383 " -1 APT is unlocked 1384 " -(N+1) APT is locked for N readers 1385 " 1386 " Note that the lock value is claimed by a 1387 " primitive LDAC and restored by a primitive STA. 1388 " Note that lock_loops take special care not to 1389 " keep lock in busy state (~anti-hog hardware) 1390 " 1391 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1392 001256 1393 READ_LOCK: 1394 read_clock " setup for metering looplocks 001256 4a 4 00104 6331 20 rccl sys_info$clock_,* 001257 aa 6 00134 7571 00 1395 staq temp 001260 aa 000000 6250 00 1396 eax5 0 but assume no need to meter looplocks 001261 1397 read_: 001261 4a 4 00142 0341 20 1398 ldac tc_data$apt_lock 001262 0a 001275 6054 00 1399 tpnz r_put was write locked 001263 0a 001261 6000 00 1400 tze read_ was busy try again 001264 aa 000001 1750 07 1401 sba 1,dl was unlocked or read locked 001265 4a 4 00142 7551 20 1402 sta tc_data$apt_lock one more reader 001266 aa 000000 6250 15 1403 rw_ret: eax5 0,5 See if looplock metering needed 001267 aa 000000 6000 16 1404 tze 0,6 1405 read_clock 001270 4a 4 00104 6331 20 rccl sys_info$clock_,* 001271 aa 6 00134 1771 00 1406 sbaq temp 001272 4a 4 00160 0561 20 1407 asq tc_data$loop_lock_time 001273 4a 4 00162 0541 20 1408 aos tc_data$loop_locks 001274 aa 000000 7100 16 1409 tra 0,6 1410 001275 4a 4 00142 7551 20 1411 r_put: sta tc_data$apt_lock restor locks state 001276 4a 4 00142 2341 20 1412 r_wait: szn tc_data$apt_lock loop till unlocked or readlocked 001277 0a 001261 6040 00 1413 tmi read_ was unlocked or read locked 001300 aa 000001 6250 00 1414 eax5 1 force looplock metering 001301 0a 001276 7100 00 1415 tra r_wait was busy or write locked 1416 1417 001302 1418 WRITE_LOCK: 1419 read_clock 001302 4a 4 00104 6331 20 rccl sys_info$clock_,* 001303 aa 6 00134 7571 00 1420 staq temp 001304 aa 000000 6250 00 1421 eax5 0 001305 1422 write_: 001305 4a 4 00142 0341 20 1423 ldac tc_data$apt_lock 001306 0a 001346 1150 00 1424 cmpa unlocked_APT 001307 0a 001314 6010 00 1425 tnz w_fail busy or lockd for read or write 001310 aa 000000 6350 16 1426 eaa 0,6 lock with caller||cpunum 001311 4a 4 00124 0751 20 1427 ada prds$processor_tag 001312 4a 4 00142 7551 20 1428 sta tc_data$apt_lock 001313 0a 001266 7100 00 1429 tra rw_ret join looplock meter code 001314 aa 000000 1150 07 1430 w_fail: cmpa 0,dl if was not busy 001315 0a 001317 6000 00 1431 tze w_wait 001316 4a 4 00142 7551 20 1432 sta tc_data$apt_lock then restor lock value 001317 0a 001346 2350 00 1433 w_wait: lda unlocked_APT loop till unlocked 001320 4a 4 00142 1151 20 1434 cmpa tc_data$apt_lock 001321 0a 001305 6000 00 1435 tze write_ 001322 aa 000001 6250 00 1436 eax5 1 force looplock metering/ 001323 0a 001317 7100 00 1437 tra w_wait 1438 1439 001324 4a 4 00142 0341 20 1440 UNLOCK: ldac tc_data$apt_lock 001325 0a 001331 6040 00 1441 tmi unread 001326 0a 001324 6000 00 1442 tze UNLOCK busy so retry 001327 0a 001346 2350 00 1443 lda unlocked_APT was write locked so now unlock 001330 0a 001333 7100 00 1444 tra unlock_ 001331 aa 000001 0750 07 1445 unread: ada 1,dl one less reader 1446 drlze (pxss: unlock apt read lock bad count) DEBUG somebody lostcount 001332 0a 005421 6000 00 .._00015.tst: tze .._00015.drl 001333 4a 4 00142 7551 20 1447 unlock_: sta tc_data$apt_lock 001334 aa 000000 7100 16 1448 tra 0,6 1449 1450 001335 1451 WRITE_TO_READ: 001335 4a 4 00142 0341 20 1452 ldac tc_data$apt_lock 001336 0a 001341 6054 00 1453 tpnz w_to_r got lock 001337 0a 001335 6000 00 1454 tze WRITE_TO_READ 1455 drltra (pxss: write_to_read bad lock count) somebody lost count 001340 0a 005422 7100 00 .._00016.tst: tra .._00016.drl 001341 1456 w_to_r: 001341 4a 4 00142 1151 20 1457 cmpa tc_data$apt_lock DEBUG 1458 drlze (pxss: write_to_read ldac failed) DEBUG ldac must have failed to clear 001342 0a 005423 6000 00 .._00017.tst: tze .._00017.drl 001343 aa 000002 3350 07 1459 lca 2,dl set lock value to one reader 001344 4a 4 00142 7551 20 1460 sta tc_data$apt_lock 001345 aa 000000 7100 16 1461 tra 0,6 1462 001346 1463 unlocked_APT: 001346 aa 777777 777777 1464 dec -1 1465 1466 " 1467 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1468 " 1469 " APTE LOCKING PROCEDURES 1470 " apte is locked if apte.lock = 0 1471 " apte is unlocked if apte.lock ^= 0 1472 " Note that address of caller of unlock is saved in apte.lock 1473 " 1474 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1475 001347 1476 LOCK_me_bp: 001347 4a 4 00152 3521 20 1477 eppbp pds$apt_ptr,* get ptr to own apte 001350 aa 2 00000 3531 00 1478 epbpbb bp|0 get ptr to base of tcdata 001351 1479 LOCK_bp: 001351 aa 2 00036 2141 00 1480 sznc bp|apte.lock 001352 aa 000000 6010 16 1481 tnz 0,6 001353 0a 001351 7100 00 1482 tra LOCK_bp 1483 001354 1484 UNLOCK_bp: 001354 aa 2 00036 2341 00 1485 szn bp|apte.lock DEBUG 1486 drlnz (pxss: UNLOCK_bp not locked) DEBUG 001355 0a 005424 6010 00 .._00020.tst: tnz .._00020.drl 001356 aa 2 00036 7461 00 1487 stx6 bp|apte.lock Remember last unlocker 001357 aa 000000 7100 16 1488 tra 0,6 1489 001360 1490 LOCK_x2: 001360 aa 3 00036 2141 12 1491 sznc bb|apte.lock,2 001361 aa 000000 6010 16 1492 tnz 0,6 001362 0a 001360 7100 00 1493 tra LOCK_x2 1494 001363 1495 UNLOCK_x2: 001363 aa 3 00036 2341 12 1496 szn bb|apte.lock,2 DEBUG 1497 drlnz (pxss: UNLOCK_X2 not locked) DEBUG 001364 0a 005425 6010 00 .._00021.tst: tnz .._00021.drl 001365 aa 3 00036 7461 12 1498 stx6 bb|apte.lock,2 Remember last unlocker 001366 aa 000000 7100 16 1499 tra 0,6 1500 001367 1501 LOCK_x3: 001367 aa 3 00036 2141 13 1502 sznc bb|apte.lock,3 001370 aa 000000 6010 16 1503 tnz 0,6 001371 0a 001367 7100 00 1504 tra LOCK_x3 1505 001372 1506 UNLOCK_x3: 001372 aa 3 00036 2341 13 1507 szn bb|apte.lock,3 DEBUG 1508 drlnz (pxss: UNLOCK_x3 not locked) DEBUG 001373 0a 005426 6010 00 .._00022.tst: tnz .._00022.drl 001374 aa 3 00036 7461 13 1509 stx6 bb|apte.lock,3 Remember last unlocker 001375 aa 000000 7100 16 1510 tra 0,6 1511 1512 " 1513 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1514 " 1515 " stack switching subroutines 1516 " 1517 " A routine which holds the global traffic control lock or an 1518 " APTE lock cannot be interrupted in a way which would cause 1519 " reinvocation of pxss. For this reason, pxss must run on the 1520 " PRDS. However, most of its entries may be called from an 1521 " unwired environment. To accomplish this, arguments to pxss 1522 " are copied into wired storage in the PDS prior to any stack 1523 " switching. This copying may result in loss of control of 1524 " a CPU and reinvocation of pxss (e.g., because of a page 1525 " fault), and overwriting of the PDS cells used for argument 1526 " storage. To avoid this interference, all entries of pxss 1527 " which can be called from an unwired environment adhere to 1528 " following protocol: 1529 " 1530 " tsx6 setup_ 1531 " 1532 " (Copy arguments to PDS and set any flags used as temporaries 1533 " in the PDS - x6 and pr0 must be preserved in this code) 1534 " 1535 " tsplb setup_check 1536 " arg 0,6 1537 " (Next Instruction) 1538 " 1539 " On return to (Next Instruction), we are running on the PRDS 1540 " with interrupts masked, and the values of all temporaries in 1541 " the PDS are guaranteed to be those set between the call to 1542 " setup_ and the call to setup_check. These values are 1543 " guaranteed to be safe until either getwork is called or one of 1544 " the routines to switch stacks back is called. 1545 " 1546 " Routines which can be called only from a wired environment 1547 " must set the cell pds$pxss_args_invalid to non-zero if they 1548 " use ANY temporaries in the PDS. 1549 " 1550 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1551 " 1552 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1553 " 1554 " setup_ 1555 " 1556 " subroutine to mark begin of argument copy to PDS 1557 " 1558 " tsx6 setup_ 1559 " 1560 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1561 001376 4a 4 00164 4501 20 1562 setup_: stz pds$pxss_args_invalid clear interference flag 001377 aa 000000 7100 16 1563 tra 0,6 return to next instruction 1564 1565 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1566 " 1567 " setup_check 1568 " 1569 " subroutine to check for successful copy of temporaries 1570 " 1571 " tsplb setup_check 1572 " arg 1573 " 1574 " 1575 " On successful return, bp -> apte for this process 1576 " bb -> base of tc_data 1577 " ap has been saved in pds$tc_argp 1578 " 1579 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1580 001400 1581 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+><+><+><+><+><+> 001400 1582 setup_check: 001400 4a 4 00164 2143 20 1583 sznc pds$pxss_args_invalid Did we get overwritten? 001401 aa 5 00000 6013 20 1584 tnz lb|0,* Cause err exit, get args copied again. 001402 aa 5 00001 3717 00 1585 epplb lb|1 Fix return address. 1586 1587 " Fall through to setup_mask 1588 1589 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1590 " 1591 " setup_mask 1592 " 1593 " mask to sys_level, save current mask in pds$tc_mask (unless on PRDS) and 1594 " switch stacks to PRDS (by invoking setup) 1595 " 1596 " tsplb setup_mask 1597 " 1598 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1599 001403 1600 setup_mask: 001403 4a 4 00166 2503 20 1601 spriap pds$tc_argp 001404 aa 6 00000 3517 00 1602 eppab sp|0 001405 4a 4 00010 2203 00 1603 ldx0 lp|prds_link are we on the PRDS 001406 aa 7 00022 1003 00 1604 cmpx0 sb|stack_header.stack_begin_ptr 001407 0a 001425 6002 00 1605 tze easy yes - already masked - fall thru 001410 4a 4 00124 7213 20 1606 lxl1 prds$processor_tag 001411 4a 4 00126 7613 20 1607 lprpab scs$mask_ptr,1 get set for masking 001412 4a 4 00170 7163 20 1608 xec scs$read_mask,1 001413 4a 4 00120 7573 20 1609 staq pds$tc_mask THIS MUST BE WIRED! 001414 4a 4 00172 2373 20 1610 ldaq scs$sys_level 001415 4a 4 00130 7163 20 1611 xec scs$set_mask,1 1612 1613 " Fall through to setup 1614 " 1615 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1616 " 1617 " setup 1618 " 1619 " switch stacks to PRDS. If stacks are indeed 1620 " switched (not running on PRDS already), the current stack 1621 " pointer is saved in pds$last_sp 1622 " 1623 " setup is intended to be called directly only by page control 1624 " "side doors", where it is known that we are running on 1625 " the PRDS. These "side doors" must not call any switch_back_xxx 1626 " routines, as this would re-load an interrupt mask saved elsewhere. 1627 " 1628 " tsplb setup 1629 " 1630 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1631 001416 1632 setup: 001416 aa 6 00000 3517 00 1633 eppab sp|0 save stack pointer 001417 4a 4 00010 2203 00 1634 ldx0 lp|prds_link are we on prds ? 001420 aa 7 00022 1003 00 1635 cmpx0 sb|stack_header.stack_begin_ptr 001421 0a 001425 6002 00 1636 tze easy yes, easy save 1637 001422 4a 4 00174 6523 20 1638 sprisp pds$last_sp save pointer to previous stack frame 001423 4a 4 00176 3723 20 1639 eppsp prds$+stack_header.stack_begin_ptr,* get ptr to new frame 001424 aa 6 00000 3733 00 1640 epbpsb sp|0 get stack base ptr 001425 aa 000300 6272 00 1641 easy: push 001426 aa 7 00040 2723 20 001427 aa 6 00020 2517 00 1642 spriab sp|stack_frame.prev_sp save prev sp 001430 4a 4 00152 3523 20 1643 eppbp pds$apt_ptr,* get own apt pointer 001431 aa 2 00000 3533 00 1644 epbpbb bp|0 set bb to point at base of tc_data 001432 0a 001463 7062 00 1645 tsx6 init_pxss_save_stack 001433 aa 5 00000 7103 00 1646 tra lb|0 return 1647 1648 " 1649 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1650 " 1651 " routines to switch back to calling environment 1652 " 1653 " These routines all restore the interrupt mask to the value 1654 " saved in pds$tc_mask and the value of ap to the value 1655 " saved in pds$tc_argp 1656 " 1657 " tsx7 switch_back_xxx 1658 " (Next Instruction) 1659 " 1660 " switch_back_pds - return to caller of pxss on unwired stack 1661 " 1662 " switch_back - pop a stack frame, switching stacks if necessary, 1663 " return to caller of pxss 1664 " 1665 " switch_back_ret - pop a stack frame, switching stacks if necessary, 1666 " return to (Next Instruction) 1667 " 1668 " switch_back_ret_pds - switch to unwired stack, return to 1669 " (Next Instruction) 1670 " 1671 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1672 001434 1673 switch_back_pds: "return uncond. to pds history 001434 aa 000000 6272 00 1674 eax7 0 001435 0a 001444 7102 00 1675 tra restore_sp 1676 001436 1677 switch_back: 001436 aa 000000 6272 00 1678 eax7 0 flag to distinguish from switch_back_ret 001437 1679 switch_back_ret: 001437 4a 4 00010 2203 00 1680 ldx0 lp|prds_link do we have to switch stacks 001440 aa 6 00020 1003 00 1681 cmpx0 sp|stack_frame.prev_sp .. 001441 0a 001444 6012 00 1682 tnz restore_sp yes, skip simple switch 001442 aa 6 00020 3723 20 1683 eppsp sp|stack_frame.prev_sp,* go back one frame 001443 0a 001456 7102 00 1684 tra no_change_mask and keep masked 001444 1685 restore_sp: 001444 1686 switch_back_ret_pds: 001444 4a 4 00200 3723 20 1687 eppsp pds$last_sp,* switch to other stack 001445 4a 4 00114 2373 20 1688 ldaq prds$+stack_header.stack_begin_ptr restore stack end ptr 001446 4a 4 00116 7573 20 1689 staq prds$+stack_header.stack_end_ptr .. 1690 001447 aa 6 00000 3733 00 1691 epbpsb sp|0 001450 4a 4 00120 2373 20 1692 ldaq pds$tc_mask restore previous mask 001451 0a 000000 2772 00 1693 oraq channel_mask_set 001452 4a 4 00122 3773 20 1694 anaq scs$open_level 001453 4a 4 00124 7213 20 1695 lxl1 prds$processor_tag 001454 4a 4 00126 7613 20 1696 lprpab scs$mask_ptr,1 get set for masking 001455 4a 4 00130 7163 20 1697 xec scs$set_mask,1 001456 1698 no_change_mask: 001456 4a 4 00164 5543 20 1699 stc1 pds$pxss_args_invalid Signal possible mutual interference. 001457 aa 000000 6272 17 1700 eax7 0,7 check who made call 001460 0a 002076 6002 00 1701 tze short_ret 001461 4a 4 00202 3503 20 1702 eppap pds$tc_argp,* Get pxss arg list 001462 aa 000000 7102 17 1703 tra 0,7 1704 001463 1705 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-> 1706 001463 1707 init_pxss_save_stack: 001463 aa 6 00210 6351 00 1708 eaa pxss_save_stack get address of save stack base 001464 aa 000600 2750 07 1709 ora pxss_stack_size*64,dl set up a tally word for storing into pxss_save_stack 001465 aa 6 00216 7551 00 1710 sta pxss_stackp stash this away 001466 aa 000000 7100 16 1711 tra 0,6 return to caller 1712 1713 001467 1714 subroutine_save: 001467 aa 6 00216 7471 56 1715 stx7 pxss_stackp,id store x7 in save stack using tally word 001470 aa 000000 6070 16 1716 ttf 0,6 return to the caller if tally not runout 1717 drltra (pxss: subroutine_save stack overflow) die - we have run off the save stack 001471 0a 005427 7100 00 .._00023.tst: tra .._00023.drl 1718 001472 1719 subroutine_unsave: 001472 aa 6 00216 2271 54 1720 ldx7 pxss_stackp,di pop value of x7 (also updating tally word properly) 001473 aa 000000 7100 17 1721 tra 0,7 1722 001474 1723 send_connect: 001474 aa 2 00001 2361 00 1724 ldq bp|apte.flags see if processor to be stopped is running 001475 aa 000020 3160 03 1725 canq apte.dbr_loaded,du by checking the dbr-loaded flag 001476 aa 000000 6000 17 1726 tze 0,7 not running, return 1727 001477 aa 2 00000 6201 00 1728 eax0 bp|0 APTE offset in X0 001500 4a 4 00204 1001 20 1729 cmpx0 pds$apt_ptr+1 is this process target of connect? 001501 0a 001506 6000 00 1730 tze delay_connect if so, just set ring alarm for now 1731 001502 aa 2 00021 2361 00 1732 ldq bp|apte.flags2 is running- must send cpu stop connect 001503 aa 000007 3760 07 1733 anq apte.pr_tag_mask,dl leave only processor tag 001504 4a 4 00206 0151 20 1734 cioc scs$cow_ptrs,ql* zap the processor 001505 aa 000000 7100 17 1735 tra 0,7 return to caller 1736 001506 1737 delay_connect: 001506 aa 000001 2350 07 1738 lda 1,dl set ring alarm register 001507 4a 4 00210 7551 20 1739 sta pds$alarm_ring .. 001510 4a 4 00210 7745 20 1740 lra pds$alarm_ring .. 001511 aa 000000 7100 17 1741 tra 0,7 and return to caller 1742 1743 " 1744 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1745 " 1746 " MAKE_ITT_MESSAGE 1747 " 1748 " subroutine to make a wakeup-associated message, 1749 " allocate an entry for it in the ITT, and add this entry 1750 " to the tail of this process' event queue in the APT. 1751 " 1752 " Caller must set pds$wakeup_flag to control whether non-unique 1753 " messages will be sent. 1754 " 1755 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1756 001512 1757 make_itt_message: 1758 " bp points to process' APT entry and must not be changed 1759 040000 1760 bool event_channel_type_mask,040000 1761 001512 aa 2 00036 2341 00 1762 szn bp|apte.lock ASSUME bp locked 1763 drlnz (pxss: APTE not locked) ASSUME bp locked 001513 0a 005430 6010 00 .._00024.tst: tnz .._00024.drl 001514 aa 6 00201 4501 00 1764 stz errcode we have run into no problem yet 1765 001515 aa 6 00145 2351 00 1766 lda tmp_ev_channel+1 check for special channel 001516 aa 040000 3750 03 1767 ana event_channel_type_mask,du mask everything but type 001517 0a 001526 6010 00 1768 tnz mimj2 if not, continue 1769 001520 aa 6 00145 7201 00 1770 lxl0 tmp_ev_channel+1 get special channel index 001521 aa 400000 2350 03 1771 lda =o400000,du get wakeup bit 001522 aa 000022 7710 10 1772 arl apte.chans_offset-1,0 move to correct cell 001523 aa 374000 3750 07 1773 ana apte.special_chans,dl change only special channels 001524 aa 2 00021 2551 00 1774 orsa bp|apte.flags2 put in APT 001525 aa 000000 7100 17 1775 tra 0,x7 " return 1776 001526 1777 mimj2: 001526 aa 3 00321 0341 00 1778 ldac bb|itt_free_list Grab head 001527 0a 001700 6040 00 1779 tmi itt_overflows there are no more entries available 001530 0a 001526 6000 00 1780 tze *-2 1781 001531 aa 000000 6210 01 1782 eax1 0,au move head to X1 1783 " XR0 contains forward thread 001532 aa 3 00000 2201 11 1784 ldx0 bb|itt_entry.next_itt_relp,1 001533 aa 3 00321 7401 00 1785 stx0 bb|itt_free_list restor free-list-head 1786 001534 aa 3 00322 0541 00 1787 aos bb|used_itt count ITT entry usage 001535 aa 6 00202 2351 00 1788 lda tmp_ring get caller's validation ring 001536 aa 3 00002 7551 11 1789 sta bb|itt_entry.origin,1 put ring number in ITT message 001537 4a 4 00212 2351 20 1790 lda pds$processid get this process (sender's) ID 001540 aa 3 00001 7551 11 1791 sta bb|itt_entry.sender,1 put sender ID in ITT message 001541 aa 000000 6230 01 1792 eax3 0,au X3 -> sender 001542 aa 6 00203 7201 00 1793 lxl0 dev_signal get origin flag(1=dev-signal) 001543 0a 001545 6010 00 1794 tnz *+2 if not dev_signal 001544 aa 3 00050 0541 13 1795 aos bb|apte.ittes_sent,3 charge sender 001545 aa 3 00002 7401 11 1796 stx0 bb|itt_entry.origin,1 store in origin LHE 001546 aa 2 00051 0541 00 1797 aos bp|apte.ittes_got charge rcvr 001547 4a 4 00066 2351 20 1798 lda pds$arg_1 get processid of target 001550 aa 3 00003 7551 11 1799 sta bb|itt_entry.target_id,1 store target process' ID in ITT message 001551 aa 6 00146 2371 00 1800 ldaq tmp_ev_message get event message 001552 aa 3 00006 7571 11 1801 staq bb|itt_entry.message,1 put event message in ITT entry 001553 aa 6 00144 2371 00 1802 ldaq tmp_ev_channel get target event channel's name 001554 aa 3 00004 7571 11 1803 staq bb|itt_entry.channel_id,1 put channel name in ITT message, and AQ-reg 1804 " zero thread this entry will be the last 001555 aa 3 00000 4501 11 1805 stz bb|itt_entry.next_itt_relp,1 1806 1807 " 1808 "Check situation and counts to see if we allow usage of itte. 001556 aa 6 00174 4501 00 1809 stz count if count is zero there is no per channel limit 001557 aa 000000 6250 00 1810 eax5 0 001560 aa 3 00322 2351 00 1811 lda bb|used_itt if U < C/4 then no checks 001561 aa 3 00005 1151 00 1812 cmpa bb|cid4 001562 0a 001614 6040 00 1813 tmi mim_check_done 001563 aa 3 00323 2351 00 1814 lda bb|initializer_id load A-reg for mi_iz_xxx 001564 aa 3 00002 2201 11 1815 ldx0 bb|itt_entry.origin,1 dev_signals are different 001565 0a 001607 6010 00 1816 tnz mim_check_ds nz means dev_signal 1817 "Checks for non-dev_signal 001566 aa 3 00003 2361 00 1818 ldq bb|cid2 001567 0a 001702 7060 00 1819 tsx6 mm_iz_either D = C/2 or 0 001570 aa 3 00004 0761 00 1820 adq bb|cid3 001571 aa 3 00050 1161 13 1821 cmpq bb|apte.ittes_sent,3 001572 0a 001661 6040 00 1822 tmi unmake_message if sent > D + C/3 then REJECT 001573 aa 2 00051 1161 00 1823 cmpq bp|apte.ittes_got 001574 0a 001661 6040 00 1824 tmi unmake_message if got > D + C/3 then REJECT 1825 001575 aa 3 00004 1761 00 1826 sbq bb|cid3 001576 aa 3 00003 0761 00 1827 adq bb|cid2 001577 aa 3 00050 1761 13 1828 sbq bb|apte.ittes_sent,3 001600 aa 2 00051 1761 00 1829 sbq bp|apte.ittes_got 001601 0a 001661 6040 00 1830 tmi unmake_message if sent+got > D + C/2 then REJECT 1831 001602 aa 3 00317 2361 00 1832 ldq bb|itt_size 001603 aa 3 00322 1761 00 1833 sbq bb|used_itt 001604 aa 3 00313 1761 00 1834 sbq bb|apt_size 001605 0a 001661 6040 00 1835 tmi unmake_message if U > C then REJECT 001606 0a 001614 7100 00 1836 tra mim_check_done 1837 1838 "Checks for dev_signals 001607 1839 mim_check_ds: 001607 aa 3 00005 2361 00 1840 ldq bb|cid4 001610 aa 2 00051 1161 00 1841 cmpq bp|apte.ittes_got if got < C/4 then OK 001611 0a 001614 6050 00 1842 tpl mim_check_done 001612 aa 000022 7360 00 1843 qls 18 else chan_limit = C/4 001613 aa 6 00174 7561 00 1844 stq count 001614 1845 mim_check_done: 1846 " append this message to the tail of the process' event queue 001614 aa 2 00010 2201 00 1847 ldx0 bp|apte.ipc_pointers get head of process' event message queue 001615 0a 001621 6010 00 1848 tnz find_queue_end go follow queue to end 001616 aa 000000 6200 11 1849 eax0 0,1 load XR0 from XRR1 001617 aa 2 00010 7401 00 1850 stx0 bp|apte.ipc_pointers this entry is first in q 001620 aa 000000 7100 17 1851 tra 0,7 end of event message production 001621 1852 find_queue_end: 001621 aa 6 00144 2371 00 1853 ldaq tmp_ev_channel event channel for compare 001622 4a 4 00064 2341 20 1854 szn pds$wakeup_flag should we insure uniqueness? 001623 0a 001632 6000 00 1855 tze mumloop yes - go to that loop 001624 aa 6 00174 2341 00 1856 szn count must we count wkups on chan? 001625 0a 001632 6010 00 1857 tnz mumloop yes - go to that loop 1858 001626 1859 mimloop: 1860 " get forward thread from next entry 001626 aa 3 00000 2241 10 1861 ldx4 bb|itt_entry.next_itt_relp,0 001627 0a 001657 6000 00 1862 tze append_itt_message it is the end of the queue 001630 aa 000000 6200 14 1863 eax0 0,4 XR0 points to next entry 001631 0a 001626 7100 00 1864 tra mimloop 1865 001632 aa 3 00004 1171 10 1866 mumloop: cmpaq bb|itt_entry.channel_id,0 this chan = new? 001633 0a 001640 6000 00 1867 tze mum_ck 001634 aa 3 00000 2241 10 1868 mum_ok: ldx4 bb|itt_entry.next_itt_relp,0 001635 0a 001653 6000 00 1869 tze maybe_append_itt_message x0 -> last itte 001636 aa 000000 6200 14 1870 eax0 0,4 001637 0a 001632 7100 00 1871 tra mumloop 1872 001640 1873 mum_ck: 001640 aa 000001 6250 15 1874 eax5 1,5 Another itte for this channel 001641 4a 4 00064 2341 20 1875 szn pds$wakeup_flag 001642 0a 001634 6010 00 1876 tnz mum_ok not unique entry, just counting 001643 aa 6 00146 2371 00 1877 ldaq tmp_ev_message is msg = new? 001644 aa 3 00006 1171 10 1878 cmpaq bb|itt_entry.message,0 001645 0a 001651 6010 00 1879 tnz mum_ck_ret not same - go fix AQ then loop more 001646 aa 3 00002 2371 11 1880 ldaq bb|itt_entry.origin,1 test origin,ring,target 001647 aa 3 00002 1171 10 1881 cmpaq bb|itt_entry.origin,0 001650 0a 001661 6000 00 1882 tze unmake_message everthing same=> dont need itte 001651 1883 mum_ck_ret: 001651 aa 6 00144 2371 00 1884 ldaq tmp_ev_channel restor chan to AQ for compare 001652 0a 001634 7100 00 1885 tra mum_ok 1886 1887 001653 1888 maybe_append_itt_message: 001653 aa 6 00174 2341 00 1889 szn count 001654 0a 001657 6000 00 1890 tze append_itt_message 001655 aa 6 00174 1051 00 1891 cmpx5 count 001656 0a 001661 6054 00 1892 tpnz unmake_message too many for this chan 001657 1893 append_itt_message: 1894 " thread new entry to end of queue 001657 aa 3 00000 7411 10 1895 stx1 bb|itt_entry.next_itt_relp,0 001660 aa 000000 7100 17 1896 tra 0,7 1897 001661 1898 unmake_message: 001661 aa 000001 3350 07 1899 lca 1,dl meter ITTE non-usage 001662 aa 3 00002 2241 11 1900 ldx4 bb|itt_entry.origin,1 001663 0a 001665 6010 00 1901 tnz um_is_ds 001664 aa 3 00050 0551 13 1902 asa bb|apte.ittes_sent,3 001665 aa 2 00051 0551 00 1903 um_is_ds: asa bp|apte.ittes_got 001666 aa 3 00322 0551 00 1904 asa bb|used_itt 001667 aa 000310 2350 07 1905 lda 200,dl 001670 aa 6 00201 7551 00 1906 sta errcode 200 means wakeup not sent (itt_ovfl) 1907 001671 aa 3 00321 0341 00 1908 ldac bb|itt_free_list give back itt_entry 001672 0a 001674 6010 00 1909 tnz *+2 ok -free list locked 001673 0a 001671 7100 00 1910 tra *-2 loop on itt_free_list lock 001674 aa 000000 6200 01 1911 eax0 0,au x0 -> former top free itte 1912 " put that relp in returned itte 001675 aa 3 00000 7401 11 1913 stx0 bb|itt_entry.next_itt_relp,1 001676 aa 3 00321 7411 00 1914 stx1 bb|itt_free_list 001677 aa 000000 7100 17 1915 tra 0,7 001700 1916 itt_overflows: 1917 drltra (pxss: ITT overflows) error condition 001700 0a 005431 7100 00 .._00025.tst: tra .._00025.drl 1918 " at this point something must be done to decongest the ITT 001701 aa 000000 7100 17 1919 tra 0,7 1920 " 1921 "Subr called via x6 to set Q to zero if not Iz 1922 "Iz pid must be in A, Iz delta in Q, X3 must -> sender 001702 1923 mm_iz_either: 001702 aa 3 00003 1151 13 1924 cmpa bb|apte.processid,3 001703 aa 000000 6000 16 1925 tze 0,6 001704 1926 mm_iz_rcvr: 001704 aa 2 00003 1151 00 1927 cmpa bp|apte.processid 001705 aa 000000 6000 16 1928 tze 0,6 001706 aa 000000 6360 00 1929 eaq 0 001707 aa 000000 7100 16 1930 tra 0,6 1931 " 1932 "come here for various functions during initialization 001710 1933 pw1: 001710 4a 4 00152 3501 20 1934 eppap pds$apt_ptr,* 001711 aa 0 00020 0341 00 1935 ldac ap|apte.wait_event get wait event 001712 4a 4 00214 7551 20 1936 sta tc_data$init_event save the event 1937 001713 1938 inhibit on <+><+><+><+><+><+><+><+><+><+><+> 001713 1939 pi_wait: 001713 4a 4 00124 7213 20 1940 lxl1 prds$processor_tag get processor tag for masking 001714 4a 4 00126 7613 20 1941 lprpab scs$mask_ptr,1 001715 4a 4 00170 7163 20 1942 xec scs$read_mask,1 find current mask 001716 4a 4 00120 7573 20 1943 staq pds$tc_mask and save for return 001717 4a 4 00122 2373 20 1944 ldaq scs$open_level open up mask to await interrupt 001720 4a 4 00130 7163 20 1945 xec scs$set_mask,1 1946 001721 4a 4 00174 6523 20 1947 sprisp pds$last_sp save sp because we will change it to non-PRDS 001722 0a 000002 3722 20 1948 eppsp null,* 1949 1950 read_clock 001723 4a 4 00104 6333 20 rccl sys_info$clock_,* 001724 4a 4 00216 7573 20 1951 staq tc_data$init_wait_time save time of wait 1952 001725 1953 check_pi_event: 001725 aa 000001 3352 07 1954 lca 1,dl for display 001726 4a 4 00214 2363 20 1955 ldq tc_data$init_event 001727 0a 001740 6002 00 1956 tze pi_wait_ret notify has occured 1957 001730 aa 000200 6372 03 1958 ldt =o200,du about 1/8 second 001731 1959 inhibit off <-><-><-><-><-><-><-><-><-> 001731 aa 000000 6160 00 1960 dis 0 001732 1961 inhibit on <+><+><+><+><+><+><+><+><+> 1962 001732 4a 4 00214 2343 20 1963 szn tc_data$init_event 0 => event has occurred 001733 0a 001740 6002 00 1964 tze pi_wait_ret 1965 read_clock " check for notify-time-out 001734 4a 4 00104 6333 20 rccl sys_info$clock_,* 001735 4a 4 00216 1773 20 1966 sbaq tc_data$init_wait_time " aq = time waiting 001736 4a 4 00220 1173 20 1967 cmpaq tc_data$init_wait_timeout " more than allowed 001737 0a 001725 6042 00 1968 tmi check_pi_event " no -wait some more 1969 001740 1970 pi_wait_ret: 001740 4a 4 00200 3723 20 1971 eppsp pds$last_sp,* restore stack pointer 001741 aa 6 00000 3733 00 1972 epbpsb sp|0 .. 001742 4a 4 00120 2373 20 1973 ldaq pds$tc_mask must be pwait or page_wait 001743 4a 4 00130 7163 20 1974 xec scs$set_mask,1 1975 001744 4a 4 00214 2343 20 1976 szn tc_data$init_event did we NTO 001745 0a 002056 6002 00 1977 tze pi_wait_ret_con no--event occurred 1978 1979 " check for possible disk polling 1980 001746 4a 4 00222 2343 20 1981 szn pds$pc_call 001747 0a 001766 6042 00 1982 tmi pi_wait_no_poll normal wait 1983 001750 4a 4 00172 2373 20 1984 ldaq scs$sys_level mask down for poll sake 001751 4a 4 00130 7163 20 1985 xec scs$set_mask,1 1986 001752 0a 004242 7232 00 1987 lxl3 disk_poll_entry get address of routine to call 001753 aa 6 00000 2543 00 1988 call lp|0,3*(null_arglist) make call to disk poller 001754 0a 004240 3502 00 001755 aa 4 00000 3523 33 001756 aa 6 00040 7533 00 001757 aa 7 00036 6703 20 001760 aa 6 00000 1733 00 001761 aa 6 00040 0733 00 1989 001762 4a 4 00120 2373 20 1990 ldaq pds$tc_mask 001763 4a 4 00130 7163 20 1991 xec scs$set_mask,1 1992 001764 4a 4 00214 2343 20 1993 szn tc_data$init_event did we NTO 001765 0a 002056 6002 00 1994 tze pi_wait_ret_con no--event occurred 1995 001766 1996 pi_wait_no_poll: 001766 4a 4 00224 2343 20 1997 szn tc_data$init_timeout_severity do we want to print NTO message 001767 0a 001772 6042 00 1998 tmi pi_nto_no_message no 001770 4a 4 00226 2343 20 1999 szn tc_data$init_timeout_recurse are we recursing 001771 0a 001774 6002 00 2000 tze pi_call_syserr no 001772 2001 pi_nto_no_message: 001772 4a 4 00214 4503 20 2002 stz tc_data$init_event just notify, don't blow the whistle 001773 0a 002056 7102 00 2003 tra pi_wait_ret_con 2004 2005 2006 " call syserr (tc_data$init_timeout_severity, "pxss: notify time out: event=^w. During init/shutdown.") 2007 001774 2008 pi_call_syserr: 001774 4a 4 00226 0543 20 2009 aos tc_data$init_timeout_recurse 001775 aa 000300 6272 00 2010 push 001776 aa 7 00040 2723 20 001777 4a 4 00200 3717 20 2011 epplb pds$last_sp,* 002000 aa 6 00100 6517 00 2012 sprilb pre_temp 002001 4a 4 00222 2353 20 2013 lda pds$pc_call 002002 aa 6 00102 7553 00 2014 sta pre_temp+2 002003 4a 4 00224 3717 20 2015 epplb tc_data$init_timeout_severity 002004 aa 6 00110 6517 00 2016 sprilb arg+2 002005 0a 002037 3716 00 2017 epplb pi_timeout_mess 002006 aa 6 00112 6517 00 2018 sprilb arg+4 002007 4a 4 00214 3717 20 2019 epplb tc_data$init_event 002010 aa 6 00114 6517 00 2020 sprilb arg+6 002011 0a 002101 3716 00 2021 epplb fixed_desc 002012 aa 6 00116 6517 00 2022 sprilb arg+8 002013 aa 6 00122 6517 00 2023 sprilb arg+12 002014 0a 002055 3716 00 2024 epplb pi_timeout_desc 002015 aa 6 00120 6517 00 2025 sprilb arg+10 002016 0a 006400 2372 00 2026 ldaq =v18/6,18/4,18/6,18/0 002017 aa 6 00106 7573 00 2027 staq arg 002020 aa 6 00000 2543 00 2028 call syserr$syserr(arg) 002021 aa 6 00106 3503 00 002022 4a 4 00014 3523 20 002023 aa 6 00040 7533 00 002024 aa 7 00036 6703 20 002025 aa 6 00000 1733 00 002026 aa 6 00040 0733 00 002027 aa 6 00100 3717 20 2029 epplb pre_temp,* 002030 4a 4 00174 6517 20 2030 sprilb pds$last_sp 002031 aa 6 00102 2353 00 2031 lda pre_temp+2 002032 4a 4 00222 7553 20 2032 sta pds$pc_call 002033 4a 4 00214 4503 20 2033 stz tc_data$init_event 002034 aa 000001 3352 07 2034 lca 1,dl 002035 4a 4 00226 0553 20 2035 asa tc_data$init_timeout_recurse 002036 0a 002056 7102 00 2036 tra pi_wait_ret_con 2037 002037 2038 pi_timeout_mess: 002037 aa 160 170 163 163 2039 aci "pxss: notify time out: event=^w. During init/shutdown." 002040 aa 072 040 040 156 002041 aa 157 164 151 146 002042 aa 171 040 164 151 002043 aa 155 145 040 157 002044 aa 165 164 072 040 002045 aa 040 145 166 145 002046 aa 156 164 075 136 002047 aa 167 056 040 104 002050 aa 165 162 151 156 002051 aa 147 040 151 156 002052 aa 151 164 057 163 002053 aa 150 165 164 144 002054 aa 157 167 156 056 000016 2040 equ pi_timeout_mess_words,*-pi_timeout_mess 000070 2041 equ pi_timeout_mess_char,4*pi_timeout_mess_words 002055 2042 pi_timeout_desc: 002055 aa 524000 000070 2043 vfd 1/1,6/21,5/0,24/pi_timeout_mess_char 2044 " 2045 002056 2046 pi_wait_ret_con: 002056 4a 4 00200 3723 20 2047 eppsp pds$last_sp,* restore machine state 002057 4a 4 00222 2343 20 2048 szn pds$pc_call check if pc wait or not 002060 0a 002062 6002 00 2049 tze *+2 don't reset ap for page_fault 002061 aa 6 00030 3503 20 2050 eppap sp|stack_frame.operator_ptr,* 002062 0a 002066 6042 00 2051 tmi nwait_ret normal wait 002063 4a 4 00222 2343 20 2052 szn pds$pc_call is the a pc call? 002064 4a 4 00230 6003 20 2053 tze page_fault$wait_return no 002065 4a 4 00232 7103 20 2054 tra device_control$pwait_return 2055 002066 2056 nwait_ret: 002066 aa 6 00024 6103 00 2057 rtcd sp|stack_frame.return_ptr 002067 2058 inhibit off <-><-><-><-><-><-><-><-><-><-> 2059 " 2060 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2061 " 2062 " ADDEVENT -- entry to set up event into APT entry prior 2063 " to a call to wait. 2064 " There is no need to lock anything. 2065 " Call is 2066 " call pxss$addevent(event) 2067 " 2068 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2069 002067 2070 addevent: 002067 aa 0 00002 2361 20 2071 ldq ap|2,* pick up input event 002070 0a 002072 6010 00 2072 tnz *+2 event must be non-zero 002071 aa 707070 2360 07 2073 ldq =o707070,dl so force it so 002072 4a 4 00234 2341 20 2074 szn tc_data$wait_enable during initialization ? 002073 0a 002077 6000 00 2075 tze pi_add yes, special code 002074 4a 4 00152 3521 20 2076 eppbp pds$apt_ptr,* 002075 aa 2 00020 7561 00 2077 stq bp|apte.wait_event store event in APT entry 002076 2078 short_ret: 002076 aa 7 00044 7101 20 2079 short_return 2080 002077 2081 pi_add: 002077 4a 4 00214 7561 20 2082 stq tc_data$init_event 002100 0a 002076 7100 00 2083 tra short_ret 2084 002101 2085 fixed_desc: 002101 aa 404000 000005 2086 oct 404000000005 2087 2088 2089 " 2090 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2091 " 2092 " DELEVENT -- entry to remove interest in event. 2093 " Call is 2094 " call pxss$delevent (event) 2095 " 2096 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2097 002102 2098 delevent: 002102 4a 4 00234 2341 20 2099 szn tc_data$wait_enable 002103 0a 002363 6000 00 2100 tze pi_notify 002104 aa 000000 6350 00 2101 eaa 0 002105 aa 0 00002 2361 20 2102 ldq ap|2,* pick up event 002106 4a 4 00152 3521 20 2103 eppbp pds$apt_ptr,* get ptr to own apte 002107 aa 2 00020 6541 00 2104 stacq bp|apte.wait_event 002110 aa 7 00044 7101 20 2105 short_return 2106 " 2107 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2108 " 2109 " PAGE_WAIT -- special purpose entry to wait for a page. 2110 " 2111 " This entry is a combination of pxss$addevent and pxss$wait. 2112 " The argument (wait event) is passed in pds$arg_1. 2113 " Called by page_fault, returns to page_fault$wait_return to 2114 " restart a page fault. 2115 " 2116 " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " 2117 002111 2118 page_wait: 002111 4a 4 00164 5541 20 2119 stc1 pds$pxss_args_invalid Signal overwriting of temporaries. 002112 4a 4 00222 4501 20 2120 stz pds$pc_call set flag for page_wait, vs. waitp. 002113 4a 4 00234 2341 20 2121 szn tc_data$wait_enable see if during initialization 002114 0a 001710 6000 00 2122 tze pw1 yes, special code 002115 0a 001463 7060 00 2123 tsx6 init_pxss_save_stack init x7 save stack 002116 2124 pwait: "COME FROM WAITP 002116 0a 002477 7070 00 2125 tsx7 update_te update times 2126 002117 0a 001351 7060 00 2127 tsx6 LOCK_bp -- Wait -- 002120 aa 2 00020 2341 00 2128 szn bp|apte.wait_event wait? 002121 0a 002150 6000 00 2129 tze UNLOCK_bp_unpwait no -event may have occured 002122 aa 000003 2200 03 2130 ldx0 waiting,du set state to waiting 002123 0a 000753 7070 00 2131 tsx7 update_execution_state 002124 0a 001354 7060 00 2132 tsx6 UNLOCK_bp page_wait to call getwk 002125 aa 000002 2350 03 2133 lda apte.page_wait_flag,du set flag indicating page wait 002126 aa 2 00001 2551 00 2134 orsa bp|apte.flags set flag ON in APT entry 002127 aa 3 00012 0541 00 2135 aos bb|waits 002130 4a 4 00236 2201 20 2136 ldx0 prds$depth get depth in queue 002131 aa 3 00130 0541 10 2137 aos bb|pfdepth,0 for metering 002132 0a 003241 7070 00 2138 tsx7 getwork 2139 read_clock " meter time ready after notify 002133 4a 4 00104 6331 20 rccl sys_info$clock_,* 002134 aa 2 00022 1771 00 2140 sbaq bp|apte.state_change_time 002135 4a 4 00236 2201 20 2141 ldx0 prds$depth get depth in queue 002136 4a 4 00236 0601 20 2142 adx0 prds$depth multiply depth by 2 002137 aa 3 00220 0541 10 2143 aos bb|readytime,0 002140 aa 3 00221 0561 10 2144 asq bb|readytime+1,0 002141 2145 unpwait: 002141 4a 4 00222 2341 20 2146 szn pds$pc_call see if page_wait or waitp 002142 4a 4 00230 6001 20 2147 tze page_fault$wait_return page_wait 002143 2148 waitp_return: 002143 4a 4 00200 3721 20 2149 eppsp pds$last_sp,* restore pds stack history 002144 aa 6 00000 3731 00 2150 epbpsb sp|0 makes dvctl happy 002145 4a 4 00114 2371 20 2151 ldaq prds$+stack_header.stack_begin_ptr reset prds too 002146 4a 4 00116 7571 20 2152 staq prds$+stack_header.stack_end_ptr .. 002147 4a 4 00232 7101 20 2153 tra device_control$pwait_return 2154 002150 2155 UNLOCK_bp_unpwait: 002150 0a 001354 7060 00 2156 tsx6 UNLOCK_bp if not waiting and APTE locked .. 002151 0a 002141 7100 00 2157 tra unpwait 2158 " 2159 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2160 " 2161 " PAGE_PAUSE 2162 " 2163 " This primitive is a combination of pause, which 2164 " causes the process to delay in ring 0 and page_wait. 2165 " It is used by page control when it must delay a page operation, 2166 " usually for defeating a covert channel. 2167 " This routine returns to page_fault$wait_return when done. 2168 " 2169 " The time to delay until is in pds$arg_1. 2170 " 2171 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2172 002152 2173 page_pause: 002152 4a 4 00164 5541 20 2174 stc1 pds$pxss_args_invalid " overwriting temps 002153 4a 4 00222 4501 20 2175 stz pds$pc_call " indicates page_wait 002154 4a 4 00234 2341 20 2176 szn tc_data$wait_enable 002155 4a 4 00230 6001 20 2177 tze page_fault$wait_return " pxss not setup to delay 002156 0a 001463 7060 00 2178 tsx6 init_pxss_save_stack " init x7 save stack 002157 4a 4 00152 3521 20 2179 eppbp pds$apt_ptr,* " our apte 002160 aa 2 00000 3531 00 2180 epbpbb bp|0 " tc_data 2181 002161 0a 001302 7060 00 2182 tsx6 WRITE_LOCK " changing next_ring0_timer 002162 0a 000006 2350 00 2183 lda ring0_timer_event 002163 aa 2 00020 7551 00 2184 sta bp|apte.wait_event " we are waiting for timer 002164 4a 4 00066 2371 20 2185 ldaq pds$arg_1 " delay time 002165 aa 3 00470 1171 00 2186 cmpaq bb|next_ring0_timer 002166 0a 002170 6050 00 2187 tpl *+2 " timer will expire before our time 002167 aa 3 00470 7571 00 2188 staq bb|next_ring0_timer " our time comes first 002170 aa 3 00362 1171 00 2189 cmpaq bb|next_alarm_time 002171 0a 002173 6050 00 2190 tpl *+2 002172 aa 3 00362 7571 00 2191 staq bb|next_alarm_time " also update next system alarm 002173 0a 001324 7060 00 2192 tsx6 UNLOCK " done updating 002174 aa 3 00465 0541 00 2193 aos bb|pauses " meter 002175 0a 002116 7100 00 2194 tra pwait 2195 " 2196 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2197 " 2198 " PAUSE 2199 " 2200 " This primitive causes the current process to pause in ring 0. 2201 " It is used when it is necessary to delay an operation, 2202 " usually for defeating a covert channel. 2203 " 2204 " call pxss$pause (delay_time); 2205 " 2206 " The delay_time is the desired wakeup time. Note, though, that 2207 " this function may return before this time, so it is necessary 2208 " for the caller to repeat the call, if necessary. 2209 " 2210 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2211 002176 4a 4 00234 2341 20 2212 pause: szn tc_data$wait_enable 002177 0a 002201 6010 00 2213 tnz pause.setup 002200 aa 7 00044 7101 20 2214 short_return " pxss not setup to delay 2215 002201 2216 pause.setup: 002201 0a 001376 7060 00 2217 tsx6 setup_ 002202 aa 0 00002 2371 20 2218 ldaq ap|2,* " desired delay til time 002203 4a 4 00066 7571 20 2219 staq pds$arg_1 " copy into wired place 2220 002204 0a 001400 6710 00 2221 tsplb setup_check " switch stacks & mask 002205 aa 000000 0000 16 2222 arg 0,6 2223 002206 0a 001302 7060 00 2224 tsx6 WRITE_LOCK " changing next_ring0_timer 002207 0a 001347 7060 00 2225 tsx6 LOCK_me_bp " rescheduling 002210 0a 000006 2350 00 2226 lda ring0_timer_event 002211 aa 2 00020 7551 00 2227 sta bp|apte.wait_event " we are waiting for timer 002212 4a 4 00066 2371 20 2228 ldaq pds$arg_1 " delay time 002213 aa 3 00470 1171 00 2229 cmpaq bb|next_ring0_timer 002214 0a 002216 6050 00 2230 tpl *+2 " timer will expire before our time 002215 aa 3 00470 7571 00 2231 staq bb|next_ring0_timer " our time comes first 002216 aa 3 00362 1171 00 2232 cmpaq bb|next_alarm_time 002217 0a 002221 6050 00 2233 tpl *+2 002220 aa 3 00362 7571 00 2234 staq bb|next_alarm_time " also update next system alarm 002221 aa 3 00465 0541 00 2235 aos bb|pauses " meter 2236 002222 aa 000003 2200 03 2237 ldx0 waiting,du 002223 0a 000753 7070 00 2238 tsx7 update_execution_state 002224 0a 001354 7060 00 2239 tsx6 UNLOCK_bp 002225 0a 002477 7070 00 2240 tsx7 update_te 002226 0a 001324 7060 00 2241 tsx6 UNLOCK 002227 0a 003241 7070 00 2242 tsx7 getwork " pause! 002230 0a 001434 7100 00 2243 tra switch_back_pds 2244 " 2245 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2246 " 2247 " WAITP -- General purpose entry to wait for a page control event. 2248 " 2249 " Called by device_control$pwait, we gain control 2250 " masked at sys level, wired stack, and event in pds$arg_1 2251 " 2252 " Control is returned to caller of device_control$pwait. 2253 " 2254 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2255 002231 2256 waitp: 002231 4a 4 00164 5541 20 2257 stc1 pds$pxss_args_invalid Signal overwriting of temporaries. 002232 aa 000001 2350 07 2258 lda 1,dl 002233 4a 4 00222 7551 20 2259 sta pds$pc_call set switch for pds return 002234 4a 4 00234 2341 20 2260 szn tc_data$wait_enable see if in initialization 002235 0a 001710 6000 00 2261 tze pw1 yes, do special code 002236 0a 001416 6710 00 2262 tsplb setup switch stacks 002237 0a 002116 7100 00 2263 tra pwait 2264 2265 2266 " 2267 2268 2269 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2270 " 2271 " WAIT -- entry called to wait for a predictably short time. 2272 " Call is 2273 " call pxss$wait 2274 " 2275 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2276 002240 2277 wait: 002240 4a 4 00234 2341 20 2278 szn tc_data$wait_enable in initialization ? 002241 0a 002257 6000 00 2279 tze w1 yes, special code 002242 0a 001403 6710 00 2280 tsplb setup_mask 002243 0a 001347 7060 00 2281 tsx6 LOCK_me_bp 002244 aa 2 00020 2341 00 2282 szn bp|apte.wait_event have we been notified yet? 002245 0a 002255 6000 00 2283 tze wait_not yes so return 002246 aa 000003 2200 03 2284 ldx0 waiting,du set state to waiting 002247 0a 000753 7070 00 2285 tsx7 update_execution_state 002250 0a 001354 7060 00 2286 tsx6 UNLOCK_bp 002251 aa 3 00017 0541 00 2287 aos bb|te_wait 002252 0a 002477 7070 00 2288 tsx7 update_te update times 002253 0a 003241 7070 00 2289 tsx7 getwork 002254 2290 wait_returns: 002254 0a 001434 7100 00 2291 tra switch_back_pds return to pds stack history 2292 002255 2293 wait_not: 002255 0a 001354 7060 00 2294 tsx6 UNLOCK_bp 002256 0a 001436 7100 00 2295 tra switch_back 2296 002257 aa 000001 3350 07 2297 w1: lca 1,dl get negative flag 002260 4a 4 00222 7551 20 2298 sta pds$pc_call 002261 0a 001713 7100 00 2299 tra pi_wait 2300 " 2301 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2302 " 2303 " PAGE_NOTIFY -- special porpose entry for notifies on pages 2304 " 2305 " This entry is like notify except that an extra argument is passed. 2306 " The extra argument is the device ID of the device whose 2307 " page transfer has just completed. This is used for latency 2308 " metering. 2309 " 2310 " The event being notified is passed in pds$arg_1. 2311 " The device ID is passed in pds$arg_2 2312 " 2313 " 2314 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2315 002262 2316 page_notify: 002262 aa 6 00203 5541 00 2317 stc1 dev_signal flag says special notify 002263 4a 4 00164 5541 20 2318 pn2: stc1 pds$pxss_args_invalid Signal overwriting of temporaries. 002264 4a 4 00234 2341 20 2319 szn tc_data$wait_enable during initialization? 002265 0a 002273 6000 00 2320 tze pn1 yes, special code 2321 002266 4a 4 00106 3535 20 2322 eppbb tc_data$ set ptr to base of tcdata 002267 0a 001463 7060 00 2323 tsx6 init_pxss_save_stack init x7 save stack 2324 002270 aa 3 00154 0541 00 2325 aos bb|page_notifies 002271 0a 002313 7060 00 2326 tsx6 notify_ go notify 2327 """"" lxl5 x5 restore x5 002272 0a 002277 7100 00 2328 tra notify_return 002273 2329 pn1: 002273 4a 4 00066 2361 20 2330 ldq pds$arg_1 see if we are waiting for the event being notified 002274 4a 4 00214 1161 20 2331 cmpq tc_data$init_event is it what we're waiting for? 002275 0a 002277 6010 00 2332 tnz notify_return no, return 002276 4a 4 00214 4501 20 2333 stz tc_data$init_event yes, reset event 002277 2334 notify_return: 002277 4a 4 00240 7101 20 2335 tra page$notify_return 2336 " 2337 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2338 " 2339 " NOTIFY -- entry to notify that an event has happened. 2340 " Call is 2341 " call pxss$notify(event) 2342 " 2343 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2344 002300 2345 notify: 002300 4a 4 00234 2341 20 2346 szn tc_data$wait_enable in initialization ? 002301 0a 002363 6000 00 2347 tze pi_notify yes, special code 002302 0a 001376 7060 00 2348 tsx6 setup_ 002303 aa 0 00002 2361 20 2349 ldq ap|2,* pick up event to notify 002304 0a 002306 6010 00 2350 tnz *+2 can't allow zero, so use 707070 002305 aa 707070 2360 07 2351 ldq =o707070,dl 002306 4a 4 00066 7561 20 2352 stq pds$arg_1 save in PDS 002307 0a 001400 6710 00 2353 tsplb setup_check switch stacks and lock 002310 aa 000000 0000 16 2354 arg 0,6 002311 aa 6 00203 4501 00 2355 stz dev_signal set flag for normal return 002312 aa 3 00013 0541 00 2356 aos bb|notifies 2357 " 2358 "Come here to notify event which is in pds$arg_1 002313 2359 notify_: 002313 aa 6 00206 7461 00 2360 stx6 x5 save index 6 (used by get_processor ) 002314 0a 001256 7060 00 2361 tsx6 READ_LOCK notify freezes threads 002315 aa 3 00350 6221 00 2362 eax2 bb|eligible_q_head X2 -> eligible_q_head 002316 aa 000000 6250 00 2363 eax5 0 USELESS NOTIFY? 002317 4a 4 00066 2361 20 2364 ldq pds$arg_1 Put event in Q-reg and stack 002320 aa 6 00207 7561 00 2365 stq tmp_event 002321 2366 nfy_loop: 002321 aa 3 00000 2221 12 2367 ldx2 bb|apte.thread,2 go to next entry 002322 aa 3 00001 2341 12 2368 szn bb|apte.flags,2 stop at sentinel 002323 0a 002352 6040 00 2369 tmi nfy_ret 002324 aa 3 00020 1161 12 2370 cmpq bb|apte.wait_event,2 check current APT for same event 002325 0a 002321 6010 00 2371 tnz nfy_loop not equal, skip 2372 " 2373 " Fall thru here if must notify this process 002326 0a 001360 7060 00 2374 tsx6 LOCK_x2 002327 aa 000003 3200 03 2375 lcx0 apte.page_wait_flag+1,du turn off page wait flag 002330 aa 3 00001 3401 12 2376 ansx0 bb|apte.flags,2 002331 aa 3 00020 4501 12 2377 stz bb|apte.wait_event,2 002332 aa 000001 6250 15 2378 eax5 1,5 USELESS NOTIFY? 002333 aa 3 00001 7201 12 2379 lxl0 bb|apte.state,2 make sure dont change running state 002334 aa 000003 1000 03 2380 cmpx0 waiting,du 002335 0a 002350 6010 00 2381 tnz nfy_not_waiting not waiting, dont change state 002336 aa 000002 2200 03 2382 ldx0 ready,du set state to ready 002337 aa 3 00000 3521 12 2383 eppbp bb|0,2 bp must be set for update.. 002340 0a 000753 7070 00 2384 tsx7 update_execution_state 002341 0a 001363 7060 00 2385 tsx6 UNLOCK_x2 002342 0a 002346 6270 00 2386 eax7 nfy_restor set ret addr for get_(idle_)processor 002343 aa 3 00074 2341 00 2387 szn bb|gp_at_notify see which flavor gp 002344 0a 002672 6000 00 2388 tze get_idle_processor 002345 0a 002676 7100 00 2389 tra get_processor 002346 2390 nfy_restor: 002346 aa 6 00207 2361 00 2391 ldq tmp_event Restore event to Q 002347 0a 002321 7100 00 2392 tra nfy_loop continue scan 002350 2393 nfy_not_waiting: 002350 0a 001363 7060 00 2394 tsx6 UNLOCK_x2 002351 0a 002346 7100 00 2395 tra nfy_restor restor back 002352 2396 nfy_ret: 002352 aa 000000 6250 15 2397 eax5 0,5 USELESS NOTIFY? 002353 0a 002356 6010 00 2398 tnz *+3 USELESS NOTIFY? 002354 aa 3 00156 7561 00 2399 stq bb|notify_nobody_event USELESS NOTIFY? 002355 aa 3 00155 0541 00 2400 aos bb|notify_nobody_count USELESS NOTIFY? 002356 0a 001324 7060 00 2401 tsx6 UNLOCK notify is done 002357 aa 6 00206 2261 00 2402 ldx6 x5 restore x6 002360 aa 6 00203 2341 00 2403 szn dev_signal check return flag 002361 aa 000000 6010 16 2404 tnz 0,6 return to caller 002362 0a 001436 7100 00 2405 tra switch_back 2406 002363 2407 pi_notify: 002363 aa 0 00002 2361 20 2408 ldq ap|2,* get event 002364 0a 002366 6010 00 2409 tnz *+2 if non-zero, OK 002365 aa 707070 2360 07 2410 ldq =o707070,dl otherwise use special coded event 002366 4a 4 00214 1161 20 2411 cmpq tc_data$init_event 002367 0a 002076 6010 00 2412 tnz short_ret not the right one 002370 4a 4 00214 4501 20 2413 stz tc_data$init_event 002371 aa 7 00044 7101 20 2414 short_return 2415 " 2416 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2417 " 2418 " PTL_WAIT -- wait for page table lock 2419 " 2420 " special cased to avoid cluttering up page_wait even further. 2421 " 2422 " Note that the per APTE lock protects processes interest in 2423 " ptl_wait_ct. ptl_wait_ct is >= num of (unlocked) processes in the 2424 " ptlocking state. It is greater only temporarily, while 2425 " some process is making sure a notify is not lost. 2426 " 2427 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2428 002372 2429 ptl_wait: 002372 4a 4 00164 5541 20 2430 stc1 pds$pxss_args_invalid 002373 4a 4 00222 4501 20 2431 stz pds$pc_call set return switch 002374 4a 4 00106 3535 20 2432 eppbb tc_data$ 002375 0a 001463 7060 00 2433 tsx6 init_pxss_save_stack 2434 002376 4a 4 00242 2341 20 2435 ptlw_: szn sst$ptl quick check on ptl 002377 0a 002422 6000 00 2436 tze ptlw_ez not locked - meter and retn 002400 0a 001347 7060 00 2437 tsx6 LOCK_me_bp 002401 aa 000006 2200 03 2438 ldx0 ptlocking,du go ptlocking 002402 0a 000753 7070 00 2439 tsx7 update_execution_state now I cannot miss notify 002403 4a 4 00244 0541 20 2440 aos sst$ptl_wait_ct guar notify next time ptl unlocked 002404 4a 4 00242 2341 20 2441 szn sst$ptl see if still locked 002405 0a 002415 6000 00 2442 tze ptlw_not no - dont wait 002406 0a 001354 7060 00 2443 tsx6 UNLOCK_bp 002407 0a 002477 7070 00 2444 tsx7 update_te 002410 aa 3 00143 0541 00 2445 aos bb|ptl_waits meter these 002411 0a 003241 7070 00 2446 tsx7 getwork 002412 4a 4 00222 2341 20 2447 ptlw_ret: szn pds$pc_call test return switch 002413 4a 4 00246 6001 20 2448 tze page_fault$ptl_wait_return return to locking code 002414 0a 002143 7100 00 2449 tra waitp_return take fancy return to dvctl trylock 2450 002415 aa 000001 3350 07 2451 ptlw_not: lca 1,dl 002416 4a 4 00244 0551 20 2452 asa sst$ptl_wait_ct dont notify on my account 002417 aa 000001 2200 03 2453 ldx0 running,du like delevent .. 002420 0a 000753 7070 00 2454 tsx7 update_execution_state 002421 0a 001354 7060 00 2455 tsx6 UNLOCK_bp 002422 aa 3 00140 0541 00 2456 ptlw_ez: aos bb|ptl_not_waits meter this window 002423 0a 002412 7100 00 2457 tra ptlw_ret 2458 002424 2459 dvctl_retry_ptlwait: 002424 aa 000001 2350 07 2460 lda 1,dl 002425 4a 4 00222 7551 20 2461 sta pds$pc_call set return switch 002426 0a 001416 6710 00 2462 tsplb setup 002427 0a 002376 7100 00 2463 tra ptlw_ join common ptlwait code 2464 2465 " 2466 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2467 " 2468 " PTL_NOTIFY -- notify one process that ptl is unlocked 2469 " 2470 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2471 002430 2472 ptl_notify: 002430 4a 4 00164 5541 20 2473 stc1 pds$pxss_args_invalid 002431 4a 4 00106 3535 20 2474 eppbb tc_data$ 002432 0a 001463 7060 00 2475 tsx6 init_pxss_save_stack 002433 0a 001256 7060 00 2476 tsx6 READ_LOCK ptl_notify freezes threads 2477 002434 aa 3 00350 2351 00 2478 lda bb|eligible_q_head 002435 2479 ptln_loop: 002435 aa 3 00000 2371 01 2480 ldaq bb|apte.thread,au 002436 0a 002440 7100 26 2481 tra ptln_tv,ql* 2482 002437 0a 002473 0000 00 2483 arg ptln_ret sentinel 002440 0a 002447 0000 00 2484 ptln_tv: arg DRL_empty_apte empty 002441 0a 002435 0000 00 2485 arg ptln_loop running 002442 0a 002435 0000 00 2486 arg ptln_loop ready 002443 0a 002435 0000 00 2487 arg ptln_loop waiting 002444 0a 002450 0000 00 2488 arg DRL_blocked_apte blocked 002445 0a 002451 0000 00 2489 arg DRL_stopped_apte stopped 002446 0a 002452 0000 00 2490 arg ptln_found_ptlocking 2491 2492 " This is the place where jump indirects through tables come when they feel 2493 " a need to punt. We lose a few hreg entries, but not so many as a arg *,*! 2494 002447 2495 DRL_empty_apte: 2496 drltra (pxss: untenable empty APTE) 002447 0a 005432 7100 00 .._00026.tst: tra .._00026.drl 002450 2497 DRL_blocked_apte: 2498 drltra (pxss: untenable blocked APTE) 002450 0a 005433 7100 00 .._00027.tst: tra .._00027.drl 002451 2499 DRL_stopped_apte: 2500 drltra (pxss: untenable stopped APTE) 002451 0a 005434 7100 00 .._00030.tst: tra .._00030.drl 2501 002452 2502 ptln_found_ptlocking: 002452 4a 4 00242 2341 20 2503 szn sst$ptl is ptl actually unlocked now? 002453 0a 002473 6010 00 2504 tnz ptln_ret no - abort ptln 2505 002454 aa 3 00000 7221 01 2506 lxl2 bb|apte.thread,au make X2 -> ptlocking process 002455 0a 001360 7060 00 2507 tsx6 LOCK_x2 ptln locks to test and set state 002456 aa 3 00001 7201 12 2508 lxl0 bb|apte.state,2 002457 aa 000006 1000 03 2509 cmpx0 ptlocking,du 002460 0a 002475 6010 00 2510 tnz ptln_not_ptlocking 2511 002461 aa 000001 3350 07 2512 lca 1,dl 002462 4a 4 00244 0551 20 2513 asa sst$ptl_wait_ct one fewer waiting for ptl 002463 aa 3 00000 3521 12 2514 eppbp bb|0,2 set bp for ues 002464 aa 000002 2200 03 2515 ldx0 ready,du 002465 0a 000753 7070 00 2516 tsx7 update_execution_state 002466 0a 001363 7060 00 2517 tsx6 UNLOCK_x2 2518 002467 0a 002473 6270 00 2519 eax7 ptln_ret set ret addr for get_(idle_)processor 002470 aa 3 00075 2341 00 2520 szn bb|gp_at_ptlnotify see which flavor gp 002471 0a 002672 6000 00 2521 tze get_idle_processor 002472 0a 002676 7100 00 2522 tra get_processor 2523 002473 0a 001324 7060 00 2524 ptln_ret: tsx6 UNLOCK 2525 """"" lxl5 x5 ?????? 002474 4a 4 00250 7101 20 2526 tra core_queue_man$ptl_notify_return 2527 002475 2528 ptln_not_ptlocking: 002475 0a 001363 7060 00 2529 tsx6 UNLOCK_x2 002476 0a 002435 7100 00 2530 tra ptln_loop 2531 2532 " 2533 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2534 " 2535 " UPDATE_TE -- procedure to update the virtual cpu time used by 2536 " the running process into "te". 2537 " 2538 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2539 002477 2540 update_te: 002477 4a 4 00152 3521 20 2541 eppbp pds$apt_ptr,* get own apt pointer 002500 aa 2 00000 3531 00 2542 epbpbb bp|0 set bb to point at base of tc_data 002501 4a 4 00252 2341 20 2543 szn pds$vtime_count 002502 0a 002506 6050 00 2544 tpl te_vtime_1 2545 read_clock 002503 4a 4 00104 6331 20 rccl sys_info$clock_,* 002504 4a 4 00254 1771 20 2546 sbaq pds$cpu_time 002505 0a 002507 7100 00 2547 tra te_vtime_2 002506 2548 te_vtime_1: 002506 4a 4 00256 2371 20 2549 ldaq pds$time_v_temp 002507 2550 te_vtime_2: 002507 4a 4 00260 1771 20 2551 sbaq pds$virtual_delta 002510 4a 4 00052 1771 20 2552 sbaq pds$virtual_time_at_eligibility 002511 aa 2 00004 7561 00 2553 stq bp|apte.te 002512 aa 000000 7100 17 2554 tra 0,7 2555 2556 2557 2558 " 2559 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2560 " 2561 " USAGE_VALUES -- procedure to return the total page faults 2562 " for this process as well as the total cpu time this process 2563 " has been charged with. 2564 " 2565 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2566 002513 2567 usage_values: 002513 4a 4 00234 2341 20 2568 szn tc_data$wait_enable see if during initialization 002514 0a 002524 6000 00 2569 tze ret_zero if so return zeros 002515 2570 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+><+><+><+><+><+> 2571 read_clock 002515 4a 4 00104 6333 20 rccl sys_info$clock_,* 002516 4a 4 00254 1773 20 2572 sbaq pds$cpu_time compute virtual time 002517 4a 4 00260 1773 20 2573 sbaq pds$virtual_delta convert to virtual cpu time 002520 aa 0 00004 7573 20 2574 staq ap|4,* return value 002521 4a 4 00262 2363 20 2575 ldq pds$page_waits also return page waits 002522 aa 0 00002 7563 20 2576 stq ap|2,* return value 002523 aa 7 00044 7103 20 2577 short_return 002524 2578 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-> 2579 002524 2580 ret_zero: 002524 aa 000000 4310 07 2581 fld 0,dl zero a-q 002525 aa 0 00004 7571 20 2582 staq ap|4,* return time of zero 002526 aa 0 00002 4501 20 2583 stz ap|2,* return zero page_waits 002527 aa 7 00044 7101 20 2584 short_return 2585 " 2586 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2587 " 2588 " SORT_IN -- procedure to sort a process into the ready list at 2589 " the appropriate spot depending on his updated ti value. 2590 " bp must point to the APT entry for the process to be sorted 2591 " in. 2592 " 2593 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2594 002530 2595 sort_in_before: 002530 aa 6 00204 5541 00 2596 stc1 before here to sort in before those of same ti 002531 0a 002533 7100 00 2597 tra *+2 002532 2598 sort_in: 002532 aa 6 00204 4501 00 2599 stz before 002533 aa 3 00014 0541 00 2600 aos bb|schedulings 002534 aa 001000 2200 03 2601 ldx0 apte.interaction,du check interaction switch 002535 aa 2 00001 3001 00 2602 canx0 bp|apte.flags 002536 0a 002542 6000 00 2603 tze sort_no_int no interaction 002537 0a 004617 7000 00 2604 tsx0 setup_int boost priority 002540 aa 001001 3200 03 2605 lcx0 apte.interaction+1,du 002541 aa 2 00001 3401 00 2606 ansx0 bp|apte.flags turn off interaction bit 2607 002542 2608 sort_no_int: 002542 aa 2 00006 2351 00 2609 lda bp|apte.ti 002543 aa 2 00007 1151 00 2610 cmpa bp|apte.timax must always be less than timax 002544 0a 002546 6040 00 2611 tmi *+2 ok, use new value 002545 aa 2 00007 2351 00 2612 lda bp|apte.timax must use max value 002546 aa 2 00006 7551 00 2613 sta bp|apte.ti 2614 002547 aa 2 00001 2201 00 2615 ldx0 bp|apte.flags 002550 aa 000100 3000 03 2616 canx0 apte.realtime_burst,du realtime boost 002551 0a 002554 6000 00 2617 tze sort_in_again no 002552 0a 004635 7000 00 2618 tsx0 setup_io_realtime yes 002553 0a 002605 7100 00 2619 tra realtime_sort 002554 2620 sort_in_again: 2621 "old_assume_bp_not_eligible 2622 "old_assume_bp_wct_index 002554 aa 2 00021 2211 00 2623 ldx1 bp|apte.wct_index here to put in right rdy_q 002555 aa 3 00024 2341 11 2624 szn bb|wcte.realtime,1 if realtime 002556 0a 002605 6010 00 2625 tnz realtime_sort sort into realtime_q 002557 aa 3 00420 2341 00 2626 szn bb|deadline_mode else if not percenting 002560 0a 002611 6010 00 2627 tnz virtual_sort then put in interactive_q 002561 aa 3 00001 2351 11 2628 lda bb|wcte.interactive_q_word,1 See if interactive queue is 002562 aa 020000 3150 03 2629 cana wcte.interactive_q,du enabled for this WC 002563 0a 002574 6000 00 2630 tze ti_loop Not enabled 2631 " 2632 " here to sort into workclass or interactive queue by ti 002564 aa 2 00006 2241 00 2633 ti_sort: ldx4 bp|apte.ti put ti in X4 for sort 002565 0a 002574 6010 00 2634 tnz ti_loop sort into X1 -> wc_q 002566 aa 2 00005 2341 00 2635 szn bp|apte.ts also if ts not zero 002567 0a 002574 6010 00 2636 tnz ti_loop sort into X1 -> wc_q 002570 aa 3 00076 2341 00 2637 szn bb|int_q_enabled also if int_q turned off 002571 0a 002574 6000 00 2638 tze ti_loop sort into X1 -> wc_q 002572 aa 3 00330 6211 00 2639 eax1 bb|interactive_q else direct to tail of int_q 002573 0a 002620 7100 00 2640 tra thread_him_in 002574 2641 ti_loop: 002574 aa 3 00000 2211 11 2642 ldx1 bb|apte.thread,1 chase to next 002575 aa 3 00001 2341 11 2643 szn bb|apte.sentinel,1 put before sentinel 002576 0a 002620 6040 00 2644 tmi thread_him_in 002577 aa 3 00006 1041 11 2645 cmpx4 bb|apte.ti,1 compare to this ti 002600 0a 002574 6054 00 2646 tpnz ti_loop if greater, go deeper 002601 0a 002620 6040 00 2647 tmi thread_him_in if less, put before 002602 aa 6 00204 2341 00 2648 szn before if equal and told to put before 002603 0a 002620 6010 00 2649 tnz thread_him_in then put before 002604 0a 002574 7100 00 2650 tra ti_loop else go deeper 2651 " 2652 " various deadline sorts follow 002605 2653 realtime_sort: 002605 aa 000100 2200 03 2654 ldx0 apte.realtime_burst,du mark as realtime 002606 aa 2 00001 2401 00 2655 orsx0 bp|apte.flags 002607 aa 3 00314 6211 00 2656 eax1 bb|realtime_q here to put in realtime_q 002610 0a 002612 7100 00 2657 tra deadline_sort 002611 2658 virtual_sort: 002611 aa 3 00330 6211 00 2659 eax1 bb|interactive_q int_q has vir deadlines 002612 2660 deadline_sort: 002612 aa 2 00034 2371 00 2661 ldaq bp|apte.deadline here for general deadline sort 002613 2662 ds_loop: 002613 aa 3 00000 2211 11 2663 ldx1 bb|apte.thread,1 chase to next 002614 aa 3 00001 2341 11 2664 szn bb|apte.sentinel,1 put before sentinel 002615 0a 002620 6040 00 2665 tmi thread_him_in 002616 aa 3 00034 1171 11 2666 cmpaq bb|apte.deadline,1 compare to this deadline 002617 0a 002613 6050 00 2667 tpl ds_loop sooner => fall thru to thread before 2668 " 2669 "Subroutine to thread unthreaded APTE at bp|0 before that at bb|0,1. 2670 " 002620 2671 thread_him_in: 002620 4a 4 00142 2341 20 2672 szn tc_data$apt_lock ASSUME write_locked 2673 drlmi (pxss: APT not locked) ASSUME write_locked 002621 0a 005435 6040 00 .._00031.tst: tmi .._00031.drl 002622 aa 2 00000 2341 00 2674 szn bp|apte.thread ASSUME bp_unthreaded 2675 drlnz (pxss: thread_him_in already threaded) ASSUME bp_unthreaded 002623 0a 005436 6010 00 .._00032.tst: tnz .._00032.drl 002624 aa 000000 6210 11 2676 eax1 0,1 ASSUME x1_nonzero 2677 drlze (pxss: thread_him_in x1 zero) ASSUME x1_nonzero 002625 0a 005437 6000 00 .._00033.tst: tze .._00033.drl 002626 aa 3 00000 7241 11 2678 lxl4 bb|apte.thread,1 thread new entry in here 2679 drlze (pxss: thread_him_in x4 zero) ASSUME x4_nonzero 002627 0a 005440 6000 00 .._00034.tst: tze .._00034.drl 002630 aa 3 00000 1011 14 2680 cmpx1 bb|apte.thread,4 ASSUME x4->apte.fp = x1 2681 drlnz (pxss: thread_him_in x4->apte.fp ^= x1) ASSUME x4->apte.fp = x1 002631 0a 005441 6010 00 .._00035.tst: tnz .._00035.drl 002632 aa 2 00001 7201 00 2682 lxl0 bp|apte.state 002633 aa 000002 1000 03 2683 cmpx0 ready,du ASSUME apte.state = "ready" 2684 drlnz (pxss: apte.state ^= ready) 002634 0a 005442 6010 00 .._00036.tst: tnz .._00036.drl 002635 aa 2 00000 6201 00 2685 eax0 bp|0 2686 drlze (pxss: thread_him_in x0 zero) ASSUME x0_nonzero 002636 0a 005443 6000 00 .._00037.tst: tze .._00037.drl 002637 aa 3 00000 4401 11 2687 sxl0 bb|apte.thread,1 002640 aa 3 00000 7401 14 2688 stx0 bb|apte.thread,4 002641 aa 2 00000 4441 00 2689 sxl4 bp|apte.thread 002642 aa 2 00000 7411 00 2690 stx1 bp|apte.thread 002643 aa 000000 7100 17 2691 tra 0,7 2692 " 2693 " " " " " " " " " " " " " " " " " " " " " " " " " " " 2694 " 2695 " THREAD_IN_IDLE -- entry to thread an idle process into the 2696 " ready list. Called during initialization and reconfiguration. 2697 " 2698 " call pxss$thread_in_idle(apt_ptr) 2699 " 2700 " Where: 2701 " 2702 " apt_ptr is an its pointer to an idle process apt entry 2703 " 2704 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2705 002644 2706 thread_in_idle: 002644 0a 001376 7060 00 2707 tsx6 setup_ 002645 aa 0 00002 2371 20 2708 ldaq ap|2,* save apt_ptr in PDS 002646 4a 4 00066 7571 20 2709 staq pds$arg_1 002647 0a 001400 6710 00 2710 tsplb setup_check switch stacks and lock 002650 aa 000000 0000 16 2711 arg 0,6 002651 0a 001302 7060 00 2712 tsx6 WRITE_LOCK thread_in_idle rethreads 002652 4a 4 00140 3521 20 2713 eppbp pds$arg_1,* get pointer to APT entry 002653 0a 000770 7070 00 2714 tsx7 unthread thread entry out of any list it's in 002654 aa 3 00352 2211 00 2715 ldx1 bb|eligible_q_tail 002655 0a 002620 7070 00 2716 tsx7 thread_him_in thread into list 002656 0a 001324 7060 00 2717 tsx6 UNLOCK thread_in_idle is done 002657 0a 001436 7100 00 2718 tra switch_back 2719 " 2720 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2721 " 2722 " UNTHREAD_APTE -- entry to unthread an APTE from whatever 2723 " queue it's in. Called by stop_cpu during reconfiguration. 2724 " 2725 " call pxss$unthread_apte (apt_ptr) 2726 " 2727 " Where: 2728 " apt_ptr is a pointer to the APTE to be unthreaded. 2729 " 2730 " 2731 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2732 002660 2733 unthread_apte: 002660 0a 001376 7060 00 2734 tsx6 setup_ 002661 aa 0 00002 2371 20 2735 ldaq ap|2,* 002662 4a 4 00066 7571 20 2736 staq pds$arg_1 002663 0a 001400 6710 00 2737 tsplb setup_check 002664 aa 000000 0000 16 2738 arg 0,6 002665 0a 001302 7060 00 2739 tsx6 WRITE_LOCK pxss$unthread_apte 2740 002666 4a 4 00140 3521 20 2741 eppbp pds$arg_1,* 002667 0a 000770 7070 00 2742 tsx7 unthread 002670 0a 001324 7060 00 2743 tsx6 UNLOCK pxss$unthread_apte 002671 0a 001436 7100 00 2744 tra switch_back 2745 " 2746 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2747 " 2748 " GET_PROCESSOR -- procedure to award a processor (via 2749 " pre_emption of a lower priority process). 2750 " First check idle processes, then check eligible processes starting 2751 " with lowest priority eligible process). 2752 " 2753 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2754 " 2755 " GET_IDLE_PROCESSOR -- procedure to award a processor via 2756 " pre-emption of an idle process. This procedure should be 2757 " called instead of get_processor when the process for whom we 2758 " are pre-empting may not even be eligible yet. 2759 " 2760 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2761 002672 2762 get_idle_processor: 002672 aa 000001 6200 00 2763 eax0 1 just check idle processes 002673 aa 3 00021 2231 12 2764 ldx3 bb|apte.wct_index,2 fall thru to full gp if realtime 002674 aa 3 00024 2341 13 2765 szn bb|wcte.realtime,3 002675 0a 002677 6000 00 2766 tze gp_init go check idle queue 002676 2767 get_processor: 002676 aa 000002 6200 00 2768 eax0 2 check both idle and elig queues 2769 002677 aa 3 00000 2351 12 2770 gp_init: lda bb|apte.thread,2 pre-empting on behalf of X2 002700 aa 6 00134 7551 00 2771 sta temp save (unique) threads for compares 002701 aa 3 00354 2351 00 2772 lda bb|idle_tail start with idle processes 002702 aa 3 00144 0541 00 2773 aos bb|gp_start_count For getwork/get_processor window 2774 " 2775 "All set up. Now for the main loop. It will be executed over the 2776 "Idle processes first. If no Idle process is running then if the 2777 "XR0 is > 1 (ie: came in at get_processor entry, 2778 "not get_idle_processor) then the loop will be executed over the 2779 "elig processes. 2780 " 002703 aa 3 00000 2371 05 2781 gp_loop: ldaq bb|apte.thread,al go higher in queue 002704 aa 6 00134 1151 00 2782 cmpa temp is this process which was notified? 002705 0a 002710 6010 26 2783 tnz gp_tv,ql* no - branch on state 002706 0a 002750 7100 00 2784 tra gp_return yes - give up and return 2785 002707 0a 002744 0000 00 2786 arg check_eligible -1 => sentinel 002710 0a 002703 0000 00 2787 gp_tv: arg gp_loop gp found empty (ok-may be idle) 002711 0a 002717 0000 00 2788 arg gp_found_running 002712 0a 002703 0000 00 2789 arg gp_loop gp found ready 002713 0a 002703 0000 00 2790 arg gp_loop gp found waiting 002714 0a 002450 0000 00 2791 arg DRL_blocked_apte gp found blocked 002715 0a 002451 0000 00 2792 arg DRL_stopped_apte gp found stopped 002716 0a 002703 0000 00 2793 arg gp_loop gp found ptlocking 2794 002717 2795 gp_found_running: 002717 aa 3 00000 7231 01 2796 lxl3 bb|apte.thread,au extract addr from next's backptr 002720 0a 001367 7060 00 2797 tsx6 LOCK_x3 gp locks 002721 aa 3 00001 2361 13 2798 ldq bb|apte.flags,3 grab fresh copy of flags 002722 aa 040000 3160 03 2799 canq apte.pre_empted,du have we pre-empted it before? 002723 0a 002742 6010 00 2800 tnz gp_skip yes, skip it 002724 aa 040400 2350 03 2801 lda apte.pre_empted+apte.pre_empt_pending,du turn on pre_empted bit 002725 aa 3 00001 2551 13 2802 orsa bb|apte.flags,3 002726 aa 3 00021 2361 13 2803 ldq bb|apte.flags2,3 get processor tag 002727 aa 000007 3760 07 2804 anq apte.pr_tag_mask,dl 002730 4a 4 00124 1161 20 2805 cmpq prds$processor_tag this cpu? 002731 0a 002735 6000 00 2806 tze gp_this_cpu dont cioc if so 002732 4a 4 00206 0151 20 2807 cioc scs$cow_ptrs,ql* 002733 0a 001372 7060 00 2808 tsx6 UNLOCK_x3 gp unlocks 002734 0a 002750 7100 00 2809 tra gp_return 2810 002735 2811 gp_this_cpu: 002735 0a 001372 7060 00 2812 tsx6 UNLOCK_x3 gp unlocks 002736 aa 000001 2350 07 2813 lda 1,dl set alarm to r1 002737 4a 4 00210 7551 20 2814 sta pds$alarm_ring 002740 4a 4 00210 7745 20 2815 lra pds$alarm_ring 002741 0a 002750 7100 00 2816 tra gp_return 2817 002742 0a 001372 7060 00 2818 gp_skip: tsx6 UNLOCK_x3 002743 0a 002703 7100 00 2819 tra gp_loop have not clobbered AL ( -> next) 2820 002744 2821 check_eligible: 002744 aa 777777 6200 10 2822 eax0 -1,0 need check the eligibles? 002745 0a 002750 6000 00 2823 tze gp_return no - return to caller 2824 002746 aa 3 00352 2351 00 2825 lda bb|eligible_q_tail now check eligibles 002747 0a 002703 7100 00 2826 tra gp_loop 002750 2827 gp_return: 002750 aa 3 00145 0541 00 2828 aos bb|gp_done_count For getwork/get_processor window 002751 aa 000000 7100 17 2829 tra 0,7 gp ret to caller 2830 " 2831 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 2832 " 2833 " FIND_NEXT_ELIGIBLE -- the policy implementing part of the 2834 " scheduler. This code could be in-line in getwork but is 2835 " separated for clarity. It is entered at find_next_eligible 2836 " from getwork if no eligible process can be run. It is entered 2837 " with the traffic controller locked for multiple readers but 2838 " must run with the exclusive lock allowing rethreading and awarding 2839 " eligibility. It will return to getwork with x2 -> newly elig 2840 " or will return to find idle. In either case before returning 2841 " the lock will be changed to allow concurrency. 2842 " This code will also be entered at AWARD with the write lock set, 2843 " from the part of getwork that decides to award eligibility 2844 " to process with realtime deadlines which are past. 2845 2846 " 2847 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 002752 2848 find_next_eligible: 002752 0a 001324 7060 00 2849 tsx6 UNLOCK fne must unlock read before write 002753 0a 001302 7060 00 2850 tsx6 WRITE_LOCK fne rethreads, awards elig 2851 " 2852 "If there are any processes which have just interacted, 2853 "we must run them immediately. So check the interactive_queue. 2854 "If we are in deadline mode the interactive queue contains most processes 2855 "and also some special conditions must be fulfilled. 2856 " 2857 002754 aa 6 00205 4501 00 2858 stz depth 002755 aa 3 00330 6221 00 2859 eax2 bb|interactive_q 002756 aa 6 00167 4501 00 2860 stz temp2 no work class restrictions so far 002757 2861 lr_loop: 002757 aa 3 00000 2221 12 2862 ldx2 bb|apte.thread,2 step to next process. 002760 aa 3 00001 2341 12 2863 szn bb|apte.sentinel,2 If none then scan wc queues. 002761 0a 003004 6040 00 2864 tmi lr_wcq Look in workclass queues 002762 aa 3 00420 2341 00 2865 szn bb|deadline_mode If deadline mode make checks. 002763 0a 003136 6000 00 2866 tze test_award Else return this X2 to getwork. 2867 002764 aa 3 00021 2211 12 2868 ldx1 bb|apte.wct_index,2 Check if limit on n elig 002765 aa 3 00026 2361 11 2869 ldq bb|wcte.maxel,1 002766 0a 002773 6000 00 2870 tze lr_e_ok OK if no limit. 002767 aa 3 00027 1161 11 2871 cmpq bb|wcte.nel,1 Else compare to limit. 002770 0a 002773 6054 00 2872 tpnz lr_e_ok Below limit. 002771 aa 6 00167 5541 00 2873 stc1 temp2 Flag work class restriction 002772 0a 002757 7100 00 2874 tra lr_loop And go deeped 002773 2875 lr_e_ok: 002773 aa 3 00416 2351 00 2876 lda bb|max_batch_elig Limit on batch? 002774 0a 003136 6000 00 2877 tze test_award No. 002775 aa 3 00021 7211 12 2878 lxl1 bb|apte.flags2,2 Yes. 002776 aa 000010 3010 03 2879 canx1 apte.batch,du Is this process batch? 002777 0a 003136 6000 00 2880 tze test_award No, limit doesn't matter. 003000 aa 3 00417 1151 00 2881 cmpa bb|num_batch_elig Yes, check limit. 003001 0a 003136 6054 00 2882 tpnz test_award OK, within limit. 003002 aa 6 00167 5541 00 2883 stc1 temp2 Flag work class restriction 003003 0a 002757 7100 00 2884 tra lr_loop Go deeper. 2885 003004 2886 lr_wcq: 2887 " 2888 "Nobody found in interactive/virtual_deadline queue. We must 2889 "update the credits in each workclass before scanning the workclass queues. 2890 " 003004 aa 3 00420 2341 00 2891 szn bb|deadline_mode 003005 0a 003010 6000 00 2892 tze sc_loop not dmode => scatter credits 003006 aa 3 00402 4501 00 2893 stz bb|credit_bank clear cell prvents ovfl 003007 0a 003040 7100 00 2894 tra sc_done 2895 003010 2896 sc_loop: 003010 aa 3 00402 2351 00 2897 lda bb|credit_bank Are there credits to scatter? 003011 0a 003040 6040 00 2898 tmi sc_done No. 003012 aa 3 00421 4501 00 2899 stz bb|credits_scattered None scattered yet. 003013 aa 3 00344 2361 00 2900 ldq bb|telast Credits always < 4*telast 003014 aa 000002 7360 00 2901 qls 2 003015 aa 3 00404 2211 00 2902 ldx1 bb|min_wct_index Start at first work class. 2903 003016 2904 sc_wc_loop: 003016 aa 3 00024 2341 11 2905 szn bb|wcte.realtime,1 Is this wc getting some percent? 003017 0a 003023 6010 00 2906 tnz sc_check No, go to next wc. after clipping 003020 aa 3 00003 2351 11 2907 lda bb|wcte.minf,1 Yes, give credits. 003021 aa 3 00002 0551 11 2908 asa bb|wcte.credits,1 003022 aa 3 00421 0551 00 2909 asa bb|credits_scattered Note we scattered some. 003023 2910 sc_check: 003023 aa 3 00002 2341 11 2911 szn bb|wcte.credits,1 don't let credits go negative 003024 0a 003026 6050 00 2912 tpl *+2 003025 aa 3 00002 4501 11 2913 stz bb|wcte.credits,1 003026 aa 3 00002 1161 11 2914 cmpq bb|wcte.credits,1 Make sure credits < 4*telast 003027 0a 003031 6050 00 2915 tpl sc_next OK. 003030 aa 3 00002 7561 11 2916 stq bb|wcte.credits,1 CREDIT SINK 003031 2917 sc_next: 003031 aa 000070 6210 11 2918 eax1 size_of_wct_entry,1 Move to next work class. 003032 aa 3 00405 1011 00 2919 cmpx1 bb|max_wct_index Done all? 003033 0a 003016 6044 00 2920 tmoz sc_wc_loop more wc to do. 2921 003034 aa 3 00421 3351 00 2922 lca bb|credits_scattered Did we scatter any? 003035 0a 003040 6000 00 2923 tze sc_done No. Don't loop back! 003036 aa 3 00402 0551 00 2924 asa bb|credit_bank Yes. Bookkeep and 003037 0a 003010 7100 00 2925 tra sc_loop loop back to scatter more. 003040 2926 sc_done: 2927 2928 " 2929 " Now scan the workclass queues to find the most worthy workclass 2930 " which has a non-empty queue. In this process, governing credits 2931 " are distributed to governed work classes. Any governed work 2932 " class whose governing credits are negative will not be 2933 " considered for eligibility. 2934 " 2935 003040 aa 777777 2220 03 2936 ldx2 -1,du Preset to none-found. 003041 aa 3 00404 2211 00 2937 ldx1 bb|min_wct_index Start at first work class. 003042 aa 400000 2350 03 2938 lda =o400000,du Anybody can beat this. 003043 aa 3 00413 7551 00 2939 sta bb|best_credit_value 2940 003044 aa 777777 6200 00 2941 eax0 -1 preset to do-not-pass-out-gv-credits 003045 aa 3 00451 2341 00 2942 szn bb|governing_credit_bank 003046 0a 003060 6040 00 2943 tmi fne_loop none to pass out 003047 aa 3 00451 2351 00 2944 lda bb|governing_credit_bank pass out, decrementing bank 003050 aa 3 00412 1751 00 2945 sba bb|credits_per_scatter 003051 aa 000001 7310 00 2946 ars 1 allow to grow to 2*credits_per_scatter 003052 aa 3 00412 1151 00 2947 cmpa bb|credits_per_scatter limit growth in the bank 003053 0a 003055 6044 00 2948 tmoz *+2 003054 aa 3 00412 2351 00 2949 lda bb|credits_per_scatter (must be S&L) 003055 aa 000001 7350 00 2950 als 1 003056 aa 3 00451 7551 00 2951 sta bb|governing_credit_bank 003057 aa 000000 6200 00 2952 eax0 0 pass-out-gv-credits 2953 003060 2954 fne_loop: 003060 aa 3 00001 2351 11 2955 lda bb|wcte.governed_word,1 is this W.C. governed 003061 aa 040000 3150 03 2956 cana wcte.governed,du 003062 0a 003105 6000 00 2957 tze fne_not_governed No 003063 aa 000000 6200 10 2958 eax0 0,0 governing credits to pass out 003064 0a 003067 6040 00 2959 tmi fne_no_gv_credits no 003065 aa 3 00062 2351 11 2960 lda bb|wcte.maxf,1 credits for this W.C. per scatter 003066 aa 3 00063 0551 11 2961 asa bb|wcte.governing_credits,1 003067 2962 fne_no_gv_credits: 003067 aa 3 00463 2351 00 2963 lda bb|gv_integration limit of abs value of gv credits 003070 aa 3 00063 1151 11 2964 cmpa bb|wcte.governing_credits,1 003071 0a 003073 6050 00 2965 tpl *+2 003072 aa 3 00063 7551 11 2966 sta bb|wcte.governing_credits,1 003073 aa 3 00063 2341 11 2967 szn bb|wcte.governing_credits,1 is this W.C. in the hole? 003074 0a 003105 6050 00 2968 tpl fne_not_governed no - can consider for eligibility 003075 aa 000000 5310 00 2969 neg 0 areg = -limit ov abs value of gv credits 003076 aa 3 00063 1151 11 2970 cmpa bb|wcte.governing_credits,1 there's a limit on the hole 003077 0a 003101 6040 00 2971 tmi *+2 negative but not bankrupt 003100 aa 3 00063 7551 11 2972 sta bb|wcte.governing_credits,1 minimum value 003101 aa 3 00000 1011 11 2973 cmpx1 bb|wcte.thread,1 Th to self => none ready 003102 0a 003125 6000 00 2974 tze fne_try_next 003103 aa 6 00167 5541 00 2975 stc1 temp2 flag work class restriction 003104 0a 003125 7100 00 2976 tra fne_try_next 2977 003105 2978 fne_not_governed: 003105 aa 3 00000 1011 11 2979 cmpx1 bb|wcte.thread,1 Th to self => none rdy. 003106 0a 003125 6000 00 2980 tze fne_try_next 003107 aa 3 00002 2341 11 2981 szn bb|wcte.credits,1 Credits never left negative 003110 0a 003112 6050 00 2982 tpl *+2 003111 aa 3 00002 4501 11 2983 stz bb|wcte.credits,1 CREDIT SOURCE 2984 003112 aa 3 00000 2231 11 2985 ldx3 bb|wcte.thread,1 003113 aa 3 00344 3351 00 2986 lca bb|telast maximize credits - min (ti, 2*telast) 003114 aa 000001 7350 00 2987 als 1 003115 aa 3 00006 4051 13 2988 cmg bb|apte.ti,3 deal with abs values 003116 0a 003120 6040 00 2989 tmi *+2 003117 aa 3 00006 3351 13 2990 lca bb|apte.ti,3 2991 003120 aa 3 00002 0751 11 2992 ada bb|wcte.credits,1 003121 aa 3 00413 1151 00 2993 cmpa bb|best_credit_value See if this is best sofar. 003122 0a 003125 6040 00 2994 tmi fne_try_next Wasn't, move to next. 2995 003123 aa 3 00413 7551 00 2996 sta bb|best_credit_value Was, remember value. 003124 aa 000000 6220 13 2997 eax2 0,3 remember the champ 2998 003125 2999 fne_try_next: 003125 aa 000070 6210 11 3000 eax1 size_of_wct_entry,1 Move to next work class. 003126 aa 3 00405 1011 00 3001 cmpx1 bb|max_wct_index If any. 003127 0a 003060 6044 00 3002 tmoz fne_loop 003130 aa 000000 6220 12 3003 eax2 0,2 Neg=> nobody 003131 0a 003136 6050 00 3004 tpl test_award See if process fits in core. 003132 0a 003133 7100 00 3005 tra recheck_real Continue looking for candidate. 3006 3007 " 3008 "Come here if no processes found in int/vird queue or in 3009 "the workclass queues. We determine whether any process is present in the 3010 "realtime queue. If so such a process will be awarded eligibility subject 3011 "to the usual constraints even though its deadline has not 3012 "arrived yet. 3013 " 003133 3014 recheck_real: 003133 aa 3 00314 2221 00 3015 ldx2 bb|realtime_q REALTIME AWARD? 003134 aa 3 00001 2341 12 3016 szn bb|apte.sentinel,2 003135 0a 003237 6040 00 3017 tmi fne_fail 3018 " 3019 "Arrive here with x2 pointing at a candidate for eligibility. 3020 "A few more checks are made to determine if eligibility will 3021 "actually be awarded. 3022 " 003136 3023 test_award: 003136 aa 3 00001 2351 12 3024 lda bb|apte.flags,2 003137 aa 000020 3150 03 3025 cana apte.dbr_loaded,du 003140 0a 003143 6000 00 3026 tze *+3 dbr not loaded ok to award elig 003141 4a 4 00204 1021 20 3027 cmpx2 pds$apt_ptr+1 003142 0a 003237 6010 00 3028 tnz fne_fail dbr loaded ok only if this cpu 3029 003143 aa 3 00324 7201 00 3030 lxl0 bb|n_eligible get number of eligible processes 003144 aa 3 00356 1001 00 3031 cmpx0 bb|min_eligible Below min eligible? 003145 0a 003156 6040 00 3032 tmi award Yes, make eligible. 003146 aa 3 00325 1001 00 3033 cmpx0 bb|max_eligible At max eligible? 003147 0a 003237 6050 00 3034 tpl fne_fail Yes, go idle. 003150 aa 3 00422 1001 00 3035 cmpx0 bb|max_max_eligible 003151 0a 003237 6050 00 3036 tpl fne_fail 003152 aa 3 00245 2361 00 3037 ldq bb|ws_sum See if it fits. 003153 aa 3 00032 0761 12 3038 adq bb|apte.ws_size,2 003154 4a 4 00264 1161 20 3039 cmpq sst$nused 003155 0a 003237 6050 00 3040 tpl fne_fail no, go idle. 3041 " 3042 "Here to award eligibility to x2-> apte. Arrive here 3043 "either by falling through above code or directly from getwork 3044 "if a process 's realtime deadline has arrived. 3045 " 003156 3046 award: 003156 aa 3 00324 0541 00 3047 aos bb|n_eligible increment count of eligible s 003157 aa 3 00021 7211 12 3048 lxl1 bb|apte.flags2,2 DIGS 003160 aa 000010 3010 03 3049 canx1 apte.batch,du 003161 0a 003163 6000 00 3050 tze *+2 003162 aa 3 00417 0541 00 3051 aos bb|num_batch_elig 003163 aa 3 00021 2211 12 3052 ldx1 bb|apte.wct_index,2 003164 aa 3 00027 0541 11 3053 aos bb|wcte.nel,1 and per wc count 003165 aa 004000 2200 03 3054 ldx0 apte.eligible,du 003166 aa 3 00001 6401 12 3055 ersx0 bb|apte.flags,2 003167 aa 3 00032 2361 12 3056 ldq bb|apte.ws_size,2 ws_sum = ws_sum + ws_size,2 003170 aa 777777 3760 07 3057 anq -1,dl Leave only ws estimate 003171 aa 3 00245 0561 00 3058 asq bb|ws_sum 3059 " 3060 "put the newly elig process in the proper place in elig queue 3061 "note bp is fudged for sort subr's, then reset 3062 " 003172 aa 3 00000 3521 12 3063 eppbp bb|0,2 Set bp to process of interest 003173 0a 000770 7070 00 3064 tsx7 unthread Remove from ready queue 003174 aa 3 00352 6211 00 3065 eax1 bb|eligible_q_tail Assume put at eltail. 3066 003175 aa 3 00001 2201 12 3067 ldx0 bb|apte.flags,2 003176 aa 000100 3000 03 3068 canx0 apte.realtime_burst,du Normal process? 003177 0a 003204 6000 00 3069 tze put_in_el_q Yes, put at tail of el queue. 003200 aa 000101 3200 03 3070 lcx0 apte.realtime_burst+1,du Reset flag 003201 aa 3 00001 3401 12 3071 ansx0 bb|apte.flags,2 3072 003202 aa 3 00350 2211 00 3073 ldx1 bb|eligible_q_head Could sort by deadline here 003203 aa 6 00205 4501 00 3074 stz depth Reset depth. 003204 3075 put_in_el_q: 003204 0a 002620 7070 00 3076 tsx7 thread_him_in 003205 aa 000001 2360 07 3077 ldq AWARD_ELIGIBILITY,dl 003206 4a 4 00050 7071 20 3078 tsx7 meter_response_time$tc response transition 003207 4a 4 00152 3521 20 3079 eppbp pds$apt_ptr,* Restore bp -> old_user 003210 0a 001360 7060 00 3080 tsx6 LOCK_x2 Claim this apte now 003211 0a 001335 7060 00 3081 tsx6 WRITE_TO_READ shift lock to read before return 3082 003212 aa 3 00021 2211 12 3083 ldx1 bb|apte.wct_index,2 Determine work class. 003213 aa 3 00033 2351 12 3084 lda bb|apte.temax,2 Decrement wc credits in advance 003214 0a 003216 6010 00 3085 tnz *+2 003215 aa 3 00452 2351 00 3086 lda bb|process_initial_quantum Must be first time thru 003216 aa 3 00062 7551 12 3087 sta bb|apte.saved_temax,2 Save to compensate later 003217 aa 000000 5310 00 3088 neg 003220 aa 3 00002 0551 11 3089 asa bb|wcte.credits,1 003221 aa 3 00001 2361 11 3090 ldq bb|wcte.governed_word,1 Is wc governed 003222 aa 040000 3160 03 3091 canq wcte.governed,du 003223 0a 003225 6000 00 3092 tze *+2 No 003224 aa 3 00063 0551 11 3093 asa bb|wcte.governing_credits,1 003225 aa 3 00005 0541 11 3094 aos bb|wcte.eligibilities,1 Meter elig awarded. 3095 003226 aa 3 00005 2361 12 3096 ldq bb|apte.ts,2 see if first time since wakeup 003227 aa 3 00006 0761 12 3097 adq bb|apte.ti,2 continue with check ... 003230 0a 003236 6010 00 3098 tnz no_response non-zero means not first time 3099 read_clock " meter response time 003231 4a 4 00104 6331 20 rccl sys_info$clock_,* 003232 aa 3 00022 1771 12 3100 sbaq bb|apte.state_change_time,2 get time this process was ready 003233 aa 3 00044 0771 00 3101 adaq bb|response_time add in to total meter 003234 aa 3 00044 7571 00 3102 staq bb|response_time 003235 aa 3 00050 0541 00 3103 aos bb|response_count count number of times we added in 003236 3104 no_response: 003236 0a 003333 7100 00 3105 tra gw_ck_suspend Success return from fne 3106 003237 3107 fne_fail: 003237 0a 001335 7060 00 3108 tsx6 WRITE_TO_READ 003240 0a 004025 7100 00 3109 tra find_idle Failure return from fne 3110 3111 3112 " 3113 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 3114 " 3115 " GETWORK -- procedure which is invoked when the running 3116 " process is ready to give the processor to another process. 3117 " When it is invoked bb->bp must point into tc_data. 3118 " 3119 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 3120 003241 3121 getwork: 003241 4a 4 00164 5541 20 3122 stc1 pds$pxss_args_invalid Signal overwriting of temporaries. 003242 4a 4 00266 4501 20 3123 stz pds$post_purged reset flag indicating purge is done 3124 read_clock " meter getwork time 003243 4a 4 00104 6331 20 rccl sys_info$clock_,* 003244 aa 6 00152 7571 00 3125 staq getwork_temp save for user being switched to 003245 aa 2 00013 4471 00 3126 sxl7 bp|apte.savex7 save x7 in APT entry 003246 aa 3 00006 0541 00 3127 aos bb|depth_count 003247 aa 040401 3200 03 3128 lcx0 apte.pre_empted+apte.pre_empt_pending+1,du turn off pre-empted flags 003250 aa 2 00001 3401 00 3129 ansx0 bp|apte.flags 3130 003251 3131 gw_retry: 3132 " 3133 " The following code, checked each time through the traffic controller, checks to see 3134 " if the running processor is to be deleted. If so, it branches to the 3135 " appropriate code which ultimately DISes. 3136 " 1. Force idle process to run on this cpu. 3137 " 2. Rather than returning from getwork, transfer to DIS-ing code. 3138 " 003251 4a 4 00124 7211 20 3139 lxl1 prds$processor_tag get our own processor tag 003252 4a 4 00270 2351 20 3140 lda scs$processor_data,1 get our control word from SCS 003253 aa 020000 3150 03 3141 cana processor_data.delete_cpu,du 003254 0a 004024 6010 00 3142 tnz find_idle_for_delete 3143 " 3144 " End of reconfiguration tests 3145 " 3146 read_clock " get time in AQ for several tests 003255 4a 4 00104 6331 20 rccl sys_info$clock_,* 3147 003256 aa 3 00362 1171 00 3148 cmpaq bb|next_alarm_time go boost priority if time 003257 0a 004031 6050 00 3149 tpl alarm_timer .. 3150 003260 aa 3 00146 1171 00 3151 cmpaq bb|nto_check_time go check notify_timeouts if time 003261 0a 003637 6050 00 3152 tpl nto_check 3153 003262 aa 3 00314 2221 00 3154 ldx2 bb|realtime_q maybe realtime award? 003263 aa 3 00001 2341 12 3155 szn bb|apte.sentinel,2 003264 0a 003310 6040 00 3156 tmi gw_lock_init_loop nobody 003265 aa 3 00034 1171 12 3157 cmpaq bb|apte.deadline,2 003266 0a 003310 6040 00 3158 tmi gw_lock_init_loop Not yet 3159 003267 0a 001302 7060 00 3160 tsx6 WRITE_LOCK probable realtime award 003270 aa 3 00324 7201 00 3161 lxl0 bb|n_eligible 003271 aa 3 00422 1001 00 3162 cmpx0 bb|max_max_eligible 003272 0a 003306 6050 00 3163 tpl no_real 003273 aa 3 00314 2221 00 3164 ldx2 bb|realtime_q REALTIME AWARD? 003274 aa 3 00001 2341 12 3165 szn bb|apte.sentinel,2 003275 0a 003306 6040 00 3166 tmi no_real 3167 read_clock 003276 4a 4 00104 6331 20 rccl sys_info$clock_,* 003277 aa 3 00034 1171 12 3168 cmpaq bb|apte.deadline,2 003300 0a 003306 6040 00 3169 tmi no_real Delay him for now. 3170 003301 aa 3 00001 2351 12 3171 lda bb|apte.flags,2 003302 aa 000020 3150 03 3172 cana apte.dbr_loaded,du 003303 0a 003156 6000 00 3173 tze award dbr not loaded ok to award elig 003304 4a 4 00204 1021 20 3174 cmpx2 pds$apt_ptr+1 003305 0a 003156 6000 00 3175 tze award dbr loaded ok only if this cpu 003306 3176 no_real: 003306 0a 001335 7060 00 3177 tsx6 WRITE_TO_READ cant make realtime elig so shift to readlock 003307 0a 003311 7100 00 3178 tra gw_init_loop 3179 003310 3180 gw_lock_init_loop: 003310 0a 001256 7060 00 3181 tsx6 READ_LOCK 003311 3182 gw_init_loop: 003311 aa 3 00145 2351 00 3183 lda bb|gp_done_count If gp occur we must not idle 003312 aa 6 00166 7551 00 3184 sta temp1 So we remember the count 003313 aa 3 00350 2351 00 3185 lda bb|eligible_q_head ELIGIBLE to RUN? 003314 aa 777777 2210 03 3186 ldx1 -1,du keep depth in X1 3187 003315 3188 gw_loop: 003315 aa 3 00000 2371 01 3189 ldaq bb|apte.thread,au go to next entry via AU 003316 aa 000001 6210 11 3190 eax1 1,1 increase depth 003317 0a 003321 7100 26 3191 tra gw_tv,ql* dispatch on state in QL 3192 003320 0a 002752 0000 00 3193 arg find_next_eligible state was -1 ie sentinel 003321 0a 002447 0000 00 3194 gw_tv: arg DRL_empty_apte found empty 003322 0a 003315 0000 00 3195 arg gw_loop state was running so go deeper 003323 0a 003330 0000 00 3196 arg gw_found_ready 003324 0a 003315 0000 00 3197 arg gw_loop state was waiting so go deeper 003325 0a 002450 0000 00 3198 arg DRL_blocked_apte found blocked 003326 0a 002451 0000 00 3199 arg DRL_stopped_apte found stopped 003327 0a 003315 0000 00 3200 arg gw_loop found ptlocking 3201 3202 3203 003330 3204 gw_found_ready: 003330 aa 3 00000 2221 05 3205 ldx2 bb|apte.thread,al extract ready's addr from prev's fp 003331 0a 001360 7060 00 3206 tsx6 LOCK_x2 gw must make sure x2 is ready etc 003332 aa 6 00205 4411 00 3207 sxl1 depth remember depth 003333 3208 gw_ck_suspend: 003333 aa 3 00000 2351 00 3209 lda bb|tc_suspend_lock see if someone wants exclusive use of the system 003334 0a 003342 6000 00 3210 tze gw_ck_ready no one does, so bypass the following checks 003335 aa 3 00003 1151 12 3211 cmpa bb|apte.processid,2 is it I that wants the system? 003336 0a 003342 6000 00 3212 tze gw_ck_ready if so, then I get to run. 003337 aa 3 00001 2351 12 3213 lda bb|apte.flags,2 otherwise, 003340 aa 002000 3150 03 3214 cana apte.idle,du is this an idle process? 003341 0a 003360 6000 00 3215 tze gw_cant_run well, if it's not, then it can't be run 003342 3216 gw_ck_ready: 003342 aa 3 00001 2351 12 3217 lda bb|apte.flags,2 pick up flags&state from locked apte 003343 aa 000000 6200 05 3218 eax0 0,al put state in X0 003344 aa 000002 1000 03 3219 cmpx0 ready,du really ready? 003345 0a 003360 6010 00 3220 tnz gw_cant_run not really ready 003346 aa 000020 3150 03 3221 cana apte.dbr_loaded,du Is dbr_loaded? 003347 0a 003352 6000 00 3222 tze gw_dbr_ok no - ok to run 003350 4a 4 00204 1021 20 3223 cmpx2 pds$apt_ptr+1 yes - Is this self? 003351 0a 003363 6010 00 3224 tnz gw_cant_run_dbrl not self - must not touch 003352 3225 gw_dbr_ok: 003352 aa 010000 3150 03 3226 cana apte.loaded,du is this process loaded? 003353 0a 003753 6000 00 3227 tze load_him no, load the process 3228 003354 aa 3 00063 2351 12 3229 lda bb|apte.procs_required,2 see whether this process 003355 aa 776000 3750 03 3230 ana apte.procs_required_mask,du can run on this CPU 003356 4a 4 00136 3751 20 3231 ana prds$processor_pattern 003357 0a 003366 6010 00 3232 tnz gw_can_run OK to run 3233 003360 3234 gw_cant_run: 003360 0a 001363 7060 00 3235 tsx6 UNLOCK_x2 unlock the apte 003361 aa 3 00000 2351 12 3236 lda bb|apte.thread,2 repair AU 003362 0a 003315 7100 00 3237 tra gw_loop go loop to next 003363 3238 gw_cant_run_dbrl: 003363 aa 000001 3350 07 3239 lca 1,dl force gw retry if we idle 003364 aa 6 00166 0551 00 3240 asa temp1 by spoiling gw_gp_window test 003365 0a 003360 7100 00 3241 tra gw_cant_run 3242 003366 3243 gw_can_run: 3244 " 3245 "We have decided to run this process, but will retry getwork if this 3246 "process is idle and if there has been a get_processor in progress while 3247 "we were chasing down the eligible queue. Strictly speaking, we should retry 3248 "even if the found process is not idle -- but who cares. Strictly speaking 3249 "we need not retry (cannot lose a get_processor) unless BOTH a process has 3250 "been readied AND a get_processor has been in progress DURING this getwork. 3251 " 003366 aa 3 00000 3521 12 3252 eppbp bb|0,2 processor addevent! 003367 aa 000001 2200 03 3253 ldx0 running,du mark as running 003370 0a 000753 7070 00 3254 tsx7 update_execution_state 3255 003371 aa 3 00144 2351 00 3256 lda bb|gp_start_count 003372 aa 6 00166 1551 00 3257 ssa temp1 temp1 is nonzero if done(t0) ^= start(t1) 3258 003373 3259 gw_can_really_run: 003373 0a 004266 7070 00 3260 tsx7 compute_virtual_clocks 003374 0a 004442 7070 00 3261 tsx7 set_newt calculate the time to run 003375 aa 6 00205 7201 00 3262 lxl0 depth set depth meter 003376 aa 000007 1000 03 3263 cmpx0 max_depth-1,du depth can't be bigger than max 003377 0a 003401 6040 00 3264 tmi *+2 003400 aa 000007 2200 03 3265 ldx0 max_depth-1,du 003401 4a 4 00236 7401 20 3266 stx0 prds$depth 003402 4a 4 00152 3501 20 3267 eppap pds$apt_ptr,* get pointer to own APT entry 003403 4a 4 00272 4501 20 3268 stz pds$number_of_pages_in_use 003404 aa 6 00150 2501 00 3269 spriap apt_ptr save pointer to last user to run 003405 aa 3 00000 3521 12 3270 eppbp bb|0,2 make bp -> our APTE 3271 3272 " " " " " " " " " " " " " " " " " " " " " 3273 " " 3274 " P R O C E S S S W I T C H I N G " 3275 " " 3276 " D O N E H E R E " 3277 " " 3278 " " " " " " " " " " " " " " " " " " " " " 003406 4a 4 00010 2201 00 3279 ldx0 lp|prds_link pick up segno of prds 003407 4a 4 00010 0201 00 3280 adlx0 lp|prds_link multiply by two (add it in again) 003410 4a 4 00274 5501 20 3281 sbar pds$base_addr_reg save base address reg for process 003411 4a 4 00276 6371 20 3282 ldt prds$last_timer_setting and load with new value 003412 3283 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+> 003412 4a 4 00300 2373 20 3284 ldaq dseg$+0,0 pick up prds SDW address 003413 aa 2 00044 2323 00 3285 ldbr bp|apte.dbr load the dbr 003414 4a 4 00300 7573 20 3286 staq dseg$+0,0 store prds SDW in new DSEG 3287 003415 4a 4 00302 2523 20 3288 spribp prds$apt_ptr mark process running this cpu 003416 4a 4 00124 2353 20 3289 lda prds$processor_tag set proc tag for 003417 aa 2 00021 6753 00 3290 era bp|apte.flags2 003420 aa 000007 3752 07 3291 ana apte.pr_tag_mask,dl 003421 0a 003423 6002 00 3292 tze *+2 003422 aa 000004 5322 00 3293 cams 4 clear cache if different cpu 003423 aa 2 00021 6553 00 3294 ersa bp|apte.flags2 003424 4a 4 00304 3517 20 3295 eppab prds$mode_reg_enabled 003425 aa 000005 3352 07 3296 lca mr.enable_hfp+1,dl is hex fp enabled for this process? 003426 4a 4 00306 3753 20 3297 ana prds$mode_reg 003427 4a 4 00310 2343 20 3298 szn pds$hfp_exponent_enabled 003430 0a 003432 6002 00 3299 tze *+2 003431 aa 000004 2752 07 3300 ora mr.enable_hfp,dl 003432 4a 4 00306 7553 20 3301 sta prds$mode_reg 003433 aa 000061 2752 07 3302 ora mr.enable_mr+mr.enable_hist,dl enable mode reg and enable hist regs 003434 aa 1 00000 7553 00 3303 sta ab|0 003435 aa 1 00000 6743 04 3304 lcpr ab|0,04 003436 3305 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 3306 003436 aa 0 00001 2351 00 3307 lda ap|apte.flags OLD USER TO BE UNLOADED? 003437 aa 004040 3150 03 3308 cana apte.eligible+apte.always_loaded,du Loadedness protected? 003440 0a 003453 6010 00 3309 tnz dont_unload yes - skip unload 003441 aa 010000 3150 03 3310 cana apte.loaded,du Currently loaded? 003442 0a 003453 6000 00 3311 tze dont_unload no - can't unload 3312 003443 aa 010001 3200 03 3313 lcx0 apte.loaded+1,du turn off loaded bit 003444 aa 0 00001 3401 00 3314 ansx0 ap|apte.flags 3315 003445 aa 0 00012 2351 00 3316 lda ap|apte.asteps pick up both asteps 003446 aa 000021 3360 07 3317 lcq ptw.wired+1,dl set bit for turnoff 003447 4a 4 00312 3561 20 3318 ansq sst$+aste_size,au unwire one 003450 4a 4 00314 3561 20 3319 ansq sst$+aste_size,al unwire other 003451 aa 000002 3360 07 3320 lcq 2,dl unwired total of two pages 003452 4a 4 00316 0561 20 3321 asq sst$wired keep pc counter up to date 003453 3322 dont_unload: 3323 " 3324 "At this point we can pass the apte.dbr_loaded bit to the new user. 3325 "This simple bit prevented anything interesting from happening 3326 "to old user from the time he left the running state until now. 3327 "Old user cannot have regained elig, except on this cpu, if it was lost. 3328 "Old user cannot be running on any other cpu. 3329 "Old user not subject to load/unload race: gw not go to load_him if dbr_loaded 3330 "If old lost elig then old not in elig_q then old not being loaded. 3331 "There is a window in the opposite direction, analogous to the gp/gw race: 3332 "Old user is HIDDEN from getwork on other cpu's. It is possible for 3333 "another cpu to go idle because this cpu has hidden old_user. This possibility 3334 "is prevented by forcing a gw_gp_window retry of getwork if 3335 "a processor is about to go idle but has seen and skipped 3336 "a ready process because that process had it dbrloaded 3337 "on another processor. 3338 " 003453 aa 000021 3200 03 3339 lcx0 apte.dbr_loaded+1,du turn off dbr_loaded bit for old user 003454 aa 0 00001 3401 00 3340 ansx0 ap|apte.flags 003455 aa 000020 2200 03 3341 ldx0 apte.dbr_loaded,du turn on dbr_loaded bit for new user 003456 aa 2 00001 2401 00 3342 orsx0 bp|apte.flags 3343 003457 0a 001354 7060 00 3344 tsx6 UNLOCK_bp gw unlocks new user 003460 0a 001324 7060 00 3345 tsx6 UNLOCK 3346 003461 3347 stop_check: 003461 aa 6 00150 3521 20 3348 eppbp apt_ptr,* OLD USER STOPPED? 003462 aa 2 00001 7201 00 3349 lxl0 bp|apte.state check for stopped 003463 aa 000005 1000 03 3350 cmpx0 stopped,du 003464 0a 005023 6000 00 3351 tze stop_check_ jump out_of_line 003465 3352 end_stop_check: 3353 003465 3354 cpu_monitor_check: 003465 aa 2 00037 2341 00 3355 szn bp|apte.cpu_monitor OLD USER MONITOR TIME? 003466 0a 005036 6010 00 3356 tnz cpu_monitor_ maybe time now 003467 3357 end_cpu_monitor: 3358 003467 3359 cput_check: 003467 4a 4 00152 3521 20 3360 eppbp pds$apt_ptr,* NEW USER CPUT? 003470 aa 2 00001 2351 00 3361 lda bp|apte.flags see if idle 003471 aa 002000 3150 03 3362 cana apte.idle,du yes, skip timer check 003472 0a 003527 6010 00 3363 tnz end_cput_check .. 003473 4a 4 00320 2341 20 3364 szn pds$timer_time_out+1 see if non-zero time exists 003474 0a 003527 6000 00 3365 tze end_cput_check no, continue with getwork 003475 aa 2 00046 2371 00 3366 ldaq bp|apte.virtual_cpu_time see if process is over time limit 003476 4a 4 00154 1171 20 3367 cmpaq pds$timer_time_out 003477 0a 003527 6040 00 3368 tmi end_cput_check no, continue with getwork 003500 aa 000000 4310 07 3369 fld 0,dl zero the time out value 003501 4a 4 00154 7571 20 3370 staq pds$timer_time_out 003502 4a 4 00156 2371 20 3371 ldaq pds$timer_channel time up, check if ev chan is zero 003503 0a 003507 6010 00 3372 tnz cput_wakeup it's non-zero, need full wakeup 003504 4a 4 00322 2351 20 3373 lda sys_info$cput_mask 003505 0a 005276 7060 00 3374 tsx6 add_ips_message use stacq 003506 0a 003527 7100 00 3375 tra end_cput_check 003507 3376 cput_wakeup: 003507 aa 6 00202 4501 00 3377 stz tmp_ring set up for call to 'make_itt_message' 003510 aa 6 00203 4501 00 3378 stz dev_signal count it as dev_signal 003511 aa 6 00203 0541 00 3379 aos dev_signal count it as dev_signal 003512 0a 006402 2350 00 3380 lda =acput ev message is 'cputimer' 003513 0a 006403 2360 00 3381 ldq =aimer 003514 aa 6 00146 7571 00 3382 staq tmp_ev_message save in stack 003515 4a 4 00156 2371 20 3383 ldaq pds$timer_channel copy ev channel into stack 003516 aa 6 00144 7571 00 3384 staq tmp_ev_channel 003517 aa 2 00003 2351 00 3385 lda bp|apte.processid copy processid for make_itt_message 003520 4a 4 00066 7551 20 3386 sta pds$arg_1 003521 4a 4 00064 5541 20 3387 stc1 pds$wakeup_flag not require unique message 003522 0a 001351 7060 00 3388 tsx6 LOCK_bp cput_wakeup protects event thread 003523 0a 001512 7070 00 3389 tsx7 make_itt_message 003524 aa 200000 2350 03 3390 lda apte.wakeup_waiting,du Cheap wakeup of self 003525 aa 2 00001 2551 00 3391 orsa bp|apte.flags 003526 0a 001354 7060 00 3392 tsx6 UNLOCK_bp cput_wakeup is done 003527 3393 end_cput_check: 3394 003527 aa 2 00001 2351 00 3395 lda bp|apte.flags check stop or ips pending 003530 aa 100000 3750 03 3396 ana apte.stop_pending,du 003531 aa 2 00011 2751 00 3397 ora bp|apte.ips_message see if an ips signal must be sent 003532 0a 003535 6000 00 3398 tze no_more_pending no, skip over SMIC 003533 aa 000001 2350 07 3399 lda 1,dl set ring alarm for exit from ring 0 003534 4a 4 00210 7551 20 3400 sta pds$alarm_ring 003535 3401 no_more_pending: 3402 003535 4a 4 00274 2301 20 3403 lbar pds$base_addr_reg get base address reg for new process 003536 4a 4 00210 7745 20 3404 lra pds$alarm_ring get his ralr setting too 3405 003537 4a 4 00324 2371 20 3406 ldaq prds$last_recorded_time calc this process's CPU time 003540 aa 2 00016 1771 00 3407 sbaq bp|apte.time_used_clock fudge it for easy calc later 003541 4a 4 00254 7571 20 3408 staq pds$cpu_time save in the PDS for the process 3409 3410 read_clock " meter rest of getwork time 003542 4a 4 00104 6331 20 rccl sys_info$clock_,* 003543 aa 6 00152 1771 00 3411 sbaq getwork_temp set on entry to getwork by 'old_user' 003544 aa 3 00254 0771 00 3412 adaq bb|getwork_time keep running total 003545 aa 3 00254 7571 00 3413 staq bb|getwork_time 003546 aa 3 00256 0541 00 3414 aos bb|getwork_time+2 keep count of getworks 003547 4a 4 00152 3521 20 3415 eppbp pds$apt_ptr,* set bp to apt entry 3416 " 3417 " Still masked and wired, check for need to allocate a stack_0 3418 " and if needed do so. 3419 003550 4a 4 00326 2341 20 3420 szn pds$stack_0_sdwp,* 003551 0a 003571 6010 00 3421 tnz already_got_stack_0 Doin' fine, no problem. 3422 003552 0a 005241 7060 00 3423 tsx6 lock_stack_queue 003553 aa 1 00002 2201 00 3424 ldx0 ab|sdt.freep 3425 drlze (pxss: no available stack_0) A fine time to run out of stacks. 003554 0a 005444 6000 00 .._00040.tst: tze .._00040.drl 003555 aa 1 00000 2241 10 3426 ldx4 ab|sdte.nextp,0 Thread out. 003556 aa 1 00002 7441 00 3427 stx4 ab|sdt.freep 003557 aa 000000 6240 00 3428 eax4 0 003560 aa 1 00000 7441 10 3429 stx4 ab|sdte.nextp,0 Clean thread 003561 aa 2 00000 6221 00 3430 eax2 bp|0 003562 aa 1 00001 4421 10 3431 sxl2 ab|sdte.aptep,0 For debugging. 003563 aa 1 00002 2371 10 3432 ldaq ab|sdte.sdw,0 003564 4a 4 00326 7571 20 3433 staq pds$stack_0_sdwp,* Store the SDW in DSEG. 003565 aa 000004 5320 00 3434 cams 4 Clear cache. Think about it. 3435 "cams 0 not needed, did ldbr since last stack_0. 003566 0a 005255 7060 00 3436 tsx6 unlock_stack_queue 003567 aa 000004 2350 03 3437 lda apte.shared_stack_0,du Flag stack to be returned 003570 aa 2 00001 2551 00 3438 orsa bp|apte.flags 003571 3439 already_got_stack_0: 3440 003571 aa 2 00001 2351 00 3441 lda bp|apte.flags Load flags once again 003572 aa 002001 3150 03 3442 cana apte.firstsw+apte.idle,du First time & ^idle ? 003573 0a 003613 6000 00 3443 tze stproc is first time. do special return 3444 " 003574 aa 002000 3150 03 3445 cana apte.idle,du idle process? 003575 0a 003611 6000 00 3446 tze no_idle_no_del if not, don't do next check 003576 4a 4 00124 7211 20 3447 lxl1 prds$processor_tag get CPU tag 003577 4a 4 00270 2351 20 3448 lda scs$processor_data,1 look at data for this CPU 003600 aa 020000 3150 03 3449 cana processor_data.delete_cpu,du to be deleted? 003601 0a 005104 6010 00 3450 tnz delete_me if so, stop it now 003602 aa 6 00166 2341 00 3451 szn temp1 before going idle, see if there was interference 003603 0a 003611 6000 00 3452 tze no_idle_no_del was none, ok to idle 003604 aa 000001 2350 07 3453 lda 1,dl 003605 4a 4 00210 7551 20 3454 sta pds$alarm_ring set ring_alarm to remind idle to come back 003606 aa 000400 2350 03 3455 lda apte.pre_empt_pending,du 003607 aa 2 00001 2551 00 3456 orsa bp|apte.flags 003610 aa 3 00141 0541 00 3457 aos bb|gw_gp_window_count meter these 003611 3458 no_idle_no_del: 3459 003611 aa 2 00013 7271 00 3460 lxl7 bp|apte.savex7 restore x7 for return 003612 aa 000000 7100 17 3461 tra 0,7 3462 003613 aa 000001 2350 03 3463 stproc: lda apte.firstsw,du turn ON flag saying we're initialized 003614 aa 2 00001 2551 00 3464 orsa bp|apte.flags 003615 aa 3 00452 2351 00 3465 lda bb|process_initial_quantum Give special quantum first time 003616 aa 2 00033 7551 00 3466 sta bp|apte.temax put initial quantum in APTE 3467 " 3468 "Unlock,switch stacks, restore mask, and perform special first time call. 3469 " 003617 4a 4 00200 3721 20 3470 eppsp pds$last_sp,* 003620 aa 7 00022 2371 00 3471 ldaq sb|stack_header.stack_begin_ptr Truncate PRDS. 003621 aa 7 00024 7571 00 3472 staq sb|stack_header.stack_end_ptr 003622 aa 6 00000 3731 00 3473 epbpsb sp|0 003623 aa 2 00003 2351 00 3474 lda bp|apte.processid 003624 4a 4 00330 1151 20 3475 cmpa tc_data$initializer_id Is this the initializer? 003625 0a 003630 6000 00 3476 tze dont_reset_stack_0 003626 aa 7 00022 2371 00 3477 ldaq sb|stack_header.stack_begin_ptr Clean out any old crud 003627 aa 7 00024 7571 00 3478 staq sb|stack_header.stack_end_ptr 003630 3479 dont_reset_stack_0: 003630 3480 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+> 003630 4a 4 00122 2373 20 3481 ldaq scs$open_level 003631 4a 4 00124 7213 20 3482 lxl1 prds$processor_tag 003632 4a 4 00126 7613 20 3483 lprpab scs$mask_ptr,1 003633 4a 4 00130 7163 20 3484 xec scs$set_mask,1 003634 3485 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 003634 0a 006404 3500 20 3486 eppap =its(-1,1),* 003635 4a 4 00332 3521 20 3487 eppbp pds$initial_procedure 003636 aa 2 00000 6101 00 3488 rtcd bp|0 3489 3490 3491 3492 3493 " 3494 " 3495 " NTO_CHECK -- This code checks for lost notifies. 3496 " Salient features include: 3497 " 1. It is executed every nto_delta microsec. 3498 " 2. It is entered with no locks set. 3499 " 3. It looks for processes unchanged for > nto_delta. 3500 " 4. If one is found it is notified, metered, and johndeaned. 3501 " 5. If none, the time of the next check is set. 3502 " 6. It returns to gw_retry with no locks set. 003637 3503 nto_check: 003637 0a 001256 7060 00 3504 tsx6 READ_LOCK 003640 aa 3 00350 6221 00 3505 eax2 bb|eligible_q_head 003641 aa 3 00000 2221 12 3506 nto_loop: ldx2 bb|apte.thread,2 step to next process 003642 aa 3 00001 2341 12 3507 szn bb|apte.sentinel,2 003643 0a 003733 6040 00 3508 tmi nto_reset_time have done them all, all done 003644 0a 001360 7060 00 3509 tsx6 LOCK_x2 no need for speed here 003645 aa 3 00001 7201 12 3510 lxl0 bb|apte.state,2 only (ptl)waiters get nto'd 003646 aa 000003 1000 03 3511 cmpx0 waiting,du waiter? 003647 0a 003657 6000 00 3512 tze nto_wait this one is waiting now 003650 aa 000006 1000 03 3513 cmpx0 ptlocking,du waiter on PTL? 003651 0a 003655 6010 00 3514 tnz nto_not no 003652 0a 006406 2350 00 3515 lda =aptlw yes, fake the event 003653 aa 3 00020 7551 12 3516 sta bb|apte.wait_event,2 003654 0a 003657 7100 00 3517 tra nto_wait now go notify 3518 003655 0a 001363 7060 00 3519 nto_not: tsx6 UNLOCK_x2 not waiting 003656 0a 003641 7100 00 3520 tra nto_loop so go to next 3521 003657 aa 3 00022 2371 12 3522 nto_wait: ldaq bb|apte.state_change_time,2 003660 aa 3 00150 0331 00 3523 adl bb|nto_delta 003661 aa 6 00152 1171 00 3524 cmpaq getwork_temp State change more than nto_delta ago? 003662 0a 003655 6050 00 3525 tpl nto_not No, go to next 3526 003663 aa 3 00151 0541 00 3527 aos bb|nto_count meter notify timeouts 003664 aa 3 00020 0341 12 3528 ldac bb|apte.wait_event,2 Yes, reset state 003665 aa 6 00207 7551 00 3529 sta tmp_event 003666 aa 3 00153 7551 00 3530 sta bb|nto_event 003667 aa 3 00003 2351 12 3531 lda bb|apte.processid,2 003670 aa 6 00166 7551 00 3532 sta temp1 003671 aa 000003 3200 03 3533 lcx0 apte.page_wait_flag+1,du 003672 aa 3 00001 3401 12 3534 ansx0 bb|apte.flags,2 003673 aa 000002 2200 03 3535 ldx0 ready,du 003674 aa 3 00000 3521 12 3536 eppbp bb|0,2 003675 0a 000753 7070 00 3537 tsx7 update_execution_state 003676 0a 001363 7060 00 3538 tsx6 UNLOCK_x2 003677 0a 002676 7070 00 3539 tsx7 get_processor 003700 aa 3 00065 2341 00 3540 szn bb|time_out_severity negative means dont print 003701 0a 003641 6040 00 3541 tmi nto_loop can continue looping 003702 0a 001324 7060 00 3542 tsx6 UNLOCK don't call out with lock set 3543 " 3544 " call syserr (tc_data|time_out_severity,"pxss: notify time out: event=^w, pid=^w", 3545 " apte.wait_event, apte.processid) 3546 " 003703 aa 3 00065 3715 00 3547 epplb bb|time_out_severity 003704 aa 6 00110 6515 00 3548 sprilb arg+2 003705 0a 003741 3714 00 3549 epplb nto_message 003706 aa 6 00112 6515 00 3550 sprilb arg+4 003707 aa 6 00207 3715 00 3551 epplb tmp_event 003710 aa 6 00114 6515 00 3552 sprilb arg+6 003711 aa 6 00166 3715 00 3553 epplb temp1 003712 aa 6 00116 6515 00 3554 sprilb arg+8 003713 0a 002101 3714 00 3555 epplb fixed_desc 003714 aa 6 00120 6515 00 3556 sprilb arg+10 003715 aa 6 00124 6515 00 3557 sprilb arg+14 003716 aa 6 00126 6515 00 3558 sprilb arg+16 003717 0a 003740 3714 00 3559 epplb nto_message_desc 003720 aa 6 00122 6515 00 3560 sprilb arg+12 003721 0a 006410 2370 00 3561 ldaq =v18/8,18/4,18/8,18/0 003722 aa 6 00106 7571 00 3562 staq arg 003723 aa 6 00000 2541 00 3563 call syserr$syserr(arg) 003724 aa 6 00106 3501 00 003725 4a 4 00014 3521 20 003726 aa 6 00040 7531 00 003727 aa 7 00036 6701 20 003730 aa 6 00000 1731 00 003731 aa 6 00040 0731 00 003732 0a 003251 7100 00 3564 tra gw_retry nto_check returns with no lock set 3565 " 3566 "Come here when scan of eligible queue has found no nto's. 003733 3567 nto_reset_time: 3568 read_clock 003733 4a 4 00104 6331 20 rccl sys_info$clock_,* 003734 aa 3 00150 0331 00 3569 adl bb|nto_delta 003735 aa 3 00146 7571 00 3570 staq bb|nto_check_time 003736 0a 001324 7060 00 3571 tsx6 UNLOCK nto_check returns with no lock set 003737 0a 003251 7100 00 3572 tra gw_retry 003740 3573 nto_message_desc: 003740 aa 524000 000047 3574 oct 524000000047 003741 3575 nto_message: 003741 aa 160 170 163 163 3576 aci "pxss: notify time out: event=^w, pid=^w" 003742 aa 072 040 156 157 003743 aa 164 151 146 171 003744 aa 040 164 151 155 003745 aa 145 040 157 165 003746 aa 164 072 040 145 003747 aa 166 145 156 164 003750 aa 075 136 167 054 003751 aa 040 160 151 144 003752 aa 075 136 167 000 3577 3578 " 003753 aa 000010 3150 03 3579 load_him: cana apte.being_loaded,du see if we must load him 003754 0a 003360 6010 00 3580 tnz gw_cant_run sombody already loading this process 3581 003755 aa 000010 2350 03 3582 lda apte.being_loaded,du turn on being loaded flag 003756 aa 3 00001 2551 12 3583 orsa bb|apte.flags,2 003757 0a 001363 7060 00 3584 tsx6 UNLOCK_x2 003760 0a 001324 7060 00 3585 tsx6 UNLOCK 003761 aa 6 00150 3501 00 3586 eppap apt_ptr 003762 aa 6 00110 2501 00 3587 spriap arg+2 003763 aa 3 00000 3501 12 3588 eppap bb|0,2 003764 aa 6 00150 2501 00 3589 spriap apt_ptr 003765 aa 004000 4310 07 3590 fld =1b24,dl 003766 aa 6 00106 7571 00 3591 staq arg 003767 aa 6 00000 2541 00 3592 call wired_plm$load(arg) load the process 003770 aa 6 00106 3501 00 003771 4a 4 00016 3521 20 003772 aa 6 00040 7531 00 003773 aa 7 00036 6701 20 003774 aa 6 00000 1731 00 003775 aa 6 00040 0731 00 003776 0a 001360 7060 00 3593 tsx6 LOCK_x2 003777 aa 3 00000 3521 12 3594 eppbp bb|0,2 set bp to this entry 004000 aa 2 00020 2351 00 3595 lda bp|apte.wait_event should we wait for the loading to complete ? 004001 0a 004007 6000 00 3596 tze loaded_test no, loading may be complete 004002 aa 000002 2350 03 3597 lda apte.page_wait_flag,du 004003 aa 2 00001 2551 00 3598 orsa bp|apte.flags 004004 aa 000003 2200 03 3599 ldx0 waiting,du -- Wait -- 004005 0a 000753 7070 00 3600 tsx7 update_execution_state 004006 0a 004020 7100 00 3601 tra load_him_done start over 3602 " must verify loading with APTE locked 004007 3603 loaded_test: 004007 aa 2 00012 2351 00 3604 lda bp|apte.asteps Get both asteps in Areg 004010 aa 000024 2360 07 3605 ldq ptw.wired+ptw.valid,dl Get mask in Qreg 004011 4a 4 00312 3761 20 3606 anq sst$+aste_size,au Require this page 004012 4a 4 00314 3761 20 3607 anq sst$+aste_size,al AND that page 004013 aa 000024 1160 07 3608 cmpq ptw.wired+ptw.valid,dl have required bits on. 004014 0a 004020 6010 00 3609 tnz load_him_done Didn't, must retry getwork. 004015 aa 010000 2350 03 3610 lda apte.loaded,du turn loaded flag on 004016 aa 3 00001 2551 12 3611 orsa bb|apte.flags,2 004017 aa 3 00007 0541 00 3612 aos bb|loadings 004020 3613 load_him_done: 004020 aa 000011 3200 03 3614 lcx0 apte.being_loaded+1,du Turn off being loading bit 004021 aa 2 00001 3401 00 3615 ansx0 bp|apte.flags 004022 0a 001363 7060 00 3616 tsx6 UNLOCK_x2 004023 0a 003251 7100 00 3617 tra gw_retry load_him retries getwork from the top 3618 004024 3619 find_idle_for_delete: 004024 0a 001256 7060 00 3620 tsx6 READ_LOCK 004025 3621 find_idle: 004025 4a 4 00334 2221 20 3622 ldx2 prds$idle_ptr+1 004026 0a 001360 7060 00 3623 tsx6 LOCK_x2 004027 aa 3 00004 4501 12 3624 stz bb|apte.te,2 zero idle's te 004030 0a 003366 7100 00 3625 tra gw_can_run 3626 " 3627 " This section of code is invoked when a simulated alarm 3628 " clock interrupt is detected. Metering is kept of the lag of 3629 " the simulated timer from when it should really gone off. 3630 004031 3631 alarm_timer: 004031 0a 001302 7060 00 3632 tsx6 WRITE_LOCK alarm timer 004032 3633 at_retry: 3634 read_clock 004032 4a 4 00104 6331 20 rccl sys_info$clock_,* 004033 aa 3 00362 1771 00 3635 sbaq bb|next_alarm_time compute lag in simulated timer 004034 0a 004037 6054 00 3636 tpnz at_now 004035 0a 001324 7060 00 3637 tsx6 UNLOCK false alarm 004036 0a 003251 7100 00 3638 tra gw_retry 3639 004037 3640 at_now: 004037 aa 3 00276 0541 00 3641 aos bb|clock_simulations count number of clock simulations 004040 aa 3 00277 1161 00 3642 cmpq bb|max_clock_lag keep maximum lag 004041 0a 004043 6040 00 3643 tmi *+2 .. 004042 aa 3 00277 7561 00 3644 stq bb|max_clock_lag .. 004043 aa 3 00274 0771 00 3645 adaq bb|total_clock_lag add to total 004044 aa 3 00274 7571 00 3646 staq bb|total_clock_lag .. 3647 read_clock " remember clock time 004045 4a 4 00104 6331 20 rccl sys_info$clock_,* 004046 aa 3 00362 7571 00 3648 staq bb|next_alarm_time .. 3649 3650 " The following code checks to see if a process timer should have 3651 " gone off. 3652 004047 3653 next_timer: 004047 aa 3 00357 2221 00 3654 ldx2 bb|alarm_timer_list get next process on timer list 004050 0a 004113 6000 00 3655 tze priority_scheduling no one is on list 004051 aa 3 00000 3521 12 3656 eppbp bb|0,2 set APT pointer 004052 aa 2 00026 2371 00 3657 ldaq bp|apte.alarm_time when should process timer go off 004053 aa 777777 3750 07 3658 ana =o777777,dl mask off thread 004054 aa 3 00362 1171 00 3659 cmpaq bb|next_alarm_time has time passed 004055 0a 004113 6050 00 3660 tpl priority_scheduling if not then we are done here 004056 aa 2 00026 2231 00 3661 ldx3 bp|apte.alarm_time unthread from list 004057 aa 3 00357 7431 00 3662 stx3 bb|alarm_timer_list 004060 aa 000000 4310 07 3663 fld 0,dl zero out time 004061 aa 2 00026 7571 00 3664 staq bp|apte.alarm_time .. 004062 aa 2 00001 7231 00 3665 lxl3 bp|apte.state make sure process is alive 004063 aa 000005 1030 03 3666 cmpx3 stopped,du .. 004064 0a 004047 6000 00 3667 tze next_timer if process dead, forget it 004065 0a 001351 7060 00 3668 tsx6 LOCK_bp wakup alrm 004066 aa 2 00024 2371 00 3669 ldaq bp|apte.alarm_event get event channel 004067 0a 004074 6010 00 3670 tnz wakeup_alarm if channel then go wakeup 004070 4a 4 00336 2351 20 3671 lda sys_info$alrm_mask 004071 0a 005276 7060 00 3672 tsx6 add_ips_message 004072 0a 001474 7070 00 3673 tsx7 send_connect send connect if running 004073 0a 004110 7100 00 3674 tra at_wake 004074 3675 wakeup_alarm: 004074 aa 6 00202 4501 00 3676 stz tmp_ring send wakeup 004075 aa 6 00203 4501 00 3677 stz dev_signal count it as dev_signal 004076 aa 6 00203 0541 00 3678 aos dev_signal count it as dev_signal 004077 0a 006412 2350 00 3679 lda =aseta event message is setalarm 004100 0a 006413 2360 00 3680 ldq =alarm .. 004101 aa 6 00146 7571 00 3681 staq tmp_ev_message save in stack 004102 aa 2 00024 2371 00 3682 ldaq bp|apte.alarm_event get event channel 004103 aa 6 00144 7571 00 3683 staq tmp_ev_channel save in stack 004104 aa 2 00003 2351 00 3684 lda bp|apte.processid copy process id for ITT message 004105 4a 4 00066 7551 20 3685 sta pds$arg_1 .. 004106 4a 4 00064 5541 20 3686 stc1 pds$wakeup_flag not require unique message 004107 0a 001512 7070 00 3687 tsx7 make_itt_message create wakeup message 004110 0a 000243 7070 00 3688 at_wake: tsx7 wake wake up process 004111 0a 001354 7060 00 3689 tsx6 UNLOCK_bp wakup alrm 004112 0a 004047 7100 00 3690 tra next_timer see if more timers to go off 3691 3692 " Now we check to see if there are any priority scheduling processes 3693 " that must have their priority boosted. 3694 004113 3695 priority_scheduling: 004113 aa 3 00362 2371 00 3696 ldaq bb|next_alarm_time see if any processes need boosting 004114 aa 3 00364 1171 00 3697 cmpaq bb|priority_sched_time .. 004115 0a 004153 6040 00 3698 tmi check_ring0_timer no processes need boosting 004116 aa 3 00072 2371 00 3699 ldaq bb|end_of_time_loc set time to high value 004117 aa 3 00364 7571 00 3700 staq bb|priority_sched_time 004120 aa 3 00404 2221 00 3701 ldx2 bb|min_wct_index begin search of ready lists 3702 004121 3703 ps_get_rq_head: 004121 aa 3 00000 2221 12 3704 ldx2 bb|wcte.thread,2 get index of top guy in ready queue 004122 aa 3 00000 3521 12 3705 ps1: eppbp bb|0,2 get pointer to next entry in ready list 004123 aa 2 00001 2341 00 3706 szn bp|apte.sentinel stop if end of ready list 004124 0a 004150 6040 00 3707 tmi ps_next_ready_queue Now at sentinel, x2-> wcte again 004125 aa 2 00000 2221 00 3708 ldx2 bp|apte.thread save index to next before rethreading! 004126 aa 2 00021 2351 00 3709 lda bp|apte.flags2 is process in priority sched mode 004127 aa 400000 3150 07 3710 cana apte.prior_sched,dl .. 004130 0a 004122 6000 00 3711 tze ps1 if not then go to next entry 004131 aa 2 00022 2371 00 3712 ldaq bp|apte.state_change_time get time lost eligibility 004132 aa 3 00361 0331 00 3713 adl bb|priority_sched_inc add in increment for rescheduling 004133 aa 3 00362 1171 00 3714 cmpaq bb|next_alarm_time .. 004134 0a 004141 6040 00 3715 tmi ps_boost .. 004135 aa 3 00364 1171 00 3716 cmpaq bb|priority_sched_time see if this is next process to be boosted 004136 0a 004122 6050 00 3717 tpl ps1 if not then go to next entry 004137 aa 3 00364 7571 00 3718 staq bb|priority_sched_time if so then remember time 004140 0a 004122 7100 00 3719 tra ps1 go to next entry 004141 3720 ps_boost: 004141 aa 2 00006 2341 00 3721 szn bp|apte.ti already interactive? 004142 0a 004122 6000 00 3722 tze ps1 don't boost again, and avoid tail chasing 004143 0a 004614 7000 00 3723 tsx0 setup_p_int boost priority 004144 0a 000770 7070 00 3724 tsx7 unthread thread out of ready list 004145 0a 002532 7070 00 3725 tsx7 sort_in sort into ready list in new place 004146 aa 3 00272 0541 00 3726 aos bb|boost_priority count number of boosts 004147 0a 004122 7100 00 3727 tra ps1 go to next entry 004150 3728 ps_next_ready_queue: 004150 aa 000070 6220 12 3729 eax2 size_of_wct_entry,2 Move to next wcte 004151 aa 3 00405 1021 00 3730 cmpx2 bb|max_wct_index If If there is one. 004152 0a 004121 6044 00 3731 tmoz ps_get_rq_head 3732 " 004153 3733 check_ring0_timer: 004153 aa 3 00470 2371 00 3734 ldaq bb|next_ring0_timer 004154 aa 3 00362 1171 00 3735 cmpaq bb|next_alarm_time 004155 0a 004166 6050 00 3736 tpl check_polling 3737 004156 aa 3 00072 2371 00 3738 ldaq bb|end_of_time_loc don't allow this again 004157 aa 3 00470 7571 00 3739 staq bb|next_ring0_timer 3740 3741 " wake up any ring 0 process waiting for a short time 3742 004160 0a 001324 7060 00 3743 tsx6 UNLOCK unlock for notify 004161 0a 000006 2360 00 3744 ldq ring0_timer_event 004162 4a 4 00066 7561 20 3745 stq pds$arg_1 004163 aa 6 00203 5541 00 3746 stc1 dev_signal flag says special notify 004164 0a 002313 7060 00 3747 tsx6 notify_ notify waiters 004165 0a 001302 7060 00 3748 tsx6 WRITE_LOCK return to polling checks 3749 3750 " Now we check to see if the disk DIM or tty DIM need 3751 " to be polled. 3752 004166 3753 check_polling: 004166 aa 000020 6240 00 3754 eax4 n_polling_table-4 initialize index for table search 004167 3755 polling_loop: 004167 0a 004244 7160 14 3756 xec polling_table+2,4 execute before test 004170 3757 test_poll: 004170 aa 3 00362 2371 00 3758 ldaq bb|next_alarm_time get time for this alarm 004171 0a 004242 2230 14 3759 ldx3 polling_table,4 get address of link to time 004172 aa 4 00000 1171 33 3760 cmpaq lp|0,3* has time matured? 004173 0a 004211 6040 00 3761 tmi skip_polling if not, skip this call 3762 004174 0a 004243 0330 14 3763 adl polling_table+1,4 compute time of next poll 004175 aa 4 00000 7571 33 3764 staq lp|0,3* and set new time 3765 004176 0a 001324 7060 00 3766 tsx6 UNLOCK call out with APT unlocked 004177 0a 004242 7230 14 3767 lxl3 polling_table,4 get address of routine to call 004200 aa 6 00000 2541 00 3768 call lp|0,3*(null_arglist) make call 004201 0a 004240 3500 00 004202 aa 4 00000 3521 33 004203 aa 6 00040 7531 00 004204 aa 7 00036 6701 20 004205 aa 6 00000 1731 00 004206 aa 6 00040 0731 00 004207 0a 001302 7060 00 3769 tsx6 WRITE_LOCK relock the APT now 004210 0a 004212 7100 00 3770 tra next_poll on to the next 3771 004211 3772 skip_polling: 004211 0a 004245 7160 14 3773 xec polling_table+3,4 execute after test 004212 3774 next_poll: 004212 aa 777774 6240 14 3775 eax4 -4,4 step to next table entry 004213 0a 004167 6050 00 3776 tpl polling_loop and loop 3777 3778 " Now we compute the next simulated alarm clock time. 3779 004214 3780 compute_next_alarm: 004214 aa 3 00357 2221 00 3781 ldx2 bb|alarm_timer_list get next process timer 004215 0a 004222 6000 00 3782 tze *+5 no process timer 004216 aa 3 00026 2371 12 3783 ldaq bb|apte.alarm_time,2 .. 004217 aa 777777 3750 07 3784 ana =o777777,dl mask off thread 004220 aa 3 00364 1171 00 3785 cmpaq bb|priority_sched_time is it before priority sched time 004221 0a 004223 6040 00 3786 tmi *+2 004222 aa 3 00364 2371 00 3787 ldaq bb|priority_sched_time if sched time first use it 004223 aa 3 00470 1171 00 3788 cmpaq bb|next_ring0_timer how about ring0 timers? 004224 0a 004226 6040 00 3789 tmi *+2 004225 aa 3 00470 2371 00 3790 ldaq bb|next_ring0_timer 3791 004226 aa 000020 6240 00 3792 eax4 n_polling_table-4 initialize index for table search 004227 3793 next_alarm_loop: 004227 0a 004242 2230 14 3794 ldx3 polling_table,4 get pointer to time 004230 aa 4 00000 1171 33 3795 cmpaq lp|0,3* test for earliest time 004231 0a 004233 6040 00 3796 tmi *+2 .. 004232 aa 4 00000 2371 33 3797 ldaq lp|0,3* .. 3798 004233 aa 777774 6240 14 3799 eax4 -4,4 try next table entry 004234 0a 004227 6050 00 3800 tpl next_alarm_loop .. 3801 004235 aa 3 00362 7571 00 3802 staq bb|next_alarm_time set time for next alarm 004236 0a 004032 7100 00 3803 tra at_retry go check time again 3804 004237 aa 000000 0110 03 3805 even 004240 3806 null_arglist: 004240 aa 000000 000004 3807 oct 4,0 arglist with no args 004241 aa 000000 000000 3808 004242 3809 polling_table: 004242 3810 disk_poll_entry: 000020 3811 link disk_polling_time,tc_data$disk_polling_time 000022 3812 link disk_poll,page$time_out 004242 22 000020 000022 3813 zero disk_polling_time,disk_poll 004243 aa 000074 000000 3814 dec 15b15 004244 aa 000000 0110 00 3815 nop 004245 aa 000000 0110 00 3816 nop 3817 000024 3818 link ioi_polling_time,tc_data$tape_polling_time 000026 3819 link ioi_poll,ioi_masked$timer 004246 22 000024 000026 3820 zero ioi_polling_time,ioi_poll 004247 aa 000100 000000 3821 dec 16b15 004250 aa 000000 0110 00 3822 nop 004251 aa 000000 0110 00 3823 nop 3824 000030 3825 link mos_polling_time,tc_data$mos_polling_time 000032 3826 link mos_poll,mos_memory_check$poll 004252 22 000030 000032 3827 zero mos_polling_time,mos_poll 004253 aa 004540 000000 3828 dec 600b15 004254 aa 000000 0110 00 3829 nop 004255 aa 000000 0110 00 3830 nop 3831 000034 3832 link opc_polling_time,tc_data$opc_polling_time 000036 3833 link opc_poll,ocdcm_$poll_for_timeout 004256 22 000034 000036 3834 zero opc_polling_time,opc_poll 004257 aa 000170 000000 3835 dec 30b15 004260 aa 000000 0110 00 3836 nop 004261 aa 000000 0110 00 3837 nop 3838 000040 3839 link volmap_poll_time,tc_data$volmap_polling_time 000042 3840 link volmap_poll,page$poll_volmap_io 004262 22 000040 000042 3841 zero volmap_poll_time,volmap_poll 004263 aa 000170 000000 3842 dec 30b15 004264 aa 000000 0110 00 3843 nop 004265 aa 000000 0110 00 3844 nop 3845 000024 3846 equ n_polling_table,*-polling_table 3847 " 3848 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " 3849 " 3850 " COMPUTE_VIRTUAL_CLOCKS -- procedure to figure out what type of 3851 " idle time we have, and also to update the time used in the 3852 " APT entry for the process just run. 3853 " A meter lock protects per-system doubleword variables 3854 " 3855 " Idle time is categorized as follows: 3856 " 3857 " zero idle - all processes blocked except idle processes 3858 " nmp idle - all processes which could be eligible are eligible 3859 " loading idle - not all processes which could be eligible are 3860 " eligible, and not all eligible processes are loaded 3861 " work class idle - not all processes which could be eligible are 3862 " eligible, at least one work class was 3863 " skipped because of work class limits 3864 " (governing, max eligible for work class), 3865 " and system maxe has not been reached 3866 " mp idle - not all processes which could be eligible are 3867 " eligible, and criteria for work class idle 3868 " not met 3869 " 3870 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 3871 004266 3872 compute_virtual_clocks: 004266 4a 4 00152 3521 20 3873 eppbp pds$apt_ptr,* set bp to this process 004267 4a 4 00262 2351 20 3874 lda pds$page_waits copy page fault count into APT entry 004270 aa 2 00002 7551 00 3875 sta bp|apte.page_faults 004271 aa 2 00046 2371 00 3876 ldaq bp|apte.virtual_cpu_time Remember bp's vcpu 004272 aa 6 00134 7571 00 3877 staq temp Use temp for delta virtual time. 3878 3879 read_clock 004273 4a 4 00104 6331 20 rccl sys_info$clock_,* 004274 aa 3 00034 7571 00 3880 staq bb|last_time save last time anyone run 004275 4a 4 00324 1771 20 3881 sbaq prds$last_recorded_time delta t in microseconds 004276 aa 6 00154 7571 00 3882 staq delta_t 004277 aa 3 00451 0561 00 3883 asq bb|governing_credit_bank 3884 004300 aa 2 00016 0771 00 3885 adaq bp|apte.time_used_clock update time used in APT 004301 aa 2 00016 7571 00 3886 staq bp|apte.time_used_clock 004302 4a 4 00260 1771 20 3887 sbaq pds$virtual_delta update the virtual CPU time 004303 aa 2 00046 7571 00 3888 staq bp|apte.virtual_cpu_time 3889 004304 aa 6 00134 1771 00 3890 sbaq temp Subtract old vcpu from new 004305 aa 6 00134 7571 00 3891 staq temp Remember for idle meters. 3892 004306 aa 6 00154 2371 00 3893 ldaq delta_t meter last recorded time 004307 4a 4 00324 0771 20 3894 adaq prds$last_recorded_time 004310 4a 4 00324 7571 20 3895 staq prds$last_recorded_time 3896 004311 3897 mlock_loop: 004311 aa 3 00142 0341 00 3898 ldac bb|metering_lock LOCK LOCK LOCK LOCK LOCK LOCK LOCK 004312 0a 004314 6010 00 3899 tnz mlocked OK- meters are locked 004313 0a 004311 7100 00 3900 tra mlock_loop retry locking meters 004314 3901 mlocked: 004314 aa 6 00154 2371 00 3902 ldaq delta_t meter total CPU time for system 004315 aa 3 00042 0771 00 3903 adaq bb|processor_time 004316 aa 3 00042 7571 00 3904 staq bb|processor_time 3905 004317 4a 4 00324 2371 20 3906 ldaq prds$last_recorded_time compute ave queue length 004320 0a 006414 3760 00 3907 anq =o3777777 sample every sec (2**20 usec) 004321 aa 6 00155 0761 00 3908 adq delta_t+1 004322 aa 000002 7720 00 3909 qrl 20-18 convert to sec 004323 aa 777777 6360 02 3910 agl: eaq -1,qu count seconds 004324 0a 004342 6040 00 3911 tmi age 004325 aa 3 00161 2351 00 3912 lda bb|statistics+running get queue length 004326 aa 3 00162 0751 00 3913 ada bb|statistics+ready 004327 aa 3 00163 0751 00 3914 ada bb|statistics+waiting running+ready+waiting 004330 aa 000022 7350 00 3915 als 18 give answer 6 octal points 004331 aa 3 00016 1751 00 3916 sba bb|avequeue new ave=oldave+(cur-oldave)/64 004332 aa 000006 7310 00 3917 ars 6 004333 aa 3 00016 0551 00 3918 asa bb|avequeue 004334 aa 3 00324 2351 00 3919 lda bb|n_eligible now get average eligible 004335 aa 000022 7350 00 3920 als 18 004336 aa 3 00040 1751 00 3921 sba bb|ave_eligible 004337 aa 000006 7310 00 3922 ars 6 004340 aa 3 00040 0551 00 3923 asa bb|ave_eligible 004341 0a 004323 7100 00 3924 tra agl 3925 004342 3926 age: 3927 004342 aa 2 00001 2351 00 3928 lda bp|apte.flags check for idle process 004343 aa 002000 3150 03 3929 cana apte.idle,du 004344 0a 004374 6010 00 3930 tnz cvidle is 3931 004345 4a 4 00236 2201 20 3932 ldx0 prds$depth count runs at depth 004346 aa 3 00100 0541 10 3933 aos bb|depths,0 004347 4a 4 00236 0601 20 3934 adx0 prds$depth double index 004350 aa 6 00154 2371 00 3935 ldaq delta_t bump time at level 004351 aa 3 00110 0771 10 3936 adaq bb|tdepth,0 004352 aa 3 00110 7571 10 3937 staq bb|tdepth,0 3938 004353 aa 6 00134 2371 00 3939 ldaq temp Update vcpu used by nonidle 004354 aa 3 00400 0771 00 3940 adaq bb|system_virtual_time 004355 aa 3 00400 7571 00 3941 staq bb|system_virtual_time 3942 004356 aa 2 00021 2201 00 3943 ldx0 bp|apte.wct_index Update work_class data. 004357 aa 6 00154 2371 00 3944 ldaq delta_t Workclasses get % of tcpu - not vcpu 004360 aa 3 00024 2341 10 3945 szn bb|wcte.realtime,0 Realtime not add to bank. 004361 0a 004363 6010 00 3946 tnz *+2 004362 aa 3 00402 0561 00 3947 asq bb|credit_bank But others do. 3948 004363 aa 3 00006 0771 10 3949 adaq bb|wcte.cpu_sum,0 Add to time gotten 004364 aa 3 00006 7571 10 3950 staq bb|wcte.cpu_sum,0 004365 aa 6 00155 3361 00 3951 lcq delta_t+1 Decrement credits. 004366 aa 3 00002 0561 10 3952 asq bb|wcte.credits,0 004367 aa 3 00001 2351 10 3953 lda bb|wcte.governed_word,0 Is W.C. governed 004370 aa 040000 3150 03 3954 cana wcte.governed,du 004371 0a 004407 6000 00 3955 tze m_unlock no 004372 aa 3 00063 0561 10 3956 asq bb|wcte.governing_credits,0 004373 0a 004407 7100 00 3957 tra m_unlock Now go unlock metering data. 3958 004374 aa 6 00134 2371 00 3959 cvidle: ldaq temp up total idle vcpu 004375 aa 3 00024 0771 00 3960 adaq bb|idle_time 004376 aa 3 00024 7571 00 3961 staq bb|idle_time 3962 004377 aa 6 00154 2371 00 3963 ldaq delta_t Update idle real cpu time. 004400 aa 3 00410 0771 00 3964 adaq bb|gross_idle_time 004401 aa 3 00410 7571 00 3965 staq bb|gross_idle_time 3966 004402 aa 6 00134 2371 00 3967 ldaq temp up idle vcpu by type 004403 aa 2 00014 2201 00 3968 ldx0 bp|apte.term_processid recall our idle type 004404 0a 004407 6000 00 3969 tze m_unlock ignore first time 004405 aa 3 00000 0771 10 3970 adaq bb|0,0 004406 aa 3 00000 7571 10 3971 staq bb|0,0 3972 004407 aa 3 00142 5541 00 3973 m_unlock: stc1 bb|metering_lock UNLOCK UNLOCK UNLOCK UNLOCK UNLOCK 004410 aa 3 00001 2351 12 3974 cvidt: lda bb|apte.flags,2 Is new guy idle? 004411 aa 002000 3150 03 3975 cana apte.idle,du 004412 aa 000000 6000 17 3976 tze 0,7 no, not idle 004413 aa 000032 6200 00 3977 eax0 zero_idle yes, figure type 004414 aa 3 00161 2351 00 3978 lda bb|statistics+running 004415 aa 3 00162 0751 00 3979 ada bb|statistics+ready 004416 aa 3 00163 0751 00 3980 ada bb|statistics+waiting 004417 aa 3 00166 0751 00 3981 ada bb|statistics+ptlocking 004420 0a 004440 6000 00 3982 tze cvst Will be zero_idle 004421 aa 000030 6200 00 3983 eax0 nmp_idle 004422 aa 3 00324 1151 00 3984 cmpa bb|n_eligible 004423 0a 004440 6000 00 3985 tze cvst Will be NMP idle 004424 aa 000060 6200 00 3986 eax0 loading_idle 004425 aa 3 00352 7211 00 3987 lxl1 bb|eligible_q_tail 004426 aa 3 00001 2211 11 3988 ldx1 bb|apte.flags,1 004427 aa 010000 3010 03 3989 canx1 apte.loaded,du 004430 0a 004440 6000 00 3990 tze cvst Will be Loading idle 004431 aa 000026 6200 00 3991 eax0 mp_idle 004432 aa 6 00167 2341 00 3992 szn temp2 Work class limit reached? 004433 0a 004440 6000 00 3993 tze cvst No, will be MP idle 004434 aa 3 00324 7211 00 3994 lxl1 bb|n_eligible Are we at system max eligible? 004435 aa 3 00325 1011 00 3995 cmpx1 bb|max_eligible 004436 0a 004440 6050 00 3996 tpl cvst Yes, will be MP idle 004437 aa 000454 6200 00 3997 eax0 work_class_idle No, will be work class idle 004440 aa 3 00014 7401 12 3998 cvst: stx0 bb|apte.term_processid,2 Remember idle type. 004441 aa 000000 7100 17 3999 tra 0,7 4000 " 4001 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4002 " 4003 " SET_NEWT -- procedure to figure out how long the new process 4004 " should run. 4005 " 4006 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4007 004442 4008 set_newt: 004442 aa 3 00001 2351 12 4009 lda bb|apte.flags,2 if idle, give him much time 004443 aa 002000 3150 03 4010 cana apte.idle,du 004444 0a 004455 6000 00 4011 tze sn1 if not idle then compute new timer 4012 4013 read_clock " compute time to next alarm 004445 4a 4 00104 6331 20 rccl sys_info$clock_,* 004446 aa 3 00362 1771 00 4014 sbaq bb|next_alarm_time .. 004447 0a 004474 6050 00 4015 tpl setsmall make sure time has not already passed 004450 aa 000000 5330 00 4016 negl 0 make time positive 004451 0a 004500 1170 00 4017 cmpaq idle_runout is it very large 004452 0a 004467 6040 00 4018 tmi sn2 no, go set it 004453 0a 004500 2370 00 4019 ldaq idle_runout yes, reduce it 004454 0a 004467 7100 00 4020 tra sn2 then set it 004455 4021 sn1: 4022 004455 aa 000000 6350 00 4023 eaa 0 004456 aa 3 00033 2361 12 4024 ldq bb|apte.temax,2 Pick up correct quantum 004457 aa 3 00004 1761 12 4025 sbq bb|apte.te,2 004460 aa 007640 1160 07 4026 cmpq 4000,dl 004461 0a 004464 6050 00 4027 tpl sn_ck_big 004462 aa 007640 2360 07 4028 ldq 4000,dl 004463 0a 004467 7100 00 4029 tra sn2 004464 4030 sn_ck_big: 004464 aa 3 00446 1171 00 4031 cmpaq bb|max_timer_register 004465 0a 004467 6040 00 4032 tmi sn2 004466 aa 3 00446 2371 00 4033 ldaq bb|max_timer_register 4034 004467 4035 sn2: 004467 aa 000004 7360 00 4036 qls 3+1 binary point at 3, round 004470 aa 000175 5060 07 4037 div apte.timer_factor,dl convert to clock ticks 004471 aa 000001 0760 07 4038 adq 1,dl round 004472 aa 000013 7360 00 4039 qls 12-1 timer_shift, round bit 004473 0a 004475 6050 00 4040 tpl *+2 must have positive time value 004474 aa 010000 2360 07 4041 setsmall: ldq =o010000,dl small timer value 004475 4a 4 00276 7561 20 4042 stq prds$last_timer_setting 004476 aa 000000 7100 17 4043 tra 0,7 success return 4044 004477 aa 000000 0110 03 4045 even 004500 4046 idle_runout: 004500 aa 000000 000000 4047 dec 0,250000 timer runout for idle process 004501 aa 000000 750220 4048 " 4049 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4050 " 4051 " hash_LOCK -- called with alleged processid in pds$arg_1 4052 " 4053 " if processid is valid: 4054 " apt_ptr, BP -> APTE 4055 " APTE is locked 4056 " return to 1,7 4057 " 4058 " if processid is invalid: 4059 " apt_ptr, BP = null 4060 " nothing new is locked 4061 " return is indirect through 0,7 4062 " 4063 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4064 004502 4065 hash_LOCK: 004502 4a 4 00066 2361 20 4066 ldq pds$arg_1 get processid 004503 0a 004520 6040 00 4067 tmi not_found Neg pid may cause overflow fault 004504 aa 3 00253 1761 00 4068 sbq bb|apt_offset subtract apt offset 004505 aa 000100 5060 03 4069 div size_of_apt_entry,du 004506 aa 3 00313 1161 00 4070 cmpq bb|apt_size check against bounds of array 004507 0a 004520 6030 00 4071 trc not_found was invalid offset 4072 004510 aa 000100 4020 07 4073 mpy size_of_apt_entry,dl Apply array to index 004511 4a 4 00340 3521 20 4074 eppbp tc_data$apt,ql 004512 aa 6 00150 2521 00 4075 spribp apt_ptr return pointer to apt entry 004513 0a 001351 7060 00 4076 tsx6 LOCK_bp hash_lock must lock to check pid 004514 4a 4 00066 2361 20 4077 ldq pds$arg_1 004515 aa 2 00003 1161 00 4078 cmpq bp|apte.processid make sure it's the same one 004516 aa 000001 6000 17 4079 tze 1,7 success return from hash_lock 004517 0a 001354 7060 00 4080 tsx6 UNLOCK_bp hash_lock found wrong pid 004520 4081 not_found: 004520 0a 000002 3520 20 4082 eppbp null,* get null pointer, return 004521 aa 6 00150 2521 00 4083 spribp apt_ptr null this too 004522 aa 000000 7100 37 4084 tra 0,7* hash_lock failure indirect return 4085 004523 aa 000000 0110 03 4086 even 4087 " 4088 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4089 " 4090 " IPS_WAKEUP -- entry to wake up a process, turn on the ips_pending 4091 " flag and resort the process with high priority. 4092 " Call is 4093 " call pxss$ips_wakeup(processid,message) 4094 " wher processid is the process id of the process to be awakened, and 4095 " message specifies which IPS message is being sent. 4096 " Currently 'message' is declared char (4), eventually it will be fixed 4097 " 4098 " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " " " " " 4099 4100 004524 4101 ips_wakeup_int: 004524 0a 001376 7060 00 4102 tsx6 setup_ 004525 4a 4 00064 4501 20 4103 stz pds$wakeup_flag save info about which entry 004526 0a 004531 7100 00 4104 tra ijoin 004527 4105 ips_wakeup: 004527 0a 001376 7060 00 4106 tsx6 setup_ 004530 4a 4 00064 5541 20 4107 stc1 pds$wakeup_flag 004531 4108 ijoin: 004531 aa 0 00002 2351 20 4109 lda ap|2,* get processid 004532 4a 4 00066 7551 20 4110 sta pds$arg_1 004533 aa 0 00004 2351 20 4111 lda ap|4,* pick up IPS bit string 004534 4a 4 00070 7551 20 4112 sta pds$arg_2 save in PDS 004535 0a 001400 6710 00 4113 tsplb setup_check switch stacks and lock 004536 aa 000000 0000 16 4114 arg 0,6 004537 0a 001302 7060 00 4115 tsx6 WRITE_LOCK ips_wakeup protect pid, rethreads 004540 0a 004502 7070 00 4116 tsx7 hash_LOCK hash search for the APTE 004541 0a 004551 0000 00 4117 arg ips_wakeup_returns_nul no, don't continue 004542 aa 2 00001 7201 00 4118 lxl0 bp|apte.state make sure not stopped 004543 aa 000005 1000 03 4119 cmpx0 stopped,du 004544 0a 004550 6000 00 4120 tze ips_wakeup_returns 004545 4a 4 00070 2351 20 4121 lda pds$arg_2 get IPS bit string 004546 0a 004553 7060 00 4122 tsx6 send_ips_wakeup Do the real work, destroys pds$arg_3 4123 " Next instruction may be skipped on return 004547 aa 000000 0110 00 4124 nop 0 The subroutine already did the right thing 004550 4125 ips_wakeup_returns: 004550 0a 001354 7060 00 4126 tsx6 UNLOCK_bp We're all done now 004551 4127 ips_wakeup_returns_nul: 004551 0a 001324 7060 00 4128 tsx6 UNLOCK 004552 0a 001436 7100 00 4129 tra switch_back Return to caller 4130 " 4131 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4132 " 4133 " SEND_IPS_WAKEUP: called via tsx6. It saves the value 4134 " of x6 in pds$arg_3 for use when returning. This is OK 4135 " since the current callers are WAKEUP and IPS_WAKEUP 4136 " who know what they are doing. It expects the IPS bit 4137 " string to be in the a register when it is called. It 4138 " also expects pds$wakeup_flag to be set to 0 if good 4139 " priority is desired and to > 0 if not. 4140 " 4141 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4142 004553 4143 send_ips_wakeup: 004553 4a 4 00072 7461 20 4144 stx6 pds$arg_3 save x6 for later return 004554 0a 005276 7060 00 4145 tsx6 add_ips_message 4146 004555 4a 4 00064 2341 20 4147 szn pds$wakeup_flag should we give good priority ? 004556 0a 004573 6054 00 4148 tpnz send_ips_ij2 no, skip code which gives priority 4149 004557 aa 2 00001 7201 00 4150 lxl0 bp|apte.state get state of process being awakened 004560 aa 000006 1000 03 4151 cmpx0 ptlocking,du bugfix:dont OOB quit buckets 004561 0a 004563 6050 00 4152 tpl *+2 bugfix:dont OOB quit buckets 004562 aa 3 00052 0541 10 4153 aos bb|quit_counts,0 and count this ips priority wakeup 4154 004563 aa 2 00004 2361 00 4155 ldq bp|apte.te first update ti 004564 aa 2 00005 0761 00 4156 adq bp|apte.ts 004565 aa 2 00006 0761 00 4157 adq bp|apte.ti 004566 aa 3 00067 4021 00 4158 mpy bb|quit_priority get new priority 004567 aa 000022 7370 00 4159 lls 36-18 (binary point at 18) 004570 aa 000000 6230 01 4160 eax3 0,au Save ti in X3 004571 0a 004614 7000 00 4161 tsx0 setup_p_int boost priority 004572 aa 2 00006 7431 00 4162 stx3 bp|apte.ti Store ti from X3. 004573 4163 send_ips_ij2: 004573 aa 2 00001 2201 00 4164 ldx0 bp|apte.flags don't move if eligible 004574 aa 004000 3000 03 4165 canx0 apte.eligible,du 004575 0a 004601 6000 00 4166 tze send_ips_non_elig 004576 aa 000020 3000 03 4167 canx0 apte.dbr_loaded,du however, running may never notice 004577 0a 004606 6010 00 4168 tnz send_ips_connect 004600 0a 004612 7100 00 4169 tra send_ips_wakeup_returns otherwise will notice at next run time 004601 4170 send_ips_non_elig: 004601 aa 2 00001 7201 00 4171 lxl0 bp|apte.state 004602 aa 000004 1000 03 4172 cmpx0 blocked,du if not blocked, move in q 004603 0a 004606 6000 00 4173 tze send_ips_connect 004604 0a 000770 7070 00 4174 tsx7 unthread 004605 0a 002532 7070 00 4175 tsx7 sort_in 004606 4176 send_ips_connect: 004606 0a 001474 7070 00 4177 tsx7 send_connect send connect if process running 004607 0a 000243 7070 00 4178 tsx7 wake wake up process 004610 4a 4 00072 2261 20 4179 ldx6 pds$arg_3 restore x6 004611 aa 000001 7100 16 4180 tra 1,x6 return to wake done place 004612 4181 send_ips_wakeup_returns: 004612 4a 4 00072 2261 20 4182 ldx6 pds$arg_3 restore x6 004613 aa 000000 7100 16 4183 tra 0,x6 return to no wake done place 4184 " 4185 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4186 " 4187 " SETUP_INT: called via tsx0, sets apte variables to give 4188 " high priority and initial quantum following interaction. 4189 " SETUP_P_INT: gives high priority etc w/o interaction. 4190 " 4191 4192 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 004614 4193 setup_p_int: 004614 aa 3 00023 0541 00 4194 aos bb|p_interactions Meter priority interactions. 004615 aa 001001 3210 03 4195 lcx1 apte.interaction+1,du 004616 aa 2 00001 3411 00 4196 ansx1 bp|apte.flags Turn off interaction flag. 4197 004617 4198 setup_int: 004617 aa 2 00021 2211 00 4199 ldx1 bp|apte.wct_index 004620 aa 2 00006 4501 00 4200 stz bp|apte.ti High priority. 004621 aa 2 00005 4501 00 4201 stz bp|apte.ts 004622 aa 2 00004 4501 00 4202 stz bp|apte.te 4203 read_clock " Calc new deadline. 004623 4a 4 00104 6331 20 rccl sys_info$clock_,* 004624 aa 3 00010 0771 11 4204 adaq bb|wcte.resp1,1 By adding to curr time. 004625 aa 2 00034 7571 00 4205 staq bp|apte.deadline 4206 004626 aa 3 00014 2361 11 4207 ldq bb|wcte.quantum1,1 Pick up new quantum. 004627 aa 3 00420 2351 00 4208 lda bb|deadline_mode If deadline mode 004630 aa 3 00024 0751 11 4209 ada bb|wcte.realtime,1 or realtime process 004631 0a 004633 6054 00 4210 tpnz *+2 use per-workclass quantum. 004632 aa 3 00343 2361 00 4211 ldq bb|tefirst use default. 004633 aa 2 00033 7561 00 4212 stq bp|apte.temax 4213 004634 aa 000000 7100 10 4214 tra 0,0 Return from setup_int. 4215 " 4216 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4217 " 4218 " SETUP_IO_REALTIME: called via tsx0, sets apte variables 4219 " for a realtime burst of eligibility 4220 " 4221 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4222 004635 4223 setup_io_realtime: 4224 read_clock 004635 4a 4 00104 6331 20 rccl sys_info$clock_,* 004636 aa 3 00473 0331 00 4225 adl bb|realtime_io_deadline 004637 aa 2 00034 7571 00 4226 staq bp|apte.deadline 004640 aa 3 00474 2361 00 4227 ldq bb|realtime_io_quantum " And quantum 004641 aa 2 00033 7561 00 4228 stq bp|apte.temax 004642 aa 3 00475 0541 00 4229 aos bb|realtime_priorities " Meter 004643 aa 000000 7100 10 4230 tra 0,0 4231 4232 " 4233 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4234 " 4235 " REVOKE_ELIG: called with write_lock, turns off elig, decrements counters 4236 " 4237 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4238 004644 4239 revoke_elig: 004644 aa 004001 3210 03 4240 lcx1 apte.eligible+1,du take away eligibilty 004645 aa 2 00001 3411 00 4241 ansx1 bp|apte.flags 004646 aa 000001 3350 07 4242 lca 1,dl Put -1 in Areg for subtracts .. 004647 aa 3 00324 0551 00 4243 asa bb|n_eligible 004650 aa 2 00021 7211 00 4244 lxl1 bp|apte.flags2 If was batch 004651 aa 000010 3010 03 4245 canx1 apte.batch,du then decrement batch counter 004652 0a 004654 6000 00 4246 tze *+2 else dont 004653 aa 3 00417 0551 00 4247 asa bb|num_batch_elig use -1 in the A 4248 004654 aa 2 00021 2211 00 4249 ldx1 bp|apte.wct_index Decrement workclass counter. 004655 aa 3 00027 0551 11 4250 asa bb|wcte.nel,1 004656 aa 2 00062 2351 00 4251 lda bp|apte.saved_temax Make up for init decrement 004657 aa 3 00002 0551 11 4252 asa bb|wcte.credits,1 of wc credits. 004660 aa 3 00001 2361 11 4253 ldq bb|wcte.governed_word,1 Is wc governed 004661 aa 040000 3160 03 4254 canq wcte.governed,du 004662 0a 004664 6000 00 4255 tze *+2 No 004663 aa 3 00063 0551 11 4256 asa bb|wcte.governing_credits,1 004664 aa 2 00032 3351 00 4257 lca bp|apte.ws_size Sub ws from sum of elig ws 004665 aa 3 00245 0551 00 4258 asa bb|ws_sum 004666 aa 2 00020 4501 00 4259 stz bp|apte.wait_event he won't get notified 4260 4261 " Give up the stack_0 if it has a shared one 4262 004667 aa 2 00001 2351 00 4263 lda bp|apte.flags 004670 aa 000004 3150 03 4264 cana apte.shared_stack_0,du 004671 aa 000000 6000 17 4265 tze 0,7 4266 4267 " Don't give up the stack for a stopped process, unless the 4268 " limit of such suspended stacks has been reached 4269 004672 aa 2 00001 7201 00 4270 lxl0 bp|apte.state 004673 aa 000005 1000 03 4271 cmpx0 stopped,du is he stopped 004674 0a 004704 6010 00 4272 tnz give_up_stack no--OK to release stack 004675 aa 3 00424 2351 00 4273 lda bb|stopped_stack_0 check limit on suspended 004676 aa 3 00423 1151 00 4274 cmpa bb|max_stopped_stack_0 stacks 004677 0a 004704 6050 00 4275 tpl give_up_stack too bad--flush the stack 004700 aa 3 00424 0541 00 4276 aos bb|stopped_stack_0 add to count of suspended stacks 004701 aa 777777 2200 03 4277 ldx0 -1,du and decrement count of 004702 aa 3 00422 0401 00 4278 asx0 bb|max_max_eligible available stacks 004703 aa 000000 7100 17 4279 tra 0,7 004704 4280 give_up_stack: 4281 4282 " Check the validity of the stack 4283 004704 4a 4 00342 3515 20 4284 eppab sst$ 004705 4a 4 00326 2371 20 4285 ldaq pds$stack_0_sdwp,* 004706 aa 000014 7710 00 4286 arl 12 004707 4a 4 00344 1351 20 4287 sbla sst$ptwbase 004710 aa 1 00000 3515 05 4288 eppab ab|0,al ptr to ptw for page 0 4289 004711 aa 1 00000 2351 00 4290 lda ab|0 get the ptw 004712 aa 000020 3150 07 4291 cana ptw.wired,dl check page 0 wired 4292 drlnz (pxss: stack_0 page 0 wired) SHOULD NOT BE!!!! 004713 0a 005445 6010 00 .._00041.tst: tnz .._00041.drl 4293 004714 0a 005241 7060 00 4294 tsx6 lock_stack_queue 004715 4a 4 00326 2371 20 4295 ldaq pds$stack_0_sdwp,* Get stack SDW 4296 drlze (pxss: no stack_0 sdw) LOSE! snb/0 004716 0a 005446 6000 00 .._00042.tst: tze .._00042.drl 004717 aa 1 00001 7201 00 4297 lxl0 ab|sdt.num_stacks This is how many slots 004720 aa 000000 6240 00 4298 eax4 0 Entry index 004721 4299 free_stack_0_loop: 004721 aa 1 00006 1171 14 4300 cmpaq ab|sdt.sdw,4 004722 0a 004727 6000 00 4301 tze free_stack_0_got 004723 aa 000004 6240 14 4302 eax4 sdte_size,4 004724 aa 777777 6200 10 4303 eax0 -1,0 004725 0a 004721 6054 00 4304 tpnz free_stack_0_loop 4305 drltra (pxss: freeing unknown stack_0) STACK NOT FOUND 004726 0a 005447 7100 00 .._00043.tst: tra .._00043.drl 004727 4306 free_stack_0_got: 004727 0a 005267 7060 00 4307 tsx6 free_stack_0 Give it up 004730 aa 000000 4310 07 4308 fld 0,dl 004731 4a 4 00326 7571 20 4309 staq pds$stack_0_sdwp,* Clear out SDW for getwork check. 4310 004732 0a 005255 7060 00 4311 tsx6 unlock_stack_queue 4312 004733 aa 000005 3200 03 4313 lcx0 apte.shared_stack_0+1,du 004734 aa 2 00001 3401 00 4314 ansx0 bp|apte.flags reset flag 004735 aa 000000 7100 17 4315 tra 0,7 return from revoke_elig 4316 4317 " 4318 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4319 " 4320 " RESCHEDULE: called with write_lock set 4321 " 4322 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4323 4324 004736 4325 reschedule: 004736 aa 2 00004 2351 00 4326 lda bp|apte.te update te into ts 004737 0a 004741 6040 00 4327 tmi *+2 avoid neg ts 004740 aa 2 00005 0551 00 4328 asa bp|apte.ts 4329 004741 aa 2 00021 2211 00 4330 ldx1 bp|apte.wct_index 4331 read_clock " Calc new deadline. 004742 4a 4 00104 6331 20 rccl sys_info$clock_,* 004743 aa 3 00012 0771 11 4332 adaq bb|wcte.resp2,1 By adding to cutime. 004744 aa 2 00034 7571 00 4333 staq bp|apte.deadline 4334 004745 aa 3 00015 2361 11 4335 ldq bb|wcte.quantum2,1 Pick up new quantum. 004746 aa 3 00420 2351 00 4336 lda bb|deadline_mode If in deadline_mode 004747 aa 3 00024 0751 11 4337 ada bb|wcte.realtime,1 or realtime process 004750 0a 004752 6054 00 4338 tpnz *+2 then use per workclass quantum. 004751 aa 3 00344 2361 00 4339 ldq bb|telast 004752 aa 2 00033 7561 00 4340 stq bp|apte.temax 4341 004753 aa 3 00343 2351 00 4342 lda bb|tefirst if ts>min(tefirst+ti,timax) 004754 aa 2 00006 0751 00 4343 ada bp|apte.ti 004755 aa 2 00007 1151 00 4344 cmpa bp|apte.timax 004756 0a 004760 6040 00 4345 tmi *+2 004757 aa 2 00007 2351 00 4346 lda bp|apte.timax 004760 aa 2 00005 1151 00 4347 cmpa bp|apte.ts 004761 0a 004765 6050 00 4348 tpl nupti 004762 aa 2 00005 2351 00 4349 lda bp|apte.ts update ts into ti 004763 aa 2 00006 0551 00 4350 asa bp|apte.ti 004764 aa 2 00005 4501 00 4351 stz bp|apte.ts 004765 aa 2 00004 4501 00 4352 nupti: stz bp|apte.te 4353 004766 aa 2 00021 2351 00 4354 lda bp|apte.flags2 is this a guaranteed eligibility process 004767 aa 400000 3150 07 4355 cana apte.prior_sched,dl .. 004770 0a 005002 6000 00 4356 tze rs_ps_done if not then OK 004771 aa 3 00273 0541 00 4357 aos bb|lost_priority_eligibility record loss of eligibility 004772 aa 2 00022 2371 00 4358 ldaq bp|apte.state_change_time compute when to boost priority 004773 aa 3 00361 0331 00 4359 adl bb|priority_sched_inc 004774 aa 3 00364 1171 00 4360 cmpaq bb|priority_sched_time remember when to boost next 004775 0a 005002 6050 00 4361 tpl rs_ps_done .. 004776 aa 3 00364 7571 00 4362 staq bb|priority_sched_time 004777 aa 3 00362 1171 00 4363 cmpaq bb|next_alarm_time update time of next alarm if necessary 005000 0a 005002 6050 00 4364 tpl rs_ps_done .. 005001 aa 3 00362 7571 00 4365 staq bb|next_alarm_time 005002 4366 rs_ps_done: 005002 aa 000000 7100 17 4367 tra 0,7 reschedule returns 4368 4369 " 4370 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4371 " 4372 " purge_UNLOCK: called with write_lock and apte_lock, it unlocks both 4373 " 4374 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4375 4376 005003 4377 purge_UNLOCK: 005003 aa 2 00032 4501 00 4378 stz bp|apte.ws_size 4379 005004 0a 001354 7060 00 4380 tsx6 UNLOCK_bp UNLOCK own apte before call out 005005 0a 001324 7060 00 4381 tsx6 UNLOCK 4382 005006 aa 3 00064 2341 00 4383 szn bb|post_purge_switch If at all. 005007 0a 005022 6000 00 4384 tze pU_ret 005010 aa 2 00021 2211 00 4385 ldx1 bp|apte.wct_index 005011 aa 3 00025 2341 11 4386 szn bb|wcte.purging,1 Purge on per wc basis 005012 0a 005022 6000 00 4387 tze pU_ret 005013 aa 6 00000 2541 00 4388 call page$post_purge clean up last process's pages 005014 0a 006376 3500 00 005015 4a 4 00044 3521 20 005016 aa 6 00040 7531 00 005017 aa 7 00036 6701 20 005020 aa 6 00000 1731 00 005021 aa 6 00040 0731 00 005022 aa 000000 7100 17 4389 pU_ret: tra 0,7 Return from purge_UNLOCK 4390 4391 4392 " 4393 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4394 " 4395 " stop_check_ -- call if old user probably is stopped 4396 " 4397 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4398 4399 005023 4400 stop_check_: 005023 0a 001302 7060 00 4401 tsx6 WRITE_LOCK prevent empty_t interference 005024 aa 2 00001 7201 00 4402 lxl0 bp|apte.state check for really stopped 005025 aa 000005 1000 03 4403 cmpx0 stopped,du 005026 0a 005034 6010 00 4404 tnz stop_ul not stopped, dont notify 005027 0a 006374 2350 00 4405 lda =astop message will be "stopstop" 005030 aa 6 00146 7551 00 4406 sta tmp_ev_message .. 005031 aa 6 00147 7551 00 4407 sta tmp_ev_message+1 005032 0a 005066 6710 00 4408 tsplb wake_term_pid send stopstop to term pid 005033 aa 6 00150 3521 20 4409 eppbp apt_ptr,* repair BP for next test 005034 0a 001324 7060 00 4410 stop_ul: tsx6 UNLOCK 005035 0a 003465 7100 00 4411 tra end_stop_check stop_check_ ret to getwork 4412 4413 4414 4415 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4416 " 4417 " cpu_monitor_ -- called if probably need to send cpulimit wakeup 4418 " 4419 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4420 005036 4421 cpu_monitor_: 005036 aa 2 00046 2371 00 4422 ldaq bp|apte.virtual_cpu_time 005037 aa 000012 7330 00 4423 lrs 10 convert to 1/1024 secs 005040 aa 2 00037 1161 00 4424 cmpq bp|apte.cpu_monitor 005041 0a 003467 6040 00 4425 tmi end_cpu_monitor 005042 0a 001302 7060 00 4426 tsx6 WRITE_LOCK 005043 0a 001351 7060 00 4427 tsx6 LOCK_bp 005044 aa 2 00037 2341 00 4428 szn bp|apte.cpu_monitor 005045 0a 005061 6000 00 4429 tze cm_not 005046 aa 2 00046 2371 00 4430 ldaq bp|apte.virtual_cpu_time 005047 aa 000012 7330 00 4431 lrs 10 convert to 1/1024 secs 005050 aa 2 00037 1161 00 4432 cmpq bp|apte.cpu_monitor 005051 0a 005061 6040 00 4433 tmi cm_not 005052 aa 2 00037 4501 00 4434 stz bp|apte.cpu_monitor clear cell 005053 0a 001354 7060 00 4435 tsx6 UNLOCK_bp 005054 0a 005064 2370 00 4436 ldaq cpulimit_msg 005055 aa 6 00146 7571 00 4437 staq tmp_ev_message 005056 0a 005066 6710 00 4438 tsplb wake_term_pid send cpulimit to term_pid 005057 0a 001324 7060 00 4439 cm_done: tsx6 UNLOCK 005060 0a 003467 7100 00 4440 tra end_cpu_monitor return to gw 4441 005061 0a 001354 7060 00 4442 cm_not: tsx6 UNLOCK_bp 005062 0a 005057 7100 00 4443 tra cm_done 4444 005063 aa 000000 0110 03 4445 even 005064 4446 cpulimit_msg: 005064 aa 143 160 165 154 4447 aci "cpulimit" 005065 aa 151 155 151 164 4448 " 4449 4450 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4451 " 4452 " WAKE_TERM_PID -- send tmp_ev_message to term_pid over term_chan 4453 " 4454 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4455 005066 4456 wake_term_pid: 005066 aa 6 00203 4501 00 4457 stz dev_signal count it as dev_signal 005067 aa 6 00203 0541 00 4458 aos dev_signal count it as dev_signal 005070 aa 2 00030 2371 00 4459 ldaq bp|apte.term_channel 005071 aa 6 00144 7571 00 4460 staq tmp_ev_channel 005072 aa 6 00202 4501 00 4461 stz tmp_ring 005073 aa 2 00014 2351 00 4462 lda bp|apte.term_processid 005074 4a 4 00066 7551 20 4463 sta pds$arg_1 005075 4a 4 00064 5541 20 4464 stc1 pds$wakeup_flag not require unique message 005076 aa 3 00000 3521 01 4465 eppbp bb|0,au make bp -> target_apte 005077 0a 001351 7060 00 4466 tsx6 LOCK_bp wake_term_pid locks target of wakeup 005100 0a 001512 7070 00 4467 tsx7 make_itt_message 005101 0a 000243 7070 00 4468 tsx7 wake 005102 0a 001354 7060 00 4469 tsx6 UNLOCK_bp wake_term_pid unlocks target apte 005103 aa 5 00000 7101 00 4470 tra lb|0 wake_term_pid returns 4471 4472 " 4473 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4474 " 4475 " DELETE_ME 4476 " 4477 " This is the legendary CPU Graveyard, where CPUs go to die 4478 " when taken off-line. When a CPU is to be deleted, getwork 4479 " will run only an idle process on it. When this happens, 4480 " the process will transfer to this routine. This routine 4481 " does the following: 4482 " 4483 " 1. Under the Global APT lock, checks whether the system default 4484 " CPU set would contain no online CPUs. 4485 " 4486 " 2. If the system default CPU set would contain no online 4487 " CPUs, it changes the system default CPU set to all 4488 " CPUs, unlocks, and prints a message on the console. 4489 " Under the Global APT lock, checks the system default CPU 4490 " set again. This second check is necessary to avoid races, 4491 " since the call to syserr must be made with the Global APT 4492 " lock unlocked. If the second check fails, the first is 4493 " repeated. This should happen very rarely. 4494 " 4495 " 3. Changes the state of the idle process for this CPU to 4496 " empty, unthreading it, but not returning it to the empty 4497 " list. 4498 " 4499 " 4. Under the connect lock, turn off the bit for this CPU 4500 " in scs$processor (this must be done under the connect 4501 " lock to prevent other CPUs doing connects from spinning 4502 " forever waiting for this one to respond). 4503 " 4504 " 5. Walk the APTE array, looking for processes whose set of 4505 " required CPUs includes no online CPUs. Any such are changed 4506 " to require the current system default. This must be done 4507 " under the Global APT lock. 4508 " 4509 " 6. Unlock the Global APT lock and die (inhibited DIS). 4510 " 4511 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4512 005104 4513 delete_me: 005104 0a 001302 7060 00 4514 tsx6 WRITE_LOCK delete_me locks out sprq 4515 005105 4a 4 00136 2351 20 4516 lda prds$processor_pattern bit for this CPU 005106 4a 4 00134 6751 20 4517 era scs$processor Areg = bits for remaining CPUs 005107 aa 3 00453 3751 00 4518 ana bb|default_procs_required Any left in default? 005110 0a 005142 6010 00 4519 tnz procs_required_ok Yes 005111 4520 retry_delete_me: " Also come here if lost race 005111 aa 776000 2350 03 4521 lda all_procs_required,du Set default to all CPUs 005112 aa 3 00453 7551 00 4522 sta bb|default_procs_required 4523 005113 0a 001324 7060 00 4524 tsx6 UNLOCK Unlock before call-out 4525 4526 " call syserr (3, "pxss: System default procs required reset to ABCDEFGH") 4527 005114 0a 005221 3714 00 4528 epplb reset_system_procs_severity 005115 aa 6 00110 6515 00 4529 sprilb arg+2 005116 0a 005222 3714 00 4530 epplb reset_system_procs_mess 005117 aa 6 00112 6515 00 4531 sprilb arg+4 005120 0a 002101 3714 00 4532 epplb fixed_desc 005121 aa 6 00114 6515 00 4533 sprilb arg+6 005122 0a 005240 3714 00 4534 epplb reset_system_procs_desc 005123 aa 6 00116 6515 00 4535 sprilb arg+8 005124 0a 006416 2370 00 4536 ldaq =v18/4,18/4,18/4,18/0 005125 aa 6 00106 7571 00 4537 staq arg 005126 aa 6 00000 2541 00 4538 call syserr$syserr(arg) 005127 aa 6 00106 3501 00 005130 4a 4 00014 3521 20 005131 aa 6 00040 7531 00 005132 aa 7 00036 6701 20 005133 aa 6 00000 1731 00 005134 aa 6 00040 0731 00 4539 005135 0a 001302 7060 00 4540 tsx6 WRITE_LOCK relock before checking again 4541 005136 4a 4 00136 2351 20 4542 lda prds$processor_pattern Bit for this CPU 005137 4a 4 00134 6751 20 4543 era scs$processor Areg = bits for remaining CPUs 005140 aa 3 00453 3751 00 4544 ana bb|default_procs_required Any left online 005141 0a 005111 6000 00 4545 tze retry_delete_me No - lost race 4546 005142 4547 procs_required_ok: 4548 4549 " Walk APTE array, looking for processes which can't run 4550 005142 4a 4 00134 2361 20 4551 ldq scs$processor Bits for CPUs still running 005143 aa 776000 3760 03 4552 anq apte.procs_required_mask,du Strip out garbage 005144 4a 4 00136 6761 20 4553 erq prds$processor_pattern And bit for this CPU 005145 aa 000001 3350 07 4554 lca 1,dl 005146 aa 776000 6750 03 4555 era apte.procs_required_mask,du To reset procs required 005147 aa 3 00453 2231 00 4556 ldx3 bb|default_procs_required To set to default 005150 aa 776000 3630 03 4557 anx3 apte.procs_required_mask,du Strip out garbage 005151 aa 000200 2220 03 4558 ldx2 apte.default_procs_required,du To set bit saying it's default 005152 4a 4 00346 3501 20 4559 eppap tc_data$apt Begin of APTE array 005153 aa 3 00313 7211 00 4560 lxl1 bb|apt_size Number APTEs 005154 4561 check_proc_loop: 005154 aa 0 00001 2201 00 4562 ldx0 ap|apte.flags 005155 aa 002000 3000 03 4563 canx0 apte.idle,du Skip idle processes 005156 0a 005164 6010 00 4564 tnz check_proc_next 005157 aa 0 00063 3161 00 4565 canq ap|apte.procs_required Any left for this process? 005160 0a 005164 6010 00 4566 tnz check_proc_next Yes 005161 aa 0 00063 3551 00 4567 ansa ap|apte.procs_required Clear procs required 005162 aa 0 00063 2431 00 4568 orsx3 ap|apte.procs_required Set to default 005163 aa 0 00001 2421 00 4569 orsx2 ap|apte.flags And remember it's the default 005164 4570 check_proc_next: 005164 aa 0 00100 3501 00 4571 eppap ap|size_of_apt_entry Next APTE 005165 aa 777777 6210 11 4572 eax1 -1,1 One less to go 005166 0a 005154 6054 00 4573 tpnz check_proc_loop But still some left 4574 005167 4575 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+> 4576 005167 4a 4 00124 7213 20 4577 lxl1 prds$processor_tag 005170 aa 400001 3202 03 4578 lcx0 processor_data.online+1,du turn this bit OFF 005171 4a 4 00270 3403 20 4579 ansx0 scs$processor_data,1 .. 4580 005172 4a 4 00350 3523 20 4581 eppbp prds$idle_ptr,* bp -> APTE for idle process 005173 0a 001351 7062 00 4582 tsx6 LOCK_bp 005174 aa 000000 2202 03 4583 ldx0 empty,du set empty state 005175 0a 000753 7072 00 4584 tsx7 update_execution_state .. 005176 0a 001354 7062 00 4585 tsx6 UNLOCK_bp 4586 005177 4587 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 005177 4a 4 00212 2351 20 4588 lda pds$processid lock the connect lock 005200 4a 4 00352 3541 20 4589 stac scs$connect_lock before diddling scs$processor 005201 aa 000000 0110 00 4590 nop 005202 aa 000000 0110 00 4591 nop 005203 aa 777775 6010 04 4592 tnz -3,ic 005204 aa 000001 3350 07 4593 lca 1,dl one's in A 005205 4a 4 00136 6751 20 4594 era prds$processor_pattern make a mask 005206 4a 4 00134 3551 20 4595 ansa scs$processor turn off bit for this processor 005207 aa 000000 2350 07 4596 lda 0,dl clear the A 005210 4a 4 00352 3551 20 4597 ansa scs$connect_lock can undo lock now 4598 005211 4599 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+> 005211 4a 4 00124 7213 20 4600 lxl1 prds$processor_tag 005212 aa 020001 3202 03 4601 lcx0 processor_data.delete_cpu+1,du turn this bit OFF 005213 4a 4 00270 3403 20 4602 ansx0 scs$processor_data,1 005214 aa 204000 2202 03 4603 ldx0 processor_data.offline+processor_data.halted_cpu,du turn these bits ON 005215 4a 4 00270 2403 20 4604 orsx0 scs$processor_data,1 4605 005216 0a 001324 7062 00 4606 tsx6 UNLOCK undo the lock before dying 4607 005217 aa 000777 6162 07 4608 dis =o777,dl 005220 0a 005217 7102 00 4609 tra *-1 4610 005221 4611 inhibit off <-><-><-><-><-><-><-><-><-><-><-> 4612 005221 4613 reset_system_procs_severity: 005221 aa 000000 000003 4614 dec 3 " severity of syserr message 005222 4615 reset_system_procs_mess: 005222 aa 160 170 163 163 4616 aci "pxss: System default procs required reset to ABCDEFGH" 005223 aa 072 040 123 171 005224 aa 163 164 145 155 005225 aa 040 144 145 146 005226 aa 141 165 154 164 005227 aa 040 160 162 157 005230 aa 143 163 040 162 005231 aa 145 161 165 151 005232 aa 162 145 144 040 005233 aa 162 145 163 145 005234 aa 164 040 164 157 005235 aa 040 101 102 103 005236 aa 104 105 106 107 005237 aa 110 000 000 000 000016 4617 equ reset_system_procs_words,*-reset_system_procs_mess 000070 4618 equ reset_system_procs_chars,4*reset_system_procs_words 005240 4619 reset_system_procs_desc: 005240 aa 524000 000070 4620 vfd 1/1,6/21,5/0,24/reset_system_procs_chars 4621 " 4622 " 4623 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4624 " 4625 " Hardcore stack queue locking/unlocking 4626 " 4627 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4628 005241 4629 lock_stack_queue: 005241 4a 4 00212 2351 20 4630 lda pds$processid 005242 4a 4 00354 3515 20 4631 eppab stack_0_data$ 005243 aa 1 00000 1151 00 4632 cmpa ab|sdt.lock 4633 drlze (pxss: mylock on stack queue) mylock err 005244 0a 005450 6000 00 .._00044.tst: tze .._00044.drl 005245 aa 1 00000 3541 00 4634 stac ab|sdt.lock 005246 aa 000000 0110 00 4635 nop 005247 aa 000000 0110 00 4636 nop 005250 0a 005245 6010 00 4637 tnz *-3 005251 aa 000000 0110 00 4638 nop 005252 aa 1 00000 1151 00 4639 cmpa ab|sdt.lock Check for stac loss. 4640 drlnz (pxss: lock_stack_queue stac failed) 005253 0a 005451 6010 00 .._00045.tst: tnz .._00045.drl 005254 aa 000000 7100 16 4641 tra 0,6 That's why locks are expensive in Multics. 4642 005255 4643 unlock_stack_queue: 005255 4a 4 00212 2361 20 4644 ldq pds$processid 005256 aa 1 00000 1161 00 4645 cmpq ab|sdt.lock Check for other random lossage 4646 drlnz (pxss: unlock_stack_queue not my lock) 005257 0a 005452 6010 00 .._00046.tst: tnz .._00046.drl 005260 aa 000000 6350 00 4647 eaa 0 005261 aa 1 00000 6541 00 4648 stacq ab|sdt.lock 4649 drlnz (pxss: unlock_stack_queue stacq failed) stacq claims failure 005262 0a 005453 6010 00 .._00047.tst: tnz .._00047.drl 005263 aa 000000 0110 00 4650 nop 005264 aa 1 00000 1161 00 4651 cmpq ab|sdt.lock Stacq really win? 4652 drlze (pxss: unlock_stack_queue stacq failed) 005265 0a 005454 6000 00 .._00050.tst: tze .._00050.drl 005266 aa 000000 7100 16 4653 tra 0,6 4654 " 4655 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4656 " 4657 " subroutine to return a stack_0 to the free list 4658 " 4659 " tsx6 free_stack_0 4660 " 4661 " On entry - 4662 " sdt lock must be owned 4663 " ab -> stack_0_data$ 4664 " x4 = index of sdte for this stack 4665 " 4666 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4667 005267 4668 free_stack_0: 005267 aa 000000 6200 00 4669 eax0 0 005270 aa 1 00005 4401 14 4670 sxl0 ab|sdt.aptep,4 No aptep 005271 aa 1 00004 6201 14 4671 eax0 ab|sdt.stacks,4 Thread in 005272 aa 1 00002 2241 00 4672 ldx4 ab|sdt.freep 005273 aa 1 00000 7441 10 4673 stx4 ab|sdte.nextp,0 005274 aa 1 00002 7401 00 4674 stx0 ab|sdt.freep 005275 aa 000000 7100 16 4675 tra 0,6 4676 005276 4677 add_ips_message: 005276 aa 6 00207 7551 00 4678 sta tmp_event "Remember the event 005277 4679 add_ips.retry: 005277 aa 2 00011 2361 00 4680 ldq bp|apte.ips_message 005300 aa 2 00011 2351 00 4681 lda bp|apte.ips_message 005301 aa 6 00207 2751 00 4682 ora tmp_event 005302 aa 2 00011 6541 00 4683 stacq bp|apte.ips_message 005303 0a 005277 6010 00 4684 tnz add_ips.retry 005304 aa 000000 7100 16 4685 tra 0,x6 4686 4687 " 4688 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4689 " 4690 " SUSPEND_GETWORK -- entry to loop until getwork all suspended 4691 " 4692 " Call is 4693 " call pxss$suspend_getwork () 4694 " 4695 " 4696 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 4697 005305 4698 suspend_getwork: 005305 4a 4 00212 2351 20 4699 lda pds$processid see if i have the suspension lock 005306 4a 4 00356 1151 20 4700 cmpa tc_data$tc_suspend_lock 005307 0a 005403 6010 00 4701 tnz sg_returns return if we don't hold lock 4702 005310 0a 001403 6710 00 4703 tsplb setup_mask going to have the APT locked 005311 0a 001302 7060 00 4704 tsx6 WRITE_LOCK while we pre-empt other processes 4705 005312 aa 3 00350 2351 00 4706 lda bb|eligible_q_head 005313 4707 sg_pe_loop: 005313 aa 3 00000 2371 01 4708 ldaq bb|apte.thread,au 005314 0a 005316 7100 26 4709 tra sg_pe_tv,ql* 4710 005315 0a 005344 0000 00 4711 arg sg_pe_done -1 => sentinel 005316 0a 002447 0000 00 4712 sg_pe_tv: arg DRL_empty_apte empty - in eligible list?? 005317 0a 005325 0000 00 4713 arg sg_pre_empt_it running - get the process out of there 005320 0a 005313 0000 00 4714 arg sg_pe_loop ready - skip it 005321 0a 005313 0000 00 4715 arg sg_pe_loop waiting - skip it 005322 0a 002450 0000 00 4716 arg DRL_blocked_apte blocked - doesn't belong here 005323 0a 002451 0000 00 4717 arg DRL_stopped_apte stopped - doesn't belong here 005324 0a 005313 0000 00 4718 arg sg_pe_loop ptlwait - skip it 4719 005325 4720 sg_pre_empt_it: 005325 aa 3 00000 7231 01 4721 lxl3 bb|apte.thread,au get this apte addr from next apte 005326 0a 001367 7060 00 4722 tsx6 LOCK_x3 005327 aa 3 00001 2361 13 4723 ldq bb|apte.flags,3 get a copy of the flags 005330 aa 040000 3160 03 4724 canq apte.pre_empted,du is it already pre-empted? 005331 0a 005341 6010 00 4725 tnz sg_pe_skip yes, so skip it 005332 aa 040400 2350 03 4726 lda apte.pre_empted+apte.pre_empt_pending,du 005333 aa 3 00001 2551 13 4727 orsa bb|apte.flags,3 turn on flags to indicate pre-emption 005334 aa 3 00021 2361 13 4728 ldq bb|apte.flags2,3 get processor tag for the connect 005335 aa 000007 3760 07 4729 anq apte.pr_tag_mask,dl 005336 4a 4 00124 1161 20 4730 cmpq prds$processor_tag is it this processor? 005337 0a 005341 6000 00 4731 tze sg_pe_skip yes, don't connect myself 005340 4a 4 00206 0151 20 4732 cioc scs$cow_ptrs,ql* 4733 005341 4734 sg_pe_skip: 005341 0a 001372 7060 00 4735 tsx6 UNLOCK_x3 release the apte 005342 aa 3 00000 2371 13 4736 ldaq bb|apte.thread,3 clobbered by sg_pre_empt_it code 005343 0a 005313 7100 00 4737 tra sg_pe_loop 4738 005344 4739 sg_pe_done: 005344 0a 001324 7060 00 4740 tsx6 UNLOCK give up the lock for a few microseconds 4741 005345 aa 000000 0110 00 4742 nop 0 delay between lockings 005346 aa 000000 0110 00 4743 nop 0 4744 005347 0a 001256 7060 00 4745 tsx6 READ_LOCK for seeing if all are off the cpus 4746 005350 aa 3 00350 2351 00 4747 lda bb|eligible_q_head 005351 4748 sg_wt_loop: 005351 aa 3 00000 2371 01 4749 ldaq bb|apte.thread,au 005352 0a 005354 7100 26 4750 tra sg_wt_tv,ql* 4751 005353 0a 005401 0000 00 4752 arg sg_wt_done -1 => sentinel 005354 0a 002447 0000 00 4753 sg_wt_tv: arg DRL_empty_apte empty - in eligible list?? 005355 0a 005363 0000 00 4754 arg sg_check_it running - see who it is 005356 0a 005351 0000 00 4755 arg sg_wt_loop ready - skip it 005357 0a 005351 0000 00 4756 arg sg_wt_loop waiting - skip it 005360 0a 002450 0000 00 4757 arg DRL_blocked_apte blocked - doesn't belong here 005361 0a 002451 0000 00 4758 arg DRL_stopped_apte stopped - doesn't belong here 005362 0a 005351 0000 00 4759 arg sg_wt_loop ptlwait - skip it 4760 005363 4761 sg_check_it: 005363 aa 3 00000 7231 01 4762 lxl3 bb|apte.thread,au get this apte addr from next apte 005364 0a 001367 7060 00 4763 tsx6 LOCK_x3 005365 aa 3 00001 2361 13 4764 ldq bb|apte.flags,3 get a copy of the flags 005366 aa 002000 3160 03 4765 canq apte.idle,du is it an idle? 005367 0a 005376 6010 00 4766 tnz sg_wt_skip yes - this is ok. 005370 aa 3 00021 2361 13 4767 ldq bb|apte.flags2,3 get processor tag for this process 005371 aa 000007 3760 07 4768 anq apte.pr_tag_mask,dl 005372 4a 4 00124 1161 20 4769 cmpq prds$processor_tag is it me?? 005373 0a 005376 6000 00 4770 tze sg_wt_skip yes - this is also ok. 4771 005374 0a 001372 7060 00 4772 tsx6 UNLOCK_x3 no - unlock and check all over again 005375 0a 005344 7100 00 4773 tra sg_pe_done 4774 005376 4775 sg_wt_skip: 005376 0a 001372 7060 00 4776 tsx6 UNLOCK_x3 release the apte 005377 aa 3 00000 2371 13 4777 ldaq bb|apte.thread,3 clobbered by sg_check_it code 005400 0a 005351 7100 00 4778 tra sg_wt_loop 4779 005401 4780 sg_wt_done: 005401 0a 001324 7060 00 4781 tsx6 UNLOCK 005402 0a 001444 7070 00 4782 tsx7 switch_back_ret_pds 4783 005403 4784 sg_returns: 005403 aa 7 00044 7101 20 4785 short_return 4786 4787 4788 " 4789 " BEGIN MESSAGE DOCUMENTATION 4790 4791 " Message: 4792 " pxss: notify time out: event=ZZZZZZZZZZZZ, pid=XXXXXXXXXXXX 4793 4794 " S: $info 4795 4796 " T: $run 4797 4798 " M: A hardcore event has not occurred within a reasonable time. 4799 " This may be due to hardware problems 4800 " or to a programming error. 4801 " The system attempts to continue operation. 4802 4803 " A: If this message persists, contact system programmers. 4804 4805 4806 " Message: 4807 " pxss: notify time out: event=ZZZZZZZZZZZZ. During init/shutdown. 4808 4809 " S: $info 4810 4811 " T: $init 4812 4813 " M: A hardcore event has not occurred within a reasonable time 4814 " during system initialization or shutdown. This may be due to hardware 4815 " problems or to a programming error. The system attempts to continue 4816 " initialization or shutdown. 4817 4818 " A: If this message persists, contact system programmers. 4819 4820 4821 " Message: 4822 " pxss: System default procs required reset to ABCDEFGH 4823 4824 " S: $beep 4825 4826 " T: During CPU deconfiguration. 4827 4828 " M: Due to the deletion of a CPU, there were no online CPUs 4829 " remaining in the default set of CPUs. These CPUs are the only CPUs 4830 " on which processes can run which have not requested to be run on 4831 " specific CPUs. The default set of CPUs has been changed to all 4832 " online CPUs. 4833 4834 " A: $inform_sa 4835 4836 " Message: 4837 " pxss: APTE not locked 4838 " 4839 " S: $crash 4840 " 4841 " T: $run 4842 " 4843 " M: $err 4844 " 4845 " A: $recover 4846 4847 " Message: 4848 " pxss: APTE disdains all processors 4849 " 4850 " S: $crash 4851 " 4852 " T: $run 4853 " 4854 " M: $err 4855 " There are no processors-required set for this APTE. 4856 " 4857 " A: $recover 4858 4859 " Message: 4860 " pxss: No term_processid 4861 " 4862 " S: $crash 4863 " 4864 " T: $run 4865 " 4866 " M: $err 4867 " As a process was about to indicate its demise to the master process, 4868 " it discovered, to its chagrin, that it had forgotten who that was. 4869 " 4870 " A: $recover 4871 4872 " Message: 4873 " pxss: Stop returned from getwork 4874 " 4875 " S: $crash 4876 " 4877 " T: $run 4878 " 4879 " M: $err 4880 " 4881 " A: $recover 4882 4883 " Message: 4884 " pxss: sprq already on prds 4885 " 4886 " S: $crash 4887 " 4888 " T: $run 4889 " 4890 " M: $err 4891 " 4892 " A: $recover 4893 4894 " Message: 4895 " pxss: empty_t APTE not stopped or empty 4896 " 4897 " S: $crash 4898 " 4899 " T: $run 4900 " 4901 " M: $err 4902 " an attempt was made to clear an APTE that of a process that was neither 4903 " stopped nor empty. 4904 " 4905 " A: $recover 4906 4907 " Message: 4908 " pxss: APT not locked 4909 " 4910 " S: $crash 4911 " 4912 " T: $run 4913 " 4914 " M: $err 4915 " 4916 " A: $recover 4917 4918 " Message: 4919 " pxss: unthread null back ptr 4920 " 4921 " S: $crash 4922 " 4923 " T: $run 4924 " 4925 " M: $err 4926 " 4927 " A: $recover 4928 4929 " Message: 4930 " pxss: unthread prev.fp ^= cur 4931 " 4932 " S: $crash 4933 " 4934 " T: $run 4935 " 4936 " M: $err 4937 " 4938 " A: $recover 4939 4940 " Message: 4941 " pxss: unthread null cur.fp 4942 " 4943 " S: $crash 4944 " 4945 " T: $run 4946 " 4947 " M: $err 4948 " 4949 " A: $recover 4950 4951 " Message: 4952 " pxss: unlock apt read lock bad count 4953 " 4954 " S: $crash 4955 " 4956 " T: $run 4957 " 4958 " M: $err 4959 " 4960 " A: $recover 4961 4962 " Message: 4963 " pxss: write_to_read bad lock count 4964 " 4965 " S: $crash 4966 " 4967 " T: $run 4968 " 4969 " M: $err 4970 " 4971 " A: $recover 4972 4973 " Message: 4974 " pxss: write_to_read ldac failed 4975 " 4976 " S: $crash 4977 " 4978 " T: $run 4979 " 4980 " M: $err 4981 " This indicates a hardware error. 4982 " 4983 " A: $recover 4984 4985 " Message: 4986 " pxss: UNLOCK_bp not locked 4987 " 4988 " S: $crash 4989 " 4990 " T: $run 4991 " 4992 " M: $err 4993 " 4994 " A: $recover 4995 4996 " Message: 4997 " pxss: UNLOCK_X2 not locked 4998 " 4999 " S: $crash 5000 " 5001 " T: $run 5002 " 5003 " M: $err 5004 " 5005 " A: $recover 5006 5007 " Message: 5008 " pxss: UNLOCK_x3 not locked 5009 " 5010 " S: $crash 5011 " 5012 " T: $run 5013 " 5014 " M: $err 5015 " 5016 " A: $recover 5017 5018 " Message: 5019 " pxss: subroutine_save stack overflow 5020 " 5021 " S: $crash 5022 " 5023 " T: $run 5024 " 5025 " M: $err 5026 " 5027 " A: $recover 5028 5029 " Message: 5030 " pxss: ITT overflows 5031 " 5032 " S: $crash 5033 " 5034 " T: $run 5035 " 5036 " M: $err 5037 " 5038 " A: $recover 5039 5040 " Message: 5041 " pxss: untenable empty APTE 5042 " 5043 " S: $crash 5044 " 5045 " T: $run 5046 " 5047 " M: $err 5048 " 5049 " A: $recover 5050 5051 " Message: 5052 " pxss: untenable blocked APTE 5053 " 5054 " S: $crash 5055 " 5056 " T: $run 5057 " 5058 " M: $err 5059 " 5060 " A: $recover 5061 5062 " Message: 5063 " pxss: untenable stopped APTE 5064 " 5065 " S: $crash 5066 " 5067 " T: $run 5068 " 5069 " M: $err 5070 " 5071 " A: $recover 5072 5073 " Message: 5074 " pxss: thread_him_in already threaded 5075 " 5076 " S: $crash 5077 " 5078 " T: $run 5079 " 5080 " M: $err 5081 " 5082 " A: $recover 5083 5084 " Message: 5085 " pxss: thread_him_in x1 zero 5086 " 5087 " S: $crash 5088 " 5089 " T: $run 5090 " 5091 " M: $err 5092 " 5093 " A: $recover 5094 5095 " Message: 5096 " pxss: thread_him_in x4 zero 5097 " 5098 " S: $crash 5099 " 5100 " T: $run 5101 " 5102 " M: $err 5103 " 5104 " A: $recover 5105 5106 " Message: 5107 " pxss: thread_him_in x4->apte.fp ^= x1 5108 " 5109 " S: $crash 5110 " 5111 " T: $run 5112 " 5113 " M: $err 5114 " 5115 " A: $recover 5116 5117 " Message: 5118 " pxss: apte.state ^= ready 5119 " 5120 " S: $crash 5121 " 5122 " T: $run 5123 " 5124 " M: $err 5125 " 5126 " A: $recover 5127 5128 " Message: 5129 " pxss: thread_him_in x0 zero 5130 " 5131 " S: $crash 5132 " 5133 " T: $run 5134 " 5135 " M: $err 5136 " 5137 " A: $recover 5138 5139 " Message: 5140 " pxss: no available stack_0 5141 " 5142 " S: $crash 5143 " 5144 " T: $run 5145 " 5146 " M: $err 5147 " 5148 " A: $recover 5149 5150 " Message: 5151 " pxss: stack_0 page 0 wired 5152 " 5153 " S: $crash 5154 " 5155 " T: $run 5156 " 5157 " M: $err 5158 " process loading was about to wire the first page of the ring 0 stack when 5159 " it discovered that it had been beaten to the punch. 5160 " 5161 " A: $recover 5162 5163 " Message: 5164 " pxss: no stack_0 sdw 5165 " 5166 " S: $crash 5167 " 5168 " T: $run 5169 " 5170 " M: $err 5171 " 5172 " A: $recover 5173 5174 " Message: 5175 " pxss: freeing unknown stack_0 5176 " 5177 " S: $crash 5178 " 5179 " T: $run 5180 " 5181 " M: $err 5182 " the stack_0 being returned could not be found in the list of stack_0s. 5183 " 5184 " A: $recover 5185 5186 " Message: 5187 " pxss: mylock on stack queue 5188 " 5189 " S: $crash 5190 " 5191 " T: $run 5192 " 5193 " M: $err 5194 " 5195 " A: $recover 5196 5197 " Message: 5198 " pxss: lock_stack_queue stac failed 5199 " 5200 " S: $crash 5201 " 5202 " T: $run 5203 " 5204 " M: $err 5205 " This indicates a hardware error. 5206 " 5207 " A: $recover 5208 5209 " Message: 5210 " pxss: unlock_stack_queue not my lock 5211 " 5212 " S: $crash 5213 " 5214 " T: $run 5215 " 5216 " M: $err 5217 " 5218 " A: $recover 5219 5220 " Message: 5221 " pxss: unlock_stack_queue stacq failed 5222 " 5223 " S: $crash 5224 " 5225 " T: $run 5226 " 5227 " M: $err 5228 " This indicates a hardware error. 5229 " 5230 " A: $recover 5231 5232 " END MESSAGE DOCUMENTATION 5233 5234 end ENTRY SEQUENCES 006155 5a 000460 0000 00 006156 aa 7 00046 2721 20 006157 0a 002067 7100 00 006160 5a 000453 0000 00 006161 aa 7 00046 2721 20 006162 0a 000010 7100 00 006163 5a 000445 0000 00 006164 aa 7 00046 2721 20 006165 0a 002102 7100 00 006166 5a 000435 0000 00 006167 aa 7 00046 2721 20 006170 0a 002424 7100 00 006171 5a 000430 0000 00 006172 aa 7 00046 2721 20 006173 0a 000667 7100 00 006174 5a 000421 0000 00 006175 aa 7 00046 2721 20 006176 0a 000012 7100 00 006177 5a 000411 0000 00 006200 aa 7 00046 2721 20 006201 0a 000104 7100 00 006202 5a 000403 0000 00 006203 aa 7 00046 2721 20 006204 0a 000530 7100 00 006205 5a 000375 0000 00 006206 aa 7 00046 2721 20 006207 0a 000266 7100 00 006210 5a 000367 0000 00 006211 aa 7 00046 2721 20 006212 0a 001007 7100 00 006213 5a 000361 0000 00 006214 aa 7 00046 2721 20 006215 0a 000102 7100 00 006216 5a 000347 0000 00 006217 aa 7 00046 2721 20 006220 0a 001143 7100 00 006221 5a 000335 0000 00 006222 aa 7 00046 2721 20 006223 0a 001135 7100 00 006224 5a 000327 0000 00 006225 aa 7 00046 2721 20 006226 0a 000116 7100 00 006227 5a 000321 0000 00 006230 aa 7 00046 2721 20 006231 0a 004527 7100 00 006232 5a 000312 0000 00 006233 aa 7 00046 2721 20 006234 0a 004524 7100 00 006235 5a 000304 0000 00 006236 aa 7 00046 2721 20 006237 0a 001224 7100 00 006240 5a 000276 0000 00 006241 aa 7 00046 2721 20 006242 0a 001234 7100 00 006243 5a 000271 0000 00 006244 aa 7 00046 2721 20 006245 0a 002300 7100 00 006246 5a 000263 0000 00 006247 aa 7 00046 2721 20 006250 0a 002262 7100 00 006251 5a 000255 0000 00 006252 aa 7 00046 2721 20 006253 0a 002152 7100 00 006254 5a 000247 0000 00 006255 aa 7 00046 2721 20 006256 0a 002111 7100 00 006257 5a 000242 0000 00 006260 aa 7 00046 2721 20 006261 0a 002176 7100 00 006262 5a 000234 0000 00 006263 aa 7 00046 2721 20 006264 0a 000344 7100 00 006265 5a 000225 0000 00 006266 aa 7 00046 2721 20 006267 0a 000342 7100 00 006270 5a 000217 0000 00 006271 aa 7 00046 2721 20 006272 0a 002430 7100 00 006273 5a 000211 0000 00 006274 aa 7 00046 2721 20 006275 0a 002372 7100 00 006276 5a 000201 0000 00 006277 aa 7 00046 2721 20 006300 0a 001155 7100 00 006301 5a 000172 0000 00 006302 aa 7 00046 2721 20 006303 0a 000107 7100 00 006304 5a 000163 0000 00 006305 aa 7 00046 2721 20 006306 0a 001203 7100 00 006307 5a 000153 0000 00 006310 aa 7 00046 2721 20 006311 0a 000602 7100 00 006312 5a 000145 0000 00 006313 aa 7 00046 2721 20 006314 0a 001172 7100 00 006315 5a 000136 0000 00 006316 aa 7 00046 2721 20 006317 0a 001041 7100 00 006320 5a 000131 0000 00 006321 aa 7 00046 2721 20 006322 0a 000510 7100 00 006323 5a 000124 0000 00 006324 aa 7 00046 2721 20 006325 0a 000427 7100 00 006326 5a 000116 0000 00 006327 aa 7 00046 2721 20 006330 0a 000427 7100 00 006331 5a 000107 0000 00 006332 aa 7 00046 2721 20 006333 0a 005305 7100 00 006334 5a 000100 0000 00 006335 aa 7 00046 2721 20 006336 0a 002644 7100 00 006337 5a 000067 0000 00 006340 aa 7 00046 2721 20 006341 0a 000113 7100 00 006342 5a 000061 0000 00 006343 aa 7 00046 2721 20 006344 0a 001230 7100 00 006345 5a 000053 0000 00 006346 aa 7 00046 2721 20 006347 0a 001247 7100 00 006350 5a 000044 0000 00 006351 aa 7 00046 2721 20 006352 0a 002660 7100 00 006353 5a 000035 0000 00 006354 aa 7 00046 2721 20 006355 0a 002513 7100 00 006356 5a 000030 0000 00 006357 aa 7 00046 2721 20 006360 0a 002240 7100 00 006361 5a 000023 0000 00 006362 aa 7 00046 2721 20 006363 0a 002231 7100 00 006364 5a 000016 0000 00 006365 aa 7 00046 2721 20 006366 0a 000122 7100 00 006367 5a 000010 0000 00 006370 aa 7 00046 2721 20 006371 0a 000107 7100 00 LITERALS 006372 aa 777777 777776 006373 aa 161165 151164 006374 aa 163164 157160 006376 aa 000000 000000 006377 aa 000000 000000 006400 aa 000006 000004 006401 aa 000006 000000 006402 aa 143160 165164 006403 aa 151155 145162 006404 aa 077777 000043 006405 aa 000001 000000 006406 aa 160164 154167 006410 aa 000010 000004 006411 aa 000010 000000 006412 aa 163145 164141 006413 aa 154141 162155 006414 aa 000003 777777 006416 aa 000004 000004 006417 aa 000004 000000 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 006420 5a 000003 000000 006421 5a 000475 600000 006422 aa 000000 000000 006423 55 000010 000002 006424 5a 000002 400003 006425 55 000006 000010 006426 aa 004 160 170 163 006427 aa 163 000 000 000 006430 55 000016 000003 006431 0a 006370 500000 006432 55 000013 000003 006433 aa 012 167 141 153 wakeup_int 006434 aa 145 165 160 137 006435 aa 151 156 164 000 006436 55 000023 000010 006437 0a 006365 500000 006440 55 000021 000003 006441 aa 006 167 141 153 wakeup 006442 aa 145 165 160 000 006443 55 000030 000016 006444 0a 006362 500000 006445 55 000026 000003 006446 aa 005 167 141 151 waitp 006447 aa 164 160 000 000 006450 55 000035 000023 006451 0a 006357 500000 006452 55 000033 000003 006453 aa 004 167 141 151 wait 006454 aa 164 000 000 000 006455 55 000044 000030 006456 0a 006354 500000 006457 55 000040 000003 006460 aa 014 165 163 141 usage_values 006461 aa 147 145 137 166 006462 aa 141 154 165 145 006463 aa 163 000 000 000 006464 55 000053 000035 006465 0a 006351 500000 006466 55 000047 000003 006467 aa 015 165 156 164 unthread_apte 006470 aa 150 162 145 141 006471 aa 144 137 141 160 006472 aa 164 145 000 000 006473 55 000061 000044 006474 0a 006346 500000 006475 55 000056 000003 006476 aa 013 165 156 154 unlock_apte 006477 aa 157 143 153 137 006500 aa 141 160 164 145 006501 55 000067 000053 006502 0a 006343 500000 006503 55 000064 000003 006504 aa 012 165 156 154 unlock_apt 006505 aa 157 143 153 137 006506 aa 141 160 164 000 006507 55 000100 000061 006510 0a 006340 500000 006511 55 000072 000003 006512 aa 024 165 156 151 unique_ring_0_wakeup 006513 aa 161 165 145 137 006514 aa 162 151 156 147 006515 aa 137 060 137 167 006516 aa 141 153 145 165 006517 aa 160 000 000 000 006520 55 000107 000067 006521 0a 006335 500000 006522 55 000103 000003 006523 aa 016 164 150 162 thread_in_idle 006524 aa 145 141 144 137 006525 aa 151 156 137 151 006526 aa 144 154 145 000 006527 55 000116 000100 006530 0a 006332 500000 006531 55 000112 000003 006532 aa 017 163 165 163 suspend_getwork 006533 aa 160 145 156 144 006534 aa 137 147 145 164 006535 aa 167 157 162 153 006536 55 000124 000107 006537 0a 006327 500000 006540 55 000121 000003 006541 aa 013 163 164 157 stop_wakeup 006542 aa 160 137 167 141 006543 aa 153 145 165 160 006544 55 000131 000116 006545 0a 006324 500000 006546 55 000127 000003 006547 aa 004 163 164 157 stop 006550 aa 160 000 000 000 006551 55 000136 000124 006552 0a 006321 500000 006553 55 000134 000003 006554 aa 005 163 164 141 start 006555 aa 162 164 000 000 006556 55 000145 000131 006557 0a 006316 500000 006560 55 000141 000003 006561 aa 016 163 145 164 set_work_class 006562 aa 137 167 157 162 006563 aa 153 137 143 154 006564 aa 141 163 163 000 006565 55 000153 000136 006566 0a 006313 500000 006567 55 000150 000003 006570 aa 011 163 145 164 set_timer 006571 aa 137 164 151 155 006572 aa 145 162 000 000 006573 55 000163 000145 006574 0a 006310 500000 006575 55 000156 000003 006576 aa 022 163 145 164 set_procs_required 006577 aa 137 160 162 157 006600 aa 143 163 137 162 006601 aa 145 161 165 151 006602 aa 162 145 144 000 006603 55 000172 000153 006604 0a 006305 500000 006605 55 000166 000003 006606 aa 015 163 145 164 set_cpu_timer 006607 aa 137 143 160 165 006610 aa 137 164 151 155 006611 aa 145 162 000 000 006612 55 000201 000163 006613 0a 006302 500000 006614 55 000175 000003 006615 aa 015 162 151 156 ring_0_wakeup 006616 aa 147 137 060 137 006617 aa 167 141 153 145 006620 aa 165 160 000 000 006621 55 000211 000172 006622 0a 006277 500000 006623 55 000204 000003 006624 aa 023 162 145 154 relinquish_priority 006625 aa 151 156 161 165 006626 aa 151 163 150 137 006627 aa 160 162 151 157 006630 aa 162 151 164 171 006631 55 000217 000201 006632 0a 006274 500000 006633 55 000214 000003 006634 aa 010 160 164 154 ptl_wait 006635 aa 137 167 141 151 006636 aa 164 000 000 000 006637 55 000225 000211 006640 0a 006271 500000 006641 55 000222 000003 006642 aa 012 160 164 154 ptl_notify 006643 aa 137 156 157 164 006644 aa 151 146 171 000 006645 55 000234 000217 006646 0a 006266 500000 006647 55 000230 000003 006650 aa 015 160 162 145 pre_empt_poll 006651 aa 137 145 155 160 006652 aa 164 137 160 157 006653 aa 154 154 000 000 006654 55 000242 000225 006655 0a 006263 500000 006656 55 000237 000003 006657 aa 010 160 162 145 pre_empt 006660 aa 137 145 155 160 006661 aa 164 000 000 000 006662 55 000247 000234 006663 0a 006260 500000 006664 55 000245 000003 006665 aa 005 160 141 165 pause 006666 aa 163 145 000 000 006667 55 000255 000242 006670 0a 006255 500000 006671 55 000252 000003 006672 aa 011 160 141 147 page_wait 006673 aa 145 137 167 141 006674 aa 151 164 000 000 006675 55 000263 000247 006676 0a 006252 500000 006677 55 000260 000003 006700 aa 012 160 141 147 page_pause 006701 aa 145 137 160 141 006702 aa 165 163 145 000 006703 55 000271 000255 006704 0a 006247 500000 006705 55 000266 000003 006706 aa 013 160 141 147 page_notify 006707 aa 145 137 156 157 006710 aa 164 151 146 171 006711 55 000276 000263 006712 0a 006244 500000 006713 55 000274 000003 006714 aa 006 156 157 164 notify 006715 aa 151 146 171 000 006716 55 000304 000271 006717 0a 006241 500000 006720 55 000301 000003 006721 aa 011 154 157 143 lock_apte 006722 aa 153 137 141 160 006723 aa 164 145 000 000 006724 55 000312 000276 006725 0a 006236 500000 006726 55 000307 000003 006727 aa 010 154 157 143 lock_apt 006730 aa 153 137 141 160 006731 aa 164 000 000 000 006732 55 000321 000304 006733 0a 006233 500000 006734 55 000315 000003 006735 aa 016 151 160 163 ips_wakeup_int 006736 aa 137 167 141 153 006737 aa 145 165 160 137 006740 aa 151 156 164 000 006741 55 000327 000312 006742 0a 006230 500000 006743 55 000324 000003 006744 aa 012 151 160 163 ips_wakeup 006745 aa 137 167 141 153 006746 aa 145 165 160 000 006747 55 000335 000321 006750 0a 006225 500000 006751 55 000332 000003 006752 aa 011 151 157 137 io_wakeup 006753 aa 167 141 153 145 006754 aa 165 160 000 000 006755 55 000347 000327 006756 0a 006222 500000 006757 55 000340 000003 006760 aa 031 147 165 141 guaranteed_eligibility_on 006761 aa 162 141 156 164 006762 aa 145 145 144 137 006763 aa 145 154 151 147 006764 aa 151 142 151 154 006765 aa 151 164 171 137 006766 aa 157 156 000 000 006767 55 000361 000335 006770 0a 006217 500000 006771 55 000352 000003 006772 aa 032 147 165 141 guaranteed_eligibility_off 006773 aa 162 141 156 164 006774 aa 145 145 144 137 006775 aa 145 154 151 147 006776 aa 151 142 151 154 006777 aa 151 164 171 137 007000 aa 157 146 146 000 007001 55 000367 000347 007002 0a 006214 500000 007003 55 000364 000003 007004 aa 011 147 145 164 get_event 007005 aa 137 145 166 145 007006 aa 156 164 000 000 007007 55 000375 000361 007010 0a 006211 500000 007011 55 000372 000003 007012 aa 011 147 145 164 get_entry 007013 aa 137 145 156 164 007014 aa 162 171 000 000 007015 55 000403 000367 007016 0a 006206 500000 007017 55 000400 000003 007020 aa 010 146 162 145 free_itt 007021 aa 145 137 151 164 007022 aa 164 000 000 000 007023 55 000411 000375 007024 0a 006203 500000 007025 55 000406 000003 007026 aa 012 146 157 162 force_stop 007027 aa 143 145 137 163 007030 aa 164 157 160 000 007031 55 000421 000403 007032 0a 006200 500000 007033 55 000414 000003 007034 aa 022 146 141 163 fast_ipc_get_event 007035 aa 164 137 151 160 007036 aa 143 137 147 145 007037 aa 164 137 145 166 007040 aa 145 156 164 000 007041 55 000430 000411 007042 0a 006175 500000 007043 55 000424 000003 007044 aa 016 146 141 163 fast_ipc_block 007045 aa 164 137 151 160 007046 aa 143 137 142 154 007047 aa 157 143 153 000 007050 55 000435 000421 007051 0a 006172 500000 007052 55 000433 000003 007053 aa 007 145 155 160 empty_t 007054 aa 164 171 137 164 007055 55 000445 000430 007056 0a 006167 500000 007057 55 000440 000003 007060 aa 023 144 166 143 dvctl_retry_ptlwait 007061 aa 164 154 137 162 007062 aa 145 164 162 171 007063 aa 137 160 164 154 007064 aa 167 141 151 164 007065 55 000453 000435 007066 0a 006164 500000 007067 55 000450 000003 007070 aa 010 144 145 154 delevent 007071 aa 145 166 145 156 007072 aa 164 000 000 000 007073 55 000460 000445 007074 0a 006161 500000 007075 55 000456 000003 007076 aa 005 142 154 157 block 007077 aa 143 153 000 000 007100 55 000466 000453 007101 0a 006156 500000 007102 55 000463 000003 007103 aa 010 141 144 144 addevent 007104 aa 145 166 145 156 007105 aa 164 000 000 000 007106 55 000002 000460 007107 6a 000000 400002 007110 55 000471 000003 007111 aa 014 163 171 155 symbol_table 007112 aa 142 157 154 137 007113 aa 164 141 142 154 007114 aa 145 000 000 000 DEFINITIONS HASH TABLE 007115 aa 000000 000131 007116 aa 000000 000000 007117 aa 000000 000000 007120 5a 000466 000000 007121 5a 000201 000000 007122 5a 000421 000000 007123 5a 000044 000000 007124 aa 000000 000000 007125 aa 000000 000000 007126 5a 000430 000000 007127 aa 000000 000000 007130 aa 000000 000000 007131 aa 000000 000000 007132 5a 000403 000000 007133 5a 000023 000000 007134 5a 000107 000000 007135 aa 000000 000000 007136 aa 000000 000000 007137 aa 000000 000000 007140 5a 000153 000000 007141 5a 000217 000000 007142 5a 000242 000000 007143 5a 000263 000000 007144 5a 000035 000000 007145 5a 000053 000000 007146 5a 000271 000000 007147 5a 000276 000000 007150 5a 000321 000000 007151 5a 000335 000000 007152 5a 000453 000000 007153 aa 000000 000000 007154 aa 000000 000000 007155 aa 000000 000000 007156 aa 000000 000000 007157 aa 000000 000000 007160 aa 000000 000000 007161 aa 000000 000000 007162 5a 000124 000000 007163 5a 000163 000000 007164 aa 000000 000000 007165 5a 000100 000000 007166 5a 000067 000000 007167 aa 000000 000000 007170 aa 000000 000000 007171 5a 000411 000000 007172 5a 000211 000000 007173 5a 000247 000000 007174 aa 000000 000000 007175 5a 000016 000000 007176 5a 000375 000000 007177 aa 000000 000000 007200 aa 000000 000000 007201 aa 000000 000000 007202 aa 000000 000000 007203 5a 000435 000000 007204 5a 000131 000000 007205 aa 000000 000000 007206 aa 000000 000000 007207 aa 000000 000000 007210 5a 000312 000000 007211 5a 000347 000000 007212 aa 000000 000000 007213 aa 000000 000000 007214 aa 000000 000000 007215 5a 000225 000000 007216 5a 000361 000000 007217 5a 000367 000000 007220 aa 000000 000000 007221 aa 000000 000000 007222 5a 000136 000000 007223 aa 000000 000000 007224 5a 000030 000000 007225 5a 000460 000000 007226 aa 000000 000000 007227 aa 000000 000000 007230 aa 000000 000000 007231 aa 000000 000000 007232 5a 000255 000000 007233 aa 000000 000000 007234 5a 000304 000000 007235 5a 000061 000000 007236 5a 000327 000000 007237 5a 000172 000000 007240 5a 000116 000000 007241 5a 000234 000000 007242 5a 000445 000000 007243 aa 000000 000000 007244 5a 000010 000000 007245 5a 000145 000000 007246 aa 000000 000000 EXTERNAL NAMES 007247 aa 017 164 143 137 tc_suspend_lock 007250 aa 163 165 163 160 007251 aa 145 156 144 137 007252 aa 154 157 143 153 007253 aa 014 163 164 141 stack_0_data 007254 aa 143 153 137 060 007255 aa 137 144 141 164 007256 aa 141 000 000 000 007257 aa 014 143 157 156 connect_lock 007260 aa 156 145 143 164 007261 aa 137 154 157 143 007262 aa 153 000 000 000 007263 aa 007 160 164 167 ptwbase 007264 aa 142 141 163 145 007265 aa 003 141 160 164 apt 007266 aa 011 141 154 162 alrm_mask 007267 aa 155 137 155 141 007270 aa 163 153 000 000 007271 aa 010 151 144 154 idle_ptr 007272 aa 145 137 160 164 007273 aa 162 000 000 000 007274 aa 021 151 156 151 initial_procedure 007275 aa 164 151 141 154 007276 aa 137 160 162 157 007277 aa 143 145 144 165 007300 aa 162 145 000 000 007301 aa 016 151 156 151 initializer_id 007302 aa 164 151 141 154 007303 aa 151 172 145 162 007304 aa 137 151 144 000 007305 aa 014 163 164 141 stack_0_sdwp 007306 aa 143 153 137 060 007307 aa 137 163 144 167 007310 aa 160 000 000 000 007311 aa 022 154 141 163 last_recorded_time 007312 aa 164 137 162 145 007313 aa 143 157 162 144 007314 aa 145 144 137 164 007315 aa 151 155 145 000 007316 aa 011 143 160 165 cput_mask 007317 aa 164 137 155 141 007320 aa 163 153 000 000 007321 aa 005 167 151 162 wired 007322 aa 145 144 000 000 007323 aa 024 150 146 160 hfp_exponent_enabled 007324 aa 137 145 170 160 007325 aa 157 156 145 156 007326 aa 164 137 145 156 007327 aa 141 142 154 145 007330 aa 144 000 000 000 007331 aa 010 155 157 144 mode_reg 007332 aa 145 137 162 145 007333 aa 147 000 000 000 007334 aa 020 155 157 144 mode_reg_enabled 007335 aa 145 137 162 145 007336 aa 147 137 145 156 007337 aa 141 142 154 145 007340 aa 144 000 000 000 007341 aa 004 144 163 145 dseg 007342 aa 147 000 000 000 007343 aa 022 154 141 163 last_timer_setting 007344 aa 164 137 164 151 007345 aa 155 145 162 137 007346 aa 163 145 164 164 007347 aa 151 156 147 000 007350 aa 015 142 141 163 base_addr_reg 007351 aa 145 137 141 144 007352 aa 144 162 137 162 007353 aa 145 147 000 000 007354 aa 026 156 165 155 number_of_pages_in_use 007355 aa 142 145 162 137 007356 aa 157 146 137 160 007357 aa 141 147 145 163 007360 aa 137 151 156 137 007361 aa 165 163 145 000 007362 aa 016 160 162 157 processor_data 007363 aa 143 145 163 163 007364 aa 157 162 137 144 007365 aa 141 164 141 000 007366 aa 013 160 157 163 post_purged 007367 aa 164 137 160 165 007370 aa 162 147 145 144 007371 aa 005 156 165 163 nused 007372 aa 145 144 000 000 007373 aa 012 160 141 147 page_waits 007374 aa 145 137 167 141 007375 aa 151 164 163 000 007376 aa 015 166 151 162 virtual_delta 007377 aa 164 165 141 154 007400 aa 137 144 145 154 007401 aa 164 141 000 000 007402 aa 013 164 151 155 time_v_temp 007403 aa 145 137 166 137 007404 aa 164 145 155 160 007405 aa 010 143 160 165 cpu_time 007406 aa 137 164 151 155 007407 aa 145 000 000 000 007410 aa 013 166 164 151 vtime_count 007411 aa 155 145 137 143 007412 aa 157 165 156 164 007413 aa 021 160 164 154 ptl_notify_return 007414 aa 137 156 157 164 007415 aa 151 146 171 137 007416 aa 162 145 164 165 007417 aa 162 156 000 000 007420 aa 016 143 157 162 core_queue_man 007421 aa 145 137 161 165 007422 aa 145 165 145 137 007423 aa 155 141 156 000 007424 aa 017 160 164 154 ptl_wait_return 007425 aa 137 167 141 151 007426 aa 164 137 162 145 007427 aa 164 165 162 156 007430 aa 013 160 164 154 ptl_wait_ct 007431 aa 137 167 141 151 007432 aa 164 137 143 164 007433 aa 003 160 164 154 ptl 007434 aa 003 163 163 164 sst 007435 aa 015 156 157 164 notify_return 007436 aa 151 146 171 137 007437 aa 162 145 164 165 007440 aa 162 156 000 000 007441 aa 005 144 145 160 depth 007442 aa 164 150 000 000 007443 aa 013 167 141 151 wait_enable 007444 aa 164 137 145 156 007445 aa 141 142 154 145 007446 aa 014 160 167 141 pwait_return 007447 aa 151 164 137 162 007450 aa 145 164 165 162 007451 aa 156 000 000 000 007452 aa 016 144 145 166 device_control 007453 aa 151 143 145 137 007454 aa 143 157 156 164 007455 aa 162 157 154 000 007456 aa 013 167 141 151 wait_return 007457 aa 164 137 162 145 007460 aa 164 165 162 156 007461 aa 012 160 141 147 page_fault 007462 aa 145 137 146 141 007463 aa 165 154 164 000 007464 aa 024 151 156 151 init_timeout_recurse 007465 aa 164 137 164 151 007466 aa 155 145 157 165 007467 aa 164 137 162 145 007470 aa 143 165 162 163 007471 aa 145 000 000 000 007472 aa 025 151 156 151 init_timeout_severity 007473 aa 164 137 164 151 007474 aa 155 145 157 165 007475 aa 164 137 163 145 007476 aa 166 145 162 151 007477 aa 164 171 000 000 007500 aa 007 160 143 137 pc_call 007501 aa 143 141 154 154 007502 aa 021 151 156 151 init_wait_timeout 007503 aa 164 137 167 141 007504 aa 151 164 137 164 007505 aa 151 155 145 157 007506 aa 165 164 000 000 007507 aa 016 151 156 151 init_wait_time 007510 aa 164 137 167 141 007511 aa 151 164 137 164 007512 aa 151 155 145 000 007513 aa 012 151 156 151 init_event 007514 aa 164 137 145 166 007515 aa 145 156 164 000 007516 aa 011 160 162 157 processid 007517 aa 143 145 163 163 007520 aa 151 144 000 000 007521 aa 012 141 154 141 alarm_ring 007522 aa 162 155 137 162 007523 aa 151 156 147 000 007524 aa 010 143 157 167 cow_ptrs 007525 aa 137 160 164 162 007526 aa 163 000 000 000 007527 aa 007 154 141 163 last_sp 007530 aa 164 137 163 160 007531 aa 011 163 171 163 sys_level 007532 aa 137 154 145 166 007533 aa 145 154 000 000 007534 aa 011 162 145 141 read_mask 007535 aa 144 137 155 141 007536 aa 163 153 000 000 007537 aa 007 164 143 137 tc_argp 007540 aa 141 162 147 160 007541 aa 021 160 170 163 pxss_args_invalid 007542 aa 163 137 141 162 007543 aa 147 163 137 151 007544 aa 156 166 141 154 007545 aa 151 144 000 000 007546 aa 012 154 157 157 loop_locks 007547 aa 160 137 154 157 007550 aa 143 153 163 000 007551 aa 016 154 157 157 loop_lock_time 007552 aa 160 137 154 157 007553 aa 143 153 137 164 007554 aa 151 155 145 000 007555 aa 015 164 151 155 timer_channel 007556 aa 145 162 137 143 007557 aa 150 141 156 156 007560 aa 145 154 000 000 007561 aa 016 164 151 155 timer_time_out 007562 aa 145 162 137 164 007563 aa 151 155 145 137 007564 aa 157 165 164 000 007565 aa 007 141 160 164 apt_ptr 007566 aa 137 160 164 162 007567 aa 016 142 141 144 bad_work_class 007570 aa 137 167 157 162 007571 aa 153 137 143 154 007572 aa 141 163 163 000 007573 aa 015 142 141 144 bad_processid 007574 aa 137 160 162 157 007575 aa 143 145 163 163 007576 aa 151 144 000 000 007577 aa 014 145 162 162 error_table_ 007600 aa 157 162 137 164 007601 aa 141 142 154 145 007602 aa 137 000 000 000 007603 aa 005 141 162 147 arg_4 007604 aa 137 064 000 000 007605 aa 010 141 160 164 apt_lock 007606 aa 137 154 157 143 007607 aa 153 000 000 000 007610 aa 021 160 162 157 processor_pattern 007611 aa 143 145 163 163 007612 aa 157 162 137 160 007613 aa 141 164 164 145 007614 aa 162 156 000 000 007615 aa 011 160 162 157 processor 007616 aa 143 145 163 163 007617 aa 157 162 000 000 007620 aa 010 163 145 164 set_mask 007621 aa 137 155 141 163 007622 aa 153 000 000 000 007623 aa 010 155 141 163 mask_ptr 007624 aa 153 137 160 164 007625 aa 162 000 000 000 007626 aa 015 160 162 157 processor_tag 007627 aa 143 145 163 163 007630 aa 157 162 137 164 007631 aa 141 147 000 000 007632 aa 012 157 160 145 open_level 007633 aa 156 137 154 145 007634 aa 166 145 154 000 007635 aa 003 163 143 163 scs 007636 aa 007 164 143 137 tc_mask 007637 aa 155 141 163 153 007640 aa 017 160 162 145 pre_empt_return 007641 aa 137 145 155 160 007642 aa 164 137 162 145 007643 aa 164 165 162 156 007644 aa 011 167 151 162 wired_fim 007645 aa 145 144 137 146 007646 aa 151 155 000 000 007647 aa 024 160 162 145 pre_empt_poll_return 007650 aa 137 145 155 160 007651 aa 164 137 160 157 007652 aa 154 154 137 162 007653 aa 145 164 165 162 007654 aa 156 000 000 000 007655 aa 006 143 154 157 clock_ 007656 aa 143 153 137 000 007657 aa 024 141 143 143 access_authorization 007660 aa 145 163 163 137 007661 aa 141 165 164 150 007662 aa 157 162 151 172 007663 aa 141 164 151 157 007664 aa 156 000 000 000 007665 aa 010 167 153 160 wkp_mask 007666 aa 137 155 141 163 007667 aa 153 000 000 000 007670 aa 010 163 171 163 sys_info 007671 aa 137 151 156 146 007672 aa 157 000 000 000 007673 aa 020 166 141 154 validation_level 007674 aa 151 144 141 164 007675 aa 151 157 156 137 007676 aa 154 145 166 145 007677 aa 154 000 000 000 007700 aa 005 141 162 147 arg_3 007701 aa 137 063 000 000 007702 aa 005 141 162 147 arg_2 007703 aa 137 062 000 000 007704 aa 005 141 162 147 arg_1 007705 aa 137 061 000 000 007706 aa 013 167 141 153 wakeup_flag 007707 aa 145 165 160 137 007710 aa 146 154 141 147 007711 aa 013 163 164 141 stack_0_ptr 007712 aa 143 153 137 060 007713 aa 137 160 164 162 007714 aa 010 151 160 143 ipc_vars 007715 aa 137 166 141 162 007716 aa 163 000 000 000 007717 aa 016 145 166 145 events_pending 007720 aa 156 164 163 137 007721 aa 160 145 156 144 007722 aa 151 156 147 000 007723 aa 010 151 164 164 itt_head 007724 aa 137 150 145 141 007725 aa 144 000 000 000 007726 aa 033 166 151 162 virtual_time_at_eligibility 007727 aa 164 165 141 154 007730 aa 137 164 151 155 007731 aa 145 137 141 164 007732 aa 137 145 154 151 007733 aa 147 151 142 151 007734 aa 154 151 164 171 007735 aa 002 164 143 000 tc 007736 aa 023 155 145 164 meter_response_time 007737 aa 145 162 137 162 007740 aa 145 163 160 157 007741 aa 156 163 145 137 007742 aa 164 151 155 145 007743 aa 020 151 160 143 ipc_block_return 007744 aa 137 142 154 157 007745 aa 143 153 137 162 007746 aa 145 164 165 162 007747 aa 156 000 000 000 007750 aa 003 160 144 163 pds 007751 aa 012 160 157 163 post_purge 007752 aa 164 137 160 165 007753 aa 162 147 145 000 007754 aa 016 160 157 154 poll_volmap_io 007755 aa 154 137 166 157 007756 aa 154 155 141 160 007757 aa 137 151 157 000 007760 aa 023 166 157 154 volmap_polling_time 007761 aa 155 141 160 137 007762 aa 160 157 154 154 007763 aa 151 156 147 137 007764 aa 164 151 155 145 007765 aa 020 160 157 154 poll_for_timeout 007766 aa 154 137 146 157 007767 aa 162 137 164 151 007770 aa 155 145 157 165 007771 aa 164 000 000 000 007772 aa 006 157 143 144 ocdcm_ 007773 aa 143 155 137 000 007774 aa 020 157 160 143 opc_polling_time 007775 aa 137 160 157 154 007776 aa 154 151 156 147 007777 aa 137 164 151 155 010000 aa 145 000 000 000 010001 aa 004 160 157 154 poll 010002 aa 154 000 000 000 010003 aa 020 155 157 163 mos_memory_check 010004 aa 137 155 145 155 010005 aa 157 162 171 137 010006 aa 143 150 145 143 010007 aa 153 000 000 000 010010 aa 020 155 157 163 mos_polling_time 010011 aa 137 160 157 154 010012 aa 154 151 156 147 010013 aa 137 164 151 155 010014 aa 145 000 000 000 010015 aa 005 164 151 155 timer 010016 aa 145 162 000 000 010017 aa 012 151 157 151 ioi_masked 010020 aa 137 155 141 163 010021 aa 153 145 144 000 010022 aa 021 164 141 160 tape_polling_time 010023 aa 145 137 160 157 010024 aa 154 154 151 156 010025 aa 147 137 164 151 010026 aa 155 145 000 000 010027 aa 010 164 151 155 time_out 010030 aa 145 137 157 165 010031 aa 164 000 000 000 010032 aa 021 144 151 163 disk_polling_time 010033 aa 153 137 160 157 010034 aa 154 154 151 156 010035 aa 147 137 164 151 010036 aa 155 145 000 000 010037 aa 007 164 143 137 tc_data 010040 aa 144 141 164 141 010041 aa 004 154 157 141 load 010042 aa 144 000 000 000 010043 aa 011 167 151 162 wired_plm 010044 aa 145 144 137 160 010045 aa 154 155 000 000 010046 aa 006 163 171 163 syserr 010047 aa 145 162 162 000 010050 aa 003 143 141 155 cam 010051 aa 004 160 141 147 page 010052 aa 145 000 000 000 010053 aa 004 160 162 144 prds 010054 aa 163 000 000 000 NO TRAP POINTER WORDS TYPE PAIR BLOCKS 010055 aa 000004 000000 010056 55 001417 000627 010057 aa 000003 000000 010060 5a 000633 000000 010061 aa 000004 000000 010062 55 001215 000637 010063 aa 000004 000000 010064 55 001014 000643 010065 aa 000004 000000 010066 55 001417 000645 010067 aa 000004 000000 010070 55 001250 000646 010071 aa 000004 000000 010072 55 001433 000651 010073 aa 000004 000000 010074 55 001330 000654 010075 aa 000004 000000 010076 55 001417 000661 010077 aa 000004 000000 010100 55 001330 000665 010101 aa 000004 000000 010102 55 001433 000671 010103 aa 000004 000000 010104 55 001250 000676 010105 aa 000004 000000 010106 55 001014 000701 010107 aa 000003 000000 010110 5a 001014 000000 010111 aa 000004 000000 010112 55 001330 000703 010113 aa 000004 000000 010114 55 001433 000711 010115 aa 000004 000000 010116 55 001433 000714 010117 aa 000004 000000 010120 55 001433 001145 010121 aa 000003 000000 010122 5a 000721 000000 010123 aa 000004 000000 010124 55 001433 000723 010125 aa 000004 000000 010126 55 001330 000730 010127 aa 000004 000000 010130 55 001330 000734 010131 aa 000004 000000 010132 55 001215 000742 010133 aa 000004 000000 010134 55 001330 000746 010135 aa 000004 000000 010136 55 001014 000751 010137 aa 000004 000000 010140 55 001330 000753 010141 aa 000004 000000 010142 55 001330 000756 010143 aa 000004 000000 010144 55 001330 000762 010145 aa 000004 000000 010146 55 001330 000765 010147 aa 000004 000000 010150 55 001330 000770 010151 aa 000004 000000 010152 55 001000 000773 010153 aa 000004 000000 010154 55 001041 001004 010155 aa 000004 000000 010156 55 001014 001010 010157 aa 000004 000000 010160 55 001014 001013 010161 aa 000004 000000 010162 55 001431 001015 010163 aa 000004 000000 010164 55 001433 001021 010165 aa 000004 000000 010166 55 001417 001023 010167 aa 000004 000000 010170 55 001032 001026 010171 aa 000004 000000 010172 55 001041 001036 010173 aa 000004 000000 010174 55 001417 001044 010175 aa 000004 000000 010176 55 001417 001052 010177 aa 000004 000000 010200 55 001330 001060 010201 aa 000004 000000 010202 55 001417 001062 010203 aa 000004 000000 010204 55 001417 001067 010205 aa 000004 000000 010206 55 001417 001073 010207 aa 000004 000000 010210 55 001330 001076 010211 aa 000004 000000 010212 55 001330 001101 010213 aa 000004 000000 010214 55 001215 001104 010215 aa 000004 000000 010216 55 001330 001107 010217 aa 000004 000000 010220 55 001215 001111 010221 aa 000004 000000 010222 55 001215 001114 010223 aa 000004 000000 010224 55 001330 001117 010225 aa 000004 000000 010226 55 001330 001121 010227 aa 000004 000000 010230 55 001417 001126 010231 aa 000004 000000 010232 55 001417 001131 010233 aa 000004 000000 010234 55 001330 001135 010235 aa 000004 000000 010236 55 001330 001141 010237 aa 000004 000000 010240 55 001330 001145 010241 aa 000004 000000 010242 55 001157 001147 010243 aa 000004 000000 010244 55 001157 001153 010245 aa 000004 000000 010246 55 001330 001163 010247 aa 000004 000000 010250 55 001417 001165 010251 aa 000004 000000 010252 55 001433 001170 010253 aa 000004 000000 010254 55 001215 001175 010255 aa 000004 000000 010256 55 001215 001200 010257 aa 000004 000000 010260 55 001215 001203 010261 aa 000004 000000 010262 55 001433 001206 010263 aa 000004 000000 010264 55 001215 001212 010265 aa 000004 000000 010266 55 001330 001216 010267 aa 000004 000000 010270 55 001224 001220 010271 aa 000004 000000 010272 55 001330 001227 010273 aa 000003 000000 010274 5a 001417 000000 010275 aa 000004 000000 010276 55 001250 001235 010277 aa 000004 000000 010300 55 001330 001237 010301 aa 000004 000000 010302 55 001250 001245 010303 aa 000004 000000 010304 55 001330 001253 010305 aa 000004 000000 010306 55 001330 001260 010307 aa 000004 000000 010310 55 001330 001262 010311 aa 000004 000000 010312 55 001330 001264 010313 aa 000004 000000 010314 55 001330 001266 010315 aa 000004 000000 010316 55 001330 001271 010317 aa 000004 000000 010320 55 001330 001274 010321 aa 000004 000000 010322 55 001330 001277 010323 aa 000004 000000 010324 55 001330 001303 010325 aa 000004 000000 010326 55 001330 001306 010327 aa 000004 000000 010330 55 001316 001315 010331 aa 000004 000000 010332 55 001330 001323 010333 aa 000004 000000 010334 55 001431 001331 010335 aa 000004 000000 010336 55 001431 001334 010337 aa 000004 000000 010340 55 001417 001340 010341 aa 000004 000000 010342 55 001352 001345 010343 aa 000004 000000 010344 55 001417 001354 010345 aa 000004 000000 010346 55 001363 001361 010347 aa 000004 000000 010350 55 001417 001370 010351 aa 000004 000000 010352 55 001377 001375 010353 aa 000004 000000 010354 55 001417 001402 010355 aa 000004 000000 010356 55 001431 001407 010357 aa 000004 000000 010360 55 001417 001412 010361 aa 000004 000000 010362 55 001423 001421 010363 aa 000004 000000 010364 55 001426 001426 010365 aa 000004 000000 010366 55 001431 001430 010367 aa 000003 000000 010370 5a 001433 000000 010371 aa 000001 000000 010372 aa 000000 000000 INTERNAL EXPRESSION WORDS 010373 5a 001435 000000 010374 5a 001437 000000 010375 5a 001441 000000 010376 5a 001451 000000 010377 5a 001443 000000 010400 5a 001467 000000 010401 5a 001445 000000 010402 5a 001447 000000 010403 5a 001451 000001 010404 5a 001453 000000 010405 5a 001455 000000 010406 5a 001457 000000 010407 5a 001461 000000 010410 5a 001463 000000 010411 5a 001615 000001 010412 5a 001465 000000 010413 5a 001467 000014 010414 5a 001471 000000 010415 5a 001473 000000 010416 5a 001475 000000 010417 5a 001477 000000 010420 5a 001501 000000 010421 5a 001503 000000 010422 5a 001505 000000 010423 5a 001507 000000 010424 5a 001511 000000 010425 5a 001513 000000 010426 5a 001515 000000 010427 5a 001517 000000 010430 5a 001521 000000 010431 5a 001523 000000 010432 5a 001525 000000 010433 5a 001527 000000 010434 5a 001531 000000 010435 5a 001533 000000 010436 5a 001535 000000 010437 5a 001537 000000 010440 5a 001541 000000 010441 5a 001543 000000 010442 5a 001545 000000 010443 5a 001547 000000 010444 5a 001551 000000 010445 5a 001553 000000 010446 5a 001555 000000 010447 5a 001557 000000 010450 5a 001561 000000 010451 5a 001563 000000 010452 5a 001565 000000 010453 5a 001567 000000 010454 5a 001571 000000 010455 5a 001573 000000 010456 5a 001617 000001 010457 5a 001575 000000 010460 5a 001577 000000 010461 5a 001601 000000 010462 5a 001603 000000 010463 5a 001605 000000 010464 5a 001607 000000 010465 5a 001611 000000 010466 5a 001613 000000 010467 5a 001615 000000 010470 5a 001617 000000 010471 5a 001621 000000 010472 5a 001623 000000 010473 5a 001625 000000 010474 5a 001627 000000 010475 5a 001631 000000 010476 5a 001633 000000 010477 5a 001635 000000 010500 5a 001637 000000 010501 5a 001641 000000 010502 5a 001643 000000 010503 5a 001645 000000 010504 5a 001747 000024 010505 5a 001747 000022 010506 5a 001647 000000 010507 5a 001651 000000 010510 5a 001653 000000 010511 5a 001655 000000 010512 5a 001657 000000 010513 5a 001657 000001 010514 5a 001661 000000 010515 5a 001663 000000 010516 5a 001665 000000 010517 5a 001667 000000 010520 5a 001671 000000 010521 5a 001673 000000 010522 5a 001675 000000 010523 5a 001677 000001 010524 5a 001701 000000 010525 5a 001703 000000 010526 5a 001705 000000 010527 5a 001707 000000 010530 5a 001711 000000 010531 5a 001713 000000 010532 5a 001715 000000 010533 5a 001717 000000 010534 5a 001721 000000 010535 5a 001723 000000 010536 5a 001725 000000 010537 5a 001727 000000 010540 5a 001731 000000 010541 5a 001733 000000 010542 5a 001735 000000 010543 5a 001737 000000 010544 5a 001741 000000 010545 5a 001743 000000 010546 5a 001745 000000 010547 5a 001747 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 006420 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000360 000007 a2 000000 000000 000010 9a 777770 0000 46 prds| 000011 5a 002127 0000 00 000012 9a 777766 0000 46 page|cam 000013 5a 002126 0000 00 000014 9a 777764 0000 46 syserr|syserr 000015 5a 002125 0000 00 000016 9a 777762 0000 46 wired_plm|load 000017 5a 002124 0000 00 000020 9a 777760 0000 46 tc_data|disk_polling_time 000021 5a 002123 0000 00 000022 9a 777756 0000 46 page|time_out 000023 5a 002122 0000 00 000024 9a 777754 0000 46 tc_data|tape_polling_time 000025 5a 002121 0000 00 000026 9a 777752 0000 46 ioi_masked|timer 000027 5a 002120 0000 00 000030 9a 777750 0000 46 tc_data|mos_polling_time 000031 5a 002117 0000 00 000032 9a 777746 0000 46 mos_memory_check|poll 000033 5a 002116 0000 00 000034 9a 777744 0000 46 tc_data|opc_polling_time 000035 5a 002115 0000 00 000036 9a 777742 0000 46 ocdcm_|poll_for_timeout 000037 5a 002114 0000 00 000040 9a 777740 0000 46 tc_data|volmap_polling_time 000041 5a 002113 0000 00 000042 9a 777736 0000 46 page|poll_volmap_io 000043 5a 002112 0000 00 000044 9a 777734 0000 46 page|post_purge 000045 5a 002111 0000 00 000046 9a 777732 0000 46 pds|ipc_block_return 000047 5a 002110 0000 00 000050 9a 777730 0000 46 meter_response_time|tc 000051 5a 002107 0000 00 000052 9a 777726 0000 46 pds|virtual_time_at_eligibility 000053 5a 002106 0000 00 000054 9a 777724 0000 46 pds|itt_head 000055 5a 002105 0000 00 000056 9a 777722 0000 46 pds|events_pending 000057 5a 002104 0000 00 000060 9a 777720 0000 46 pds|ipc_vars 000061 5a 002103 0000 00 000062 9a 777716 0000 46 pds|stack_0_ptr 000063 5a 002102 0000 20 000064 9a 777714 0000 46 pds|wakeup_flag 000065 5a 002101 0000 00 000066 9a 777712 0000 46 pds|arg_1 000067 5a 002100 0000 00 000070 9a 777710 0000 46 pds|arg_2 000071 5a 002077 0000 00 000072 9a 777706 0000 46 pds|arg_3 000073 5a 002076 0000 00 000074 9a 777704 0000 46 pds|validation_level 000075 5a 002075 0000 00 000076 9a 777702 0000 46 sys_info|wkp_mask 000077 5a 002074 0000 00 000100 9a 777700 0000 46 pds|access_authorization 000101 5a 002073 0000 00 000102 9a 777676 0000 46 pds|access_authorization 000103 5a 002072 0000 00 000104 9a 777674 0000 46 sys_info|clock_ 000105 5a 002071 0000 20 000106 9a 777672 0000 46 tc_data| 000107 5a 002070 0000 00 000110 9a 777670 0000 46 pds|pre_empt_poll_return 000111 5a 002067 0000 00 000112 9a 777666 0000 46 wired_fim|pre_empt_return 000113 5a 002066 0000 00 000114 9a 777664 0000 46 prds| 000115 5a 002065 0000 00 000116 9a 777662 0000 46 prds| 000117 5a 002064 0000 00 000120 9a 777660 0000 46 pds|tc_mask 000121 5a 002063 0000 00 000122 9a 777656 0000 46 scs|open_level 000123 5a 002062 0000 00 000124 9a 777654 0000 46 prds|processor_tag 000125 5a 002061 0000 00 000126 9a 777652 0000 46 scs|mask_ptr 000127 5a 002060 0000 11 000130 9a 777650 0000 46 scs|set_mask 000131 5a 002057 0000 11 000132 9a 777646 0000 46 pds|pre_empt_poll_return 000133 5a 002067 0000 20 000134 9a 777644 0000 46 scs|processor 000135 5a 002056 0000 00 000136 9a 777642 0000 46 prds|processor_pattern 000137 5a 002055 0000 00 000140 9a 777640 0000 46 pds|arg_1 000141 5a 002100 0000 20 000142 9a 777636 0000 46 tc_data|apt_lock 000143 5a 002054 0000 00 000144 9a 777634 0000 46 pds|arg_4 000145 5a 002053 0000 00 000146 9a 777632 0000 46 error_table_|bad_processid 000147 5a 002052 0000 00 000150 9a 777630 0000 46 error_table_|bad_work_class 000151 5a 002051 0000 00 000152 9a 777626 0000 46 pds|apt_ptr 000153 5a 002050 0000 20 000154 9a 777624 0000 46 pds|timer_time_out 000155 5a 002047 0000 00 000156 9a 777622 0000 46 pds|timer_channel 000157 5a 002046 0000 00 000160 9a 777620 0000 46 tc_data|loop_lock_time 000161 5a 002045 0000 00 000162 9a 777616 0000 46 tc_data|loop_locks 000163 5a 002044 0000 00 000164 9a 777614 0000 46 pds|pxss_args_invalid 000165 5a 002043 0000 00 000166 9a 777612 0000 46 pds|tc_argp 000167 5a 002042 0000 00 000170 9a 777610 0000 46 scs|read_mask 000171 5a 002041 0000 11 000172 9a 777606 0000 46 scs|sys_level 000173 5a 002040 0000 00 000174 9a 777604 0000 46 pds|last_sp 000175 5a 002037 0000 00 000176 9a 777602 0000 46 prds| 000177 5a 002065 0000 20 000200 9a 777600 0000 46 pds|last_sp 000201 5a 002037 0000 20 000202 9a 777576 0000 46 pds|tc_argp 000203 5a 002042 0000 20 000204 9a 777574 0000 46 pds|apt_ptr 000205 5a 002036 0000 00 000206 9a 777572 0000 46 scs|cow_ptrs 000207 5a 002035 0000 26 000210 9a 777570 0000 46 pds|alarm_ring 000211 5a 002034 0000 00 000212 9a 777566 0000 46 pds|processid 000213 5a 002033 0000 00 000214 9a 777564 0000 46 tc_data|init_event 000215 5a 002032 0000 00 000216 9a 777562 0000 46 tc_data|init_wait_time 000217 5a 002031 0000 00 000220 9a 777560 0000 46 tc_data|init_wait_timeout 000221 5a 002030 0000 00 000222 9a 777556 0000 46 pds|pc_call 000223 5a 002027 0000 00 000224 9a 777554 0000 46 tc_data|init_timeout_severity 000225 5a 002026 0000 00 000226 9a 777552 0000 46 tc_data|init_timeout_recurse 000227 5a 002025 0000 00 000230 9a 777550 0000 46 page_fault|wait_return 000231 5a 002024 0000 00 000232 9a 777546 0000 46 device_control|pwait_return 000233 5a 002023 0000 00 000234 9a 777544 0000 46 tc_data|wait_enable 000235 5a 002022 0000 00 000236 9a 777542 0000 46 prds|depth 000237 5a 002021 0000 00 000240 9a 777540 0000 46 page|notify_return 000241 5a 002020 0000 00 000242 9a 777536 0000 46 sst|ptl 000243 5a 002017 0000 00 000244 9a 777534 0000 46 sst|ptl_wait_ct 000245 5a 002016 0000 00 000246 9a 777532 0000 46 page_fault|ptl_wait_return 000247 5a 002015 0000 00 000250 9a 777530 0000 46 core_queue_man|ptl_notify_return 000251 5a 002014 0000 00 000252 9a 777526 0000 46 pds|vtime_count 000253 5a 002013 0000 00 000254 9a 777524 0000 46 pds|cpu_time 000255 5a 002012 0000 00 000256 9a 777522 0000 46 pds|time_v_temp 000257 5a 002011 0000 00 000260 9a 777520 0000 46 pds|virtual_delta 000261 5a 002010 0000 00 000262 9a 777516 0000 46 pds|page_waits 000263 5a 002007 0000 00 000264 9a 777514 0000 46 sst|nused 000265 5a 002006 0000 00 000266 9a 777512 0000 46 pds|post_purged 000267 5a 002005 0000 00 000270 9a 777510 0000 46 scs|processor_data 000271 5a 002004 0000 11 000272 9a 777506 0000 46 pds|number_of_pages_in_use 000273 5a 002003 0000 00 000274 9a 777504 0000 46 pds|base_addr_reg 000275 5a 002002 0000 00 000276 9a 777502 0000 46 prds|last_timer_setting 000277 5a 002001 0000 00 000300 9a 777500 0000 46 dseg| 000301 5a 002000 0000 10 000302 9a 777476 0000 46 prds|apt_ptr 000303 5a 001777 0000 00 000304 9a 777474 0000 46 prds|mode_reg_enabled 000305 5a 001776 0000 00 000306 9a 777472 0000 46 prds|mode_reg 000307 5a 001775 0000 00 000310 9a 777470 0000 46 pds|hfp_exponent_enabled 000311 5a 001774 0000 00 000312 9a 777466 0000 46 sst| 000313 5a 001773 0000 01 000314 9a 777464 0000 46 sst| 000315 5a 001773 0000 05 000316 9a 777462 0000 46 sst|wired 000317 5a 001772 0000 00 000320 9a 777460 0000 46 pds|timer_time_out 000321 5a 001771 0000 00 000322 9a 777456 0000 46 sys_info|cput_mask 000323 5a 001770 0000 00 000324 9a 777454 0000 46 prds|last_recorded_time 000325 5a 001767 0000 00 000326 9a 777452 0000 46 pds|stack_0_sdwp 000327 5a 001766 0000 20 000330 9a 777450 0000 46 tc_data|initializer_id 000331 5a 001765 0000 00 000332 9a 777446 0000 46 pds|initial_procedure 000333 5a 001764 0000 00 000334 9a 777444 0000 46 prds|idle_ptr 000335 5a 001763 0000 00 000336 9a 777442 0000 46 sys_info|alrm_mask 000337 5a 001762 0000 00 000340 9a 777440 0000 46 tc_data|apt 000341 5a 001761 0000 06 000342 9a 777436 0000 46 sst| 000343 5a 001760 0000 00 000344 9a 777434 0000 46 sst|ptwbase 000345 5a 001757 0000 00 000346 9a 777432 0000 46 tc_data|apt 000347 5a 001761 0000 00 000350 9a 777430 0000 46 prds|idle_ptr 000351 5a 001756 0000 20 000352 9a 777426 0000 46 scs|connect_lock 000353 5a 001755 0000 00 000354 9a 777424 0000 46 stack_0_data| 000355 5a 001754 0000 00 000356 9a 777422 0000 46 tc_data|tc_suspend_lock 000357 5a 001753 0000 00 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 117547 000007 aa 242714 204305 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 001505 000020 aa 000000 000451 000021 aa 001257 001205 000022 aa 001462 000451 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 110151 162156 000035 aa 145151 163145 000036 aa 156056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 055164 141162 000045 aa 147145 164040 000046 aa 154066 070040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040154 151163 000057 aa 164040 163171 000060 aa 155142 157154 000061 aa 163040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000024 000066 aa 000206 000033 000067 aa 175453 020441 000070 aa 000000 117547 000071 aa 177450 200000 000072 aa 000215 000032 000073 aa 147777 464062 000074 aa 000000 115000 000075 aa 507456 000000 000076 aa 000224 000032 000077 aa 133234 136212 000100 aa 000000 113324 000101 aa 322064 200000 000102 aa 000233 000040 000103 aa 120665 353564 000104 aa 000000 112067 000105 aa 450516 400000 000106 aa 000243 000050 000107 aa 147777 464101 000110 aa 000000 115000 000111 aa 507456 200000 000112 aa 000255 000043 000113 aa 043243 130004 000114 aa 000000 101621 000115 aa 352153 600000 000116 aa 000266 000037 000117 aa 106701 740560 000120 aa 000000 110670 000121 aa 206245 000000 000122 aa 000276 000030 000123 aa 123154 505731 000124 aa 000000 112316 000125 aa 133412 600000 000126 aa 000304 000036 000127 aa 116261 736456 000130 aa 000000 111626 000131 aa 317120 400000 000132 aa 000314 000031 000133 aa 102456 350276 000134 aa 000000 110246 000135 aa 520730 400000 000136 aa 000323 000035 000137 aa 106701 740574 000140 aa 000000 110670 000141 aa 206425 200000 000142 aa 000333 000045 000143 aa 133234 136230 000144 aa 000000 113324 000145 aa 322064 400000 000146 aa 000345 000052 000147 aa 101443 226611 000150 aa 000000 110144 000151 aa 403046 400000 000152 aa 000360 000031 000153 aa 075522 764240 000154 aa 000000 107555 000155 aa 332322 000000 000156 aa 000367 000042 000157 aa 065405 771162 000160 aa 000000 106540 000161 aa 755427 600000 000162 aa 000400 000041 000163 aa 052721 247134 000164 aa 000000 105272 000165 aa 317215 400000 000166 aa 000411 000042 000167 aa 147777 464111 000170 aa 000000 115000 000171 aa 507463 000000 000172 aa 000422 000040 000173 aa 046742 631025 000174 aa 000000 104674 000175 aa 403663 000000 000176 aa 000432 000037 000177 aa 133234 136201 000200 aa 000000 113324 000201 aa 322062 600000 000202 aa 000442 000032 000203 aa 110440 510400 000204 aa 000000 111044 000205 aa 621362 000000 000206 aa 076163 160145 >spec>install>1112>pxss.alm 000207 aa 143076 151156 000210 aa 163164 141154 000211 aa 154076 061061 000212 aa 061062 076160 000213 aa 170163 163056 000214 aa 141154 155040 000215 aa 076154 144144 >ldd>include>apte.incl.alm 000216 aa 076151 156143 000217 aa 154165 144145 000220 aa 076141 160164 000221 aa 145056 151156 000222 aa 143154 056141 000223 aa 154155 040040 000224 aa 076154 144144 >ldd>include>aste.incl.alm 000225 aa 076151 156143 000226 aa 154165 144145 000227 aa 076141 163164 000230 aa 145056 151156 000231 aa 143154 056141 000232 aa 154155 040040 000233 aa 076154 144144 >ldd>include>drl_macros.incl.alm 000234 aa 076151 156143 000235 aa 154165 144145 000236 aa 076144 162154 000237 aa 137155 141143 000240 aa 162157 163056 000241 aa 151156 143154 000242 aa 056141 154155 000243 aa 076154 144144 >ldd>include>event_channel_name.incl.alm 000244 aa 076151 156143 000245 aa 154165 144145 000246 aa 076145 166145 000247 aa 156164 137143 000250 aa 150141 156156 000251 aa 145154 137156 000252 aa 141155 145056 000253 aa 151156 143154 000254 aa 056141 154155 000255 aa 076154 144144 >ldd>include>ips_mask_data.incl.alm 000256 aa 076151 156143 000257 aa 154165 144145 000260 aa 076151 160163 000261 aa 137155 141163 000262 aa 153137 144141 000263 aa 164141 056151 000264 aa 156143 154056 000265 aa 141154 155040 000266 aa 076154 144144 >ldd>include>itt_entry.incl.alm 000267 aa 076151 156143 000270 aa 154165 144145 000271 aa 076151 164164 000272 aa 137145 156164 000273 aa 162171 056151 000274 aa 156143 154056 000275 aa 141154 155040 000276 aa 076154 144144 >ldd>include>mc.incl.alm 000277 aa 076151 156143 000300 aa 154165 144145 000301 aa 076155 143056 000302 aa 151156 143154 000303 aa 056141 154155 000304 aa 076154 144144 >ldd>include>mode_reg.incl.alm 000305 aa 076151 156143 000306 aa 154165 144145 000307 aa 076155 157144 000310 aa 145137 162145 000311 aa 147056 151156 000312 aa 143154 056141 000313 aa 154155 040040 000314 aa 076154 144144 >ldd>include>ptw.incl.alm 000315 aa 076151 156143 000316 aa 154165 144145 000317 aa 076160 164167 000320 aa 056151 156143 000321 aa 154056 141154 000322 aa 155040 040040 000323 aa 076154 144144 >ldd>include>ptw.l68.incl.alm 000324 aa 076151 156143 000325 aa 154165 144145 000326 aa 076160 164167 000327 aa 056154 066070 000330 aa 056151 156143 000331 aa 154056 141154 000332 aa 155040 040040 000333 aa 076154 144144 >ldd>include>pxss_page_stack.incl.alm 000334 aa 076151 156143 000335 aa 154165 144145 000336 aa 076160 170163 000337 aa 163137 160141 000340 aa 147145 137163 000341 aa 164141 143153 000342 aa 056151 156143 000343 aa 154056 141154 000344 aa 155040 040040 000345 aa 076154 144144 >ldd>include>response_transitions.incl.alm 000346 aa 076151 156143 000347 aa 154165 144145 000350 aa 076162 145163 000351 aa 160157 156163 000352 aa 145137 164162 000353 aa 141156 163151 000354 aa 164151 157156 000355 aa 163056 151156 000356 aa 143154 056141 000357 aa 154155 040040 000360 aa 076154 144144 >ldd>include>scs.incl.alm 000361 aa 076151 156143 000362 aa 154165 144145 000363 aa 076163 143163 000364 aa 056151 156143 000365 aa 154056 141154 000366 aa 155040 040040 000367 aa 076154 144144 >ldd>include>stack_0_data.incl.alm 000370 aa 076151 156143 000371 aa 154165 144145 000372 aa 076163 164141 000373 aa 143153 137060 000374 aa 137144 141164 000375 aa 141056 151156 000376 aa 143154 056141 000377 aa 154155 040040 000400 aa 076154 144144 >ldd>include>stack_frame.incl.alm 000401 aa 076151 156143 000402 aa 154165 144145 000403 aa 076163 164141 000404 aa 143153 137146 000405 aa 162141 155145 000406 aa 056151 156143 000407 aa 154056 141154 000410 aa 155040 040040 000411 aa 076154 144144 >ldd>include>stack_header.incl.alm 000412 aa 076151 156143 000413 aa 154165 144145 000414 aa 076163 164141 000415 aa 143153 137150 000416 aa 145141 144145 000417 aa 162056 151156 000420 aa 143154 056141 000421 aa 154155 040040 000422 aa 076154 144144 >ldd>include>state_equs.incl.alm 000423 aa 076151 156143 000424 aa 154165 144145 000425 aa 076163 164141 000426 aa 164145 137145 000427 aa 161165 163056 000430 aa 151156 143154 000431 aa 056141 154155 000432 aa 076154 144144 >ldd>include>tc_meters.incl.alm 000433 aa 076151 156143 000434 aa 154165 144145 000435 aa 076164 143137 000436 aa 155145 164145 000437 aa 162163 056151 000440 aa 156143 154056 000441 aa 141154 155040 000442 aa 076154 144144 >ldd>include>wcte.incl.alm 000443 aa 076151 156143 000444 aa 154165 144145 000445 aa 076167 143164 000446 aa 145056 151156 000447 aa 143154 056141 000450 aa 154155 040040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 5455 .._00000.acc pxss: 490. 5404 .._00000.drl pxss: 490. 245 .._00000.tst pxss: 490. 5463 .._00001.acc pxss: 698. 5405 .._00001.drl pxss: 698. 444 .._00001.tst pxss: 698. 5474 .._00002.acc pxss: 788. 5406 .._00002.drl pxss: 788. 542 .._00002.tst pxss: 788. 5502 .._00003.acc pxss: 820. 5407 .._00003.drl pxss: 820. 575 .._00003.tst pxss: 820. 5513 .._00004.acc pxss: 861. 5410 .._00004.drl pxss: 861. 604 .._00004.tst pxss: 861. 5522 .._00005.acc pxss: 877. 5411 .._00005.drl pxss: 877. 622 .._00005.tst pxss: 877. 5533 .._00006.acc pxss: 942. 5412 .._00006.drl pxss: 942. 703 .._00006.tst pxss: 942. 5545 .._00007.acc pxss: 1003. 5413 .._00007.drl pxss: 1003. 754 .._00007.tst pxss: 1003. 5553 .._00010.acc pxss: 1030. 5414 .._00010.drl pxss: 1030. 771 .._00010.tst pxss: 1030. 5561 .._00011.acc pxss: 1034. 5415 .._00011.drl pxss: 1034. 775 .._00011.tst pxss: 1034. 5571 .._00012.acc pxss: 1037. 5416 .._00012.drl pxss: 1037. 1000 .._00012.tst pxss: 1037. 5601 .._00013.acc pxss: 1039. 5417 .._00013.drl pxss: 1039. 1002 .._00013.tst pxss: 1039. 5610 .._00014.acc pxss: 1076. 5420 .._00014.drl pxss: 1076. 1032 .._00014.tst pxss: 1076. 5621 .._00015.acc pxss: 1446. 5421 .._00015.drl pxss: 1446. 1332 .._00015.tst pxss: 1446. 5633 .._00016.acc pxss: 1455. 5422 .._00016.drl pxss: 1455. 1340 .._00016.tst pxss: 1455. 5644 .._00017.acc pxss: 1458. 5423 .._00017.drl pxss: 1458. 1342 .._00017.tst pxss: 1458. 5654 .._00020.acc pxss: 1486. 5424 .._00020.drl pxss: 1486. 1355 .._00020.tst pxss: 1486. 5663 .._00021.acc pxss: 1497. 5425 .._00021.drl pxss: 1497. 1364 .._00021.tst pxss: 1497. 5672 .._00022.acc pxss: 1508. 5426 .._00022.drl pxss: 1508. 1373 .._00022.tst pxss: 1508. 5701 .._00023.acc pxss: 1717. 5427 .._00023.drl pxss: 1717. 1471 .._00023.tst pxss: 1717. 5713 .._00024.acc pxss: 1763. 5430 .._00024.drl pxss: 1763. 1513 .._00024.tst pxss: 1763. 5721 .._00025.acc pxss: 1917. 5431 .._00025.drl pxss: 1917. 1700 .._00025.tst pxss: 1917. 5726 .._00026.acc pxss: 2496. 5432 .._00026.drl pxss: 2496. 2447 .._00026.tst pxss: 2496. 5735 .._00027.acc pxss: 2498. 5433 .._00027.drl pxss: 2498. 2450 .._00027.tst pxss: 2498. 5745 .._00030.acc pxss: 2500. 5434 .._00030.drl pxss: 2500. 2451 .._00030.tst pxss: 2500. 5755 .._00031.acc pxss: 2673. 5435 .._00031.drl pxss: 2673. 2621 .._00031.tst pxss: 2673. 5763 .._00032.acc pxss: 2675. 5436 .._00032.drl pxss: 2675. 2623 .._00032.tst pxss: 2675. 5775 .._00033.acc pxss: 2677. 5437 .._00033.drl pxss: 2677. 2625 .._00033.tst pxss: 2677. 6004 .._00034.acc pxss: 2679. 5440 .._00034.drl pxss: 2679. 2627 .._00034.tst pxss: 2679. 6013 .._00035.acc pxss: 2681. 5441 .._00035.drl pxss: 2681. 2631 .._00035.tst pxss: 2681. 6025 .._00036.acc pxss: 2684. 5442 .._00036.drl pxss: 2684. 2634 .._00036.tst pxss: 2684. 6034 .._00037.acc pxss: 2686. 5443 .._00037.drl pxss: 2686. 2636 .._00037.tst pxss: 2686. 6043 .._00040.acc pxss: 3425. 5444 .._00040.drl pxss: 3425. 3554 .._00040.tst pxss: 3425. 6052 .._00041.acc pxss: 4292. 5445 .._00041.drl pxss: 4292. 4713 .._00041.tst pxss: 4292. 6061 .._00042.acc pxss: 4296. 5446 .._00042.drl pxss: 4296. 4716 .._00042.tst pxss: 4296. 6067 .._00043.acc pxss: 4305. 5447 .._00043.drl pxss: 4305. 4726 .._00043.tst pxss: 4305. 6077 .._00044.acc pxss: 4633. 5450 .._00044.drl pxss: 4633. 5244 .._00044.tst pxss: 4633. 6106 .._00045.acc pxss: 4640. 5451 .._00045.drl pxss: 4640. 5253 .._00045.tst pxss: 4640. 6117 .._00046.acc pxss: 4646. 5452 .._00046.drl pxss: 4646. 5257 .._00046.tst pxss: 4646. 6131 .._00047.acc pxss: 4649. 5453 .._00047.drl pxss: 4649. 5262 .._00047.tst pxss: 4649. 6143 .._00050.acc pxss: 4652. 5454 .._00050.drl pxss: 4652. 5265 .._00050.tst pxss: 4652. 5404 .derails. pxss: 490, 698, 788, 820, 861, 877, 942, 1003, 1030, 1034, 1037, 1039, 1076, 1446, 1455, 1458, 1486, 1497, 1508, 1717, 1763, 1917, 2496, 2498, 2500, 2673, 2675, 2677, 2679, 2681, 2684, 2686, 3425, 4292, 4296, 4305, 4633, 4640, 4646, 4649, 4652. 5455 .drlmsg. pxss: 490, 698, 788, 820, 861, 877, 942, 1003, 1030, 1034, 1037, 1039, 1076, 1446, 1455, 1458, 1486, 1497, 1508, 1717, 1763, 1917, 2496, 2498, 2500, 2673, 2675, 2677, 2679, 2681, 2684, 2686, 3425, 4292, 4296, 4305, 4633, 4640, 4646, 4649, 4652. 0 .text. pxss: 490, 698, 788, 820, 861, 877, 942, 1003, 1030, 1034, 1037, 1039, 1076, 1446, 1455, 1458, 1486, 1497, 1508, 1717, 1763, 1917, 2496, 2498, 2500, 2673, 2675, 2677, 2679, 2681, 2684, 2686, 3425, 4292, 4296, 4305, 4633, 4640, 4646, 4649, 4652. 477 abort_ips_mask tc_meters: 226. 1222 abs_time pxss: 1293, 1303. access_authorization pxss: 465, 469, 471, 472. 2067 addevent pxss: 138, 2070. 5277 add_ips.retry pxss: 4679, 4684. 5276 add_ips_message pxss: 3374, 3672, 4145, 4677. 4342 age pxss: 3911, 3926. 4323 agl pxss: 3910, 3924. 316 aht_size tc_meters: 127. alarm_ring pxss: 1739, 1740, 2814, 2815, 3400, 3404, 3454. 4031 alarm_timer pxss: 3149, 3631. 357 alarm_timer_list pxss: 793, 797, 800, 3654, 3662, 3781, tc_meters: 159. 776000 all_procs_required pxss: 4521, tc_meters: 206. 3571 already_got_stack_0 pxss: 3421, 3439. alrm_mask pxss: 3671. 1657 append_itt_message pxss: 1862, 1890, 1893. apt pxss: 4074, 4559. 42 apte.access_authorization pxss: 464, 468, apte: 98. 24 apte.alarm_event pxss: 3669, 3682, apte: 79. 26 apte.alarm_time pxss: 789, 796, 801, 803, 805, 806, 3657, 3661, 3664, 3783, apte: 82. 26 apte.alarm_time_thread apte: 81. 40 apte.always_loaded pxss: 3308, apte: 29. 66 apte.apad apte: 120. 12 apte.asteps pxss: 3316, 3604, apte: 54. 10 apte.batch pxss: 2879, 3049, 4245, apte: 74. 21 apte.batch_word apte: 73. 60 apte.begin_interaction_vcpu apte: 112. 10 apte.being_loaded pxss: 3579, 3582, 3614, apte: 31. 0 apte.bp apte: 13. 23 apte.chans_offset pxss: 280, 1772, apte: 71. 37 apte.cpu_monitor pxss: 3355, 4424, 4428, 4432, 4434, apte: 94. 52 apte.current_response_state apte: 108. 44 apte.dbr pxss: 3285, apte: 101. 20 apte.dbr_loaded pxss: 1725, 3025, 3172, 3221, 3339, 3341, 4167, apte: 30. 34 apte.deadline pxss: 2661, 2666, 3157, 3168, 4205, 4226, 4333, apte: 90. 200 apte.default_procs_required pxss: 701, 890, 894, 1072, 4558, apte: 27. 12 apte.dseg apte: 56. 4000 apte.eligible pxss: 722, 1149, 3054, 3308, 4165, 4240, apte: 23. 10 apte.event_thread apte: 50. 1 apte.firstsw pxss: 3442, 3463, apte: 34. 1 apte.flags pxss: 247, 253, 270, 272, 404, 421, 427, 492, 608, 617, 657, 702, 721, 729, 759, 784, 891, 895, 954, 1004, 1073, 1122, 1148, 1724, 2134, 2368, 2376, 2602, 2606, 2615, 2655, 2798, 2802, 3024, 3055, 3067, 3071, 3129, 3171, 3213, 3217, 3307, 3314, 3340, 3342, 3361, 3391, 3395, 3438, 3441, 3456, 3464, 3534, 3583, 3598, 3611, 3615, 3928, 3974, 3988, 4009, 4164, 4196, 4241, 4263, 4314, 4562, 4569, 4723, 4727, 4764, apte: 15. 21 apte.flags2 pxss: 277, 279, 1202, 1210, 1732, 1774, 2803, 2878, 3048, 3290, 3294, 3709, 4244, 4354, 4728, 4767, apte: 69. 0 apte.fp apte: 12. 20000 apte.hproc apte: 21. 2000 apte.idle pxss: 405, 609, 1005, 1123, 3214, 3362, 3442, 3445, 3929, 3975, 4010, 4563, 4765, apte: 24. 1000 apte.interaction pxss: 420, 2601, 2605, 4195, apte: 25. 10 apte.ipc_pointers pxss: 284, 285, 816, 817, 947, 948, 988, 1847, 1850, apte: 49. 65 apte.ipc_r_factor apte: 119. 64 apte.ipc_r_offset pxss: 436, apte: 118. 11 apte.ips_message pxss: 274, 3397, 4680, 4681, 4683, apte: 52. 51 apte.ittes_got pxss: 578, 950, 1797, 1823, 1829, 1841, 1903, apte: 106. 50 apte.ittes_sent pxss: 552, 949, 1795, 1821, 1828, 1902, apte: 105. 54 apte.last_response_state_time apte: 110. 13 apte.le_shift apte: 126. 10000 apte.loaded pxss: 3226, 3310, 3313, 3610, 3989, apte: 22. 36 apte.lock pxss: 489, 1002, 1480, 1485, 1487, 1491, 1496, 1498, 1502, 1507, 1509, 1762, apte: 92. 15 apte.lock_id apte: 63. 400000 apte.mbz apte: 17. 400000 apte.no_ipc_check pxss: 466, apte: 99. 53 apte.number_processing apte: 109. 2 apte.page_faults pxss: 3875, apte: 37. 2 apte.page_wait_flag pxss: 2133, 2375, 3533, 3597, apte: 33. 40 apte.paging_measure apte: 96. 12 apte.pds apte: 55. 13 apte.prds apte: 58. 40000 apte.pre_empted pxss: 2799, 2801, 3128, 4724, 4726, apte: 20. 400 apte.pre_empt_pending pxss: 616, 656, 2801, 3128, 3455, 4726, apte: 26. 400000 apte.prior_sched pxss: 1201, 1209, 3710, 4355, apte: 70. 3 apte.processid pxss: 548, 576, 1924, 1927, 3211, 3385, 3474, 3531, 3684, 4078, apte: 39. 63 apte.procs_required pxss: 699, 700, 884, 886, 1077, 3229, 4565, 4567, 4568, apte: 115. 776000 apte.procs_required_mask pxss: 697, 873, 876, 885, 1075, 3230, 4552, 4555, 4557, apte: 116. 7 apte.pr_tag_mask pxss: 1733, 2804, 3291, 4729, 4768, apte: 75. 100 apte.realtime_burst pxss: 426, 2616, 2654, 3068, 3070, apte: 28. 62 apte.saved_temax pxss: 3087, 4251, apte: 114. 13 apte.savex7 pxss: 3126, 3460, apte: 59. 1 apte.sentinel pxss: 2643, 2664, 2863, 3016, 3155, 3165, 3507, 3706, apte: 16. 4 apte.shared_stack_0 pxss: 955, 3437, 4264, 4313, apte: 32. 374000 apte.special_chans pxss: 278, 1773, apte: 72. 1 apte.state pxss: 408, 417, 447, 493, 704, 717, 731, 766, 938, 1007, 1013, 2379, 2508, 2682, 3349, 3510, 3665, 4118, 4150, 4171, 4270, 4402, apte: 35. 22 apte.state_change_time pxss: 497, 1015, 2140, 3100, 3522, 3712, 4358, apte: 77. 100000 apte.stop_pending pxss: 273, 728, 758, 785, 3396, apte: 19. 4 apte.te pxss: 612, 2553, 3624, 4025, 4155, 4202, 4326, 4352, apte: 41. 33 apte.temax pxss: 611, 1204, 1211, 1216, 3084, 3466, 4024, 4212, 4228, 4340, apte: 88. 30 apte.term_channel pxss: 4459, apte: 84. 14 apte.term_processid pxss: 787, 3968, 3998, 4462, apte: 61. 0 apte.thread pxss: 983, 1031, 1033, 1036, 1038, 1040, 1041, 1042, 1065, 1146, 2367, 2480, 2506, 2642, 2663, 2674, 2678, 2680, 2687, 2688, 2689, 2690, 2770, 2781, 2796, 2862, 3189, 3205, 3236, 3506, 3708, 4708, 4721, 4736, 4749, 4762, 4777, apte: 11. 6 apte.ti pxss: 1154, 2609, 2613, 2633, 2645, 2988, 2990, 3097, 3721, 4157, 4162, 4200, 4343, 4350, apte: 45. 7 apte.timax pxss: 2610, 2612, 4344, 4346, apte: 47. 175 apte.timer_factor pxss: 4037, apte: 127. 16 apte.time_used_clock pxss: 3407, 3885, 3886, apte: 64. 56 apte.total_processing_time apte: 111. 5 apte.ts pxss: 1152, 2635, 3096, 4156, 4201, 4328, 4347, 4349, 4351, apte: 43. 46 apte.virtual_cpu_time pxss: 265, 666, 1302, 3366, 3876, 3888, 4422, 4430, apte: 103. 20 apte.wait_event pxss: 1935, 2077, 2104, 2128, 2184, 2227, 2282, 2370, 2377, 3516, 3528, 3595, 4259, apte: 66. 200000 apte.wakeup_waiting pxss: 248, 254, 269, 491, 3390, apte: 18. 21 apte.wct_index pxss: 1127, 1143, 2623, 2764, 2868, 3052, 3083, 3943, 4199, 4249, 4330, 4385, apte: 68. 32 apte.ws_size pxss: 3038, 3056, 4257, 4378, apte: 86. 327 apt_entry_size tc_meters: 137. 312 apt_lock pxss: 1029, 1398, 1402, 1411, 1412, 1423, 1428, 1432, 1434, 1440, 1447, 1452, 1457, 1460, 2672, tc_meters: 124. 253 apt_offset pxss: 4068, tc_meters: 94. 150 apt_ptr pxss: 1200, 1208, 1271, 1283, 1477, 1643, 1729, 1934, 2076, 2103, 2179, 2541, 3027, 3079, 3174, 3223, 3267, 3269, 3288, 3348, 3360, 3415, 3586, 3589, 3873, 4075, 4083, 4409, pxss_page_stack: 13. 313 apt_size pxss: 1834, 4070, 4560, tc_meters: 125. 106 arg pxss: 2016, 2018, 2020, 2022, 2023, 2025, 2027, 2028, 3548, 3550, 3552, 3554, 3556, 3557, 3558, 3560, 3562, 3563, 3587, 3591, 3592, 4529, 4531, 4533, 4535, 4537, 4538, pxss_page_stack: 11. arg_1 pxss: 377, 525, 529, 684, 750, 865, 872, 932, 936, 1110, 1347, 1798, 2185, 2219, 2228, 2330, 2352, 2364, 2709, 2713, 2736, 2741, 3386, 3685, 3745, 4066, 4077, 4110, 4463. arg_2 pxss: 379, 395, 434, 1112, 1133, 4112, 4121. arg_3 pxss: 381, 397, 1117, 1131, 1162, 4144, 4179, 4182. arg_4 pxss: 1119, 1126, 1144, 1160. 4000 aste.any_access_on aste: 49. 5 aste.any_access_on_word aste: 48. 0 aste.bp aste: 18. 777 aste.csl_mask aste: 92. 33 aste.csl_shift aste: 91. 12 aste.csl_word aste: 90. 200000 aste.damaged aste: 118. 13 aste.damaged_word aste: 117. 4 aste.ddnp aste: 106. 12 aste.ddnp_word aste: 105. 200 aste.deact_error aste: 57. 5 aste.deact_error_word aste: 56. 40000 aste.dirsw aste: 75. 5 aste.dirsw_word aste: 74. 2 aste.dius aste: 65. 5 aste.dius_word aste: 64. 400000 aste.dmpr_pad aste: 69. 5 aste.dmpr_pad_word aste: 68. 20 aste.dnzp aste: 102. 12 aste.dnzp_word aste: 101. 7 aste.dtm aste: 84. 6 aste.dtu aste: 83. 200000 aste.ehs aste: 71. 5 aste.ehs_word aste: 70. 400 aste.explicit_deact_ok aste: 55. 5 aste.explicit_deact_ok_word aste: 54. 400 aste.fmchanged aste: 94. 400000 aste.fmchanged1 aste: 116. 13 aste.fmchanged1_word aste: 115. 12 aste.fmchanged_word aste: 93. 200 aste.fms aste: 96. 12 aste.fms_word aste: 95. 40 aste.fm_damaged aste: 61. 5 aste.fm_damaged_word aste: 60. 0 aste.fp aste: 17. 40000 aste.gtms aste: 43. 5 aste.gtms_word aste: 42. 40 aste.gtpd aste: 100. 12 aste.gtpd_word aste: 99. 100000 aste.gtus aste: 41. 5 aste.gtus_word aste: 40. 20000 aste.hc aste: 45. 100 aste.hc_part aste: 59. 5 aste.hc_part_word aste: 58. 10000 aste.hc_sdw aste: 47. 5 aste.hc_sdw_word aste: 46. 5 aste.hc_word aste: 44. 13 aste.ht_fp aste: 114. 1 aste.infl aste: 20. 1 aste.infp aste: 21. 1000 aste.inhibit_cache aste: 53. 5 aste.inhibit_cache_word aste: 52. 200000 aste.init aste: 39. 5 aste.init_word aste: 38. 77 aste.marker_mask aste: 128. 0 aste.marker_shift aste: 127. 13 aste.marker_word aste: 126. 20000 aste.master_dir aste: 77. 5 aste.master_dir_word aste: 76. 777 aste.msl_mask aste: 30. 33 aste.msl_shift aste: 29. 4 aste.msl_word aste: 28. 20 aste.multi_class aste: 63. 5 aste.multi_class_word aste: 62. 1 aste.nid aste: 67. 5 aste.nid_word aste: 66. 100 aste.npfs aste: 98. 12 aste.npfs_word aste: 97. 777 aste.np_mask aste: 112. 0 aste.np_shift aste: 111. 12 aste.np_word aste: 110. 100000 aste.nqsw aste: 73. 5 aste.nqsw_word aste: 72. 100000 aste.pack_ovfl aste: 120. 13 aste.pack_ovfl_word aste: 119. 2 aste.par_astep aste: 24. 10 aste.per_process aste: 104. 12 aste.per_process_word aste: 103. 3 aste.ptsi_mask aste: 125. 6 aste.ptsi_shift aste: 124. 13 aste.ptsi_word aste: 123. 777 aste.pvtx_mask aste: 33. 22 aste.pvtx_shift aste: 32. 4 aste.pvtx_word aste: 31. 10 aste.quota aste: 86. 777 aste.records_mask aste: 109. 11 aste.records_shift aste: 108. 12 aste.records_word aste: 107. 2 aste.strp aste: 23. 40000 aste.synchronized aste: 122. 13 aste.synchronized_word aste: 121. 4000 aste.tqsw aste: 81. 5 aste.tqsw_word aste: 80. 3 aste.uid aste: 26. 11 aste.used aste: 88. 400000 aste.usedf aste: 37. 5 aste.usedf_word aste: 36. 10000 aste.volmap_seg aste: 79. 5 aste.volmap_seg_word aste: 78. 4 aste.vtocx aste: 34. 2000 aste.write_access_on aste: 51. 5 aste.write_access_on_word aste: 50. 0 aste_part.one aste: 136. 377 aste_part.three_mask aste: 141. 0 aste_part.three_shift aste: 140. 13 aste_part.three_word aste: 139. 1 aste_part.two aste: 137. 14 aste_part_size aste: 133. 14 aste_size pxss: 3318, 3319, 3606, 3607, aste: 15. 4037 at_now pxss: 3636, 3640. 4032 at_retry pxss: 3633, 3803. 4110 at_wake pxss: 3674, 3688. 243 auto_tune_ws tc_meters: 87. 1015 available_entries pxss: 1059, 1062. 16 avequeue pxss: 3916, 3918, tc_meters: 27. 40 ave_eligible pxss: 3921, 3923, tc_meters: 40. 3156 award pxss: 3032, 3046, 3173, 3175. 1 AWARD_ELIGIBILITY pxss: 3077, response_transitions: 5. bad_processid pxss: 1178. bad_work_class pxss: 1179. base_addr_reg pxss: 3281, 3403. 204 before pxss: 1153, 2596, 2599, 2648, pxss_page_stack: 17. 413 best_credit_value pxss: 2939, 2993, 2996, tc_meters: 181. 10 block pxss: 139, 238. 4 blocked pxss: 259, 418, 494, 718, 763, 4172, state_equs: 7. 10 blocks pxss: 246, tc_meters: 21. 100 block_ez pxss: 249, 310. 76 block_not pxss: 255, 303. 4 BLOCK_PROCESS pxss: 256, response_transitions: 8. 42 block_returns pxss: 268, 305, 311. 272 boost_priority pxss: 3726, tc_meters: 105. 734 bump_next_stack_0 pxss: 966, 973. 1170 call_offset stack_header: 80. 2 CALL_RING_0_TTY response_transitions: 6. cam pxss: 905. 0 channel_mask_set pxss: 119, 633, 1693. 2744 check_eligible pxss: 2786, 2821. 1725 check_pi_event pxss: 1953, 1968. 4166 check_polling pxss: 3736, 3753. 5154 check_proc_loop pxss: 4561, 4573. 5164 check_proc_next pxss: 4564, 4566, 4570. 4153 check_ring0_timer pxss: 3698, 3733. 737 check_stack_0_done pxss: 972, 977. 724 check_stack_0_loop pxss: 964, 976. 740 check_stack_0_none pxss: 956, 980. 3 cid2 pxss: 1818, 1827, tc_meters: 16. 4 cid3 pxss: 1820, 1826, tc_meters: 17. 5 cid4 pxss: 1812, 1840, tc_meters: 18. clock_ pxss: 496, 1014, 1394, 1405, 1419, 1950, 1965, 2139, 2545, 2571, 3099, 3124, 3146, 3167, 3410, 3568, 3634, 3647, 3879, 4013, 4203, 4224, 4331. 276 clock_simulations pxss: 3641, tc_meters: 108. 164 cmep pxss_page_stack: 15. 5057 cm_done pxss: 4439, 4443. 5061 cm_not pxss: 4429, 4433, 4442. 4214 compute_next_alarm pxss: 3780. 4266 compute_virtual_clocks pxss: 3260, 3872. connect_lock pxss: 4589, 4597. 145 copy_evs pxss: 390, 394. 173 core_add pxss_page_stack: 16. 17 core_ptw.add_type_mask ptw.l68: 19. 16 core_ptw.add_type_shift ptw.l68: 18. 3 core_ptw.df_no_mask ptw.l68: 32. 0 core_ptw.df_no_shift ptw.l68: 31. 10000 core_ptw.er ptw.l68: 21. 20000 core_ptw.first ptw.l68: 20. 0 core_ptw.flags ptw.l68: 17. 37777 core_ptw.frame_mask ptw.l68: 16. 26 core_ptw.frame_shift ptw.l68: 15. 200 core_ptw.nypd ptw.l68: 25. 10 core_ptw.os ptw.l68: 29. 100 core_ptw.phm ptw.l68: 26. 400 core_ptw.phm1 ptw.l68: 24. 1000 core_ptw.phu ptw.l68: 23. 40 core_ptw.phu1 ptw.l68: 27. 2000 core_ptw.unusable1 ptw.l68: 22. 4 core_ptw.valid ptw.l68: 30. 20 core_ptw.wired ptw.l68: 28. core_queue_man pxss: 2526. 174 count pxss: 1809, 1844, 1856, 1889, 1891, pxss_page_stack: 16. cow_ptrs pxss: 1734, 2807, 4732. 5064 cpulimit_msg pxss: 4436, 4446. 3467 cput_check pxss: 3359. cput_mask pxss: 3373. 3507 cput_wakeup pxss: 3372, 3376. 5036 cpu_monitor_ pxss: 3356, 4421. 3465 cpu_monitor_check pxss: 3354. 252 cpu_pf_count tc_meters: 93. 250 cpu_pf_time tc_meters: 92, 93, 94, 95, 96, 97, 98. cpu_time pxss: 2546, 2572, 3408. 412 credits_per_scatter pxss: 2945, 2947, 2949, tc_meters: 180. 421 credits_scattered pxss: 2899, 2909, 2922, tc_meters: 186. 402 credit_bank pxss: 2893, 2897, 2924, 3947, tc_meters: 175. 266 cumulative_memory_usage tc_meters: 102. 4374 cvidle pxss: 3930, 3959. 4410 cvidt pxss: 3974. 4440 cvst pxss: 3982, 3985, 3990, 3993, 3996, 3998. 420 deadline_mode pxss: 2626, 2865, 2891, 4208, 4336, tc_meters: 185. 2612 deadline_sort pxss: 2657, 2660. 7 decoded_index.flags_mask pxss: 438, event_channel_name: 43. 41 decoded_index.flags_shift pxss: 437, event_channel_name: 42. 77777 decoded_index.index_mask event_channel_name: 45. 22 decoded_index.index_shift event_channel_name: 44. 453 default_procs_required pxss: 696, 875, 1074, 4518, 4522, 4544, 4556, tc_meters: 205. 414 define_wc_time tc_meters: 182. 1506 delay_connect pxss: 1730, 1737. 5104 delete_me pxss: 3450, 4513. 2102 delevent pxss: 140, 2098. 154 delta_t pxss: 3882, 3893, 3902, 3908, 3935, 3944, 3951, 3963, pxss_page_stack: 13. 62 delta_vcpu tc_meters: 49. 406 delta_vt tc_meters: 178. 205 depth pxss: 2136, 2141, 2142, 2858, 3074, 3207, 3262, 3266, 3932, 3934, pxss_page_stack: 17. 100 depths pxss: 3933, tc_meters: 62, 63. 6 depth_count pxss: 3127, tc_meters: 19. 200 devadd pxss_page_stack: 16. device_control pxss: 2054, 2153. 203 dev_signal pxss: 389, 393, 707, 708, 1793, 2317, 2355, 2403, 3378, 3379, 3677, 3678, 3746, 4457, 4458, pxss_page_stack: 17. 22 disk_poll pxss: 3812, 3813. 20 disk_polling_time pxss: 3811, 3813. 370 disk_polling_time_loc tc_meters: 167. 4242 disk_poll_entry pxss: 1987, 3810. 232 done_astep pxss_page_stack: 24. 3630 dont_reset_stack_0 pxss: 3476, 3479. 3453 dont_unload pxss: 3309, 3311, 3322. 2450 DRL_blocked_apte pxss: 2488, 2497, 2791, 3198, 4716, 4757. 2447 DRL_empty_apte pxss: 2484, 2495, 3194, 4712, 4753. 2451 DRL_stopped_apte pxss: 2489, 2499, 2792, 3199, 4717, 4758. dseg pxss: 3284, 3286. 332 dst_ptr tc_meters: 140. 320 dst_size tc_meters: 130. 2613 ds_loop pxss: 2662, 2667. 2424 dvctl_retry_ptlwait pxss: 141, 2459. 1425 easy pxss: 1605, 1636, 1641. 51 eligible_count tc_meters: 46. 350 eligible_q_head pxss: 2362, 2478, 3073, 3185, 3505, 4706, 4747, tc_meters: 153, 154. 352 eligible_q_tail pxss: 1243, 2715, 2825, 3065, 3987, tc_meters: 155, 156. 46 eligible_time tc_meters: 44. 0 empty pxss: 939, 943, 1064, 4583, state_equs: 3. 346 empty_q pxss: 982, 985, 1058, 1066, tc_meters: 150. 667 empty_t pxss: 142, 929. 0 ENCODED_INDEX_CONSTANT event_channel_name: 47. 3527 end_cput_check pxss: 3363, 3365, 3368, 3375, 3393. 3467 end_cpu_monitor pxss: 3357, 4425, 4440. 72 end_of_time_loc pxss: 3699, 3738, tc_meters: 55. 3465 end_stop_check pxss: 3352, 4411. 1174 entry_offset stack_header: 84. 175 entry_sw pxss_page_stack: 16. 201 errcode pxss: 448, 450, 1764, 1906, pxss_page_stack: 16. error_table_ pxss: 1178, 1179. 706 et_1 pxss: 940, 945. events_pending pxss: 293. 0 event_channel_name.encoded_idx event_channel_name: 21. 37777 event_channel_name.mbz_mask event_channel_name: 31. 22 event_channel_name.mbz_shift event_channel_name: 30. 1 event_channel_name.mbz_word event_channel_name: 29. 7 event_channel_name.ring_mask event_channel_name: 26. 41 event_channel_name.ring_shift event_channel_name: 25. 1 event_channel_name.ring_word event_channel_name: 24. 40000 event_channel_name.type event_channel_name: 28. 1 event_channel_name.type_word event_channel_name: 27. 1 event_channel_name.unique_id event_channel_name: 32. 0 event_channel_name.verifier event_channel_name: 22. 2 event_channel_name_size event_channel_name: 19. 40000 event_channel_type_mask pxss: 1760, 1767. 0 FAST_CHANNEL_TYPE event_channel_name: 34. 12 fast_ipc_block pxss: 143, 243. 104 fast_ipc_get_event pxss: 144, 326. 4025 find_idle pxss: 3109, 3621. 4024 find_idle_for_delete pxss: 3142, 3619. 2752 find_next_eligible pxss: 2848, 3193. 1621 find_queue_end pxss: 1848, 1852. 2101 fixed_desc pxss: 2021, 2085, 3555, 4532. 316 fi_sender_gone pxss: 550, 553. 317 fi_skip_sender pxss: 545, 555. 3237 fne_fail pxss: 3017, 3028, 3034, 3036, 3040, 3107. 3060 fne_loop pxss: 2943, 2954, 3002. 3105 fne_not_governed pxss: 2957, 2968, 2978. 3067 fne_no_gv_credits pxss: 2959, 2962. 3125 fne_try_next pxss: 2974, 2976, 2980, 2994, 2999. 77 fnp_buffer_threshold tc_meters: 59. 303 follow_itt_list pxss: 541, 560. 530 force_stop pxss: 145, 777. 562 force_stop_getwork pxss: 790, 798, 808. 577 force_stop_not pxss: 786, 826. 266 free_itt pxss: 146, 522. 276 free_itt_ pxss: 530, 534, 818, 990. 341 free_itt_exit pxss: 537, 581. 5267 free_stack_0 pxss: 967, 4307, 4668. 4727 free_stack_0_got pxss: 4301, 4306. 4721 free_stack_0_loop pxss: 4299, 4304. 226 free_store_start_time pxss_page_stack: 22. 221 free_store_temp pxss_page_stack: 19. 160 free_store_temp_1 pxss_page_stack: 14. 3241 getwork pxss: 264, 621, 665, 819, 911, 1249, 2138, 2242, 2289, 2446, 3121. 256 getwork_count tc_meters: 96. 152 getwork_temp pxss: 3125, 3411, 3524, pxss_page_stack: 13. 254 getwork_time pxss: 3412, 3413, 3414, tc_meters: 95. 1007 get_entry pxss: 147, 1055. 1035 get_entry_returns pxss: 1061, 1079. 102 get_event pxss: 148, 323. 2672 get_idle_processor pxss: 2388, 2521, 2762. 2676 get_processor pxss: 506, 2389, 2522, 2767, 3539. 1154 ge_off_ret pxss: 1212, 1217. 4704 give_up_stack pxss: 4272, 4275, 4280. 451 governing_credit_bank pxss: 2942, 2944, 2951, 3883, tc_meters: 203. 74 gp_at_notify pxss: 2387, tc_meters: 56. 75 gp_at_ptlnotify pxss: 2520, tc_meters: 57. 145 gp_done_count pxss: 2828, 3183, tc_meters: 71. 2717 gp_found_running pxss: 2788, 2795. 2677 gp_init pxss: 2766, 2770. 2703 gp_loop pxss: 2781, 2787, 2789, 2790, 2793, 2819, 2826. 2750 gp_return pxss: 2784, 2809, 2816, 2823, 2827. 2742 gp_skip pxss: 2800, 2818. 144 gp_start_count pxss: 2773, 3256, tc_meters: 70. 2735 gp_this_cpu pxss: 2806, 2811. 2710 gp_tv pxss: 2783, 2787. 410 gross_idle_time pxss: 3964, 3965, tc_meters: 179. 1143 guaranteed_eligibility_off pxss: 149, 1207. 1135 guaranteed_eligibility_on pxss: 150, 1199. 360 guaranteed_elig_inc tc_meters: 161. 463 gv_integration pxss: 2963, tc_meters: 215. 464 gv_integration_set tc_meters: 216. 3360 gw_cant_run pxss: 3215, 3220, 3234, 3241, 3580. 3363 gw_cant_run_dbrl pxss: 3224, 3238. 3373 gw_can_really_run pxss: 3259. 3366 gw_can_run pxss: 3232, 3243, 3625. 3342 gw_ck_ready pxss: 3210, 3212, 3216. 3333 gw_ck_suspend pxss: 3105, 3208. 3352 gw_dbr_ok pxss: 3222, 3225. 3330 gw_found_ready pxss: 3196, 3204. 141 gw_gp_window_count pxss: 3457, tc_meters: 67. 3311 gw_init_loop pxss: 3178, 3182. 3310 gw_lock_init_loop pxss: 3156, 3158, 3180. 3315 gw_loop pxss: 3188, 3195, 3197, 3200, 3237. 3251 gw_retry pxss: 3131, 3564, 3572, 3617, 3638. 3321 gw_tv pxss: 3191, 3194. 4502 hash_LOCK pxss: 402, 693, 756, 1120, 1349, 4065, 4116. 7 hbound_processor_data scs: 10. hfp_exponent_enabled pxss: 3298. 305 id tc_meters: 118. idle_ptr pxss: 3622, 4581. 4500 idle_runout pxss: 4017, 4019, 4046. 354 idle_tail pxss: 2772, tc_meters: 157. 24 idle_time pxss: 3960, 3961, tc_meters: 33. 4531 ijoin pxss: 4104, 4108. 376 imp_polling_lock tc_meters: 170. 374 imp_polling_time_loc tc_meters: 169. 323 initializer_id pxss: 1814, 3475, tc_meters: 133. 336 initialize_time tc_meters: 142. initial_procedure pxss: 3487. 340 init_event pxss: 1936, 1955, 1963, 1976, 1993, 2002, 2019, 2033, 2082, 2331, 2333, 2411, 2413, tc_meters: 144. 1463 init_pxss_save_stack pxss: 604, 1645, 1707, 2123, 2178, 2323, 2433, 2475. 445 init_timeout_recurse pxss: 1999, 2009, 2035, tc_meters: 200. 444 init_timeout_severity pxss: 1997, 2015, tc_meters: 199. 440 init_wait_time pxss: 1951, 1966, tc_meters: 197. 442 init_wait_timeout pxss: 1967, tc_meters: 198. 177 inter pxss_page_stack: 16. 15 interactions tc_meters: 26. 330 interactive_q pxss: 2639, 2659, 2859, tc_meters: 139. 262 interrupt_count tc_meters: 99. 260 interrupt_time tc_meters: 98, 99. 76 int_q_enabled pxss: 2637, tc_meters: 58. 70 iobm_polling_time_loc tc_meters: 54. ioi_masked pxss: 3819. 26 ioi_poll pxss: 3819, 3820. 24 ioi_polling_time pxss: 3818, 3820. 116 io_wakeup pxss: 151, 366. 1 ipcv.retsw pxss: 241, 294. ipc_block_return pxss: 239, 295, 325. ipc_vars pxss: 294. 0 ips.count ips_mask_data: 4. 1 ips.data ips_mask_data: 5, 6, 7. 11 ips.data.mask ips_mask_data: 7. 1 ips.data.name ips_mask_data: 6. 11 ips.size ips_mask_data: 8. 4527 ips_wakeup pxss: 152, 4105. 4524 ips_wakeup_int pxss: 153, 4101. 4550 ips_wakeup_returns pxss: 4120, 4125. 4551 ips_wakeup_returns_nul pxss: 4117, 4127. 560 is_done pxss: 802, 805. 554 is_loop pxss: 801, 804. 553 is_scan pxss: 794, 800. 4 itt_entry.channel_id pxss: 1803, 1866, itt_entry: 26. 2 itt_entry.dev_signal itt_entry: 22. 6 itt_entry.message pxss: 1801, 1878, itt_entry: 27. 0 itt_entry.next_itt_relp pxss: 542, 557, 570, 1784, 1805, 1861, 1868, 1895, 1913, itt_entry: 17. 2 itt_entry.origin pxss: 544, 1789, 1796, 1815, 1880, 1881, 1900, itt_entry: 20. 2 itt_entry.ring itt_entry: 23. 1 itt_entry.sender pxss: 546, 549, 1791, itt_entry: 19. 3 itt_entry.target_id pxss: 571, 572, 1799, itt_entry: 25. 10 itt_entry_size itt_entry: 15. 321 itt_free_list pxss: 564, 574, 1778, 1785, 1908, 1914, tc_meters: 131. itt_head pxss: 288, 289. 247 itt_list_lock tc_meters: 91. 1700 itt_overflows pxss: 1779, 1916. 317 itt_size pxss: 1832, tc_meters: 128. 311 last_eligible tc_meters: 123. last_recorded_time pxss: 3406, 3881, 3894, 3895, 3906. last_sp pxss: 1638, 1687, 1947, 1971, 2011, 2030, 2047, 2149, 3470. 34 last_time pxss: 3880, tc_meters: 37. last_timer_setting pxss: 3282, 4042. load pxss: 3592. 4007 loaded_test pxss: 3596, 3603. 7 loadings pxss: 3612, tc_meters: 20. 60 loading_idle pxss: 3986, tc_meters: 48. 3753 load_him pxss: 3227, 3579. 4020 load_him_done pxss: 3601, 3609, 3613. 304 lock tc_meters: 117. 1224 lock_apt pxss: 154, 1315. 1234 lock_apte pxss: 155, 1343. 1245 lock_apte_null pxss: 1350, 1352. 1351 LOCK_bp pxss: 252, 267, 310, 328, 615, 655, 783, 937, 1068, 1238, 1479, 1482, 2127, 3388, 3668, 4076, 4427, 4466, 4582. 462 lock_error_severity tc_meters: 213. 1347 LOCK_me_bp pxss: 883, 1476, 2225, 2281, 2437. 5241 lock_stack_queue pxss: 958, 3423, 4294, 4629. 223 lock_volmap_temp pxss_page_stack: 20. 156 lock_volmap_temp_1 pxss_page_stack: 14. 1360 LOCK_x2 pxss: 1490, 1493, 2374, 2507, 3080, 3206, 3509, 3593, 3623. 1367 LOCK_x3 pxss: 547, 575, 1501, 1504, 2797, 4722, 4763. 36 loop_locks pxss: 1408, tc_meters: 38. 37 loop_lock_time pxss: 1407, tc_meters: 39. 273 lost_priority_eligibility pxss: 4357, tc_meters: 106. 2773 lr_e_ok pxss: 2870, 2872, 2875. 2757 lr_loop pxss: 2861, 2874, 2884. 3004 lr_wcq pxss: 2864, 2886. 1512 make_itt_message pxss: 429, 714, 1757, 3389, 3687, 4467. mask_ptr pxss: 636, 1607, 1696, 1941, 3483. 416 max_batch_elig pxss: 2876, tc_meters: 183. 377 max_channels tc_meters: 171. 277 max_clock_lag pxss: 3642, 3644, tc_meters: 109. 10 max_depth pxss: 3263, 3265, tc_meters: 61, 63, 64, 84, 85. 325 max_eligible pxss: 3033, 3995, tc_meters: 135. 301 max_hproc_segno tc_meters: 114. 422 max_max_eligible pxss: 969, 3035, 3162, 4278, tc_meters: 187. 423 max_stopped_stack_0 pxss: 4274, tc_meters: 188. 446 max_timer_register pxss: 4031, 4033, tc_meters: 201. 6 MAX_TRANSITION response_transitions: 12. 405 max_wct_index pxss: 1138, 2919, 3001, 3730, tc_meters: 177. 1653 maybe_append_itt_message pxss: 1869, 1888. 300000 mc.cpu_type_mask mc: 22. 3 mc.cpu_type_shift mc: 25. 46 mc.cpu_type_word mc: 21. 50 mc.eis_info mc: 11. 43 mc.errcode mc: 17. 46 mc.ext_fault_reg mc: 23. 77774 mc.ext_fault_reg_mask mc: 24. 45 mc.fault_reg mc: 19. 46 mc.fault_time mc: 20. 44 mc.fim_temp mc: 18. 42 mc.ips_temp mc: 16. 40 mc.mask mc: 15. 0 mc.prs mc: 8. 20 mc.regs mc: 9. 30 mc.scu mc: 10. 30 mc.scu.apu_stat_word mc: 48. 35 mc.scu.ca_word mc: 207. 32 mc.scu.cpu_no_word mc: 138. 35 mc.scu.cpu_tag_word mc: 231. 35 mc.scu.cu_stat_word mc: 211. 32 mc.scu.delta_word mc: 144. 30 mc.scu.fault_cntr_word mc: 66. 31 mc.scu.fault_data_word mc: 74. 34 mc.scu.ilc_word mc: 182. 34 mc.scu.indicators_word mc: 186. 31 mc.scu.port_stat_word mc: 108. 30 mc.scu.ppr.prr_word mc: 33. 30 mc.scu.ppr.psr_word mc: 38. 30 mc.scu.ppr.p_word mc: 43. 33 mc.scu.tpr.tbr_word mc: 174. 32 mc.scu.tpr.trr_word mc: 128. 32 mc.scu.tpr.tsr_word mc: 133. 33 mc.scu.tsr_stat_word mc: 152. 142 metering_lock pxss: 3898, 3973, tc_meters: 68. meter_response_time pxss: 257, 413, 3078. 434 meter_response_time_calls tc_meters: 194. 435 meter_response_time_invalid tc_meters: 195. 436 meter_response_time_overhead tc_meters: 196. 1526 mimj2 pxss: 1768, 1777. 1626 mimloop pxss: 1859, 1864. 1614 mim_check_done pxss: 1813, 1836, 1842, 1845. 1607 mim_check_ds pxss: 1816, 1839. 356 min_eligible pxss: 3031, tc_meters: 158. 404 min_wct_index pxss: 1129, 1136, 2902, 2937, 3701, tc_meters: 176. 4314 mlocked pxss: 3899, 3901. 4311 mlock_loop pxss: 3897, 3900. 1702 mm_iz_either pxss: 1819, 1923. 1704 mm_iz_rcvr pxss: 1926. mode_reg pxss: 3297, 3301. mode_reg_enabled pxss: 3295. mos_memory_check pxss: 3826. 32 mos_poll pxss: 3826, 3827. 425 mos_polling_interval tc_meters: 190. 30 mos_polling_time pxss: 3825, 3827. 426 mos_polling_time_loc tc_meters: 191. 26 mp_idle pxss: 3991, tc_meters: 34. 4 mr.enable_hfp pxss: 3296, 3300, mode_reg: 8. 60 mr.enable_hist pxss: 3302, mode_reg: 7. 1 mr.enable_mr pxss: 3302, mode_reg: 9. 777770 mr.floating_fv_mask mode_reg: 3. 777400 mr.opcode_field mode_reg: 5. 1 mr.trap_address_match mode_reg: 4. 200 mr.trap_opcode_match mode_reg: 6. 1632 mumloop pxss: 1855, 1857, 1866, 1871. 1640 mum_ck pxss: 1867, 1873. 1651 mum_ck_ret pxss: 1879, 1883. 1634 mum_ok pxss: 1868, 1876, 1885. 4407 m_unlock pxss: 3955, 3957, 3969, 3973. 310 ncpu tc_meters: 122. 342 newt tc_meters: 146. 4227 next_alarm_loop pxss: 3793, 3800. 362 next_alarm_time pxss: 2189, 2191, 2232, 2234, 3148, 3635, 3648, 3659, 3696, 3714, 3735, 3758, 3802, 4014, 4363, 4365, tc_meters: 163. 4212 next_poll pxss: 3770, 3774. 470 next_ring0_timer pxss: 2186, 2188, 2229, 2231, 3734, 3739, 3788, 3790, tc_meters: 220. 4047 next_timer pxss: 3653, 3667, 3690. 2321 nfy_loop pxss: 2366, 2371, 2392. 2350 nfy_not_waiting pxss: 2381, 2393. 2346 nfy_restor pxss: 2386, 2390, 2395. 2352 nfy_ret pxss: 2369, 2396. 30 nmp_idle pxss: 3983, tc_meters: 35. 246 nonidle_force_count tc_meters: 90. 227 non_ring_0 pxss: 416, 460. 5 NON_TTY_WAKEUP pxss: 412, response_transitions: 9. 0 NORMAL_CHANNEL_FLAGS event_channel_name: 36. 13 notifies pxss: 2356, tc_meters: 24. 2300 notify pxss: 156, 2345. 2313 notify_ pxss: 2326, 2359, 3747. 66 notify_check tc_meters: 52. 155 notify_nobody_count pxss: 2400, tc_meters: 78. 156 notify_nobody_event pxss: 2399, tc_meters: 79. 50 notify_regs pxss_page_stack: 8. 2277 notify_return pxss: 2328, 2332, 2334, 2335. 4520 not_found pxss: 4067, 4071, 4081. 1456 no_change_mask pxss: 1684, 1698. 3611 no_idle_no_del pxss: 3446, 3452, 3458. 203 no_int_credit pxss: 419, 423, 425, 428, 467, 473. 3535 no_more_pending pxss: 3398, 3401. 3306 no_real pxss: 3163, 3166, 3169, 3176. 3236 no_response pxss: 3098, 3104. 3637 nto_check pxss: 3152, 3503. 146 nto_check_time pxss: 3151, 3570, tc_meters: 72. 151 nto_count pxss: 3527, tc_meters: 74. 150 nto_delta pxss: 3523, 3569, tc_meters: 73. 153 nto_event pxss: 3530, tc_meters: 76. 3641 nto_loop pxss: 3506, 3520, 3541. 3741 nto_message pxss: 3549, 3575. 3740 nto_message_desc pxss: 3559, 3573. 3655 nto_not pxss: 3514, 3519, 3525. 3733 nto_reset_time pxss: 3508, 3567. 3657 nto_wait pxss: 3512, 3517, 3522. 2 null pxss: 122, 1060, 1948, 4082. 4240 null_arglist pxss: 1988, 3768, 3806. 4 null_epaq pxss: 124. number_of_pages_in_use pxss: 3268. 417 num_batch_elig pxss: 2881, 3051, 4247, tc_meters: 184. 4765 nupti pxss: 4348, 4352. nused pxss: 3039. 2066 nwait_ret pxss: 2051, 2056. 324 n_eligible pxss: 3030, 3047, 3161, 3919, 3984, 3994, 4243, tc_meters: 134. 24 n_polling_table pxss: 3754, 3792, 3846. ocdcm_ pxss: 3833. 264 ocore tc_meters: 100. 244 ocore_delta tc_meters: 88. 341 oldt tc_meters: 145. 334 old_user tc_meters: 141. 36 opc_poll pxss: 3833, 3834. 34 opc_polling_time pxss: 3832, 3834. 366 opc_polling_time_loc tc_meters: 165. open_level pxss: 634, 1694, 1944, 3481. 250 pad pxss_page_stack: 33. page pxss: 905, 2335, 3812, 3840, 4388. 235 pageno pxss_page_stack: 25. page_fault pxss: 2053, 2147, 2177, 2448. 154 page_notifies pxss: 2325, tc_meters: 77. 2262 page_notify pxss: 157, 2316. 2152 page_pause pxss: 158, 2173. 242 page_synch_index pxss_page_stack: 28. 236 page_synch_temp pxss_page_stack: 27. 240 page_synch_time pxss_page_stack: 27. 2111 page_wait pxss: 159, 2118. page_waits pxss: 2575, 3874. 2176 pause pxss: 160, 2212. 2201 pause.setup pxss: 2213, 2216. 465 pauses pxss: 2193, 2235, tc_meters: 217. pc_call pxss: 1981, 2013, 2032, 2048, 2052, 2120, 2146, 2175, 2259, 2298, 2431, 2447, 2461. 245 pc_err_astep pxss_page_stack: 30. 244 pc_err_ptwp pxss_page_stack: 30. 243 pc_err_type pxss_page_stack: 30. pds pxss: 239, 266, 288, 289, 293, 294, 295, 296, 325, 360, 364, 369, 374, 377, 379, 381, 385, 387, 395, 397, 415, 434, 465, 469, 471, 472, 525, 529, 602, 623, 632, 639, 640, 641, 667, 684, 689, 713, 750, 865, 872, 932, 936, 1110, 1112, 1117, 1119, 1126, 1131, 1133, 1144, 1160, 1162, 1200, 1208, 1271, 1273, 1275, 1283, 1285, 1287, 1299, 1303, 1347, 1477, 1562, 1583, 1601, 1609, 1638, 1643, 1687, 1692, 1699, 1702, 1729, 1739, 1740, 1790, 1798, 1854, 1875, 1934, 1943, 1947, 1971, 1973, 1981, 1990, 2011, 2013, 2030, 2032, 2047, 2048, 2052, 2076, 2103, 2119, 2120, 2146, 2149, 2174, 2175, 2179, 2185, 2219, 2228, 2257, 2259, 2298, 2318, 2330, 2352, 2364, 2430, 2431, 2447, 2461, 2473, 2541, 2543, 2546, 2549, 2551, 2552, 2572, 2573, 2575, 2709, 2713, 2736, 2741, 2814, 2815, 3027, 3079, 3122, 3123, 3174, 3223, 3267, 3268, 3281, 3298, 3360, 3364, 3367, 3370, 3371, 3383, 3386, 3387, 3400, 3403, 3404, 3408, 3415, 3420, 3433, 3454, 3470, 3487, 3685, 3686, 3745, 3873, 3874, 3887, 4066, 4077, 4103, 4107, 4110, 4112, 4121, 4144, 4147, 4179, 4182, 4285, 4295, 4309, 4463, 4464, 4588, 4630, 4644, 4699. 300 pdscopyl tc_meters: 113. 303 pds_length tc_meters: 116. 130 pfdepth pxss: 2137, tc_meters: 64. 246 pf_sdw pxss_page_stack: 31. 2077 pi_add pxss: 2075, 2081. 1774 pi_call_syserr pxss: 2000, 2008. 2363 pi_notify pxss: 2100, 2347, 2407. 1772 pi_nto_no_message pxss: 1998, 2001. 2055 pi_timeout_desc pxss: 2024, 2042. 2037 pi_timeout_mess pxss: 2017, 2038, 2040. 70 pi_timeout_mess_char pxss: 2041, 2043. 16 pi_timeout_mess_words pxss: 2040, 2041. 1713 pi_wait pxss: 1939, 2299. 1766 pi_wait_no_poll pxss: 1982, 1996. 1740 pi_wait_ret pxss: 1956, 1964, 1970. 2056 pi_wait_ret_con pxss: 1977, 1994, 2003, 2036, 2046. 356 pmt_ pxss: 615, 647, 649. 403 pmt_idle pxss: 610, 646. 2273 pn1 pxss: 2320, 2329. 2263 pn2 pxss: 2318. poll pxss: 3826. 4167 polling_loop pxss: 3755, 3776. 4242 polling_table pxss: 3756, 3759, 3763, 3767, 3773, 3794, 3809, 3846. poll_for_timeout pxss: 3833. poll_volmap_io pxss: 3840. 230 post_io_start_time pxss_page_stack: 22. post_purge pxss: 4388. post_purged pxss: 3123. 64 post_purge_switch pxss: 4383, tc_meters: 50. prds pxss: 116, 629, 630, 635, 902, 1427, 1606, 1639, 1688, 1689, 1695, 1940, 2136, 2141, 2142, 2151, 2152, 2805, 3139, 3231, 3266, 3282, 3288, 3289, 3295, 3297, 3301, 3406, 3447, 3482, 3622, 3881, 3894, 3895, 3906, 3932, 3934, 4042, 4516, 4542, 4553, 4577, 4581, 4594, 4600, 4730, 4769. 302 prds_length tc_meters: 115. 10 prds_link pxss: 116, 859, 1603, 1634, 1680, 3279, 3280. 344 pre_empt pxss: 161, 601. 346 pre_empt.common pxss: 599, 605. 365 pre_empt.return pxss: 622, 668. 265 pre_empt_flag tc_meters: 101. 342 pre_empt_poll pxss: 162, 597. pre_empt_poll_return pxss: 602, 623, 639, 640. pre_empt_return pxss: 624, 651. 450 pre_empt_sample_time tc_meters: 202. 100 pre_temp pxss: 2012, 2014, 2029, 2031, pxss_page_stack: 10. 76 pre_time pxss_page_stack: 10. 4113 priority_scheduling pxss: 3655, 3660, 3695. 361 priority_sched_inc pxss: 498, 3713, 4359, tc_meters: 162. 364 priority_sched_time pxss: 3697, 3700, 3716, 3718, 3785, 3787, 4360, 4362, tc_meters: 164. processid pxss: 1790, 4588, 4630, 4644, 4699. processor pxss: 880, 4517, 4543, 4551, 4595. processor_data pxss: 3140, 3448, 4579, 4602, 4604. 20000 processor_data.delete_cpu pxss: 3141, 3449, 4601, scs: 6. 4000 processor_data.halted_cpu pxss: 4603, scs: 8. 10000 processor_data.interrupt_cpu scs: 7. 200000 processor_data.offline pxss: 4603, scs: 5. 400000 processor_data.online pxss: 4578, scs: 4. 7 processor_data.port_mask scs: 9. processor_pattern pxss: 902, 3231, 4516, 4542, 4553, 4594. processor_tag pxss: 635, 1427, 1606, 1695, 1940, 2805, 3139, 3289, 3447, 3482, 4577, 4600, 4730, 4769. 42 processor_time pxss: 3903, 3904, tc_meters: 42. 270 processor_time_at_define_wc tc_meters: 103. 452 process_initial_quantum pxss: 3086, 3465, tc_meters: 204. 5142 procs_required_ok pxss: 4519, 4547. 624 pr_set pxss: 874, 879. 4122 ps1 pxss: 3705, 3711, 3717, 3719, 3722, 3727. 4141 ps_boost pxss: 3715, 3720. 4121 ps_get_rq_head pxss: 3703, 3731. 4150 ps_next_ready_queue pxss: 3707, 3728. ptl pxss: 2435, 2441, 2503. 2452 ptln_found_ptlocking pxss: 2490, 2502. 2435 ptln_loop pxss: 2479, 2485, 2486, 2487, 2530. 2475 ptln_not_ptlocking pxss: 2510, 2528. 2473 ptln_ret pxss: 2483, 2504, 2519, 2524. 2440 ptln_tv pxss: 2481, 2484. 6 ptlocking pxss: 2438, 2509, 3513, 3981, 4151, state_equs: 9. 2376 ptlw_ pxss: 2435, 2463. 2422 ptlw_ez pxss: 2436, 2456. 2415 ptlw_not pxss: 2442, 2451. 2412 ptlw_ret pxss: 2447, 2457. 2430 ptl_notify pxss: 163, 2472. ptl_notify_return pxss: 2526. 140 ptl_not_waits pxss: 2456, tc_meters: 66. 2372 ptl_wait pxss: 164, 2429. 143 ptl_waits pxss: 2445, tc_meters: 69. ptl_wait_ct pxss: 2440, 2452, 2513. ptl_wait_return pxss: 2448. 176 ptp_astep pxss_page_stack: 16. 0 ptw.add ptw.l68: 37. 17 ptw.add_type_mask ptw.l68: 40. 16 ptw.add_type_shift ptw.l68: 39. 3 ptw.df_no_mask ptw.l68: 53. 0 ptw.df_no_shift ptw.l68: 52. 10000 ptw.er ptw.l68: 42. 20000 ptw.first ptw.l68: 41. 0 ptw.flags ptw.l68: 38. 200 ptw.nypd ptw.l68: 46. 10 ptw.os ptw.l68: 50. 100 ptw.phm ptw.l68: 47. 400 ptw.phm1 ptw.l68: 45. 1000 ptw.phu ptw.l68: 44. 40 ptw.phu1 ptw.l68: 48. 2000 ptw.unusable1 ptw.l68: 43. 4 ptw.valid pxss: 3605, 3608, ptw.l68: 51. 20 ptw.wired pxss: 3317, 3605, 3608, 4291, ptw.l68: 49. ptwbase pxss: 4287. 5003 purge_UNLOCK pxss: 263, 664, 814, 4377. 1171 push_offset stack_header: 81. 3204 put_in_el_q pxss: 3069, 3075. 5022 pU_ret pxss: 4384, 4387, 4389. 172 pvtx pxss_page_stack: 16. 1710 pw1 pxss: 1933, 2122, 2261. 2116 pwait pxss: 2124, 2194, 2263. pwait_return pxss: 2054, 2153. pxss_args_invalid pxss: 1562, 1583, 1699, 2119, 2174, 2257, 2318, 2430, 2473, 3122. 210 pxss_save_stack pxss: 1708, pxss_page_stack: 18. 216 pxss_stackp pxss: 1710, 1715, 1720, pxss_page_stack: 18. 6 pxss_stack_size pxss: 1709, pxss_page_stack: 5, 18. 23 p_interactions pxss: 4194, tc_meters: 32. 52 quit_counts pxss: 4153, tc_meters: 47. 67 quit_priority pxss: 4158, tc_meters: 53. 340 rcvr_gone pxss: 577, 579. 2 ready pxss: 502, 618, 659, 907, 1241, 2382, 2515, 2683, 3219, 3535, 3913, 3979, state_equs: 5. 220 readytime pxss: 2143, 2144, tc_meters: 84, 85. 350 ready_q_head tc_meters: 154. 352 ready_q_tail tc_meters: 156. 1261 read_ pxss: 1397, 1400, 1413. 1256 READ_LOCK pxss: 1393, 2361, 2476, 3181, 3504, 3620, 4745. read_mask pxss: 1608, 1942. 473 realtime_io_deadline pxss: 4225, tc_meters: 222. 472 realtime_io_priority_switch pxss: 424, tc_meters: 221. 474 realtime_io_quantum pxss: 4227, tc_meters: 223. 475 realtime_priorities pxss: 4229, tc_meters: 224. 314 realtime_q pxss: 2656, 3015, 3154, 3164, tc_meters: 126. 2605 realtime_sort pxss: 2619, 2625, 2653. 3133 recheck_real pxss: 3005, 3014. 400000 REGULAR_CHANNEL_TYPE event_channel_name: 35. 476 relinquishes pxss: 1248, tc_meters: 225. 1155 relinquish_priority pxss: 165, 1235. 1221 rel_time pxss: 1280, 1295, 1302. 4736 reschedule pxss: 262, 662, 813, 4325. 70 reset_system_procs_chars pxss: 4618, 4620. 5240 reset_system_procs_desc pxss: 4534, 4619. 5222 reset_system_procs_mess pxss: 4530, 4615, 4617. 5221 reset_system_procs_severity pxss: 4528, 4613. 16 reset_system_procs_words pxss: 4617, 4618. 50 response_count pxss: 3103, tc_meters: 45. 44 response_time pxss: 3101, 3102, tc_meters: 43. 1444 restore_sp pxss: 1675, 1682, 1685. 5111 retry_delete_me pxss: 4520, 4545. 44 return_event_messages pxss: 271, 329. 1173 return_no_pop_offset stack_header: 83. 1172 return_offset stack_header: 82. 3 RETURN_RING_0_TTY response_transitions: 7. 2524 ret_zero pxss: 2569, 2580. 4644 revoke_elig pxss: 261, 661, 812, 4239. 6 ring0_timer_event pxss: 127, 2183, 2226, 3744. 107 ring_0_wakeup pxss: 166, 356. 5002 rs_ps_done pxss: 4356, 4361, 4364, 4366. 1 running pxss: 2453, 3253, 3912, 3978, state_equs: 4. 1266 rw_ret pxss: 1403, 1429. 1275 r_put pxss: 1399, 1411. 1276 r_wait pxss: 1412, 1415. 60 save_stack pxss_page_stack: 9. 222 savx2_3 pxss_page_stack: 19. 14 schedulings pxss: 2600, tc_meters: 25. scs pxss: 634, 636, 637, 880, 1607, 1608, 1610, 1611, 1694, 1696, 1697, 1734, 1941, 1942, 1944, 1945, 1974, 1984, 1985, 1991, 2807, 3140, 3448, 3481, 3483, 3484, 4517, 4543, 4551, 4579, 4589, 4595, 4597, 4602, 4604, 4732. 2000 scu.apu.dsptw mc: 57. 10 scu.apu.fabs mc: 64. 20 scu.apu.fanp mc: 63. 40 scu.apu.fap mc: 62. 4000 scu.apu.pi_ap mc: 56. 200 scu.apu.ptw mc: 60. 100 scu.apu.ptw2 mc: 61. 20000 scu.apu.ptwm mc: 54. 10000 scu.apu.pt_on mc: 55. 100000 scu.apu.sdwm mc: 52. 1000 scu.apu.sdwnp mc: 58. 400 scu.apu.sdwp mc: 59. 40000 scu.apu.sd_on mc: 53. 200000 scu.apu.xsf mc: 51. 0 scu.apu_stat_word mc: 49. 22 scu.ca_shift mc: 209. 5 scu.ca_word mc: 208. 700 scu.con_chan_mask mc: 117. 6 scu.con_chan_shift mc: 118. 700 scu.cpu_no_mask mc: 141. 2 scu.cpu_no_word mc: 139. 6 scu.cpu_shift mc: 142. 7 scu.cpu_tag_mask mc: 234. 5 scu.cpu_tag_word mc: 232. 100 scu.cu.if mc: 229. 1000 scu.cu.poa mc: 226. 10000 scu.cu.pon mc: 221. 20000 scu.cu.pot mc: 220. 100000 scu.cu.rd mc: 217. 400000 scu.cu.rf mc: 214. 400 scu.cu.rfi mc: 227. 40000 scu.cu.rl mc: 218. 200000 scu.cu.rpt mc: 216. 4000 scu.cu.xde mc: 223. 2000 scu.cu.xdo mc: 224. 5 scu.cu_stat_word mc: 212. 77 scu.delta_mask mc: 147. 2 scu.delta_word mc: 145. 36 scu.even_inst_word mc: 239. 7 scu.fault_cntr_mask mc: 69. 0 scu.fault_cntr_word mc: 67. 1 scu.fault_data_word mc: 75. 10 scu.fd.am_er mc: 91. 200 scu.fd.boc mc: 87. 40 scu.fd.crt mc: 89. 100000 scu.fd.e_off mc: 79. 100000 scu.fd.ia_im mc: 102. 100 scu.fd.inret mc: 88. 200000 scu.fd.ioc mc: 101. 20000 scu.fd.ipr mc: 104. 400000 scu.fd.iro mc: 77. 400000 scu.fd.isn mc: 100. 40000 scu.fd.isp mc: 103. 10000 scu.fd.nea mc: 105. 2000 scu.fd.no_ga mc: 84. 400 scu.fd.ocall mc: 86. 1000 scu.fd.ocb mc: 85. 200000 scu.fd.oeb mc: 78. 400000 scu.fd.onc_1 mc: 96. 200000 scu.fd.onc_2 mc: 97. 4000 scu.fd.oobb mc: 106. 4 scu.fd.oosb mc: 92. 40000 scu.fd.orb mc: 80. 10000 scu.fd.owb mc: 82. 1 scu.fd.parl mc: 94. 2 scu.fd.paru mc: 93. 20 scu.fd.ralr mc: 90. 20000 scu.fd.r_off mc: 81. 4000 scu.fd.w_off mc: 83. 1 scu.fi_flag_mask mc: 123. 76 scu.fi_num_mask mc: 120. 1 scu.fi_num_shift mc: 121. 7000 scu.iac_mask mc: 114. 11 scu.iac_shift mc: 115. 170000 scu.ial_mask mc: 111. 14 scu.ial_shift mc: 112. 22 scu.ilc_shift mc: 184. 4 scu.ilc_word mc: 183. 4 scu.indicators_word mc: 187. 20 scu.ir.abs mc: 202. 200 scu.ir.bm mc: 199. 100000 scu.ir.carry mc: 191. 20000 scu.ir.eovf mc: 193. 10000 scu.ir.eufl mc: 194. 10 scu.ir.hex mc: 203. 40 scu.ir.mif mc: 201. 200000 scu.ir.neg mc: 190. 4000 scu.ir.oflm mc: 195. 40000 scu.ir.ovfl mc: 192. 1000 scu.ir.par mc: 197. 400 scu.ir.parm mc: 198. 2000 scu.ir.tro mc: 196. 100 scu.ir.tru mc: 200. 400000 scu.ir.zero mc: 189. 37 scu.odd_inst_word mc: 241. 1 scu.port_stat_word mc: 109. 400000 scu.ppr.p mc: 45. 700000 scu.ppr.prr_mask mc: 35. 41 scu.ppr.prr_shift mc: 36. 0 scu.ppr.prr_word mc: 34. 77777 scu.ppr.psr_mask mc: 40. 22 scu.ppr.psr_shift mc: 41. 0 scu.ppr.psr_word mc: 39. 0 scu.ppr.p_word mc: 44. 77 scu.tpr.tbr_mask mc: 177. 3 scu.tpr.tbr_word mc: 175. 700000 scu.tpr.trr_mask mc: 130. 41 scu.tpr.trr_shift mc: 131. 2 scu.tpr.trr_word mc: 129. 77777 scu.tpr.tsr_mask mc: 135. 22 scu.tpr.tsr_shift mc: 136. 2 scu.tpr.tsr_word mc: 134. 700000 scu.tsna.prn_mask mc: 159. 17 scu.tsna.prn_shift mc: 160. 40000 scu.tsna.prv mc: 161. 740000 scu.tsna_mask mc: 158. 34000 scu.tsnb.prn_mask mc: 164. 13 scu.tsnb.prn_shift mc: 165. 2000 scu.tsnb.prv mc: 166. 36000 scu.tsnb_mask mc: 163. 1600 scu.tsnc.prn_mask mc: 169. 7 scu.tsnc.prn_shift mc: 170. 100 scu.tsnc.prv mc: 171. 13 scu.tsnc_mask mc: 168. 777700 scu.tsr_stat_mask mc: 155. 6 scu.tsr_stat_shift mc: 156. 3 scu.tsr_stat_word mc: 153. 3023 sc_check pxss: 2906, 2910. 3040 sc_done pxss: 2894, 2898, 2923, 2926. 3010 sc_loop pxss: 2892, 2896, 2925. 3031 sc_next pxss: 2915, 2917. 3016 sc_wc_loop pxss: 2904, 2920. 5 sdt.aptep pxss: 965, 4670, stack_0_data: 25. 5 sdt.astep stack_0_data: 24. 2 sdt.freep pxss: 3424, 3427, 4672, 4674, stack_0_data: 18. 0 sdt.lock pxss: 4632, 4634, 4639, 4645, 4648, 4651, stack_0_data: 15. 4 sdt.nextp stack_0_data: 22. 1 sdt.num_stacks pxss: 962, 4297, stack_0_data: 16. 6 sdt.sdw pxss: 4300, stack_0_data: 27. 4 sdt.stacks pxss: 4671, stack_0_data: 20. 1 sdte.aptep pxss: 3431, stack_0_data: 37. 1 sdte.astep stack_0_data: 36. 0 sdte.nextp pxss: 3426, 3429, 4673, stack_0_data: 34. 2 sdte.sdw pxss: 3432, stack_0_data: 39. 4 sdte_size pxss: 974, 4302, stack_0_data: 32. 10 seg_aste.usage aste: 149. 14 seg_aste_size aste: 146. 1474 send_connect pxss: 730, 1723, 3673, 4177. 241 send_down pxss: 470, 475. 4606 send_ips_connect pxss: 4168, 4173, 4176. 4573 send_ips_ij2 pxss: 4148, 4163. 4601 send_ips_non_elig pxss: 4166, 4170. 4553 send_ips_wakeup pxss: 443, 4122, 4143. 4612 send_ips_wakeup_returns pxss: 4169, 4181. 100000 SEND_IPS_WKP_CHANNEL_FLAGS event_channel_name: 37. 4474 setsmall pxss: 4015, 4041. 1416 setup pxss: 1632, 2262, 2462. 1376 setup_ pxss: 358, 363, 367, 373, 523, 682, 748, 863, 930, 1108, 1562, 2217, 2348, 2707, 2734, 4102, 4106. 1400 setup_check pxss: 382, 526, 685, 751, 867, 933, 1114, 1582, 2221, 2353, 2710, 2737, 4113. 4617 setup_int pxss: 2604, 4198. 4635 setup_io_realtime pxss: 2618, 4223. 1403 setup_mask pxss: 244, 327, 598, 779, 1056, 1236, 1600, 2280, 4703. 4614 setup_p_int pxss: 500, 716, 3723, 4161, 4193. 1203 set_cpu_timer pxss: 167, 1282. 640 set_default_flag pxss: 889, 893. set_mask pxss: 637, 1611, 1697, 1945, 1974, 1985, 1991, 3484. 4442 set_newt pxss: 3261, 4008. 602 set_procs_required pxss: 168, 858. 642 set_reset_done pxss: 892, 896. 1172 set_timer pxss: 169, 1270. 1041 set_work_class pxss: 170, 1107. 5363 sg_check_it pxss: 4754, 4761. 5344 sg_pe_done pxss: 4711, 4739, 4773. 5313 sg_pe_loop pxss: 4707, 4714, 4715, 4718, 4737. 5341 sg_pe_skip pxss: 4725, 4731, 4734. 5316 sg_pe_tv pxss: 4709, 4712. 5325 sg_pre_empt_it pxss: 4713, 4720. 5403 sg_returns pxss: 4701, 4784. 5401 sg_wt_done pxss: 4752, 4780. 5351 sg_wt_loop pxss: 4748, 4755, 4756, 4759, 4778. 5376 sg_wt_skip pxss: 4766, 4770, 4775. 5354 sg_wt_tv pxss: 4750, 4753. 257 short_pf_count tc_meters: 97. 2076 short_ret pxss: 238, 324, 1701, 2078, 2083, 2412. 260 short_time pxss: 499, 501. 100 size_of_apt_entry pxss: 1071, 4069, 4073, 4571, apte: 122. 70 size_of_wct_entry pxss: 1130, 1135, 2918, 3000, 3729, wcte: 54. 4211 skip_polling pxss: 3761, 3772. 4455 sn1 pxss: 4011, 4021. 4467 sn2 pxss: 4018, 4020, 4029, 4032, 4035. 4464 sn_ck_big pxss: 4027, 4030. 2532 sort_in pxss: 504, 663, 2598, 3725, 4175. 2554 sort_in_again pxss: 1155, 2617, 2620. 2530 sort_in_before pxss: 725, 2595. 2542 sort_no_int pxss: 2603, 2608. 41 sort_to_elhead tc_meters: 41. sst pxss: 2435, 2440, 2441, 2452, 2503, 2513, 3039, 3318, 3319, 3321, 3606, 3607, 4284, 4287. 73 stach_header.trace_top_ptr stack_header: 62. 75 stackp pxss_page_stack: 9. stack_0_data pxss: 4631. stack_0_ptr pxss: 296, 641. stack_0_sdwp pxss: 3420, 3433, 4285, 4295, 4309. 32 stack_frame.arg_ptr stack_frame: 16. 100 stack_frame.condition_bit stack_frame: 32. 20 stack_frame.condition_word stack_frame: 9. 2000 stack_frame.crawl_out_bit stack_frame: 28. 26 stack_frame.entry_ptr stack_frame: 13. 20 stack_frame.flag_word stack_frame: 24. 400 stack_frame.link_trap_bit stack_frame: 30. 30 stack_frame.lp_ptr stack_frame: 15. 20000 stack_frame.main_proc_bit stack_frame: 25. 60 stack_frame.min_length stack_frame: 23. 22 stack_frame.next_sp stack_frame: 10. 36 stack_frame.on_unit_rel_ptrs stack_frame: 19. 30 stack_frame.operator_ptr pxss: 2050, stack_frame: 14. 37 stack_frame.operator_ret_ptr stack_frame: 20. 20 stack_frame.prev_sp pxss: 1642, 1681, 1683, stack_frame: 8. 40 stack_frame.regs stack_frame: 22. 24 stack_frame.return_ptr pxss: 2057, stack_frame: 12. 10000 stack_frame.run_unit_manager stack_frame: 26. 1000 stack_frame.signaller_bit stack_frame: 29. 22 stack_frame.signaller_word stack_frame: 11. 4000 stack_frame.signal_bit stack_frame: 27. 34 stack_frame.static_ptr stack_frame: 17. 200 stack_frame.support_bit stack_frame: 31. 35 stack_frame.support_ptr stack_frame: 18. 37 stack_frame.translator_id stack_frame: 21. 66 stack_header.assign_linkage_ptr stack_header: 59. 32 stack_header.bar_mode_sp stack_header: 42. 36 stack_header.call_op_ptr stack_header: 44. 10 stack_header.clr_ptr stack_header: 27. 6 stack_header.combined_stat_ptr stack_header: 25. 4 stack_header.cpm_data_ptr stack_header: 24. 13 stack_header.cpm_enabled stack_header: 32. 13 stack_header.cur_lot_size stack_header: 31. 64 stack_header.ect_ptr stack_header: 58. 46 stack_header.entry_op_ptr stack_header: 49. 70 stack_header.heap_header_ptr stack_header: 60. 74 stack_header.in_trace stack_header: 63. 52 stack_header.isot_ptr stack_header: 52. 26 stack_header.lot_ptr stack_header: 39. 12 stack_header.main_proc_invoked stack_header: 29. 12 stack_header.max_lot_size stack_header: 28. 20 stack_header.parent_ptr stack_header: 36. 34 stack_header.pl1_operators_ptr stack_header: 43. 40 stack_header.push_op_ptr stack_header: 46. 42 stack_header.return_op_ptr stack_header: 47. 44 stack_header.ret_no_pop_op_ptr stack_header: 48. 62 stack_header.rnt_ptr stack_header: 57. 12 stack_header.run_unit_depth stack_header: 30. 54 stack_header.sct_ptr stack_header: 53. 30 stack_header.signal_ptr stack_header: 41. 22 stack_header.stack_begin_ptr pxss: 629, 860, 1604, 1635, 1639, 1688, 2151, 3471, 3477, stack_header: 37. 24 stack_header.stack_end_ptr pxss: 630, 1689, 2152, 3472, 3478, stack_header: 38. 14 stack_header.system_free_ptr stack_header: 33. 60 stack_header.sys_link_info_ptr stack_header: 56. 72 stack_header.trace_frames stack_header: 61. 50 stack_header.trans_op_tv_ptr stack_header: 51. 56 stack_header.unwinder_ptr stack_header: 54. 16 stack_header.user_free_ptr stack_header: 34. 100 stack_header_end stack_header: 64. 15 stack_size pxss_page_stack: 6, 9. 510 start pxss: 171, 747. 160 statistics pxss: 1009, 1010, 1064, 3912, 3913, 3914, 3978, 3979, 3980, 3981, tc_meters: 81. 456 stk_truncate tc_meters: 208. 457 stk_truncate_always tc_meters: 209. 460 stk_trunc_avg_f1 tc_meters: 210. 461 stk_trunc_avg_f2 tc_meters: 211. 136 stock_temp pxss_page_stack: 12. 217 stock_temp_1 pxss_page_stack: 19. 220 stock_temp_2 pxss_page_stack: 19. 427 stop pxss: 172, 681. 5 stopped pxss: 409, 705, 810, 941, 3350, 3666, 4119, 4271, 4403, state_equs: 8. 424 stopped_stack_0 pxss: 971, 4273, 4276, tc_meters: 189. 3461 stop_check pxss: 3347. 5023 stop_check_ pxss: 3351, 4400. 576 stop_return pxss: 823. 502 stop_returns pxss: 706, 732, 767. 503 stop_returns_nul pxss: 694, 734, 757. 5034 stop_ul pxss: 4404, 4410. 427 stop_wakeup pxss: 173, 680. 3613 stproc pxss: 3443, 3463. 475 st_wake pxss: 719, 723, 727. 1467 subroutine_save pxss: 488, 1714. 1472 subroutine_unsave pxss: 495, 507, 1719. 5305 suspend_getwork pxss: 174, 4698. 1132 swc_code_table pxss: 1164, 1176. 1126 swc_elig pxss: 1150, 1169. 1115 swc_ret pxss: 1124, 1134, 1137, 1139, 1142, 1147, 1156, 1173. 1116 swc_ret_nul pxss: 1121, 1158. 1436 switch_back pxss: 531, 830, 991, 1677, 2295, 2405, 2718, 2744, 4129. 1434 switch_back_pds pxss: 1250, 1673, 2243, 2291. 1437 switch_back_ret pxss: 455, 736, 1081, 1161, 1679. 1444 switch_back_ret_pds pxss: 287, 913, 917, 1686, 4782. syserr pxss: 2028, 3563, 4538. 306 system_shutdown pxss: 648, tc_meters: 119. 157 system_type tc_meters: 80. 400 system_virtual_time pxss: 3940, 3941, tc_meters: 174. sys_info pxss: 442, 496, 1014, 1394, 1405, 1419, 1950, 1965, 2139, 2545, 2571, 3099, 3124, 3146, 3167, 3373, 3410, 3568, 3634, 3647, 3671, 3879, 4013, 4203, 4224, 4331. sys_level pxss: 1610, 1984. tape_polling_time pxss: 3818. 372 tape_polling_time_loc tc_meters: 168. tc pxss: 257, 413, 3078. 152 tcpu_scheduling tc_meters: 75. tc_argp pxss: 1601, 1702. tc_data pxss: 538, 1029, 1345, 1398, 1402, 1407, 1408, 1411, 1412, 1423, 1428, 1432, 1434, 1440, 1447, 1452, 1457, 1460, 1936, 1951, 1955, 1963, 1966, 1967, 1976, 1993, 1997, 1999, 2002, 2009, 2015, 2019, 2033, 2035, 2074, 2082, 2099, 2121, 2176, 2212, 2260, 2278, 2319, 2322, 2331, 2333, 2346, 2411, 2413, 2432, 2474, 2568, 2672, 3475, 3811, 3818, 3825, 3832, 3839, 4074, 4559, 4700. tc_mask pxss: 632, 1609, 1692, 1943, 1973, 1990. 0 tc_suspend_lock pxss: 3209, 4700, tc_meters: 15. 110 tdepth pxss: 3936, 3937, tc_meters: 63, 64. 343 tefirst pxss: 4211, 4342, tc_meters: 147. 344 telast pxss: 2900, 2986, 4339, tc_meters: 148. 134 temp pxss: 1395, 1406, 1420, 2771, 2782, 3877, 3890, 3891, 3939, 3959, 3967, pxss_page_stack: 11. 166 temp1 pxss: 3184, 3240, 3257, 3451, 3532, 3553, pxss_page_stack: 15. 167 temp2 pxss: 2860, 2873, 2883, 2975, 3992, pxss_page_stack: 15. 3136 test_award pxss: 2866, 2877, 2880, 2882, 3004, 3023. 4170 test_poll pxss: 3757. 20 te_block pxss: 245, tc_meters: 29. 21 te_i_stop pxss: 780, tc_meters: 30. 22 te_pre_empt pxss: 607, tc_meters: 31. 2506 te_vtime_1 pxss: 2544, 2548. 2507 te_vtime_2 pxss: 2547, 2550. 17 te_wait pxss: 2287, tc_meters: 28. 2620 thread_him_in pxss: 1244, 2640, 2644, 2647, 2649, 2665, 2671, 2716, 3076. 2644 thread_in_idle pxss: 175, 2706. 323 thread_in_itt_queue pxss: 558, 563, 566. 345 timax tc_meters: 149. timer pxss: 3819. timer_channel pxss: 1275, 1287, 1299, 3371, 3383. timer_time_out pxss: 1273, 1285, 1303, 3364, 3367, 3370. time_out pxss: 3812. 65 time_out_severity pxss: 3540, 3547, tc_meters: 51. time_v_temp pxss: 2549. 2574 ti_loop pxss: 2630, 2634, 2636, 2638, 2641, 2646, 2650. 2564 ti_sort pxss: 2633. 207 tmp_event pxss: 2365, 2391, 3529, 3551, 4678, 4682, pxss_page_stack: 18. 144 tmp_ev_channel pxss: 396, 711, 1766, 1770, 1802, 1853, 1884, 3384, 3683, 4460, pxss_page_stack: 13. 146 tmp_ev_message pxss: 398, 712, 1800, 1877, 3382, 3681, 4406, 4407, 4437, pxss_page_stack: 13. 202 tmp_ring pxss: 388, 391, 690, 1788, 3377, 3676, 4461, pxss_page_stack: 17. 274 total_clock_lag pxss: 3645, 3646, tc_meters: 107. 242 total_pf_count tc_meters: 86. 240 total_pf_time tc_meters: 85, 86, 87, 88, 89, 90, 91, 92. 165 total_steps pxss_page_stack: 15. 0 trace_frames.count stack_header: 69. 1 trace_frames.top_ptr stack_header: 70. 410 tro_ pxss: 613, 654. 6 TTY_WAKEUP response_transitions: 10. 551 tv_offset stack_header: 75, 80, 81, 82, 83, 84. 500 uid_array tc_meters: 229. 1665 um_is_ds pxss: 1901, 1903. 113 unique_ring_0_wakeup pxss: 176, 362. 1324 UNLOCK pxss: 304, 454, 735, 829, 910, 916, 986, 1080, 1159, 1247, 1322, 1440, 1442, 2192, 2241, 2401, 2524, 2717, 2743, 2849, 3345, 3542, 3571, 3585, 3637, 3743, 3766, 4128, 4381, 4410, 4439, 4524, 4606, 4740, 4781. 577 UNLOCK2_switch_back pxss: 827, 903. 1346 unlocked_APT pxss: 1424, 1433, 1443, 1463. 1230 unlock_apt pxss: 177, 1320. 1247 unlock_apte pxss: 178, 1369. 1354 UNLOCK_bp pxss: 286, 452, 620, 733, 828, 909, 981, 1078, 1157, 1246, 1374, 1484, 2132, 2156, 2239, 2286, 2294, 2443, 2455, 3344, 3392, 3689, 4080, 4126, 4380, 4435, 4442, 4469, 4585. 2150 UNLOCK_bp_unpwait pxss: 2129, 2155. 663 UNLOCK_sprq_error pxss: 881, 915. 1363 UNLOCK_x2 pxss: 1495, 2385, 2394, 2517, 2529, 3235, 3519, 3538, 3584, 3616. 1372 UNLOCK_x3 pxss: 554, 580, 1506, 2808, 2812, 2818, 4735, 4772, 4776. 1333 unlock_ pxss: 1444, 1447. 5255 unlock_stack_queue pxss: 978, 3436, 4311, 4643. 1661 unmake_message pxss: 1822, 1824, 1830, 1835, 1882, 1892, 1898. 2141 unpwait pxss: 2145, 2157. 1331 unread pxss: 1441, 1445. 770 unthread pxss: 258, 658, 724, 809, 1028, 1151, 1240, 2714, 2742, 3064, 3724, 4174. 2660 unthread_apte pxss: 179, 2733. 753 update_execution_state pxss: 260, 503, 619, 660, 764, 811, 908, 944, 1001, 1242, 2131, 2238, 2285, 2384, 2439, 2454, 2516, 3254, 3537, 3600, 4584. 764 update_exec_ret pxss: 1006, 1012. 2477 update_te pxss: 250, 606, 781, 906, 2125, 2240, 2288, 2444, 2540. 2513 usage_values pxss: 180, 2567. 322 used_itt pxss: 573, 1787, 1811, 1833, 1904, tc_meters: 132. validation_level pxss: 387, 689. 430 vcpu_response_bounds tc_meters: 192. 433 vcpu_response_bounds_size tc_meters: 193. virtual_delta pxss: 2551, 2573, 3887. 2611 virtual_sort pxss: 2627, 2658. virtual_time_at_eligibility pxss: 266, 667, 2552. 224 volmap_page_temp pxss_page_stack: 21. 233 volmap_page_temp_1 pxss_page_stack: 24. 42 volmap_poll pxss: 3840, 3841. 466 volmap_polling_time pxss: 3839, tc_meters: 219. 40 volmap_poll_time pxss: 3839, 3841. 142 volmap_save_ptr pxss_page_stack: 12. 162 volmap_save_sdw pxss_page_stack: 14. 140 volmap_temp pxss_page_stack: 12. 170 volmap_temp_1 pxss_page_stack: 15. 171 volmap_temp_2 pxss_page_stack: 15. vtime_count pxss: 2543. 234 vtocx pxss_page_stack: 25. 2257 w1 pxss: 2279, 2297. 2240 wait pxss: 181, 2277. 3 waiting pxss: 2130, 2237, 2284, 2380, 3511, 3599, 3914, 3980, state_equs: 6. 2231 waitp pxss: 182, 2256. 2143 waitp_return pxss: 2148, 2449. 12 waits pxss: 2135, tc_meters: 23. 200 waittime tc_meters: 83, 84. 326 wait_enable pxss: 646, 2074, 2099, 2121, 2176, 2212, 2260, 2278, 2319, 2346, 2568, tc_meters: 136. 2255 wait_not pxss: 2283, 2293. wait_return pxss: 2053, 2147, 2177. 2254 wait_returns pxss: 2290. 243 wake pxss: 446, 487, 727, 765, 3688, 4178, 4468. 122 wakeup pxss: 183, 372. 11 wakeups pxss: 407, tc_meters: 22. 4074 wakeup_alarm pxss: 3670, 3675. wakeup_flag pxss: 360, 364, 369, 374, 385, 415, 713, 1854, 1875, 3387, 3686, 4103, 4107, 4147, 4464. 107 wakeup_int pxss: 184, 357. 221 wakeup_returns pxss: 406, 410, 451, 477. 222 wakeup_returns_nul pxss: 403, 453. 214 wakeup_wake pxss: 439, 445. 5066 wake_term_pid pxss: 4408, 4438, 4456. 0 wcte.bp wcte: 7. 6 wcte.cpu_sum pxss: 3949, 3950, wcte: 25. 2 wcte.credits pxss: 2908, 2911, 2913, 2914, 2916, 2981, 2983, 2992, 3089, 3952, 4252, wcte: 21. 200000 wcte.defined pxss: 1141, wcte: 11. 1 wcte.defined_word wcte: 16. 5 wcte.eligibilities pxss: 3094, wcte: 24. 1 wcte.flags pxss: 1140, wcte: 9, 15, 16, 17, 18, 19. 0 wcte.fp wcte: 6. 40000 wcte.governed pxss: 2956, 3091, 3954, 4254, wcte: 13. 1 wcte.governed_word pxss: 2955, 3090, 3953, 4253, wcte: 18. 63 wcte.governing_credits pxss: 2961, 2964, 2966, 2967, 2970, 2972, 3093, 3956, 4256, wcte: 50. 20000 wcte.interactive_q pxss: 2629, wcte: 14. 1 wcte.interactive_q_word pxss: 2628, wcte: 19. 100000 wcte.io_priority wcte: 12. 1 wcte.io_priority_word wcte: 17. 26 wcte.maxel pxss: 2869, wcte: 36. 62 wcte.maxf pxss: 2960, wcte: 49. 3 wcte.minf pxss: 2907, wcte: 22. 400000 wcte.mnbz wcte: 10. 1 wcte.mnbz_word wcte: 15. 27 wcte.nel pxss: 1171, 1172, 2871, 3053, 4250, wcte: 37. 36 wcte.number_processing wcte: 45. 31 wcte.number_queues wcte: 40. 30 wcte.number_thinks wcte: 39. 4 wcte.pin_weight wcte: 23. 25 wcte.purging pxss: 4386, wcte: 35. 14 wcte.quantum1 pxss: 4207, wcte: 28. 15 wcte.quantum2 pxss: 4335, wcte: 29. 22 wcte.rcount1 wcte: 32. 23 wcte.rcount2 wcte: 33. 24 wcte.realtime pxss: 2624, 2765, 2905, 3945, 4209, 4337, wcte: 34. 10 wcte.resp1 pxss: 4204, wcte: 26. 12 wcte.resp2 pxss: 4332, wcte: 27. 16 wcte.rmeter1 wcte: 30. 20 wcte.rmeter2 wcte: 31. 0 wcte.thread pxss: 2973, 2979, 2985, 3704, wcte: 5. 42 wcte.total_processing_time wcte: 46. 34 wcte.total_queue_time wcte: 42. 32 wcte.total_think_time wcte: 41. 52 wcte.total_vcpu_time wcte: 47. wired pxss: 3321. wired_fim pxss: 624, 651. wired_plm pxss: 3592. 124 wjoin pxss: 361, 365, 370, 375. wkp_mask pxss: 442. 347 working_set_addend tc_meters: 151. 307 working_set_factor tc_meters: 120. 454 work_class_idle pxss: 3997, tc_meters: 207. 1305 write_ pxss: 1422, 1435. 1302 WRITE_LOCK pxss: 251, 401, 654, 687, 754, 782, 869, 935, 1057, 1116, 1237, 1316, 1418, 2182, 2224, 2712, 2739, 2850, 3160, 3632, 3748, 3769, 4115, 4401, 4426, 4514, 4540, 4704. 1335 WRITE_TO_READ pxss: 1451, 1454, 3081, 3108, 3177. 245 ws_sum pxss: 3037, 3058, 4258, tc_meters: 89. 1314 w_fail pxss: 1425, 1430. 142 w_rz pxss: 386, 391. 1341 w_to_r pxss: 1453, 1456. 1317 w_wait pxss: 1431, 1433, 1437. 206 x5 pxss: 2360, 2402, pxss_page_stack: 17. 1216 zero_chan pxss: 1279, 1297. 32 zero_idle pxss: 3977, tc_meters: 36. NO FATAL ERRORS ----------------------------------------------------------- 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