COMPILATION LISTING OF SEGMENT iom_overhead Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1014.1 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 13 iom_overhead: 14 procedure; 15 16 /* iom_overhead: Process interrupts on IOM overhead channels */ 17 /* Written December 1980 by C. Hornig */ 18 /* init entry moved in April 1984 by Chris Jones */ 19 /* init_without_assign added in November 1984 by M. Pandolf */ 20 21 dcl Iom fixed bin (35) parameter; 22 dcl Level fixed bin (3) parameter; 23 dcl Data_word bit (36) aligned parameter; 24 25 dcl Code fixed bin (35) parameter; 26 27 dcl absadr entry (ptr, fixed bin (35)) returns (fixed bin (26)); 28 dcl iom_error$invalid_overhead 29 entry (fixed bin (3), fixed bin (6), fixed bin (3), bit (36) aligned); 30 dcl iom_overhead$system_fault 31 entry (fixed bin (35), fixed bin (3), bit (36) aligned); 32 dcl iom_overhead$special_status 33 entry (fixed bin (35), fixed bin (3), bit (36) aligned); 34 dcl ldac entry (ptr) returns (bit (36) aligned); 35 dcl syserr entry options (variable); 36 37 dcl errcode fixed bin (35); 38 dcl i fixed bin; 39 dcl iom fixed bin (3); 40 dcl 1 iom_special_status aligned like io_special_status; 41 dcl 1 iom_fault_status aligned, 42 ( 2 mbz1 bit (9), 43 2 channel bit (9), /* channel number */ 44 2 serv_req bit (5), /* service request */ 45 2 mbz2 bit (3), 46 2 controller_fault bit (4), /* system controller fault code */ 47 2 io_fault bit (6) 48 ) unaligned; /* I/O fault code */ 49 50 dcl IOMS char (4) internal static options (constant) init ("ABCD"); 51 52 dcl error_table_$dev_offset_out_of_bounds 53 fixed bin (35) ext static; 54 55 dcl (addr, binary, bit, dimension, hbound, lbound, null, string, substr) 56 builtin; 57 58 init: 59 entry (Iom, Code); 60 61 iom = Iom; 62 iom_data_ptr = addr (iom_data$); 63 iom_mailbox_seg_ptr = addr (iom_mailbox$); 64 call set_overhead_channel (system_fault_channel, iom_overhead$system_fault, 65 addr (iom_mailbox_seg.system_fault (iom))); 66 67 /* Set up the handler and mailbox for the special status channel. */ 68 69 call set_overhead_channel (special_status_channel, iom_overhead$special_status, 70 addr (iom_mailbox_seg.special_status (iom))); 71 72 errcode = 0; 73 INIT_RETURN: 74 Code = errcode; 75 return; 76 77 init_without_assign: 78 entry (Iom, Code); 79 80 iom = Iom; 81 iom_data_ptr = addr (iom_data$); 82 iom_mailbox_seg_ptr = addr (iom_mailbox$); 83 84 call set_dcw_lpw (iom, system_fault_channel, 85 addr (iom_mailbox_seg.system_fault (iom)), 86 dimension (addr (iom_mailbox_seg.system_fault (iom)) -> status_queue.status, 1)); 87 88 Code = 0; 89 return; 90 91 release: 92 entry (Iom, Code); 93 94 95 iom = Iom; 96 iom_data_ptr = addr (iom_data$); 97 iom_mailbox_seg_ptr = addr (iom_mailbox$); 98 call io_manager$unassign (iom_data.per_iom (iom).special_chx, (0)); 99 call io_manager$unassign (iom_data.per_iom (iom).fault_chx, (0)); 100 Code = 0; 101 return; 102 103 /* SET_OVERHEAD_CHANNEL - Internal Procedure to Set up Mailbox and Interrupt Handler for Overhead Channels. 104* 105* An LPW is set up with tally update suppressed so that it keeps refreshing the DCW for the same location. 106* The refresh DCW is stored in the SCW slot of the channel, since overhead channels don't use their SCW. 107* This scheme provides a circular continuous queue. */ 108 109 set_overhead_channel: 110 procedure (channo, intp, qp); 111 112 dcl channo fixed bin (6), /* overhead channel number */ 113 intp entry, /* interrupt handler procedure */ 114 qp ptr; /* ptr to queue for overhead channel */ 115 116 dcl tally fixed bin (12); /* tally for overhead channel DCW */ 117 dcl tempx fixed bin (35); 118 119 call io_manager$assign (tempx, substr ("ABCD", iom, 1) || substr ("1234567", channo, 1), intp, (iom), (null ()), 120 errcode); 121 if errcode ^= 0 then 122 goto INIT_RETURN; 123 124 tally = dimension (qp -> status_queue.status, 1); 125 if channo = special_status_channel /* If special status channel ... */ 126 then do; 127 iom_data.per_iom (iom).special_chx = tempx; 128 tally = tally - 2; /* Allow two extra words for spillover. 129* See IOM EPS-1 Section on Special Status 130* for a discussion of spillover considerations. */ 131 end; 132 else iom_data.per_iom (iom).fault_chx = tempx; 133 call set_dcw_lpw (iom, channo, qp, tally); 134 135 return; 136 end set_overhead_channel; 137 138 /* * * * * * * * * * ABS_ADDR_18 * * * * * * * * * */ 139 140 abs_addr_18: 141 procedure (P) returns (bit (18) aligned); 142 dcl P ptr parameter; 143 144 dcl address fixed bin (26); 145 146 address = absadr (P, errcode); 147 if errcode ^= 0 then 148 goto INIT_RETURN; 149 if address > (262144 - 4096) then do; 150 errcode = error_table_$dev_offset_out_of_bounds; 151 goto INIT_RETURN; 152 end; 153 return (bit (binary (address, 18))); 154 end abs_addr_18; 155 156 /* * * * * * * * * * SYSTEM_FAULT * * * * * * * * * */ 157 158 system_fault: 159 entry (Iom, Level, Data_word); 160 161 iom = Iom; 162 iom_data_ptr = addr (iom_data$); 163 iom_mailbox_seg_ptr = addr (iom_mailbox$); 164 165 status_queue_ptr = addr (iom_mailbox_seg.system_fault (iom)); 166 167 do i = lbound (status_queue.status, 1) to hbound (status_queue.status, 1); 168 string (iom_fault_status) = ldac (addr (status_queue.status (i))); 169 if string (iom_fault_status) ^= ""b then do; 170 call syserr (0, "iom_overhead: IOM ^a System fault status ^w.", substr (IOMS, iom, 1), 171 string (iom_fault_status)); 172 if iom_fault_status.channel ^= ""b then 173 call report (binary (iom_fault_status.channel, 9), string (iom_fault_status)); 174 end; 175 end; 176 177 call check_dcw (system_fault_channel); 178 179 return; 180 181 /* * * * * * * * * * SPECIAL_STATUS * * * * * * * * * */ 182 183 special_status: 184 entry (Iom, Level, Data_word); 185 186 iom = Iom; 187 iom_data_ptr = addr (iom_data$); 188 iom_mailbox_seg_ptr = addr (iom_mailbox$); 189 190 status_queue_ptr = addr (iom_mailbox_seg.special_status (iom)); 191 192 do i = lbound (status_queue.status, 1) to hbound (status_queue.status, 1); 193 string (iom_special_status) = ldac (addr (status_queue.status (i))); 194 if iom_special_status.t then 195 call report (binary (iom_special_status.channel, 9), string (iom_special_status)); 196 end; 197 198 call check_dcw (special_status_channel); 199 200 return; 201 202 /* * * * * * * * * * REPORT * * * * * * * * * */ 203 204 report: 205 procedure (Channel, Data_word); 206 dcl Channel uns fixed bin (9) parameter; 207 dcl Data_word bit (36) aligned parameter; 208 dcl chx fixed bin; 209 210 chx = 0; 211 212 if (Channel >= lbound (iom_data.per_iom.chantab, 2)) & (Channel <= hbound (iom_data.per_iom.chantab, 2)) then 213 chx = iom_data.per_iom (iom).chantab (Channel); 214 215 if chx > 0 then 216 if iom_data.per_device (chx).flags.in_use then do; 217 call iom_data.per_device (chx).handler (iom_data.per_device (chx).index, Level, Data_word); 218 return; 219 end; 220 221 call iom_error$invalid_overhead (iom, (Channel), Level, Data_word); 222 223 end report; 224 225 226 check_dcw: 227 procedure (Channel); 228 dcl Channel fixed bin (6); 229 dcl rdcwp ptr; 230 231 dcwp = addr (iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (Channel).dcw); 232 rdcwp = addr (iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (Channel).scw); 233 if (dcwp -> dcw.tally) > (rdcwp -> dcw.tally) then 234 call syserr ("iom_overhead: Status queue overrun for IOM ^a channel ^d.", substr (IOMS, iom, 1), Channel); 235 236 string (dcwp -> dcw) = string (rdcwp -> dcw); 237 238 end check_dcw; 239 240 set_dcw_lpw: 241 procedure (iom, chan, qp, tly); 242 243 dcl iom fixed bin (3), /* IOM number */ 244 chan fixed bin (6), /* logical channel number */ 245 qp ptr, /* pointer to queue for channel */ 246 tly fixed bin (12); /* tally for DCW */ 247 248 dcwp = addr (iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (chan).scw); 249 dcwp -> dcw.address = abs_addr_18 (qp); 250 dcwp -> dcw.tally = bit (tly); 251 dcwp -> dcw.type = "01"b; /* IOTP */ 252 253 iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (chan).dcw = 254 iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (chan).scw; 255 256 lpwp = addr (iom_mailbox_seg.iom_mailbox (iom).channel_mailbox (chan).lpw); 257 lpwp -> lpw.dcw_addr = abs_addr_18 (dcwp); 258 lpwp -> lpw.nc = "1"b; /* LPW ADDR and TALLY fields update inhibit */ 259 260 return; 261 end set_dcw_lpw; 262 1 1 /* Begin include file io_manager_dcls.incl.pl1 */ 1 2 1 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 1 4 /* Modified for MR10 interface, February 1982 */ 1 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 1 6 1 7 /* These entries are callable on unwired stacks. */ 1 8 1 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 1 10 dcl io_manager$assign 1 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 1 12 fixed bin (35), ptr, fixed bin (35)); 1 13 1 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 1 15 dcl io_manager$assign_add 1 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 1 17 fixed bin (35), ptr, fixed bin (35)); 1 18 1 19 /* call io_manager$unassign (Chx, Code); */ 1 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 1 21 1 22 /* call io_manager$unassign_delete (Chx, Code); */ 1 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 1 24 1 25 /* call io_manager$connect (Io_manager_arg); */ 1 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 1 27 1 28 /* call io_manager$connect_abs (Io_manager_arg); */ 1 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 1 30 1 31 /* call io_manager$connect_direct (Io_manager_arg); */ 1 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 1 33 1 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 1 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 1 36 1 37 /* call io_manager$mask (Chx); */ 1 38 dcl io_manager$mask entry (fixed bin (35)); 1 39 1 40 /* call io_manager$ignore_interrupt (); */ 1 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 1 42 1 43 /* call io_manager$data_tdcw (Io_manager_arg); 1 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 1 45* 1 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 1 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 1 48 1 49 dcl io_manager_arg_ptr ptr; 1 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 1 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 1 52 2 bound fixed bin (19), /* workspace size */ 1 53 2 pcw bit (36) aligned, /* or IDCW */ 1 54 2 listx fixed bin (18), /* DCW list offset */ 1 55 2 ptp ptr, /* page table pointer */ 1 56 2 listp ptr, /* DCW list pointer */ 1 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 1 58 1 59 /* End include file io_manager_dcls.incl.pl1 */ 263 264 2 1 /* Begin include file ...... iom_data.incl.pl1 2 2* First written in August 1971 by R F Mabee. 2 3* Modified for paged IOM November 1980 by C. Hornig. 2 4* More IIOC changes by C. Hornig, June 1982. 2 5* Modified for channel reconfiguration by Chris Jones, January 1984. 2 6* Modified to remove support of non-paged IOMs by Chris Jones, August 1984. 2 7* Modified to add IMW read protocol flags by M. Pandolf, January 1985. 2 8**/ 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl iom_data$ external; 2 12 dcl iom_mailbox$ external; 2 13 2 14 dcl n_devices fixed bin; 2 15 dcl iom_data_ptr ptr; 2 16 2 17 dcl 1 iom_data based (iom_data_ptr) aligned, 2 18 2 n_devices fixed bin, /* (0) Maximum number of channels. */ 2 19 2 stop_lpw bit (36), /* (1) LPW pointing to stop_dcw. */ 2 20 2 stop_dcw bit (36), /* (2) DCW to stop channel, probably storing bad status. */ 2 21 2 stop_scw bit (36), /* (3) SCW for same */ 2 22 2 imw_lock fixed bin (35), /* (4) Essentially a lock for iom switch checking: */ 2 23 /* 1 : OK to poll IMW */ 2 24 /* 0 : lock in transition */ 2 25 /* -1 : DONT poll IMW */ 2 26 2 n_intr_procs fixed bin (35), /* (5) Number of processors in interrupt handler */ 2 27 2 pad1 (2) bit (36), 2 28 2 stop_status bit (72), /* (10) All unused channels store status here. */ 2 29 2 rfh1 (6) bit (36), /* can't use this */ 2 30 2 stop_ext_status bit (8 * 36), /* (20) Unused channels' extended status */ 2 31 2 pad3 (5) bit (36), 2 32 2 invalid_interrupts fixed bin (35), /* (35) interrupts on unused channels */ 2 33 2 null_interrupts fixed bin (35), /* (36) spurious interrupts */ 2 34 2 multiple_interrupts 2 35 fixed bin (35), /* (37) several interrupts at a time */ 2 36 2 per_iom (4) like per_iom, /* (40) for each IOM */ 2 37 2 per_device (n_devices refer (iom_data.n_devices)) like per_device; 2 38 /* (240) Data for assigned channels. */ 2 39 2 40 dcl 1 per_iom aligned based, 2 41 2 lock bit (36), /* (40) connect mailbox lock */ 2 42 2 flags, /* (41) */ 2 43 3 configured bit (1) unal, /* is configured */ 2 44 3 on_line bit (1) unal, /* is ON */ 2 45 3 pad1 bit (34) unal, 2 46 2 model char (4), /* (42) what kind of IOM */ 2 47 2 port fixed bin (3), /* (43) SC port */ 2 48 2 connect_time fixed bin (71), /* (44) time of last connect */ 2 49 2 connect_lpw bit (36), /* (46) LPW for connect channel */ 2 50 2 cow bit (36), /* (47) Connect Operand Word */ 2 51 2 special_chx fixed bin (35), /* (50) chx of special status channel */ 2 52 2 fault_chx fixed bin (35), /* (51) chx of system fault channel */ 2 53 2 pad2 (4) bit (36), 2 54 2 abandoned_connects fixed bin (35), /* (56) times we couldn't get IOM to listen at all */ 2 55 2 reconnects fixed bin (35), /* (57) times a connect was lost */ 2 56 2 chantab (0:63) uns fixed bin (9) unal; 2 57 /* (60) packed devtab indices */ 2 58 2 59 dcl 1 per_device aligned based, 2 60 2 status bit (72), /* (0) Status for channel is stored here. */ 2 61 2 rfh1 (6) bit (36), 2 62 2 ext_status bit (8 * 36), /* (10) extended status stored by IIOC */ 2 63 2 iom uns fixed bin (3), /* (20) IOM# (1-4) */ 2 64 2 channel uns fixed bin (6), /* (21) channel # */ 2 65 2 handler entry (fixed bin (35), fixed bin (3), bit (36) aligned), 2 66 /* (22) Interrupt handler for device. */ 2 67 2 flags, /* (26) */ 2 68 3 in_use bit (1) unal, /* assigned */ 2 69 3 queue_status bit (1) unal, /* maintain status queue */ 2 70 3 on_line bit (1) unal, /* can be assigned */ 2 71 2 index fixed bin (35), /* (27) Channel identification index. */ 2 72 2 pcw bit (72), /* (30) Peripheral Control Word */ 2 73 2 lpw bit (72), /* (32) List Pointer Word */ 2 74 2 scw bit (36), /* (34) Status Control Word */ 2 75 2 pad1 fixed bin (35), 2 76 2 status_queue_ptr ptr, /* (36) Status queue */ 2 77 2 connect_time fixed bin (71), /* (40) time of last connect */ 2 78 2 connects fixed bin (71), /* (42) Total connects */ 2 79 2 interrupts fixed bin (71), /* (44) Total number of interrupts for this channel. */ 2 80 2 interrupt_time fixed bin (71); /* (46) Total interrupt time for this channel. */ 2 81 2 82 dcl iom_mailbox_seg_ptr ptr; 2 83 dcl 1 iom_mailbox_seg aligned based (iom_mailbox_seg_ptr), 2 84 2 imw_array (0:31) bit (32), /* Indexed by interrupt cell number. One bit for each channel. */ 2 85 2 system_fault (4) aligned like status_queue, 2 86 /* system faults store here (12 words/IOM) */ 2 87 2 special_status (4) aligned like status_queue, 2 88 /* special status words here (12 words/IOM) */ 2 89 2 iom_mailbox (4) like iom_mailbox; /* Used to communicate with the IOM. */ 2 90 2 91 dcl status_queue_ptr ptr; 2 92 dcl 1 status_queue aligned based (status_queue_ptr), 2 93 2 status (12) bit (36); 2 94 2 95 dcl 1 iom_mailbox aligned based, 2 96 2 channel_mailbox (0:63) like channel_mailbox; 2 97 2 98 dcl 1 channel_mailbox aligned based, 2 99 2 lpw bit (72), /* List pointer word. Points to DCW list. */ 2 100 2 scw bit (36), /* Status control word. Points to channel_table.status. */ 2 101 2 dcw bit (36); /* Data control word. Primarily scratch space for IOM. */ 2 102 2 103 /* Defined channel numbers. */ 2 104 2 105 dcl ( 2 106 system_fault_channel init (1), /* Stores system fault words using LPW and DCW. */ 2 107 connect_channel init (2), /* Starts other channels using LPW pointing to PCW. */ 2 108 special_status_channel init (6) /* Stores special status using LPW and DCW. */ 2 109 ) fixed bin (6) static options (constant); 2 110 2 111 /* End of include file ..... iom_data.incl.pl1 */ 265 266 3 1 /* Begin include file ...... io_special_status.incl.pl1 */ 3 2 /* Written February 1981 by Chris Jones (from iom_stat.incl.pl1) */ 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-01-06,Farley), approve(88-03-01,MCR7831), 3 7* audit(88-03-01,Parisek), install(88-03-08,MR12.2-1032): 3 8* Corrected channel size to 6 bits, was incorrectly set to 8. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 dcl io_special_status_ptr ptr; /* pointer to status */ 3 13 3 14 dcl 1 io_special_status based (io_special_status_ptr) aligned, 3 15 /* special status from PSIA */ 3 16 ( 3 17 2 t bit (1), /* entry present bit */ 3 18 2 pad bit (2), 3 19 2 channel bit (6), /* channel number */ 3 20 2 pad1 bit (3), 3 21 2 device bit (6), /* device address */ 3 22 2 pad2 bit (1), 3 23 2 byte2 bit (8), /* device dependent information */ 3 24 2 pad3 bit (1), 3 25 2 byte3 bit (8) 3 26 ) unal; /* device dependent information */ 3 27 3 28 /* End of include file io_special_status.incl.pl1 */ 267 268 4 1 4 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 4 3 4 4 dcl dcwp ptr, /* pointer to DCW */ 4 5 tdcwp ptr; /* pointer to TDCW */ 4 6 4 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 4 8 (2 address bit (18), /* address for data transfer */ 4 9 2 char_pos bit (3), /* character position */ 4 10 2 m64 bit (1), /* non-zero for mod 64 address */ 4 11 2 type bit (2), /* DCW type */ 4 12 2 tally bit (12)) unal; /* tally for data transfer */ 4 13 4 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 4 15 (2 address bit (18), /* address to transfer to */ 4 16 2 mbz1 bit (4), 4 17 2 type bit (2), /* should be "10"b for TDCW */ 4 18 2 mbz2 bit (9), 4 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 4 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 4 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 4 22 4 23 /* End of include file ...... iom_dcw.incl.pl1 */ 4 24 269 270 5 1 5 2 /* Begin include file ...... iom_lpw.incl.pl1 */ 5 3 /* modified 3/4/75 by Noel I. Morris */ 5 4 5 5 dcl lpwp ptr, /* pointer to LPW */ 5 6 lpwep ptr; /* pointer to LPW extension */ 5 7 5 8 dcl 1 lpw based (lpwp) aligned, /* List Pointer Word */ 5 9 (2 dcw_addr bit (18), /* address of DCW list */ 5 10 2 res bit (1), /* "1"b to restrict use of IDCW */ 5 11 2 iom_rel bit (1), /* IOM controlled copy of REL bit */ 5 12 2 ae bit (1), /* "1"b to use addr extension for DCW list service */ 5 13 2 nc bit (1), /* "1"b to supress LPW tally update */ 5 14 2 tal bit (1), /* "1"b to enable tally runout fault */ 5 15 2 rel bit (1), /* "1"b to set relative mode */ 5 16 2 tally bit (12)) unal; /* LPW tally */ 5 17 5 18 dcl 1 lpw_ext based (lpwep) aligned, /* List Pointer Word Extension */ 5 19 (2 base bit (9), /* relative addressing base */ 5 20 2 bound bit (9), /* relative addressing bound */ 5 21 2 idcwp bit (18)) unal; /* address of last IDCW */ 5 22 5 23 /* End of include file ...... iom_lpw.incl.pl1 */ 5 24 271 272 273 /* BEGIN MESSAGE DOCUMENTATION 274* 275* 276* Message: 277* iom_overhead: IOM TAG System fault status STATUS. 278* 279* S: $info 280* 281* T: $run 282* 283* M: An IOM system fault has occurred. 284* This indicates a problem in either hardware or system software. 285* 286* A: $notify 287* 288* 289* Message: 290* iom_overhead: Status queue overrun for IOM TAG channel CHANNEL. 291* 292* S: $info 293* 294* T: $run 295* 296* M: The IOM has failed to refresh the DCW for an overhead channel. 297* This indicates a hardware problem. 298* 299* A: $notify 300* 301* 302* END MESSAGE DOCUMENTATION */ 303 304 end iom_overhead; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0802.6 iom_overhead.pl1 >spec>install>1110>iom_overhead.pl1 263 1 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 265 2 04/11/85 1452.4 iom_data.incl.pl1 >ldd>include>iom_data.incl.pl1 267 3 03/10/88 2009.5 io_special_status.incl.pl1 >ldd>include>io_special_status.incl.pl1 269 4 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 271 5 06/03/75 0715.0 iom_lpw.incl.pl1 >ldd>include>iom_lpw.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Channel parameter fixed bin(6,0) dcl 228 in procedure "check_dcw" set ref 226 231 232 233* Channel parameter fixed bin(9,0) unsigned dcl 206 in procedure "report" ref 204 212 212 212 221 Code parameter fixed bin(35,0) dcl 25 set ref 58 73* 77 88* 91 100* Data_word parameter bit(36) dcl 23 in procedure "iom_overhead" ref 158 183 Data_word parameter bit(36) dcl 207 in procedure "report" set ref 204 217* 221* IOMS constant char(4) initial packed unaligned dcl 50 ref 170 170 233 233 Iom parameter fixed bin(35,0) dcl 21 ref 58 61 77 80 91 95 158 161 183 186 Level parameter fixed bin(3,0) dcl 22 set ref 158 183 217* 221* P parameter pointer dcl 142 set ref 140 146* absadr 000010 constant entry external dcl 27 ref 146 addr builtin function dcl 55 ref 62 63 64 64 69 69 81 82 84 84 84 84 96 97 162 163 165 168 168 187 188 190 193 193 231 232 248 256 address based bit(18) level 2 in structure "dcw" packed packed unaligned dcl 4-7 in procedure "iom_overhead" set ref 249* address 000136 automatic fixed bin(26,0) dcl 144 in procedure "abs_addr_18" set ref 146* 149 153 binary builtin function dcl 55 ref 153 172 172 194 194 bit builtin function dcl 55 ref 153 250 chan parameter fixed bin(6,0) dcl 243 ref 240 248 253 253 256 channel 0(09) 000104 automatic bit(9) level 2 in structure "iom_fault_status" packed packed unaligned dcl 41 in procedure "iom_overhead" set ref 172 172 172 channel 0(03) 000103 automatic bit(6) level 2 in structure "iom_special_status" packed packed unaligned dcl 40 in procedure "iom_overhead" set ref 194 194 channel_mailbox based structure level 1 dcl 2-98 in procedure "iom_overhead" channel_mailbox 200 based structure array level 3 in structure "iom_mailbox_seg" dcl 2-83 in procedure "iom_overhead" channo parameter fixed bin(6,0) dcl 112 set ref 109 119 125 133* chantab 60 based fixed bin(9,0) array level 3 packed packed unsigned unaligned dcl 2-17 ref 212 212 212 chx 000146 automatic fixed bin(17,0) dcl 208 set ref 210* 212* 215 215 217 217 dcw based structure level 1 dcl 4-7 in procedure "iom_overhead" set ref 236* 236 dcw 203 based bit(36) array level 4 in structure "iom_mailbox_seg" dcl 2-83 in procedure "iom_overhead" set ref 231 253* dcw_addr based bit(18) level 2 packed packed unaligned dcl 5-8 set ref 257* dcwp 000114 automatic pointer dcl 4-4 set ref 231* 233 236 248* 249 250 251 257* dimension builtin function dcl 55 ref 84 84 124 errcode 000100 automatic fixed bin(35,0) dcl 37 set ref 72* 73 119* 121 146* 147 150* error_table_$dev_offset_out_of_bounds 000024 external static fixed bin(35,0) dcl 52 ref 150 fault_chx 51 based fixed bin(35,0) array level 3 dcl 2-17 set ref 99* 132* flags 266 based structure array level 3 dcl 2-17 handler 262 based entry variable array level 3 dcl 2-17 ref 217 hbound builtin function dcl 55 ref 167 192 212 i 000101 automatic fixed bin(17,0) dcl 38 set ref 167* 168 168* 192* 193 193* in_use 266 based bit(1) array level 4 packed packed unaligned dcl 2-17 ref 215 index 267 based fixed bin(35,0) array level 3 dcl 2-17 set ref 217* intp parameter entry variable dcl 112 set ref 109 119* io_manager$assign 000026 constant entry external dcl 1-10 ref 119 io_manager$unassign 000030 constant entry external dcl 1-20 ref 98 99 io_manager_arg based structure level 1 dcl 1-50 io_special_status based structure level 1 dcl 3-14 iom 000102 automatic fixed bin(3,0) dcl 39 in procedure "iom_overhead" set ref 61* 64 64 69 69 80* 84* 84 84 84 84 95* 98 99 119 119 127 132 133* 161* 165 170 170 186* 190 212 221* 231 232 233 233 iom parameter fixed bin(3,0) dcl 243 in procedure "set_dcw_lpw" ref 240 248 253 253 256 iom_data based structure level 1 dcl 2-17 iom_data$ 000032 external static fixed bin(17,0) dcl 2-11 set ref 62 81 96 162 187 iom_data_ptr 000106 automatic pointer dcl 2-15 set ref 62* 81* 96* 98 99 127 132 162* 187* 212 212 212 215 217 217 iom_error$invalid_overhead 000012 constant entry external dcl 28 ref 221 iom_fault_status 000104 automatic structure level 1 dcl 41 set ref 168* 169 170 170 172 172 iom_mailbox based structure level 1 dcl 2-95 in procedure "iom_overhead" iom_mailbox 200 based structure array level 2 in structure "iom_mailbox_seg" dcl 2-83 in procedure "iom_overhead" iom_mailbox$ 000034 external static fixed bin(17,0) dcl 2-12 set ref 63 82 97 163 188 iom_mailbox_seg based structure level 1 dcl 2-83 iom_mailbox_seg_ptr 000110 automatic pointer dcl 2-82 set ref 63* 64 64 69 69 82* 84 84 84 84 97* 163* 165 188* 190 231 232 248 253 253 256 iom_overhead$special_status 000016 constant entry external dcl 32 ref 69 69 iom_overhead$system_fault 000014 constant entry external dcl 30 ref 64 64 iom_special_status 000103 automatic structure level 1 dcl 40 set ref 193* 194 194 lbound builtin function dcl 55 ref 167 192 212 ldac 000020 constant entry external dcl 34 ref 168 193 lpw based structure level 1 dcl 5-8 in procedure "iom_overhead" lpw 200 based bit(72) array level 4 in structure "iom_mailbox_seg" dcl 2-83 in procedure "iom_overhead" set ref 256 lpwp 000116 automatic pointer dcl 5-5 set ref 256* 257 258 nc 0(21) based bit(1) level 2 packed packed unaligned dcl 5-8 set ref 258* null builtin function dcl 55 ref 119 per_device 240 based structure array level 2 in structure "iom_data" dcl 2-17 in procedure "iom_overhead" per_device based structure level 1 dcl 2-59 in procedure "iom_overhead" per_iom based structure level 1 dcl 2-40 in procedure "iom_overhead" per_iom 40 based structure array level 2 in structure "iom_data" dcl 2-17 in procedure "iom_overhead" qp parameter pointer dcl 243 in procedure "set_dcw_lpw" set ref 240 249* qp parameter pointer dcl 112 in procedure "set_overhead_channel" set ref 109 124 133* rdcwp 000156 automatic pointer dcl 229 set ref 232* 233 236 scw 202 based bit(36) array level 4 dcl 2-83 set ref 232 248 253 special_chx 50 based fixed bin(35,0) array level 3 dcl 2-17 set ref 98* 127* special_status 120 based structure array level 2 dcl 2-83 set ref 69 69 190 special_status_channel 000000 constant fixed bin(6,0) initial dcl 2-105 set ref 69* 125 198* status based bit(36) array level 2 dcl 2-92 set ref 84 84 124 167 167 168 168 192 192 193 193 status_queue based structure level 1 dcl 2-92 status_queue_ptr 000112 automatic pointer dcl 2-91 set ref 165* 167 167 168 168 190* 192 192 193 193 string builtin function dcl 55 set ref 168* 169 170 170 172 172 193* 194 194 236* 236 substr builtin function dcl 55 ref 119 119 170 170 233 233 syserr 000022 constant entry external dcl 35 ref 170 233 system_fault 40 based structure array level 2 dcl 2-83 set ref 64 64 84 84 84 84 165 system_fault_channel constant fixed bin(6,0) initial dcl 2-105 set ref 64* 84* 177* t 000103 automatic bit(1) level 2 packed packed unaligned dcl 40 set ref 194 tally 0(24) based bit(12) level 2 in structure "dcw" packed packed unaligned dcl 4-7 in procedure "iom_overhead" set ref 233 233 250* tally 000126 automatic fixed bin(12,0) dcl 116 in procedure "set_overhead_channel" set ref 124* 128* 128 133* tempx 000127 automatic fixed bin(35,0) dcl 117 set ref 119* 127 132 tly parameter fixed bin(12,0) dcl 243 ref 240 250 type 0(22) based bit(2) level 2 packed packed unaligned dcl 4-7 set ref 251* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. connect_channel internal static fixed bin(6,0) initial dcl 2-105 io_manager$assign_add 000000 constant entry external dcl 1-15 io_manager$connect 000000 constant entry external dcl 1-26 io_manager$connect_abs 000000 constant entry external dcl 1-29 io_manager$connect_direct 000000 constant entry external dcl 1-32 io_manager$get_status 000000 constant entry external dcl 1-35 io_manager$ignore_interrupt 000000 constant entry external dcl 1-41 io_manager$mask 000000 constant entry external dcl 1-38 io_manager$unassign_delete 000000 constant entry external dcl 1-23 io_manager$workspace_tdcw 000000 constant entry external dcl 1-47 io_manager_arg_ptr automatic pointer dcl 1-49 io_special_status_ptr automatic pointer dcl 3-12 lpw_ext based structure level 1 dcl 5-18 lpwep automatic pointer dcl 5-5 n_devices automatic fixed bin(17,0) dcl 2-14 tdcw based structure level 1 dcl 4-14 tdcwp automatic pointer dcl 4-4 NAMES DECLARED BY EXPLICIT CONTEXT. INIT_RETURN 000136 constant label dcl 73 ref 121 147 151 abs_addr_18 000571 constant entry internal dcl 140 ref 249 257 check_dcw 000722 constant entry internal dcl 226 ref 177 198 init 000073 constant entry external dcl 58 init_without_assign 000144 constant entry external dcl 77 iom_overhead 000061 constant entry external dcl 13 release 000175 constant entry external dcl 91 report 000626 constant entry internal dcl 204 ref 172 194 set_dcw_lpw 001005 constant entry internal dcl 240 ref 84 133 set_overhead_channel 000457 constant entry internal dcl 109 ref 64 69 special_status 000374 constant entry external dcl 183 system_fault 000250 constant entry external dcl 158 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1360 1416 1162 1370 Length 1720 1162 36 266 175 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iom_overhead 244 external procedure is an external procedure. set_overhead_channel internal procedure shares stack frame of external procedure iom_overhead. abs_addr_18 internal procedure shares stack frame of external procedure iom_overhead. report internal procedure shares stack frame of external procedure iom_overhead. check_dcw internal procedure shares stack frame of external procedure iom_overhead. set_dcw_lpw internal procedure shares stack frame of external procedure iom_overhead. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME iom_overhead 000100 errcode iom_overhead 000101 i iom_overhead 000102 iom iom_overhead 000103 iom_special_status iom_overhead 000104 iom_fault_status iom_overhead 000106 iom_data_ptr iom_overhead 000110 iom_mailbox_seg_ptr iom_overhead 000112 status_queue_ptr iom_overhead 000114 dcwp iom_overhead 000116 lpwp iom_overhead 000126 tally set_overhead_channel 000127 tempx set_overhead_channel 000136 address abs_addr_18 000146 chx report 000156 rdcwp check_dcw THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr io_manager$assign io_manager$unassign iom_error$invalid_overhead iom_overhead$special_status iom_overhead$system_fault ldac syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$dev_offset_out_of_bounds iom_data$ iom_mailbox$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000060 58 000066 61 000100 62 000103 63 000105 64 000107 69 000121 72 000135 73 000136 75 000141 77 000142 80 000151 81 000154 82 000157 84 000161 88 000170 89 000172 91 000173 95 000202 96 000205 97 000210 98 000212 99 000225 100 000241 101 000243 158 000244 161 000255 162 000260 163 000263 165 000265 167 000270 168 000275 169 000313 170 000314 172 000353 175 000365 177 000367 179 000371 183 000372 186 000401 187 000404 188 000407 190 000411 192 000414 193 000421 194 000437 196 000452 198 000454 200 000456 109 000457 119 000461 121 000525 124 000527 125 000531 127 000535 128 000543 131 000545 132 000546 133 000554 135 000570 140 000571 146 000573 147 000606 149 000610 150 000613 151 000616 153 000617 204 000626 210 000630 212 000631 215 000652 217 000662 218 000677 221 000700 223 000721 226 000722 231 000724 232 000735 233 000740 236 001002 238 001004 240 001005 248 001007 249 001020 250 001034 251 001043 253 001047 256 001060 257 001062 258 001070 260 001072 ----------------------------------------------------------- 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