COMPILATION LISTING OF SEGMENT pc_abs 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 1026.4 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* *********************************************************** */ 8 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 9 /* use: pl1_macro pc_abs.pl1.pmac -target l68 */ 10 pc_abs: 11 procedure; 12 13 /* This procedure is responsible for adding and removing blocks of memory 14* and for abs-wiring memory for I/O segments. 15* 16* The original pc_abs was written by Roger R. Schell in September 1970. 17* Rewritten 6/3/74 by Bernard S. Greenberg for evict_page and page$pwait. 18* Abs-wire functions removed 6/3/74 by B. Greenberg for I/O Buffer manager. 19* Totally rewritten for new cme protocols, no remove list, and 75% code reduction, 03/12/75, BSG. 20* Modified to allow evict_page to delete, for automatic parity deletion, BSG, 05/11/78. 21* Modified to handle case when pages to be deleted are already gone, Chris Jones, 8/84 22* Modified 1984-10-26 BIM to pay attention to the first argument to 23* wire/unwire. 24* Modified 1984-12-07, Keith Loepere, to not avoid abs wiring in low 256K. 25**/ 26 27 28 /****^ HISTORY COMMENTS: 29* 1) change(86-10-07,Farley), approve(86-11-20,MECR0002), 30* audit(86-11-19,Fawcett), install(86-11-20,MR12.0-1222): 31* Added three checks to the unwire_abs entry. First verify that the Astep 32* parameter is non-null. Second verify that the page table word does really 33* define a wired/in-core page. Third verify that the CME is really abs wired. 34* Crash if any of these are incorrect. 35* 2) change(86-12-19,Farley), approve(86-12-19,MCR7587), 36* audit(86-12-19,Fawcett), install(87-01-05,MR12.0-1253): 37* Formal installation to close out above MECR0002. 38* END HISTORY COMMENTS */ 39 40 41 dcl Code fixed bin (35) parameter; 42 dcl Absaddr fixed bin (26) parameter; 43 dcl Fpage fixed bin (9) parameter; /* zero based */ 44 dcl Npages fixed bin (9) parameter; 45 dcl Fframe fixed bin (16) parameter; 46 dcl Nframes fixed bin (16) parameter; 47 dcl Modulus fixed bin (16) parameter; 48 dcl Astep pointer parameter; 49 50 dcl astep ptr; 51 dcl (ind, aind) fixed bin (35); 52 dcl (fframe, nframes, frame, modulus) 53 fixed bin (16); 54 dcl (fp, np, page) fixed bin (9); 55 dcl frames (0:255) fixed bin (16); 56 57 dcl oldmask fixed bin (71) aligned; 58 dcl sptp ptr; 59 60 dcl based_word fixed bin (35) aligned based; 61 62 dcl page$evict entry (ptr, fixed bin (35)); 63 dcl page$pwait entry (fixed bin (35)); 64 dcl page$wire_abs entry (ptr, fixed bin (35), ptr, fixed bin (9)); 65 dcl pmut$lock_ptl entry (fixed bin (71) aligned, ptr); 66 dcl pmut$unlock_ptl entry (fixed bin (71) aligned, ptr); 67 dcl syserr entry options (variable); 68 69 dcl ALL_ONES fixed bin (35) static options (constant) init (-1); 70 dcl CORE bit (4) static options (constant) init ("8"b4); 71 72 dcl error_table_$out_of_main_memory 73 fixed bin (35) external static; 74 dcl sst$abs_wired_count fixed bin (35) external; 75 dcl sst$astsize fixed bin (17) external; 76 dcl sst$cmp ptr external; 77 dcl sst$first_core_block fixed bin (16) external; 78 dcl sst$last_core_block fixed bin (16) external; 79 dcl sst$nused fixed bin (35) external; 80 dcl sst$usedp bit (18) aligned external; 81 dcl sst$wusedp bit (18) aligned external; 82 dcl sst$wired fixed bin (35) external; 83 dcl sys_info$page_size fixed bin (17) external static; 84 85 dcl (addr, addrel, binary, max, mod, null, ptr, rel, wordno) 86 builtin; 87 88 remove_core: 89 entry (Fframe, Nframes, Code); 90 91 Code = 0; 92 fframe = Fframe; 93 nframes = Nframes; 94 95 call lock; /* wire and lock */ 96 97 do frame = 1 to nframes; /* make sure it is not in use */ 98 if sst$cmp -> cma (fframe + frame - 1).abs_w then do; 99 call unlock; 100 Code = 2; /* return error code */ 101 return; 102 end; 103 end; 104 105 call remove_frames; /* get rid of them */ 106 107 call unlock; 108 return; 109 110 remove_core_mod: 111 entry (Nframes, Modulus, Absaddr, Code); 112 113 nframes = Nframes; 114 modulus = Modulus; 115 Absaddr = -1; 116 Code = 0; 117 118 call lock; 119 call find_frames; 120 call remove_frames; 121 call unlock; 122 123 Absaddr = fframe * sys_info$page_size; 124 return; 125 126 wire_abs_contig: 127 entry (Astep, Fpage, Npages, Code); 128 129 astep = Astep; /* Copy args before locking page table lock */ 130 fp = Fpage; 131 np, nframes = Npages; 132 Code = 0; 133 134 call lock; 135 136 modulus = 1; 137 retry_contig: 138 call find_frames; 139 140 if fframe >= 256 then 141 goto noalloc; /* must keep I/O buffers low */ 142 /* see iom_connect.alm for details. */ 143 144 do frame = 0 to nframes - 1; 145 frames (frame) = fframe + frame; 146 end; 147 148 if ^abs_wire_frames () then 149 goto retry_contig; 150 151 call unlock; 152 153 return; 154 155 wire_abs: 156 entry (Astep, Fpage, Npages, Code); 157 158 astep = Astep; 159 fp = Fpage; 160 np, nframes = Npages; 161 Code = 0; 162 163 call lock; 164 165 retry: 166 page = 0; 167 do fframe = max (sst$first_core_block, 256) to sst$last_core_block while (page < np); 168 /* save low 256K for wire_abs_contig */ 169 cmep = addr (sst$cmp -> cma (fframe)); 170 if (cmep -> based_word ^= ALL_ONES) & ^cme.abs_w & ^cme.removing & cme.abs_usable 171 & ((cme.fp ^= ""b) | (cme.ptwp ^= ""b)) then do; 172 frames (page) = fframe; 173 page = page + 1; 174 end; 175 end; 176 if page < np then do; 177 noalloc: 178 call unlock; 179 Code = error_table_$out_of_main_memory; 180 return; 181 end; 182 183 if ^abs_wire_frames () then 184 goto retry; 185 186 call unlock; 187 return; 188 189 unwire_abs: 190 entry (Astep, Fpage, Npages); 191 192 astep = Astep; 193 fp = Fpage; 194 np = Npages; 195 196 if astep = null () then do; 197 call syserr (CRASH, "pc_abs$unwire_abs: Called with NULL astep."); 198 return; 199 end; 200 201 do page = fp to fp + np - 1; /* unwire the pages */ 202 ptp = addrel (astep, sst$astsize + page); 203 if (ptw.add_type = CORE) & ptw.wired then do;/* valid PTW */ 204 frame = core_ptw.frame; /* find the core frame */ 205 206 cmep = addr (sst$cmp -> cma (frame)); 207 if ^cme.abs_w 208 then call syserr (CRASH, "pc_abs$unwire_abs: Attempt to unwire inconsistent CME at ^p.", cmep); 209 210 /* reset wired & abs_w here */ 211 212 ptw.phm = "1"b; /* in case the IOM modified it */ 213 ptw.wired = "0"b; /* not wired any more */ 214 215 cme.abs_w = "0"b; 216 217 sst$wired = sst$wired - 1; 218 sst$abs_wired_count = sst$abs_wired_count - 1; 219 end; 220 else call syserr (CRASH, "pc_abs$unwire_abs: Attempt to unwire inconsistent PTW at ^p.", ptp); 221 end; 222 223 return; 224 225 find_frames: 226 procedure; 227 228 dcl j fixed bin (16); 229 230 do fframe = sst$first_core_block + mod (-sst$first_core_block, modulus) by modulus to sst$last_core_block; 231 /* find a possible first page */ 232 j = 0; 233 if mod (fframe + nframes - 1, 256) < (nframes - 1) then 234 goto will_not_do; /* and we won't cross 256K boundary */ 235 do j = 0 to nframes - 1; /* check each page */ 236 cmep = addr (sst$cmp -> cma (fframe + j)); 237 /* get ptr to cme */ 238 if (cmep -> based_word = ALL_ONES) | cme.abs_w | cme.removing | (^cme.abs_usable) 239 | ((cme.fp = ""b) & (cme.ptwp = ""b)) then 240 go to will_not_do; /* OS are just fine, as long as... */ 241 end; 242 243 return; 244 245 will_not_do: 246 fframe = fframe + j - mod (j, modulus); 247 end; 248 249 goto noalloc; 250 251 end find_frames; 252 253 remove_frames: 254 procedure; 255 256 do frame = 1 to nframes; /* mark all frames */ 257 sst$cmp -> cma (fframe + frame - 1).removing = "1"b; 258 end; 259 260 ind = -1; /* do at least one pass */ 261 do while (ind ^= 0); /* loop until it's done */ 262 ind = 0; 263 do frame = 1 to nframes; /* for each frame to be evicted */ 264 cmep = addr (sst$cmp -> cma (fframe + frame - 1)); 265 /* find CME */ 266 if cmep -> based_word ^= ALL_ONES then do; 267 /* it has not yet been deleted */ 268 call page$evict (cmep, aind); /* start it out */ 269 if (cmep -> based_word ^= ALL_ONES) & (aind = 0) then do; 270 ptr (cmep, cme.fp) -> cme.bp = cme.bp; 271 /* unthread it */ 272 ptr (cmep, cme.bp) -> cme.fp = cme.fp; 273 if sst$usedp = rel (cmep) then 274 sst$usedp = cme.fp; 275 if sst$wusedp = rel (cmep) then 276 sst$wusedp = cme.fp; 277 cmep -> based_word = ALL_ONES;/* mark it gone */ 278 cme.abs_usable, cme.removing = "0"b; 279 sst$nused = sst$nused - 1; 280 end; 281 else if ind = 0 then 282 ind = aind; /* multiplex waits */ 283 end; 284 end; 285 if ind ^= 0 then 286 call page$pwait (ind); 287 end; 288 289 if (fframe + nframes) > sst$last_core_block then 290 sst$last_core_block = fframe - 1; 291 292 return; 293 294 end remove_frames; 295 296 abs_wire_frames: 297 procedure returns (bit (1) aligned); 298 299 /**** In this procedure, "page" is the index (from zero) 300* into the array of abs_usuable pages found in the core map, 301* and fp + page is the index into the segment's page table. */ 302 303 do frame = 1 to nframes; /* mark them used */ 304 sst$cmp -> cma (frames (frame - 1)).abs_w = "1"b; 305 end; 306 307 ind = -1; 308 do while (ind ^= 0); 309 ind, aind = 0; 310 do page = 0 to np - 1; 311 cmep = addr (sst$cmp -> cma (frames (page))); 312 if (wordno (astep) + sst$astsize + fp + page) ^= binary (cme.ptwp, 18) then 313 call page$evict (cmep, aind); 314 315 if cmep -> based_word = ALL_ONES then do; 316 call syserr (CRASH, "pc_abs: Parity error in I/O buffer."); 317 return ("0"b); 318 end; 319 320 if aind = 0 then 321 call page$wire_abs (cmep, aind, astep, fp + page); 322 323 if ind = 0 then 324 ind = aind; 325 end; 326 327 if ind ^= 0 then 328 call page$pwait (ind); 329 end; 330 331 sst$abs_wired_count = sst$abs_wired_count + nframes; 332 return ("1"b); 333 334 end abs_wire_frames; 335 336 lock: 337 procedure; 338 339 call pmut$lock_ptl (oldmask, sptp); /* lock the ptl */ 340 return; 341 342 end lock; 343 344 345 unlock: 346 procedure; 347 348 call pmut$unlock_ptl (oldmask, sptp); /* almost done */ 349 return; 350 351 end unlock; 352 1 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 1 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 1 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 1 4 1 5 /* This include file has an ALM version. Keep 'em in sync! */ 1 6 1 7 dcl ( 1 8 1 9 /* The following constants define the message action codes. This indicates 1 10*how a message is to be handled. */ 1 11 1 12 SYSERR_CRASH_SYSTEM init (1), 1 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 1 14 1 15 SYSERR_TERMINATE_PROCESS init (2), 1 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 1 17 1 18 SYSERR_PRINT_WITH_ALARM init (3), 1 19 BEEP init (3), /* Beep and print the message on the console. */ 1 20 1 21 SYSERR_PRINT_ON_CONSOLE init (0), 1 22 ANNOUNCE init (0), /* Just print the message on the console. */ 1 23 1 24 SYSERR_LOG_OR_PRINT init (4), 1 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 1 26 1 27 SYSERR_LOG_OR_DISCARD init (5), 1 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 1 29 1 30 1 31 /* The following constants are added to the normal severities to indicate 1 32*different sorting classes of messages. */ 1 33 1 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 1 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 1 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 1 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 1 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 1 39 ) fixed bin internal static options (constant); 1 40 1 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 353 354 2 1 /* BEGIN INCLUDE FILE cmp.incl.pl1 --- October 1982 */ 2 2 /* Note: This include file has an ALM counterpart NOT made with cif (for historical reasons). Keep it up to date */ 2 3 2 4 dcl cmep ptr; /* pointer to core map entry */ 2 5 2 6 dcl 1 cme based (cmep) aligned, /* core map entry */ 2 7 2 fp bit (18) unaligned, /* forward pointer to next entry */ 2 8 2 bp bit (18) unaligned, /* backward pointer to previous entry */ 2 9 2 10 2 devadd bit (22) unaligned, /* device address of page in the core block */ 2 11 2 pad5 bit (1) unaligned, 2 12 2 synch_held bit (1) unaligned, /* Page of synchronized seg held in memory */ 2 13 2 io bit (1) unaligned, /* input/output indicator 1=output, 0=input */ 2 14 2 pad2 bit (1) unaligned, 2 15 2 er bit (1) unaligned, /* indicates error in previous IO activity */ 2 16 2 removing bit (1) unaligned, /* core is being removed by reconfiguration */ 2 17 2 abs_w bit (1) unaligned, /* absolute address must not be changed for page */ 2 18 2 abs_usable bit (1) unaligned, /* page may be assigned with fixed absolute address */ 2 19 2 notify_requested bit (1) unaligned, /* notify requested on I/O completion */ 2 20 2 pad3 bit (1) unaligned, 2 21 2 phm_hedge bit (1) unaligned, /* on => pc$flush_core ought write. */ 2 22 2 contr bit (3) unaligned, /* controller in which core block is located */ 2 23 2 24 2 ptwp bit (18) unaligned, /* pointer to page table word for the page */ 2 25 2 astep bit (18) unaligned, /* relative AST entry pointer of page */ 2 26 2 pin_counter fixed bin (17) unaligned, /* number of times to skip eviction */ 2 27 2 synch_page_entryp bit (18) unaligned; /* relp to synch page entry */ 2 28 2 29 2 30 dcl 1 cma (0: 1) based aligned like cme; /* Core map array */ 2 31 2 32 dcl 1 mcme based (cmep) aligned, /* core map entry for extracting DID */ 2 33 2 pad bit (36) unaligned, 2 34 2 record_no bit (18) unaligned, /* record number of device */ 2 35 2 add_type bit (4) unaligned, /* see add_type.incl.pl1 */ 2 36 2 flags bit (14) unal, 2 37 2 pad1 bit (18) unal; 2 38 2 39 2 40 /* END INCLUDE FILE cmp.incl.pl1 */ 355 356 /* BEGIN INCLUDE FILE ... ptw.incl.pl1 ... MACRO ... For ADP conversion, 02/26/81 */ 357 /* Added core_ptwa, Benson Margulies, 84-01 */ 358 359 dcl ptp pointer; 360 361 362 363 /* BEGIN INCLUDE FILE ... ptw.l68.incl.pl1 ... 02/26/81, for ADP conversion */ 3 2 /* Note: This include file has an ALM counterpart made with cif. Keep it up to date */ 3 3 3 4 dcl 1 l68_core_ptw aligned based (ptp), /* In-core page descriptor */ 3 5 2 frame fixed bin (14) unsigned unaligned, /* Core frame number */ 3 6 2 pad1 bit (4) unaligned, 3 7 2 flags unaligned like l68_ptw_flags; 3 8 3 9 dcl 1 l68_ptw aligned based (ptp), /* General declaration for out-of-core PTW */ 3 10 2 add bit (18) unaligned, 3 11 2 flags like l68_ptw_flags unaligned; 3 12 3 13 dcl 1 l68_special_ptw aligned based (ptp) like l68_ptw; /* Page is somewhere peculiar -- add_type = "01"b */ 3 14 dcl 1 l68_real_disk_ptw aligned based (ptp) like l68_ptw; /* PTW for page actually on disk -- add_type = "10"b */ 3 15 dcl 1 l68_null_disk_ptw aligned based (ptp) like l68_ptw; /* PTW for page not yet on disk -- add_type = "11"b */ 3 16 3 17 dcl 1 l68_ptw_flags unaligned based, /* Various software/hardware flags */ 3 18 (2 add_type bit (4), /* 0000=null, 1000=core, 0100=disk, 0010=pd, 0001=swap */ 3 19 2 first bit (1), /* the page has not yet been written out */ 3 20 2 er bit (1), /* error on last page I/O (also used by post-purge as temp) */ 3 21 3 22 2 pad1 bit (1), 3 23 2 unusable1 bit (1), /* can't be used because hardware resets this bit */ 3 24 2 phu bit (1), /* page has been used bit */ 3 25 3 26 2 phm1 bit (1), /* Cumulative OR of hardware phm's */ 3 27 2 nypd bit (1), /* must be moved to paging device */ 3 28 2 phm bit (1), /* page has been modified bit */ 3 29 3 30 2 phu1 bit (1), /* page has been used in the quantum */ 3 31 2 wired bit (1), /* page is to remain in core */ 3 32 2 os bit (1), /* page is out-of-service (I/O in progress) */ 3 33 2 valid bit (1), /* directed fault if this is 0 (page not in core) */ 3 34 2 df_no bit (2)) unaligned; /* directed fault number for page faults */ 3 35 3 36 /* END INCLUDE FILE ... ptw.l68.incl.pl1 */ 363 364 365 dcl 1 ptw aligned based (ptp) like l68_ptw; 366 dcl 1 ptw_flags unaligned like l68_ptw_flags based; 367 368 dcl 1 core_ptw aligned based (ptp) like l68_core_ptw; 369 dcl 1 special_ptw aligned based (ptp) like l68_special_ptw; 370 dcl 1 real_disk_ptw aligned based (ptp) like l68_real_disk_ptw; 371 dcl 1 null_disk_ptw aligned based (ptp) like l68_null_disk_ptw; 372 373 374 375 /* Arrays and overlays for various purposes */ 376 377 dcl 1 ptwa (0:255) based (ptp) aligned like ptw; /* page table */ 378 dcl 1 core_ptwa (0:255) based (ptp) aligned like core_ptw; 379 dcl ptwa_bits (0:255) based (ptp) bit (36) aligned; /* page table array as raw bits */ 380 381 dcl 1 mptw based (ptp) aligned, /* page table word while page is not in core */ 382 2 devadd bit (22) unaligned, /* device address where page resides */ 383 2 pad bit (14) unaligned; 384 385 dcl 1 mptwa (0 : 1) based (ptp) aligned, /* page table while pages are not in core */ 386 2 devadd bit (22) unaligned, /* device address where page resides */ 387 2 pad bit (14) unaligned; 388 389 dcl 1 atptw based (ptp) aligned, /* PL/I has problems on overlay-def based */ 390 2 add bit (18) unal, 391 2 (core, disk, pd, reserved) bit (1) unal, /* address types */ 392 2 pad bit (14) unal; 393 394 dcl 1 atptwa (0:255) based (ptp) aligned like atptw; 395 396 /* END INCLUDE FILE ... ptw.incl.pl1 */ 397 398 399 /* BEGIN MESSAGE DOCUMENTATION 400* 401* Message: 402* pc_abs: Parity error in I/O buffer. 403* 404* S: $crash 405* 406* T: $run 407* 408* M: $err 409* 410* A: $recover 411* 412* Message: 413* pc_abs$unwire_abs: Called with NULL astep. 414* 415* S: $crash 416* 417* T: $run 418* 419* M: $err 420* 421* A: $inform 422* $recover 423* 424* Message: 425* pc_abs$unwire_abs: Attempt to unwire inconsistent CME at CMEP. 426* 427* S: $crash 428* 429* T: $run 430* 431* M: The core map entry for the page being abs unwired did not 432* have the abs_w flag on, which indicates that it was properly abs wired. 433* $err 434* 435* A: $inform 436* $recover 437* 438* Message: 439* pc_abs$unwire_abs: Attempt to unwire inconsistent PTW at PTP. 440* 441* S: $crash 442* 443* T: $run 444* 445* M: A page at PTP, within the range of pages being unwired for, 446* was found to either not be wired or no longer in memory. 447* $err 448* 449* A: $inform 450* $recover 451* 452* END MESSAGE DOCUMENTATION */ 453 454 end pc_abs; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 1026.4 pc_abs.pl1 >spec>install>1111>pc_abs.pl1 353 1 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 355 2 11/23/82 0953.7 cmp.incl.pl1 >ldd>include>cmp.incl.pl1 363 3 03/27/82 0430.2 ptw.l68.incl.pl1 >ldd>include>ptw.l68.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. ALL_ONES 001370 constant fixed bin(35,0) initial dcl 69 ref 170 238 266 269 277 315 Absaddr parameter fixed bin(26,0) dcl 42 set ref 110 115* 123* Astep parameter pointer dcl 48 ref 126 129 155 158 189 192 CORE constant bit(4) initial packed unaligned dcl 70 ref 203 CRASH 000006 constant fixed bin(17,0) initial dcl 1-7 set ref 197* 207* 220* 316* Code parameter fixed bin(35,0) dcl 41 set ref 88 91* 100* 110 116* 126 132* 155 161* 179* Fframe parameter fixed bin(16,0) dcl 45 ref 88 92 Fpage parameter fixed bin(9,0) dcl 43 ref 126 130 155 159 189 193 Modulus parameter fixed bin(16,0) dcl 47 ref 110 114 Nframes parameter fixed bin(16,0) dcl 46 ref 88 93 110 113 Npages parameter fixed bin(9,0) dcl 44 ref 126 131 155 160 189 194 abs_usable 1(29) based bit(1) level 2 packed packed unaligned dcl 2-6 set ref 170 238 278* abs_w 1(28) based bit(1) array level 2 in structure "cma" packed packed unaligned dcl 2-30 in procedure "pc_abs" set ref 98 304* abs_w 1(28) based bit(1) level 2 in structure "cme" packed packed unaligned dcl 2-6 in procedure "pc_abs" set ref 170 207 215* 238 add_type 0(18) based bit(4) level 3 packed packed unaligned dcl 365 ref 203 addr builtin function dcl 85 ref 169 206 236 264 311 addrel builtin function dcl 85 ref 202 aind 000103 automatic fixed bin(35,0) dcl 51 set ref 268* 269 281 309* 312* 320 320* 323 astep 000100 automatic pointer dcl 50 set ref 129* 158* 192* 196 202 312 320* atptw based structure level 1 dcl 389 based_word based fixed bin(35,0) dcl 60 set ref 170 238 266 269 277* 315 binary builtin function dcl 85 ref 312 bp 0(18) based bit(18) level 2 packed packed unaligned dcl 2-6 set ref 270* 270 272 cma based structure array level 1 dcl 2-30 set ref 169 206 236 264 311 cme based structure level 1 dcl 2-6 cmep 000520 automatic pointer dcl 2-4 set ref 169* 170 170 170 170 170 170 206* 207 207* 215 236* 238 238 238 238 238 238 264* 266 268* 269 270 270 270 272 272 272 273 273 275 275 277 278 278 311* 312 312* 315 320* core_ptw based structure level 1 dcl 368 error_table_$out_of_main_memory 000024 external static fixed bin(35,0) dcl 72 ref 179 fframe 000104 automatic fixed bin(16,0) dcl 52 set ref 92* 98 123 140 145 167* 169 172* 230* 233 236 245* 245* 257 264 289 289 flags 0(18) based structure level 2 packed packed unaligned dcl 365 fp 000110 automatic fixed bin(9,0) dcl 54 in procedure "pc_abs" set ref 130* 159* 193* 201 201 312 320 fp based bit(18) level 2 in structure "cme" packed packed unaligned dcl 2-6 in procedure "pc_abs" set ref 170 238 270 272* 272 273 275 frame based fixed bin(14,0) level 2 in structure "core_ptw" packed packed unsigned unaligned dcl 368 in procedure "pc_abs" ref 204 frame 000106 automatic fixed bin(16,0) dcl 52 in procedure "pc_abs" set ref 97* 98* 144* 145 145* 204* 206 256* 257* 263* 264* 303* 304* frames 000113 automatic fixed bin(16,0) array dcl 55 set ref 145* 172* 304 311 ind 000102 automatic fixed bin(35,0) dcl 51 set ref 260* 261 262* 281 281* 285 285* 307* 308 309* 323 323* 327 327* j 000542 automatic fixed bin(16,0) dcl 228 set ref 232* 235* 236* 245 245 l68_core_ptw based structure level 1 dcl 3-4 l68_null_disk_ptw based structure level 1 dcl 3-15 l68_ptw based structure level 1 dcl 3-9 l68_ptw_flags based structure level 1 packed packed unaligned dcl 3-17 l68_real_disk_ptw based structure level 1 dcl 3-14 l68_special_ptw based structure level 1 dcl 3-13 max builtin function dcl 85 ref 167 mod builtin function dcl 85 ref 230 233 245 modulus 000107 automatic fixed bin(16,0) dcl 52 set ref 114* 136* 230 230 245 nframes 000105 automatic fixed bin(16,0) dcl 52 set ref 93* 97 113* 131* 144 160* 233 233 235 256 263 289 303 331 np 000111 automatic fixed bin(9,0) dcl 54 set ref 131* 160* 167 176 194* 201 310 null builtin function dcl 85 ref 196 oldmask 000514 automatic fixed bin(71,0) dcl 57 set ref 339* 348* page 000112 automatic fixed bin(9,0) dcl 54 set ref 165* 167 172 173* 173 176 201* 202* 310* 311 312 320* page$evict 000010 constant entry external dcl 62 ref 268 312 page$pwait 000012 constant entry external dcl 63 ref 285 327 page$wire_abs 000014 constant entry external dcl 64 ref 320 phm 0(29) based bit(1) level 3 packed packed unaligned dcl 365 set ref 212* pmut$lock_ptl 000016 constant entry external dcl 65 ref 339 pmut$unlock_ptl 000020 constant entry external dcl 66 ref 348 ptp 000522 automatic pointer dcl 359 set ref 202* 203 203 204 212 213 220* ptr builtin function dcl 85 ref 270 272 ptw based structure level 1 dcl 365 ptwp 2 based bit(18) level 2 packed packed unaligned dcl 2-6 ref 170 238 312 rel builtin function dcl 85 ref 273 275 removing 1(27) based bit(1) level 2 in structure "cme" packed packed unaligned dcl 2-6 in procedure "pc_abs" set ref 170 238 278* removing 1(27) based bit(1) array level 2 in structure "cma" packed packed unaligned dcl 2-30 in procedure "pc_abs" set ref 257* sptp 000516 automatic pointer dcl 58 set ref 339* 348* sst$abs_wired_count 000026 external static fixed bin(35,0) dcl 74 set ref 218* 218 331* 331 sst$astsize 000030 external static fixed bin(17,0) dcl 75 ref 202 312 sst$cmp 000032 external static pointer dcl 76 ref 98 169 206 236 257 264 304 311 sst$first_core_block 000034 external static fixed bin(16,0) dcl 77 ref 167 230 230 sst$last_core_block 000036 external static fixed bin(16,0) dcl 78 set ref 167 230 289 289* sst$nused 000040 external static fixed bin(35,0) dcl 79 set ref 279* 279 sst$usedp 000042 external static bit(18) dcl 80 set ref 273 273* sst$wired 000046 external static fixed bin(35,0) dcl 82 set ref 217* 217 sst$wusedp 000044 external static bit(18) dcl 81 set ref 275 275* sys_info$page_size 000050 external static fixed bin(17,0) dcl 83 ref 123 syserr 000022 constant entry external dcl 67 ref 197 207 220 316 wired 0(31) based bit(1) level 3 packed packed unaligned dcl 365 set ref 203 213* wordno builtin function dcl 85 ref 312 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANNOUNCE internal static fixed bin(17,0) initial dcl 1-7 BEEP internal static fixed bin(17,0) initial dcl 1-7 JUST_LOG internal static fixed bin(17,0) initial dcl 1-7 LOG internal static fixed bin(17,0) initial dcl 1-7 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 1-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 1-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 1-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 1-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 1-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 1-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 1-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 1-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 1-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 1-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 1-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 1-7 atptwa based structure array level 1 dcl 394 core_ptwa based structure array level 1 dcl 378 mcme based structure level 1 dcl 2-32 mptw based structure level 1 dcl 381 mptwa based structure array level 1 dcl 385 null_disk_ptw based structure level 1 dcl 371 ptw_flags based structure level 1 packed packed unaligned dcl 366 ptwa based structure array level 1 dcl 377 ptwa_bits based bit(36) array dcl 379 real_disk_ptw based structure level 1 dcl 370 special_ptw based structure level 1 dcl 369 NAMES DECLARED BY EXPLICIT CONTEXT. abs_wire_frames 001141 constant entry internal dcl 296 ref 148 183 find_frames 000634 constant entry internal dcl 225 ref 119 137 lock 001332 constant entry internal dcl 336 ref 95 118 134 163 noalloc 000414 constant label dcl 177 ref 140 249 pc_abs 000101 constant entry external dcl 10 remove_core 000113 constant entry external dcl 88 remove_core_mod 000173 constant entry external dcl 110 remove_frames 000751 constant entry internal dcl 253 ref 105 120 retry 000336 constant label dcl 165 ref 183 retry_contig 000261 constant label dcl 137 set ref 148 unlock 001345 constant entry internal dcl 345 ref 99 107 121 151 177 186 unwire_abs 000434 constant entry external dcl 189 will_not_do 000735 constant label dcl 245 ref 233 238 wire_abs 000313 constant entry external dcl 155 wire_abs_contig 000234 constant entry external dcl 126 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1630 1702 1372 1640 Length 2164 1372 52 245 236 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pc_abs 488 external procedure is an external procedure. find_frames internal procedure shares stack frame of external procedure pc_abs. remove_frames internal procedure shares stack frame of external procedure pc_abs. abs_wire_frames internal procedure shares stack frame of external procedure pc_abs. lock internal procedure shares stack frame of external procedure pc_abs. unlock internal procedure shares stack frame of external procedure pc_abs. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pc_abs 000100 astep pc_abs 000102 ind pc_abs 000103 aind pc_abs 000104 fframe pc_abs 000105 nframes pc_abs 000106 frame pc_abs 000107 modulus pc_abs 000110 fp pc_abs 000111 np pc_abs 000112 page pc_abs 000113 frames pc_abs 000514 oldmask pc_abs 000516 sptp pc_abs 000520 cmep pc_abs 000522 ptp pc_abs 000542 j find_frames THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mdfx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. page$evict page$pwait page$wire_abs pmut$lock_ptl pmut$unlock_ptl syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$out_of_main_memory sst$abs_wired_count sst$astsize sst$cmp sst$first_core_block sst$last_core_block sst$nused sst$usedp sst$wired sst$wusedp sys_info$page_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000100 88 000106 91 000125 92 000126 93 000131 95 000133 97 000134 98 000143 99 000155 100 000156 101 000160 103 000161 105 000163 107 000164 108 000165 110 000166 113 000205 114 000207 115 000212 116 000214 118 000215 119 000216 120 000217 121 000220 123 000221 124 000226 126 000227 129 000244 130 000250 131 000252 132 000255 134 000256 136 000257 137 000261 140 000262 144 000265 145 000275 146 000300 148 000302 151 000307 153 000310 155 000311 158 000323 159 000327 160 000331 161 000334 163 000335 165 000336 167 000337 169 000356 170 000364 172 000403 173 000406 175 000407 176 000411 177 000414 179 000415 180 000420 183 000421 186 000426 187 000427 189 000430 192 000441 193 000445 194 000447 196 000451 197 000455 198 000475 201 000476 202 000507 203 000514 204 000524 206 000527 207 000533 212 000561 213 000563 215 000565 217 000570 218 000577 219 000605 220 000606 221 000631 223 000633 225 000634 230 000635 232 000662 233 000663 235 000675 236 000705 238 000713 241 000732 243 000734 245 000735 247 000745 249 000750 253 000751 256 000752 257 000761 258 000771 260 000773 261 000775 262 001000 263 001001 264 001011 266 001020 268 001023 269 001033 270 001040 272 001046 273 001054 275 001064 277 001072 278 001074 279 001101 280 001107 281 001110 284 001114 285 001116 287 001127 289 001130 292 001140 296 001141 303 001143 304 001153 305 001162 307 001164 308 001166 309 001170 310 001172 311 001201 312 001207 315 001231 316 001234 317 001254 320 001257 323 001301 325 001305 327 001307 329 001320 331 001321 332 001326 336 001332 339 001333 340 001344 345 001345 348 001346 349 001357 ----------------------------------------------------------- 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