COMPILATION LISTING OF SEGMENT vtoce_stock_man 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 0952.8 mst Sat Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 vtoce_stock_man$get_free_vtoce: 9 proc (Pvtep, Vtocx); 10 11 /* Procedure to manage the VTOCE stock. All actions are done under the 12* protection of the per-volume VTOC Map lock. 13* 14* Entries: 15* 16* get_free_vtoce - finds a free VTOCE, either from the stock or the 17* VTOC Map. Fills the stock if appropriate. 18* 19* return_free_vtoce - returns a newly-freed VTOCE to the stock or the 20* VTOC Map. Drains the stock a bit if appropriate. 21* 22* return_if_not_free - returns a VTOCE to the VTOC map unless it is 23* already free. Used by the volume scavenger. 24* 25* drain_stock_range - drains a range of addresses from the stock. 26* For rebuild_disk. 27* 28* drain_stock - shuts down the stock, updating all entries into 29* the VTOC map. Called during volume demounting. 30* 31* check_in_use - checks whether a given VTOCE is in use. Used 32* to defend against a race with the scavenger. 33* 34* force_unlock - unlocks the VTOC Map lock. Called when the lock 35* is hold by a process which crawls out. 36* 37* Note that we can be cavalier about inconsistencies in the VTOC Map, 38* since the VTOCE contains sufficient information (unique-id, specifically) 39* to prevent misuse. 40* 41* Written March 1982 by J. Bongiovanni 42* Modified July 1982 by J. Bongiovanni for return_if_not_free 43* Modified November 1982 by J. Bongiovanni for check_in_use 44**/ 45 46 /* Parameter */ 47 48 dcl Low_vtocx fixed bin; /* Low vtocx for range */ 49 dcl High_vtocx fixed bin; /* High vtocx for range */ 50 dcl Pvtep ptr; /* Pointer to PVTE */ 51 dcl Vtocx fixed bin; /* VTOCE index of interest, or -1 */ 52 dcl Code fixed bin (35); /* Error Code */ 53 54 /* Automatic */ 55 56 dcl bitx fixed bin; 57 dcl code fixed bin (35); 58 dcl last_index fixed bin; 59 dcl deposited bit (1) aligned; 60 dcl done_map bit (1); 61 dcl dummy bit (1); 62 dcl low_vtocx fixed bin; 63 dcl high_vtocx fixed bin; 64 dcl p99 pic "99"; 65 dcl stockx fixed bin; 66 dcl this_vtocx fixed bin; 67 dcl vtocx fixed bin; 68 dcl wordx fixed bin; 69 70 /* External */ 71 72 dcl error_table_$invalid_vtocx fixed bin (35) external; 73 dcl error_table_$vtoce_free fixed bin (35) external; 74 dcl pds$processid bit (36) aligned external; 75 dcl pvt$n_vtoc_map_locks fixed bin (35) external; 76 dcl pvt$vtoc_map_lock_wait_constant bit (36) aligned external; 77 dcl volmap_abs_seg$ external; 78 79 /* Entry */ 80 81 dcl pxss$addevent entry (bit (36) aligned); 82 dcl pxss$delevent entry (bit (36) aligned); 83 dcl pxss$notify entry (bit (36) aligned); 84 dcl pxss$wait entry; 85 dcl pmut$swap_sdw entry (ptr, ptr); 86 dcl syserr entry options (variable); 87 88 /* Builtin */ 89 90 dcl addr builtin; 91 dcl convert builtin; 92 dcl divide builtin; 93 dcl index builtin; 94 dcl mod builtin; 95 dcl null builtin; 96 dcl ptr builtin; 97 dcl rel builtin; 98 dcl stac builtin; 99 dcl stacq builtin; 100 dcl substr builtin; 101 102 /* Condition */ 103 104 dcl any_other condition; 105 106 /* get_free_vtoce - 107* 108* Attempt to withdraw from stock. If this fails, attempt to withdraw 109* from the VTOC Map (replenishing the stock to target at the same 110* time). A vtocx of -1 is returned if no free VTOCEs exist. 111**/ 112 113 pvtep = Pvtep; 114 115 call SETUP_LOCK; 116 117 stock_seg.meters.get_free_vtoce_calls = stock_seg.meters.get_free_vtoce_calls + 1; 118 119 vtocx = -1; /* Set none */ 120 121 vtocx = WITHDRAW_FROM_STOCK (); /* Try for stock withdrawal */ 122 123 if vtocx = -1 & pvte.n_free_vtoce > 0 then do; /* Failed, but some exist */ 124 125 126 call SETUP_ABS_SEG; 127 128 last_index, wordx = vtoce_stock.search_index; /* Roving pointer */ 129 done_map = "0"b; 130 do while (^done_map); 131 132 BIT_MAP_RETRY: 133 134 if vtoc_map.bit_map (wordx) ^= ""b then do; /* Some free here */ 135 bit_map_wordp = addr (vtoc_map.bit_map (wordx)); 136 if bit_map_word.bits ^= ""b then do; /* Avoid spurious damage */ 137 last_index = wordx; /* Roving pointer */ 138 bitx = index (bit_map_word.bits, "1"b); 139 substr (bit_map_word.bits, bitx, 1) = "0"b; /* Mark as free */ 140 this_vtocx = 32 * wordx + bitx - 1; 141 if vtocx = -1 /* Haven't gotten one to return yet */ 142 then vtocx = this_vtocx; 143 else dummy = DEPOSIT_TO_STOCK (this_vtocx); 144 if vtoce_stock.n_free_in_stock < vtoce_stock.target 145 then goto BIT_MAP_RETRY; 146 end; 147 end; 148 149 wordx = wordx + 1; 150 if wordx >= vtoc_map.bit_map_n_words 151 then wordx = 0; 152 if (wordx = vtoce_stock.search_index) /* Wrapped */ 153 | (vtoce_stock.n_free_in_stock >= vtoce_stock.target) 154 | (pvte.n_free_vtoce <= 0) 155 then done_map = "1"b; 156 157 158 end; 159 160 vtoce_stock.search_index = last_index; /* Set roving pointer */ 161 162 call RESET_ABS_SEG; 163 end; 164 165 if vtocx ^= -1 then pvte.n_free_vtoce = pvte.n_free_vtoce - 1; 166 167 call UNLOCK; 168 169 Vtocx = vtocx; 170 171 return; 172 173 174 /* return_free_vtoce - 175* 176* Attempts to return a newly-freed VTOCE to the stock. If this fails, 177* it is returned to the VTOC Map (along with excess stock) 178**/ 179 180 return_free_vtoce: 181 entry (Pvtep, Vtocx); 182 183 pvtep = Pvtep; 184 vtocx = Vtocx; 185 186 call SETUP_LOCK; 187 188 stock_seg.meters.return_free_vtoce_call = stock_seg.meters.return_free_vtoce_call + 1; 189 deposited = "1"b; 190 191 192 193 if ^DEPOSIT_TO_STOCK (vtocx) 194 then do; /* No room in stock */ 195 196 197 call SETUP_ABS_SEG; 198 call DEPOSIT_TO_MAP (vtocx, "1"b, deposited); 199 200 if vtoce_stock.n_free_in_stock > vtoce_stock.target /* Excess in stock */ 201 then do while (vtoce_stock.n_free_in_stock > vtoce_stock.target); 202 vtocx = WITHDRAW_FROM_STOCK (); 203 if vtocx ^= -1 then call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 204 end; 205 206 call RESET_ABS_SEG; 207 208 end; 209 210 if deposited then 211 pvte.n_free_vtoce = pvte.n_free_vtoce + 1; 212 213 call UNLOCK; 214 215 return; 216 217 218 219 /* return_if_not_free - 220* 221* returns a free VTOCE to the VTOC map, unless it is already free. 222* It must first check the stock, and then the VTOC map.*/ 223 224 return_if_not_free: 225 entry (Pvtep, Vtocx, Code); 226 227 pvtep = Pvtep; 228 vtocx = Vtocx; 229 230 call SETUP_LOCK; 231 code = error_table_$vtoce_free; 232 233 do stockx = 1 to vtoce_stock.n_in_stock; 234 if vtoce_stock.stock (stockx) = vtocx 235 then goto ALREADY_FREE; 236 end; 237 238 call SETUP_ABS_SEG; 239 240 call DEPOSIT_TO_MAP (vtocx, "0"b, deposited); 241 if deposited 242 then do; 243 pvte.n_free_vtoce = pvte.n_free_vtoce + 1; 244 code = 0; 245 end; 246 247 call RESET_ABS_SEG; 248 249 ALREADY_FREE: 250 251 call UNLOCK; 252 253 Code = code; 254 255 return; 256 257 258 259 260 /* check_in_use - 261* 262* Checks whether a specified VTOCE is in-use (allocated) or free. If free, 263* a non-zero error code is returned. 264**/ 265 266 check_in_use: 267 entry (Pvtep, Vtocx, Code); 268 269 pvtep = Pvtep; 270 vtocx = Vtocx; 271 272 call SETUP_LOCK; 273 code = error_table_$vtoce_free; 274 275 do stockx = 1 to vtoce_stock.n_in_stock; 276 if vtoce_stock.stock (stockx) = vtocx 277 then goto CHECK_IS_FREE; 278 end; 279 280 call SETUP_ABS_SEG; 281 282 wordx = divide (vtocx, 32, 17); 283 bitx = mod (vtocx, 32) + 1; 284 if wordx < 0 | wordx >= vtoc_map.bit_map_n_words 285 then do; 286 code = error_table_$invalid_vtocx; 287 goto CHECK_RESET; 288 end; 289 bit_map_wordp = addr (vtoc_map.bit_map (wordx)); 290 if substr (bit_map_word.bits, bitx, 1) = "1"b 291 then goto CHECK_RESET; 292 293 code = 0; 294 295 CHECK_RESET: 296 call RESET_ABS_SEG; 297 298 CHECK_IS_FREE: 299 300 call UNLOCK; 301 302 Code = code; 303 304 return; 305 306 307 308 309 /* drain_stock_range - 310* 311* Deposits any vtocx's within a specified range from the stock into 312* the VTOC Map. 313**/ 314 315 drain_stock_range: 316 entry (Pvtep, Low_vtocx, High_vtocx); 317 318 pvtep = Pvtep; 319 low_vtocx = Low_vtocx; 320 high_vtocx = High_vtocx; 321 322 323 call SETUP_LOCK; 324 325 call SETUP_ABS_SEG; 326 327 do stockx = 1 to vtoce_stock.n_in_stock; 328 if vtoce_stock.stock (stockx) ^= -1 329 then if vtoce_stock.stock (stockx) >= low_vtocx 330 & vtoce_stock.stock (stockx) <= high_vtocx 331 then do; 332 vtocx = vtoce_stock.stock (stockx); 333 vtoce_stock.stock (stockx) = -1; 334 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock - 1; 335 call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 336 end; 337 end; 338 339 call RESET_ABS_SEG; 340 341 call UNLOCK; 342 343 return; 344 345 346 347 348 /* drain_stock - 349* 350* Shuts down the stock by setting the target to 0 and depositing any remaining 351* VTOCEs into the VTOC Map 352* The caller must have setup volmap_abs_seg 353**/ 354 355 drain_stock: 356 entry (Pvtep); 357 358 pvtep = Pvtep; 359 360 call SETUP_LOCK; 361 vtoc_mapp = ptr (addr (volmap_abs_seg$), pvte.vtoc_map_offset); 362 363 vtoce_stock.target = 0; 364 do while (vtoce_stock.n_free_in_stock > 0); 365 vtocx = WITHDRAW_FROM_STOCK (); 366 call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 367 end; 368 369 call UNLOCK; 370 371 return; 372 373 /* force_unlock - 374* 375* Unlocks the VTOC Map lock. 376**/ 377 378 force_unlock: 379 entry (Pvtep); 380 381 pvtep = Pvtep; 382 383 call UNLOCK; 384 385 return; 386 387 /* Internal Procedure to deposit a single VTOCE index to the stock, 388* returning an indication of success */ 389 390 DEPOSIT_TO_STOCK: 391 proc (vtocx) returns (bit (1) aligned); 392 393 dcl vtocx fixed bin; 394 395 dcl found_empty bit (1); 396 397 398 399 stock_seg.meters.deposit_vstock_calls = stock_seg.meters.deposit_vstock_calls + 1; 400 401 if vtoce_stock.n_free_in_stock >= vtoce_stock.n_in_stock 402 then do; /* No room */ 403 stock_seg.meters.deposit_vstock_fails = stock_seg.meters.deposit_vstock_fails + 1; 404 return ("0"b); 405 end; 406 407 408 found_empty = "0"b; 409 do stockx = 1 to vtoce_stock.n_in_stock while (^found_empty); 410 if vtoce_stock.stock (stockx) = -1 411 then do; 412 found_empty = "1"b; 413 vtoce_stock.stock (stockx) = vtocx; 414 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock + 1; 415 end; 416 end; 417 418 if ^found_empty 419 then call syserr (CRASH, "vtoce_stock_man: VTOCE stock inconsistent on ^a_^a", 420 pvte.devname, convert (p99, pvte.logical_area_number)); 421 422 return ("1"b); 423 424 425 end DEPOSIT_TO_STOCK; 426 427 /* Internal Procedure to withdraw a single VTOCE index from the stock. 428* A vtocx of -1 is returned if this cannot be done. 429**/ 430 WITHDRAW_FROM_STOCK: 431 proc () returns (fixed bin); 432 433 dcl stockx fixed bin; 434 dcl vtocx fixed bin; 435 436 vtocx = -1; 437 438 stock_seg.meters.withdraw_vstock_calls = stock_seg.meters.withdraw_vstock_calls + 1; 439 440 if vtoce_stock.n_free_in_stock > 0 441 then do stockx = 1 to vtoce_stock.n_in_stock 442 while (vtocx = -1); 443 if vtoce_stock.stock (stockx) ^= -1 then do; 444 vtocx = vtoce_stock.stock (stockx); 445 vtoce_stock.stock (stockx) = -1; 446 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock - 1; 447 end; 448 end; 449 450 if vtocx = -1 451 then stock_seg.meters.withdraw_vstock_fails = stock_seg.meters.withdraw_vstock_fails + 1; 452 453 return (vtocx); 454 455 end WITHDRAW_FROM_STOCK; 456 457 /* Internal Procedure to deposit a VTOCE index to the VTOC Map */ 458 459 DEPOSIT_TO_MAP: 460 proc (vtocx, complain, deposited); 461 462 dcl vtocx fixed bin; 463 dcl complain bit (1) aligned; 464 dcl deposited bit (1) aligned; 465 466 dcl bit_no fixed bin; 467 dcl word_no fixed bin; 468 469 deposited = "1"b; 470 471 word_no = divide (vtocx, 32, 17); 472 bit_no = mod (vtocx, 32) + 1; 473 474 if word_no < 0 | word_no >= vtoc_map.bit_map_n_words 475 then do; 476 if complain then 477 call syserr (ANNOUNCE, "vtoce_stock_man: Attempt to deposit invalid vtocx ^o on ^a_^a", 478 vtocx, pvte.devname, convert (p99, pvte.logical_area_number)); 479 deposited = "0"b; 480 end; 481 else do; 482 bit_map_wordp = addr (vtoc_map.bit_map (word_no)); 483 if substr (bit_map_word.bits, bit_no, 1) = "1"b 484 then do; 485 if complain then do; 486 call syserr (ANNOUNCE, "vtoce_stock_man: Attempt to deposit free vtocx ^o on ^a_^a", 487 vtocx, pvte.devname, convert (p99, pvte.logical_area_number)); 488 pvte.vol_trouble_count = pvte.vol_trouble_count + 1; 489 end; 490 deposited = "0"b; 491 end; 492 else substr (bit_map_word.bits, bit_no, 1) = "1"b; 493 end; 494 495 stock_seg.meters.deposit_vtoc_map = stock_seg.meters.deposit_vtoc_map + 1; 496 497 end DEPOSIT_TO_MAP; 498 499 /* Internal Procedure to setup pointers, validate that the PVTE and 500* the VTOCE stock are in sync, and lock the VTOC Map lock */ 501 502 SETUP_LOCK: 503 proc; 504 505 dcl wait_event bit (36) aligned; 506 507 508 on any_other goto OUT_OF_SYNC; 509 510 vtoce_stockp = pvte.vtoc_map_stock_ptr; 511 if vtoce_stockp = null () then do; 512 OUT_OF_SYNC: 513 revert any_other; 514 call syserr (CRASH, "vtoce_stock_man: PVTE and VTOCE stock out-of-synch on ^a_^a", 515 pvte.devname, convert (p99, pvte.logical_area_number)); 516 end; 517 518 if vtoce_stock.pvtep ^= pvtep then goto OUT_OF_SYNC; 519 520 revert any_other; 521 522 if pvte.vtoc_map_lock = pds$processid 523 then call syserr (CRASH, "vtoce_stock_man: MYLOCK of VTOC Map Lock for ^a_^a", 524 pvte.devname, convert (p99, pvte.logical_area_number)); 525 526 do while (^stac (addr (pvte.vtoc_map_lock), pds$processid)); 527 wait_event = substr (pvt$vtoc_map_lock_wait_constant, 1, 18) 528 || rel (pvtep); 529 call pxss$addevent (wait_event); 530 pvte.vtoc_map_lock_notify = "1"b; 531 if stac (addr (pvte.vtoc_map_lock), pds$processid) /* Watch for race */ 532 then do; 533 call pxss$delevent ((""b)); 534 goto LOCK_GOT; 535 end; 536 call pxss$wait; 537 end; 538 539 LOCK_GOT: 540 pvt$n_vtoc_map_locks = pvt$n_vtoc_map_locks + 1; 541 stock_segp = addr (stock_seg$); 542 return; 543 544 545 end SETUP_LOCK; 546 547 /* Internal Procedure to unlock the VTOC Map lock and notify, if necessary */ 548 549 UNLOCK: 550 proc; 551 552 553 dcl wait_event bit (36) aligned; 554 555 if ^stacq (pvte.vtoc_map_lock, ""b, pds$processid) 556 then call syserr (CRASH, "vtoce_stock_man: STACQ fails for VTOC Map lock on ^a_^a", 557 pvte.devname, convert (p99, pvte.logical_area_number)); 558 559 if pvte.vtoc_map_lock_notify then do; 560 pvte.vtoc_map_lock_notify = "0"b; 561 wait_event = substr (pvt$vtoc_map_lock_wait_constant, 1, 18) || rel (pvtep); 562 call pxss$notify (wait_event); 563 end; 564 565 end UNLOCK; 566 567 /* Internal Procedure to setup volmap_abs_seg and vtoc_mapp */ 568 SETUP_ABS_SEG: 569 proc; 570 571 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (pvte.volmap_seg_sdw)); 572 vtoc_mapp = ptr (addr (volmap_abs_seg$), pvte.vtoc_map_offset); 573 574 575 576 end SETUP_ABS_SEG; 577 578 579 580 /* Internal Procedure to reset volmap_abs_seg */ 581 582 RESET_ABS_SEG: 583 proc; 584 585 dcl tsdw fixed bin (71); 586 587 588 tsdw = 0; 589 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (tsdw)); 590 vtoc_mapp = null (); 591 592 593 end RESET_ABS_SEG; 594 595 596 597 598 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 1 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 1 8* Add the support for subvolumes 1 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 1 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 1 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 1 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 1 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 1 14* Added inconsistent_dbm bit for determining the status of volume 1 15* dumper bit maps. 1 16* END HISTORY COMMENTS */ 1 17 1 18 dcl pvt$array aligned external; 1 19 dcl pvt$max_n_entries fixed bin external; 1 20 1 21 dcl pvt_arrayp ptr; 1 22 dcl pvtep ptr; 1 23 1 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 1 25 1 26 dcl 1 pvte based (pvtep) aligned, 1 27 1 28 2 pvid bit (36), /* physical volume ID */ 1 29 1 30 2 lvid bit (36), /* logical volume ID */ 1 31 1 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 1 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 1 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 1 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 1 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 1 37 2 pad3 bit (2) unaligned, 1 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 1 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 1 40 1 41 1 42 1 43 2 devname char (4), /* device name */ 1 44 1 45 (2 device_type fixed bin (8), /* device type */ 1 46 2 logical_area_number fixed bin (8), /* disk drive number */ 1 47 2 used bit (1), /* TRUE if this entry is used */ 1 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 1 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 1 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 1 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 1 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 1 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 1 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 1 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 1 56 2 scav_check_address 1 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 1 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 1 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 1 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 1 61 2 vacating bit (1), /* don't put new segs on this vol */ 1 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 1 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 1 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 1 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 1 66 1 67 1 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 1 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 1 70 1 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 1 72 1 73 2 nleft fixed bin (17), /* number of records left */ 1 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 1 75 1 76 2 dim_info bit (36), /* Information peculiar to DIM */ 1 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 1 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 1 79 2 records_per_cyl fixed bin, 1 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 1 81 2 sv_name char (2) aligned, 1 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 1 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 1 84 1 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 1 86 2 pad2 bit (18) unaligned, 1 87 1 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 1 89 1 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 1 91 1 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 1 93 1 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 1 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 1 96 1 97 1 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 1 99 1 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 1 101 1 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 1 103 1 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 1 105 1 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 1 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 1 108 1 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 1 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 1 111 1 112 1 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 1 114 VOLMAP_ASYNC_READ init (1), 1 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 1 116 1 117 1 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 598 599 /* START OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 dcl stock_segp ptr; 2 4 dcl record_stockp ptr; 2 5 dcl vtoce_stockp ptr; 2 6 dcl stock_seg$ ext; 2 7 2 8 dcl n_in_record_stock fixed bin; 2 9 dcl n_volmap_pages fixed bin; 2 10 dcl n_in_vtoce_stock fixed bin; 2 11 2 12 2 13 dcl 1 stock_seg aligned based (stock_segp), 2 14 2 15 2 meters aligned like rsmeters, 2 16 2 17 2 record_stock_entries fixed bin, /* Number of entries in a record stock */ 2 18 2 vtoce_stock_entries fixed bin, /* Number of entries in a VTOCE stock */ 2 19 2 record_stock_size fixed bin, /* Size of a record stock in words */ 2 20 2 vtoce_stock_size fixed bin, /* Size of a VTOCE stock in words */ 2 21 2 n_stock_entries fixed bin, /* Number of stocks of each type */ 2 22 2 record_stock_arrayp ptr, /* Record stock region */ 2 23 2 vtoce_stock_arrayp ptr; /* VTOCE stock region */ 2 24 2 25 2 26 dcl 1 record_stock aligned based (record_stockp), 2 27 2 28 2 pvtep ptr unal, /* PVTE for this stock */ 2 29 2 30 2 n_in_stock fixed bin (18) uns unal,/* Max number of addresses in stock */ 2 31 2 n_volmap_pages fixed bin (18) uns unal,/* Number of pages in Volume Map */ 2 32 2 33 2 n_free_in_stock fixed bin (18) uns unal,/* Number addresses currently free */ 2 34 2 n_os_in_stock fixed bin (18) uns unal,/* Number addresses currently out-of-service */ 2 35 2 36 2 low_threshold fixed bin (18) uns unal,/* Low threshold for withdrawing from volmap */ 2 37 2 high_threshold fixed bin (18) uns unal,/* High threshold for depositing to volmap */ 2 38 2 39 2 target fixed bin (18) uns unal,/* Target for stock */ 2 40 2 stock_offset bit (18) unal, /* Offset of stock in this structure */ 2 41 2 42 2 n_words_in_stock fixed bin (18) uns unal,/* Number of words = Number of entries / 2 */ 2 43 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 2 44 2 45 2 old_volmap_page (3) aligned, /* N_OLD_VOLMAP_PAGES (cif) */ 2 46 3 last fixed bin (18) uns unal,/* Roving pointer */ 2 47 3 pad bit (18) unal, 2 48 2 49 2 volmap_page (n_volmap_pages refer (record_stock.n_volmap_pages)) aligned, 2 50 3 n_free fixed bin (18) uns unal,/* Number free records in this volmap page */ 2 51 3 baseadd fixed bin (17) unal, /* First record address described by this page */ 2 52 2 53 2 stock (n_in_record_stock refer (record_stock.n_in_stock)) bit (18) unal; /* Stock array of addresses */ 2 54 /* bit 0 ON => out-of-service */ 2 55 2 56 2 57 dcl 1 vtoce_stock aligned based (vtoce_stockp), 2 58 2 pvtep ptr unal, /* PVTE for this stock */ 2 59 2 n_in_stock fixed bin (18) uns unal,/* Max number indices in stock */ 2 60 2 n_free_in_stock fixed bin (18) uns unal,/* Number indices currently free */ 2 61 2 target fixed bin (18) uns unal,/* Target when withdrawing/depositing */ 2 62 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 2 63 2 stock (n_in_vtoce_stock refer (vtoce_stock.n_in_stock)) fixed bin (17) unal; /* Stock array of VTOCE indices */ 2 64 2 65 2 66 dcl 1 rsmeters aligned based, 2 67 2 68 2 async_read_calls fixed bin (35), /* Number of asynchronous read attempts */ 2 69 2 async_page_reads fixed bin (35), /* Number of times page read was required */ 2 70 2 async_post_io_calls fixed bin (35), /* Number of times read or write posted */ 2 71 2 deposit_calls fixed bin (35), /* Number of times deposit called */ 2 72 2 async_post_io_time fixed bin (71), /* CPU time posting I/Os (interrupt side) */ 2 73 2 deposit_time fixed bin (71), /* CPU time in deposit (call side) */ 2 74 2 low_thresh_detected fixed bin (35), /* Number of times stock below low threshold */ 2 75 2 high_thresh_detected fixed bin (35), /* Number of times stock above high threshold */ 2 76 2 low_thresh_fails fixed bin (35), /* Number of times no records in volmap */ 2 77 2 withdraw_stock_steps fixed bin (35), /* Number steps thru stock in withdraw */ 2 78 2 withdraw_stock_losses fixed bin (35), /* Number lockless losses */ 2 79 2 n_withdraw_attempt fixed bin (35), /* Number attempts to withdraw a page */ 2 80 2 n_withdraw_range fixed bin (35), /* Number attempts to withdraw within range */ 2 81 2 n_pages_withdraw_stock fixed bin (35), /* Number pages withdrawn from stock */ 2 82 2 n_pages_withdraw_async fixed bin (35), /* Number pages withdrawn from volmap */ 2 83 2 n_v_withdraw_attempts fixed bin (35), /* Number attempts to withdraw from volmap */ 2 84 2 withdraw_volmap_steps fixed bin (35), /* Number steps thru volmap in withdraw */ 2 85 2 deposit_stock_steps fixed bin (35), /* Number steps thru stock in deposit */ 2 86 2 deposit_stock_losses fixed bin (35), /* Number lockless losses */ 2 87 2 n_deposit_attempt fixed bin (35), /* Number attempts to deposit a page */ 2 88 2 n_pages_deposit_stock fixed bin (35), /* Number pages deposited to stock */ 2 89 2 n_pages_deposit_volmap fixed bin (35), /* Number pages deposited to volmap */ 2 90 2 n_v_deposit_attempts fixed bin (35), /* Number attempts to deposit to volmap */ 2 91 2 reset_os_calls fixed bin (35), /* Number calls to reset_os */ 2 92 2 reset_os_losses fixed bin (35), /* Number lockless losses */ 2 93 2 withdraw_calls fixed bin (35), /* Number calls to withdraw */ 2 94 2 withdraw_time fixed bin (71), /* CPU time in withdraw (page-fault) */ 2 95 2 pc_deposit_time fixed bin (71), /* CPU time in pc_deposit */ 2 96 2 pc_deposit_calls fixed bin (35), /* Number calls to pc_deposit */ 2 97 2 pc_deposit_pages fixed bin (35), /* Number pages deposited by pc_deposit */ 2 98 2 get_free_vtoce_calls fixed bin (35), /* Number calls to get_free_vtoce */ 2 99 2 return_free_vtoce_call fixed bin (35), /* Number calls to return_free_vtoce */ 2 100 2 deposit_vstock_calls fixed bin (35), /* Number attempts to deposit to vtoce stock */ 2 101 2 deposit_vstock_fails fixed bin (35), /* Number times deposit failed */ 2 102 2 withdraw_vstock_calls fixed bin (35), /* Number attempts to withdraw from vtoce stock */ 2 103 2 withdraw_vstock_fails fixed bin (35), /* Number times withdraw failed */ 2 104 2 deposit_vtoc_map fixed bin (35), /* Number times vtoce deposited to map */ 2 105 2 withdraw_check_scav fixed bin (35), /* Number times withdraw checked an address for scavenge */ 2 106 2 withdraw_conflict fixed bin (35), /* Number times conflict found */ 2 107 2 pad (11) fixed bin (35); 2 108 2 109 2 110 dcl N_OLD_VOLMAP_PAGES fixed bin init (3) int static options (constant); 2 111 dcl DEFAULT_N_IN_RECORD_STOCK fixed bin init (104) int static options (constant); 2 112 dcl DEFAULT_N_IN_VTOCE_STOCK fixed bin init (10) int static options (constant); 2 113 2 114 2 115 /* END OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 599 600 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 3 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 3 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 3 4 3 5 /* This include file has an ALM version. Keep 'em in sync! */ 3 6 3 7 dcl ( 3 8 3 9 /* The following constants define the message action codes. This indicates 3 10*how a message is to be handled. */ 3 11 3 12 SYSERR_CRASH_SYSTEM init (1), 3 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 3 14 3 15 SYSERR_TERMINATE_PROCESS init (2), 3 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 3 17 3 18 SYSERR_PRINT_WITH_ALARM init (3), 3 19 BEEP init (3), /* Beep and print the message on the console. */ 3 20 3 21 SYSERR_PRINT_ON_CONSOLE init (0), 3 22 ANNOUNCE init (0), /* Just print the message on the console. */ 3 23 3 24 SYSERR_LOG_OR_PRINT init (4), 3 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 3 26 3 27 SYSERR_LOG_OR_DISCARD init (5), 3 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 3 29 3 30 3 31 /* The following constants are added to the normal severities to indicate 3 32*different sorting classes of messages. */ 3 33 3 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 3 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 3 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 3 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 3 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 3 39 ) fixed bin internal static options (constant); 3 40 3 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 600 601 /* START OF: vtoc_map.incl.pl1 ... March 1982 ... * * * * * * * * * * * * * * * * */ 4 2 4 3 dcl vtoc_mapp ptr; 4 4 dcl bit_map_wordp ptr; 4 5 4 6 dcl 1 vtoc_map aligned based (vtoc_mapp), 4 7 2 n_vtoce fixed bin, /* Number of VTOCEs on the device */ 4 8 2 n_free_vtoce fixed bin, /* Number of free VTOCEs */ 4 9 2 bit_map_n_words fixed bin, /* Number of words in the bit map below */ 4 10 2 vtoc_last_recno fixed bin, /* Last record number in VTOC */ 4 11 2 pad (4) fixed bin, 4 12 2 bit_map (0:1024 - 9) bit (36); /* This structure consumes exactly 1 page */ 4 13 4 14 dcl 1 bit_map_word aligned based (bit_map_wordp), 4 15 2 pad1 bit (1) unal, 4 16 2 bits bit (32) unal, /* 32 VTOCES ON => free */ 4 17 2 pad2 bit (3) unal; 4 18 4 19 4 20 4 21 /* END OF: vtoc_map.incl.pl1 * * * * * * * * * * * * * * * * */ 601 602 603 604 /* BEGIN MESSAGE DOCUMENTATION 605* 606* Message: 607* vtoce_stock_man: VTOCE stock inconsistent on dskX_NN 608* 609* S: $crash 610* 611* T: $run 612* 613* M: There is an internal inconsistency in the stock of free VTOCES 614* on the device indicated. This is probably a software malfunction. 615* 616* A: $recover 617* 618* Message: 619* vtoce_stock_man: Attempt to deposit invalid vtocx YYYYYY on dskX_NN 620* 621* S: $info 622* 623* T: $run 624* 625* M: There was an attempt to return a free VTOCE to the pool of free 626* VTOCEs for the device indicated, but the index of the VTOCE was not 627* valid. This indicates possible damage to the device. Such damage can 628* be corrected by a physical volume salvage. 629* 630* A: $inform 631* 632* Message: 633* vtoce_stock_man: Attempt to deposit free vtocx YYYYYY on dskX_NN 634* 635* S: $info 636* 637* T: $run 638* 639* M: A VTOCE was returned to the free pool of VTOCEs on the device indicated, 640* but the VTOCE was already marked as free. This indicates possible device 641* damage. This damage can be corrected by a physical volume salvage. 642* 643* A: $inform 644* 645* Message: 646* vtoce_stock_man: PVTE and VTOCE stock out-of-synch on dskX_NN 647* 648* S: $crash 649* 650* T: $run 651* 652* M: There is an inconsistency between the Physical Volume Table 653* Entry and the VTOCE Stock for the device indicated. This is probably 654* a software error. 655* 656* A: $recover 657* 658* Message: 659* vtoce_stock_man: MYLOCK of VTOC Map for dskX_NN 660* 661* S: $crash 662* 663* T: $run 664* 665* M: A process attempted to acquire a lock on the VTOC Map for the device 666* indicated while already owning the lock. This is probably a software error. 667* 668* A: $recover 669* 670* Message: 671* vtoce_stock_man: STACQ fails for VTOC Map lock on dskX_NN 672* 673* S: $crash 674* 675* T: $run 676* 677* M: A process was unable to unlock the VTOC Map lock for the device 678* indicated. This is probably a hardware failure, either in the CPU or in 679* main memory. 680* 681* A: $recover 682* 683* END MESSAGE DOCUMENTATION */ 684 685 end vtoce_stock_man$get_free_vtoce; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0851.6 vtoce_stock_man.pl1 >spec>install>1115>vtoce_stock_man.pl1 598 1 07/21/88 2036.0 pvte.incl.pl1 >ldd>include>pvte.incl.pl1 599 2 10/25/82 1015.6 stock_seg.incl.pl1 >ldd>include>stock_seg.incl.pl1 600 3 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 601 4 05/27/82 1525.9 vtoc_map.incl.pl1 >ldd>include>vtoc_map.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. ANNOUNCE 000007 constant fixed bin(17,0) initial dcl 3-7 set ref 476* 486* CRASH 000012 constant fixed bin(17,0) initial dcl 3-7 set ref 418* 514* 522* 555* Code parameter fixed bin(35,0) dcl 52 set ref 224 253* 266 302* High_vtocx parameter fixed bin(17,0) dcl 49 ref 315 320 Low_vtocx parameter fixed bin(17,0) dcl 48 ref 315 319 Pvtep parameter pointer dcl 50 ref 8 113 180 183 224 227 266 269 315 318 355 358 378 381 Vtocx parameter fixed bin(17,0) dcl 51 set ref 8 169* 180 184 224 228 266 270 addr builtin function dcl 90 ref 135 289 361 482 526 531 541 571 571 571 571 572 589 589 589 589 any_other 000000 stack reference condition dcl 104 ref 508 512 520 bit_map 10 based bit(36) array level 2 dcl 4-6 set ref 132 135 289 482 bit_map_n_words 2 based fixed bin(17,0) level 2 dcl 4-6 ref 150 284 474 bit_map_word based structure level 1 dcl 4-14 bit_map_wordp 000124 automatic pointer dcl 4-4 set ref 135* 136 138 139 289* 290 482* 483 492 bit_no 000306 automatic fixed bin(17,0) dcl 466 set ref 472* 483 492 bits 0(01) based bit(32) level 2 packed packed unaligned dcl 4-14 set ref 136 138 139* 290 483 492* bitx 000100 automatic fixed bin(17,0) dcl 56 set ref 138* 139 140 283* 290 code 000101 automatic fixed bin(35,0) dcl 57 set ref 231* 244* 253 273* 286* 293* 302 complain parameter bit(1) dcl 463 ref 459 476 485 convert builtin function dcl 91 ref 418 418 476 476 486 486 514 514 522 522 555 555 deposit_vstock_calls 44 based fixed bin(35,0) level 3 dcl 2-13 set ref 399* 399 deposit_vstock_fails 45 based fixed bin(35,0) level 3 dcl 2-13 set ref 403* 403 deposit_vtoc_map 50 based fixed bin(35,0) level 3 dcl 2-13 set ref 495* 495 deposited parameter bit(1) dcl 464 in procedure "DEPOSIT_TO_MAP" set ref 459 469* 479* 490* deposited 000103 automatic bit(1) dcl 59 in procedure "vtoce_stock_man$get_free_vtoce" set ref 189* 198* 210 240* 241 devname 3 based char(4) level 2 dcl 1-26 set ref 418* 476* 486* 514* 522* 555* divide builtin function dcl 92 ref 282 471 done_map 000104 automatic bit(1) packed unaligned dcl 60 set ref 129* 130 152* dummy 000105 automatic bit(1) packed unaligned dcl 61 set ref 143* error_table_$invalid_vtocx 000010 external static fixed bin(35,0) dcl 72 ref 286 error_table_$vtoce_free 000012 external static fixed bin(35,0) dcl 73 ref 231 273 found_empty 000222 automatic bit(1) packed unaligned dcl 395 set ref 408* 409 412* 418 get_free_vtoce_calls 42 based fixed bin(35,0) level 3 dcl 2-13 set ref 117* 117 high_vtocx 000107 automatic fixed bin(17,0) dcl 63 set ref 320* 328 index builtin function dcl 93 ref 138 last_index 000102 automatic fixed bin(17,0) dcl 58 set ref 128* 137* 160 logical_area_number 4(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 1-26 ref 418 418 476 476 486 486 514 514 522 522 555 555 low_vtocx 000106 automatic fixed bin(17,0) dcl 62 set ref 319* 328 meters based structure level 2 dcl 2-13 mod builtin function dcl 94 ref 283 472 n_free_in_stock 1(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 2-57 set ref 144 152 200 200 334* 334 364 401 414* 414 440 446* 446 n_free_vtoce 5 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-26 set ref 123 152 165* 165 210* 210 243* 243 n_in_stock 1 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 2-57 ref 233 275 327 401 409 440 null builtin function dcl 95 ref 511 590 p99 automatic picture(2) packed unaligned dcl 64 ref 418 418 476 476 486 486 514 514 522 522 555 555 pds$processid 000014 external static bit(36) dcl 74 ref 522 526 531 555 pmut$swap_sdw 000034 constant entry external dcl 85 ref 571 589 ptr builtin function dcl 96 ref 361 572 pvt$n_vtoc_map_locks 000016 external static fixed bin(35,0) dcl 75 set ref 539* 539 pvt$vtoc_map_lock_wait_constant 000020 external static bit(36) dcl 76 ref 527 561 pvte based structure level 1 dcl 1-26 pvtep based pointer level 2 in structure "vtoce_stock" packed packed unaligned dcl 2-57 in procedure "vtoce_stock_man$get_free_vtoce" ref 518 pvtep 000114 automatic pointer dcl 1-22 in procedure "vtoce_stock_man$get_free_vtoce" set ref 113* 123 152 165 165 183* 210 210 227* 243 243 269* 318* 358* 361 381* 418 418 418 476 476 476 486 486 486 488 488 510 514 514 514 518 522 522 522 522 526 527 530 531 555 555 555 555 559 560 561 571 571 572 pxss$addevent 000024 constant entry external dcl 81 ref 529 pxss$delevent 000026 constant entry external dcl 82 ref 533 pxss$notify 000030 constant entry external dcl 83 ref 562 pxss$wait 000032 constant entry external dcl 84 ref 536 rel builtin function dcl 97 ref 527 561 return_free_vtoce_call 43 based fixed bin(35,0) level 3 dcl 2-13 set ref 188* 188 rsmeters based structure level 1 dcl 2-66 search_index 2(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 2-57 set ref 128 152 160* stac builtin function dcl 98 ref 526 531 stacq builtin function dcl 99 ref 555 stock 3 based fixed bin(17,0) array level 2 packed packed unaligned dcl 2-57 set ref 234 276 328 328 328 332 333* 410 413* 443 444 445* stock_seg based structure level 1 dcl 2-13 stock_seg$ 000040 external static fixed bin(17,0) dcl 2-6 set ref 541 stock_segp 000116 automatic pointer dcl 2-3 set ref 117 117 188 188 399 399 403 403 438 438 450 450 495 495 541* stockx 000254 automatic fixed bin(17,0) dcl 433 in procedure "WITHDRAW_FROM_STOCK" set ref 440* 443 444 445* stockx 000110 automatic fixed bin(17,0) dcl 65 in procedure "vtoce_stock_man$get_free_vtoce" set ref 233* 234* 275* 276* 327* 328 328 328 332 333* 409* 410 413* substr builtin function dcl 100 set ref 139* 290 483 492* 527 561 syserr 000036 constant entry external dcl 86 ref 418 476 486 514 522 555 target 2 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 2-57 set ref 144 152 200 200 363* this_vtocx 000111 automatic fixed bin(17,0) dcl 66 set ref 140* 141 143* tsdw 000334 automatic fixed bin(71,0) dcl 585 set ref 588* 589 589 vol_trouble_count 33 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-26 set ref 488* 488 volmap_abs_seg$ 000022 external static fixed bin(17,0) dcl 77 set ref 361 571 571 572 589 589 volmap_seg_sdw 22 based fixed bin(71,0) level 2 dcl 1-26 set ref 571 571 vtoc_map based structure level 1 dcl 4-6 vtoc_map_lock 27 based bit(36) level 2 dcl 1-26 set ref 522 526 531 555 vtoc_map_lock_notify 4(35) based bit(1) level 2 packed packed unaligned dcl 1-26 set ref 530* 559 560* vtoc_map_offset 25(18) based bit(18) level 2 packed packed unaligned dcl 1-26 ref 361 572 vtoc_map_stock_ptr 31 based pointer level 2 packed packed unaligned dcl 1-26 ref 510 vtoc_mapp 000122 automatic pointer dcl 4-3 set ref 132 135 150 284 289 361* 474 482 572* 590* vtoce_stock based structure level 1 dcl 2-57 vtoce_stockp 000120 automatic pointer dcl 2-5 set ref 128 144 144 152 152 152 160 200 200 200 200 233 234 275 276 327 328 328 328 332 333 334 334 363 364 401 401 409 410 413 414 414 440 440 443 444 445 446 446 510* 511 518 vtocx parameter fixed bin(17,0) dcl 393 in procedure "DEPOSIT_TO_STOCK" ref 390 413 vtocx parameter fixed bin(17,0) dcl 462 in procedure "DEPOSIT_TO_MAP" set ref 459 471 472 476* 486* vtocx 000112 automatic fixed bin(17,0) dcl 67 in procedure "vtoce_stock_man$get_free_vtoce" set ref 119* 121* 123 141 141* 165 169 184* 193* 198* 202* 203 203* 228* 234 240* 270* 276 282 283 332* 335* 365* 366* vtocx 000255 automatic fixed bin(17,0) dcl 434 in procedure "WITHDRAW_FROM_STOCK" set ref 436* 440 444* 450 453 wait_event 000316 automatic bit(36) dcl 553 in procedure "UNLOCK" set ref 561* 562* wait_event 000100 automatic bit(36) dcl 505 in procedure "SETUP_LOCK" set ref 527* 529* withdraw_vstock_calls 46 based fixed bin(35,0) level 3 dcl 2-13 set ref 438* 438 withdraw_vstock_fails 47 based fixed bin(35,0) level 3 dcl 2-13 set ref 450* 450 word_no 000307 automatic fixed bin(17,0) dcl 467 set ref 471* 474 474 482 wordx 000113 automatic fixed bin(17,0) dcl 68 set ref 128* 132 135 137 140 149* 149 150 150* 152 282* 284 284 289 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 3-7 DEFAULT_N_IN_RECORD_STOCK internal static fixed bin(17,0) initial dcl 2-111 DEFAULT_N_IN_VTOCE_STOCK internal static fixed bin(17,0) initial dcl 2-112 JUST_LOG internal static fixed bin(17,0) initial dcl 3-7 LOG internal static fixed bin(17,0) initial dcl 3-7 N_OLD_VOLMAP_PAGES internal static fixed bin(17,0) initial dcl 2-110 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 3-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 1-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 1-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 1-113 n_in_record_stock automatic fixed bin(17,0) dcl 2-8 n_in_vtoce_stock automatic fixed bin(17,0) dcl 2-10 n_volmap_pages automatic fixed bin(17,0) dcl 2-9 pvt$array external static fixed bin(17,0) dcl 1-18 pvt$max_n_entries external static fixed bin(17,0) dcl 1-19 pvt_array based structure array level 1 dcl 1-24 pvt_arrayp automatic pointer dcl 1-21 record_stock based structure level 1 dcl 2-26 record_stockp automatic pointer dcl 2-4 NAMES DECLARED BY EXPLICIT CONTEXT. ALREADY_FREE 000562 constant label dcl 249 ref 234 BIT_MAP_RETRY 000226 constant label dcl 132 ref 144 CHECK_IS_FREE 000673 constant label dcl 298 ref 276 CHECK_RESET 000672 constant label dcl 295 set ref 287 290 DEPOSIT_TO_MAP 001330 constant entry internal dcl 459 ref 198 203 240 335 366 DEPOSIT_TO_STOCK 001071 constant entry internal dcl 390 ref 143 193 LOCK_GOT 002000 constant label dcl 539 ref 534 OUT_OF_SYNC 001573 constant label dcl 512 set ref 508 518 RESET_ABS_SEG 002141 constant entry internal dcl 582 ref 162 206 247 295 339 SETUP_ABS_SEG 002111 constant entry internal dcl 568 ref 126 197 238 280 325 SETUP_LOCK 001536 constant entry internal dcl 502 ref 115 186 230 272 323 360 UNLOCK 002011 constant entry internal dcl 549 ref 167 213 249 298 341 369 383 WITHDRAW_FROM_STOCK 001236 constant entry internal dcl 430 ref 121 202 365 check_in_use 000571 constant entry external dcl 266 drain_stock 001004 constant entry external dcl 355 drain_stock_range 000704 constant entry external dcl 315 force_unlock 001056 constant entry external dcl 378 return_free_vtoce 000360 constant entry external dcl 180 return_if_not_free 000474 constant entry external dcl 224 vtoce_stock_man$get_free_vtoce 000157 constant entry external dcl 8 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2544 2606 2252 2554 Length 3106 2252 42 263 271 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vtoce_stock_man$get_free_vtoce 376 external procedure is an external procedure. DEPOSIT_TO_STOCK internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc WITHDRAW_FROM_STOCK internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc DEPOSIT_TO_MAP internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc SETUP_LOCK 112 internal procedure enables or reverts conditions. on unit on line 508 64 on unit UNLOCK internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc SETUP_ABS_SEG internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc RESET_ABS_SEG internal procedure shares stack frame of external procedure vtoce_stock_man$get_free_vtoc STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME SETUP_LOCK 000100 wait_event SETUP_LOCK vtoce_stock_man$get_free_vtoce 000100 bitx vtoce_stock_man$get_free_vtoce 000101 code vtoce_stock_man$get_free_vtoce 000102 last_index vtoce_stock_man$get_free_vtoce 000103 deposited vtoce_stock_man$get_free_vtoce 000104 done_map vtoce_stock_man$get_free_vtoce 000105 dummy vtoce_stock_man$get_free_vtoce 000106 low_vtocx vtoce_stock_man$get_free_vtoce 000107 high_vtocx vtoce_stock_man$get_free_vtoce 000110 stockx vtoce_stock_man$get_free_vtoce 000111 this_vtocx vtoce_stock_man$get_free_vtoce 000112 vtocx vtoce_stock_man$get_free_vtoce 000113 wordx vtoce_stock_man$get_free_vtoce 000114 pvtep vtoce_stock_man$get_free_vtoce 000116 stock_segp vtoce_stock_man$get_free_vtoce 000120 vtoce_stockp vtoce_stock_man$get_free_vtoce 000122 vtoc_mapp vtoce_stock_man$get_free_vtoce 000124 bit_map_wordp vtoce_stock_man$get_free_vtoce 000222 found_empty DEPOSIT_TO_STOCK 000254 stockx WITHDRAW_FROM_STOCK 000255 vtocx WITHDRAW_FROM_STOCK 000306 bit_no DEPOSIT_TO_MAP 000307 word_no DEPOSIT_TO_MAP 000316 wait_event UNLOCK 000334 tsdw RESET_ABS_SEG THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. unpk_to_pk call_ext_out_desc call_ext_out call_int_this return_mac tra_ext_1 stac_mac mdfx1 enable_op ext_entry int_entry index_bs_1_eis stacq_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. pmut$swap_sdw pxss$addevent pxss$delevent pxss$notify pxss$wait syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_vtocx error_table_$vtoce_free pds$processid pvt$n_vtoc_map_locks pvt$vtoc_map_lock_wait_constant stock_seg$ volmap_abs_seg$ CONSTANTS 002164 aa 777777777776 002165 aa 070 322 000 000 8Ò 002166 aa 000006000000 002167 aa 000000000000 002170 aa 600000000041 002171 aa 000112000000 002172 aa 600000000041 002173 aa 000361000000 002174 aa 600000000041 002175 aa 000360000000 002176 aa 000006000000 002177 aa 000000000000 002200 aa 600000000041 002201 aa 000112000000 002202 aa 600000000041 002203 aa 000361000000 002204 aa 600000000041 002205 aa 000103000000 002206 aa 000006000000 002207 aa 000000000000 002210 aa 600000000041 002211 aa 000112000000 002212 aa 600000000041 002213 aa 000360000000 002214 aa 600000000041 002215 aa 000361000000 002216 aa 000006000000 002217 aa 000000000000 002220 aa 600000000041 002221 aa 000112000000 002222 aa 600000000041 002223 aa 000360000000 002224 aa 600000000041 002225 aa 000103000000 002226 aa 000004000000 002227 aa 000000000000 002230 aa 600000000041 002231 aa 000112000000 002232 aa 600000000041 002233 aa 000360000000 002234 aa 000004000000 002235 aa 000000000000 002236 aa 600000000041 002237 aa 000111000000 002240 aa 600000000041 002241 aa 000360000000 002242 aa 000002000000 002243 aa 000000000000 002244 aa 600000000041 002245 aa 000112000000 000000 aa 524000000067 000001 aa 524000000073 000002 aa 524000000072 000003 aa 524000000075 000004 aa 524000000002 000005 aa 524000000004 000006 aa 524000000062 002246 aa 777777000000 002247 aa 000000000040 002250 aa 400000000000 000007 aa 000000000000 002251 aa 777777777777 000010 aa 514000000001 000011 aa 404000000043 000012 aa 000000000001 000013 aa 464000000000 000014 aa 404000000021 000016 aa 000000000000 000017 aa 000000000000 000020 aa 077777000043 000021 aa 000001000000 000022 aa 141 156 171 137 any_ 000023 aa 157 164 150 145 othe 000024 aa 162 000 000 000 r 000025 aa 166 164 157 143 vtoc 000026 aa 145 137 163 164 e_st 000027 aa 157 143 153 137 ock_ 000030 aa 155 141 156 072 man: 000031 aa 040 115 131 114 MYL 000032 aa 117 103 113 040 OCK 000033 aa 157 146 040 126 of V 000034 aa 124 117 103 040 TOC 000035 aa 115 141 160 040 Map 000036 aa 114 157 143 153 Lock 000037 aa 040 146 157 162 for 000040 aa 040 136 141 137 ^a_ 000041 aa 136 141 000 000 ^a 000042 aa 166 164 157 143 vtoc 000043 aa 145 137 163 164 e_st 000044 aa 157 143 153 137 ock_ 000045 aa 155 141 156 072 man: 000046 aa 040 126 124 117 VTO 000047 aa 103 105 040 163 CE s 000050 aa 164 157 143 153 tock 000051 aa 040 151 156 143 inc 000052 aa 157 156 163 151 onsi 000053 aa 163 164 145 156 sten 000054 aa 164 040 157 156 t on 000055 aa 040 136 141 137 ^a_ 000056 aa 136 141 000 000 ^a 000057 aa 166 164 157 143 vtoc 000060 aa 145 137 163 164 e_st 000061 aa 157 143 153 137 ock_ 000062 aa 155 141 156 072 man: 000063 aa 040 123 124 101 STA 000064 aa 103 121 040 146 CQ f 000065 aa 141 151 154 163 ails 000066 aa 040 146 157 162 for 000067 aa 040 126 124 117 VTO 000070 aa 103 040 115 141 C Ma 000071 aa 160 040 154 157 p lo 000072 aa 143 153 040 157 ck o 000073 aa 156 040 136 141 n ^a 000074 aa 137 136 141 000 _^a 000075 aa 166 164 157 143 vtoc 000076 aa 145 137 163 164 e_st 000077 aa 157 143 153 137 ock_ 000100 aa 155 141 156 072 man: 000101 aa 040 120 126 124 PVT 000102 aa 105 040 141 156 E an 000103 aa 144 040 126 124 d VT 000104 aa 117 103 105 040 OCE 000105 aa 163 164 157 143 stoc 000106 aa 153 040 157 165 k ou 000107 aa 164 055 157 146 t-of 000110 aa 055 163 171 156 -syn 000111 aa 143 150 040 157 ch o 000112 aa 156 040 136 141 n ^a 000113 aa 137 136 141 000 _^a 000114 aa 166 164 157 143 vtoc 000115 aa 145 137 163 164 e_st 000116 aa 157 143 153 137 ock_ 000117 aa 155 141 156 072 man: 000120 aa 040 101 164 164 Att 000121 aa 145 155 160 164 empt 000122 aa 040 164 157 040 to 000123 aa 144 145 160 157 depo 000124 aa 163 151 164 040 sit 000125 aa 146 162 145 145 free 000126 aa 040 166 164 157 vto 000127 aa 143 170 040 136 cx ^ 000130 aa 157 040 157 156 o on 000131 aa 040 136 141 137 ^a_ 000132 aa 136 141 000 000 ^a 000133 aa 166 164 157 143 vtoc 000134 aa 145 137 163 164 e_st 000135 aa 157 143 153 137 ock_ 000136 aa 155 141 156 072 man: 000137 aa 040 101 164 164 Att 000140 aa 145 155 160 164 empt 000141 aa 040 164 157 040 to 000142 aa 144 145 160 157 depo 000143 aa 163 151 164 040 sit 000144 aa 151 156 166 141 inva 000145 aa 154 151 144 040 lid 000146 aa 166 164 157 143 vtoc 000147 aa 170 040 136 157 x ^o 000150 aa 040 157 156 040 on 000151 aa 136 141 137 136 ^a_^ 000152 aa 141 000 000 000 a BEGIN PROCEDURE vtoce_stock_man$get_free_vtoce ENTRY TO vtoce_stock_man$get_free_vtoce STATEMENT 1 ON LINE 8 vtoce_stock_man$get_free_vtoce: proc (Pvtep, Vtocx); 000153 at 000002000013 000154 ta 000014000000 000155 ta 000153000000 000156 da 000175300000 000157 aa 000600 6270 00 eax7 384 000160 aa 7 00034 3521 20 epp2 pr7|28,* 000161 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000162 aa 000004000000 000163 aa 000000000000 STATEMENT 1 ON LINE 113 pvtep = Pvtep; 000164 aa 6 00032 3735 20 epp7 pr6|26,* 000165 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 000166 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 000167 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 115 call SETUP_LOCK; 000170 aa 6 00056 6211 00 eax1 pr6|46 000171 aa 000000 4310 07 fld 0,dl 000172 aa 001344 3520 04 epp2 740,ic 001536 = 000160627000 000173 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 117 stock_seg.meters.get_free_vtoce_calls = stock_seg.meters.get_free_vtoce_calls + 1; 000174 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 000175 aa 7 00042 2351 00 lda pr7|34 stock_seg.get_free_vtoce_calls 000176 aa 000044 7330 00 lrs 36 000177 aa 000001 0330 07 adl 1,dl 000200 aa 7 00042 7561 00 stq pr7|34 stock_seg.get_free_vtoce_calls STATEMENT 1 ON LINE 119 vtocx = -1; 000201 aa 000001 3360 07 lcq 1,dl 000202 aa 6 00112 7561 00 stq pr6|74 vtocx STATEMENT 1 ON LINE 121 vtocx = WITHDRAW_FROM_STOCK (); 000203 aa 002037 3520 04 epp2 1055,ic 002242 = 000002000000 000204 aa 001032 6700 04 tsp4 538,ic 001236 STATEMENT 1 ON LINE 123 if vtocx = -1 & pvte.n_free_vtoce > 0 then do; 000205 aa 6 00112 2361 00 ldq pr6|74 vtocx 000206 aa 002043 1160 04 cmpq 1059,ic 002251 = 777777777777 000207 aa 000131 6010 04 tnz 89,ic 000340 000210 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 000211 aa 7 00005 2351 00 lda pr7|5 pvte.n_free_vtoce 000212 aa 000066 7330 00 lrs 54 000213 aa 000125 6044 04 tmoz 85,ic 000340 STATEMENT 1 ON LINE 126 call SETUP_ABS_SEG; 000214 aa 001675 6700 04 tsp4 957,ic 002111 STATEMENT 1 ON LINE 128 last_index, wordx = vtoce_stock.search_index; 000215 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000216 aa 7 00002 2361 00 ldq pr7|2 vtoce_stock.search_index 000217 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000220 aa 6 00102 7561 00 stq pr6|66 last_index 000221 aa 6 00113 7561 00 stq pr6|75 wordx STATEMENT 1 ON LINE 129 done_map = "0"b; 000222 aa 6 00104 4501 00 stz pr6|68 done_map STATEMENT 1 ON LINE 130 do while (^done_map); 000223 aa 000000 0110 03 nop 0,du 000224 aa 6 00104 2351 00 lda pr6|68 done_map 000225 aa 000107 6010 04 tnz 71,ic 000334 STATEMENT 1 ON LINE 132 BIT_MAP_RETRY: if vtoc_map.bit_map (wordx) ^= ""b then do; 000226 aa 6 00113 7271 00 lxl7 pr6|75 wordx 000227 aa 6 00122 3735 20 epp7 pr6|82,* vtoc_mapp 000230 aa 7 00010 2351 17 lda pr7|8,7 vtoc_map.bit_map 000231 aa 000052 6000 04 tze 42,ic 000303 STATEMENT 1 ON LINE 135 bit_map_wordp = addr (vtoc_map.bit_map (wordx)); 000232 aa 7 00010 3715 17 epp5 pr7|8,7 vtoc_map.bit_map 000233 aa 6 00124 6515 00 spri5 pr6|84 bit_map_wordp STATEMENT 1 ON LINE 136 if bit_map_word.bits ^= ""b then do; 000234 aa 5 00000 2351 00 lda pr5|0 bit_map_word.bits 000235 aa 000001 7350 00 als 1 000236 aa 0 00100 3771 00 anaq pr0|64 = 777777777760 000000000000 000237 aa 000044 6000 04 tze 36,ic 000303 STATEMENT 1 ON LINE 137 last_index = wordx; 000240 aa 6 00113 2361 00 ldq pr6|75 wordx 000241 aa 6 00102 7561 00 stq pr6|66 last_index STATEMENT 1 ON LINE 138 bitx = index (bit_map_word.bits, "1"b); 000242 aa 6 00360 7551 00 sta pr6|240 bit_map_word.bits 000243 aa 400000 2350 03 lda 131072,du 000244 aa 000040 2360 07 ldq 32,dl 000245 aa 6 00360 3521 00 epp2 pr6|240 bit_map_word.bits 000246 aa 0 01234 7001 00 tsx0 pr0|668 index_bs_1_eis 000247 aa 6 00100 7561 00 stq pr6|64 bitx STATEMENT 1 ON LINE 139 substr (bit_map_word.bits, bitx, 1) = "0"b; 000250 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 000251 aa 000000 00 0000 descb 0,0 000252 aa 5 00000 00 0001 descb pr5|0,1 bit_map_word.bits STATEMENT 1 ON LINE 140 this_vtocx = 32 * wordx + bitx - 1; 000253 aa 6 00113 2361 00 ldq pr6|75 wordx 000254 aa 000005 7360 00 qls 5 000255 aa 6 00100 0761 00 adq pr6|64 bitx 000256 aa 000001 1760 07 sbq 1,dl 000257 aa 6 00111 7561 00 stq pr6|73 this_vtocx STATEMENT 1 ON LINE 141 if vtocx = -1 /* Haven't gotten one to return yet */ then vtocx = this_vtocx; 000260 aa 6 00112 2361 00 ldq pr6|74 vtocx 000261 aa 001770 1160 04 cmpq 1016,ic 002251 = 777777777777 000262 aa 000004 6010 04 tnz 4,ic 000266 000263 aa 6 00111 2361 00 ldq pr6|73 this_vtocx 000264 aa 6 00112 7561 00 stq pr6|74 vtocx 000265 aa 000006 7100 04 tra 6,ic 000273 STATEMENT 1 ON LINE 143 else dummy = DEPOSIT_TO_STOCK (this_vtocx); 000266 aa 001746 3520 04 epp2 998,ic 002234 = 000004000000 000267 aa 000602 6700 04 tsp4 386,ic 001071 000270 aa 6 00360 2351 00 lda pr6|240 000271 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 000272 aa 6 00105 7551 00 sta pr6|69 dummy STATEMENT 1 ON LINE 144 if vtoce_stock.n_free_in_stock < vtoce_stock.target then goto BIT_MAP_RETRY; 000273 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000274 aa 7 00002 2351 00 lda pr7|2 vtoce_stock.target 000275 aa 000066 7730 00 lrl 54 000276 aa 6 00360 7561 00 stq pr6|240 vtoce_stock.target 000277 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 000300 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000301 aa 6 00360 1161 00 cmpq pr6|240 vtoce_stock.target 000302 aa 777724 6040 04 tmi -44,ic 000226 STATEMENT 1 ON LINE 146 end; STATEMENT 1 ON LINE 147 end; STATEMENT 1 ON LINE 149 wordx = wordx + 1; 000303 aa 6 00113 0541 00 aos pr6|75 wordx STATEMENT 1 ON LINE 150 if wordx >= vtoc_map.bit_map_n_words then wordx = 0; 000304 aa 6 00113 2361 00 ldq pr6|75 wordx 000305 aa 6 00122 3735 20 epp7 pr6|82,* vtoc_mapp 000306 aa 7 00002 1161 00 cmpq pr7|2 vtoc_map.bit_map_n_words 000307 aa 000002 6040 04 tmi 2,ic 000311 000310 aa 6 00113 4501 00 stz pr6|75 wordx STATEMENT 1 ON LINE 152 if (wordx = vtoce_stock.search_index) /* Wrapped */ | (vtoce_stock.n_free_in_stock >= vtoce_stock.target) | (pvte.n_free_vtoce <= 0) then done_map = "1"b; 000311 aa 6 00120 3715 20 epp5 pr6|80,* vtoce_stockp 000312 aa 5 00002 2361 00 ldq pr5|2 vtoce_stock.search_index 000313 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000314 aa 6 00113 1161 00 cmpq pr6|75 wordx 000315 aa 000014 6000 04 tze 12,ic 000331 000316 aa 5 00002 2351 00 lda pr5|2 vtoce_stock.target 000317 aa 000066 7730 00 lrl 54 000320 aa 6 00360 7561 00 stq pr6|240 vtoce_stock.target 000321 aa 5 00001 2361 00 ldq pr5|1 vtoce_stock.n_free_in_stock 000322 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000323 aa 6 00360 1161 00 cmpq pr6|240 vtoce_stock.target 000324 aa 000005 6050 04 tpl 5,ic 000331 000325 aa 6 00114 3535 20 epp3 pr6|76,* pvtep 000326 aa 3 00005 2351 00 lda pr3|5 pvte.n_free_vtoce 000327 aa 000066 7330 00 lrs 54 000330 aa 777674 6054 04 tpnz -68,ic 000224 000331 aa 400000 2350 03 lda 131072,du 000332 aa 6 00104 7551 00 sta pr6|68 done_map STATEMENT 1 ON LINE 158 end; 000333 aa 777671 7100 04 tra -71,ic 000224 STATEMENT 1 ON LINE 160 vtoce_stock.search_index = last_index; 000334 aa 6 00102 2361 00 ldq pr6|66 last_index 000335 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000336 aa 7 00002 5521 14 stbq pr7|2,14 vtoce_stock.search_index STATEMENT 1 ON LINE 162 call RESET_ABS_SEG; 000337 aa 001602 6700 04 tsp4 898,ic 002141 STATEMENT 1 ON LINE 163 end; STATEMENT 1 ON LINE 165 if vtocx ^= -1 then pvte.n_free_vtoce = pvte.n_free_vtoce - 1; 000340 aa 6 00112 2361 00 ldq pr6|74 vtocx 000341 aa 001710 1160 04 cmpq 968,ic 002251 = 777777777777 000342 aa 000007 6000 04 tze 7,ic 000351 000343 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 000344 aa 7 00005 2351 00 lda pr7|5 pvte.n_free_vtoce 000345 aa 000066 7330 00 lrs 54 000346 aa 000001 1760 07 sbq 1,dl 000347 aa 000066 7370 00 lls 54 000350 aa 7 00005 5511 60 stba pr7|5,60 pvte.n_free_vtoce STATEMENT 1 ON LINE 167 call UNLOCK; 000351 aa 001440 6700 04 tsp4 800,ic 002011 STATEMENT 1 ON LINE 169 Vtocx = vtocx; 000352 aa 6 00112 2361 00 ldq pr6|74 vtocx 000353 aa 6 00032 3735 20 epp7 pr6|26,* 000354 aa 7 00004 7561 20 stq pr7|4,* Vtocx STATEMENT 1 ON LINE 171 return; 000355 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO return_free_vtoce STATEMENT 1 ON LINE 180 return_free_vtoce: entry (Pvtep, Vtocx); 000356 ta 000153000000 000357 da 000205300000 000360 aa 000600 6270 00 eax7 384 000361 aa 7 00034 3521 20 epp2 pr7|28,* 000362 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000363 aa 000004000000 000364 aa 000000000000 STATEMENT 1 ON LINE 183 pvtep = Pvtep; 000365 aa 6 00032 3735 20 epp7 pr6|26,* 000366 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 000367 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 000370 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 184 vtocx = Vtocx; 000371 aa 7 00004 2361 20 ldq pr7|4,* Vtocx 000372 aa 6 00112 7561 00 stq pr6|74 vtocx STATEMENT 1 ON LINE 186 call SETUP_LOCK; 000373 aa 6 00056 6211 00 eax1 pr6|46 000374 aa 000000 4310 07 fld 0,dl 000375 aa 001141 3520 04 epp2 609,ic 001536 = 000160627000 000376 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 188 stock_seg.meters.return_free_vtoce_call = stock_seg.meters.return_free_vtoce_call + 1; 000377 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 000400 aa 7 00043 2351 00 lda pr7|35 stock_seg.return_free_vtoce_call 000401 aa 000044 7330 00 lrs 36 000402 aa 000001 0330 07 adl 1,dl 000403 aa 7 00043 7561 00 stq pr7|35 stock_seg.return_free_vtoce_call STATEMENT 1 ON LINE 189 deposited = "1"b; 000404 aa 400000 2350 03 lda 131072,du 000405 aa 6 00103 7551 00 sta pr6|67 deposited STATEMENT 1 ON LINE 193 if ^DEPOSIT_TO_STOCK (vtocx) then do; 000406 aa 001620 3520 04 epp2 912,ic 002226 = 000004000000 000407 aa 000462 6700 04 tsp4 306,ic 001071 000410 aa 6 00360 2351 00 lda pr6|240 000411 aa 400000 3150 03 cana 131072,du 000412 aa 000043 6010 04 tnz 35,ic 000455 STATEMENT 1 ON LINE 197 call SETUP_ABS_SEG; 000413 aa 001476 6700 04 tsp4 830,ic 002111 STATEMENT 1 ON LINE 198 call DEPOSIT_TO_MAP (vtocx, "1"b, deposited); 000414 aa 400000 2350 03 lda 131072,du 000415 aa 6 00360 7551 00 sta pr6|240 000416 aa 001600 3520 04 epp2 896,ic 002216 = 000006000000 000417 aa 000711 6700 04 tsp4 457,ic 001330 STATEMENT 1 ON LINE 200 if vtoce_stock.n_free_in_stock > vtoce_stock.target /* Excess in stock */ then do while (vtoce_stock.n_free_in_stock > vtoce_stock.target); 000420 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000421 aa 7 00002 2351 00 lda pr7|2 vtoce_stock.target 000422 aa 000066 7730 00 lrl 54 000423 aa 6 00360 7561 00 stq pr6|240 vtoce_stock.target 000424 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 000425 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000426 aa 6 00360 1161 00 cmpq pr6|240 vtoce_stock.target 000427 aa 000025 6044 04 tmoz 21,ic 000454 000430 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000431 aa 7 00002 2351 00 lda pr7|2 vtoce_stock.target 000432 aa 000066 7730 00 lrl 54 000433 aa 6 00360 7561 00 stq pr6|240 vtoce_stock.target 000434 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 000435 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000436 aa 6 00360 1161 00 cmpq pr6|240 vtoce_stock.target 000437 aa 000015 6044 04 tmoz 13,ic 000454 STATEMENT 1 ON LINE 202 vtocx = WITHDRAW_FROM_STOCK (); 000440 aa 001602 3520 04 epp2 898,ic 002242 = 000002000000 000441 aa 000575 6700 04 tsp4 381,ic 001236 STATEMENT 1 ON LINE 203 if vtocx ^= -1 then call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 000442 aa 6 00112 2361 00 ldq pr6|74 vtocx 000443 aa 001606 1160 04 cmpq 902,ic 002251 = 777777777777 000444 aa 777764 6000 04 tze -12,ic 000430 000445 aa 400000 2350 03 lda 131072,du 000446 aa 6 00360 7551 00 sta pr6|240 000447 aa 000000 2350 07 lda 0,dl 000450 aa 6 00361 7551 00 sta pr6|241 000451 aa 001535 3520 04 epp2 861,ic 002206 = 000006000000 000452 aa 000656 6700 04 tsp4 430,ic 001330 STATEMENT 1 ON LINE 204 end; 000453 aa 777755 7100 04 tra -19,ic 000430 STATEMENT 1 ON LINE 206 call RESET_ABS_SEG; 000454 aa 001465 6700 04 tsp4 821,ic 002141 STATEMENT 1 ON LINE 208 end; STATEMENT 1 ON LINE 210 if deposited then pvte.n_free_vtoce = pvte.n_free_vtoce + 1; 000455 aa 6 00103 2351 00 lda pr6|67 deposited 000456 aa 400000 3150 03 cana 131072,du 000457 aa 000007 6000 04 tze 7,ic 000466 000460 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 000461 aa 7 00005 2351 00 lda pr7|5 pvte.n_free_vtoce 000462 aa 000066 7330 00 lrs 54 000463 aa 000001 0760 07 adq 1,dl 000464 aa 000066 7370 00 lls 54 000465 aa 7 00005 5511 60 stba pr7|5,60 pvte.n_free_vtoce STATEMENT 1 ON LINE 213 call UNLOCK; 000466 aa 001323 6700 04 tsp4 723,ic 002011 STATEMENT 1 ON LINE 215 return; 000467 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO return_if_not_free STATEMENT 1 ON LINE 224 return_if_not_free: entry (Pvtep, Vtocx, Code); 000470 at 000003000013 000471 tt 000014000011 000472 ta 000470000000 000473 da 000215300000 000474 aa 000600 6270 00 eax7 384 000475 aa 7 00034 3521 20 epp2 pr7|28,* 000476 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000477 aa 000006000000 000500 aa 000000000000 STATEMENT 1 ON LINE 227 pvtep = Pvtep; 000501 aa 6 00032 3735 20 epp7 pr6|26,* 000502 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 000503 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 000504 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 228 vtocx = Vtocx; 000505 aa 7 00004 2361 20 ldq pr7|4,* Vtocx 000506 aa 6 00112 7561 00 stq pr6|74 vtocx STATEMENT 1 ON LINE 230 call SETUP_LOCK; 000507 aa 6 00056 6211 00 eax1 pr6|46 000510 aa 000000 4310 07 fld 0,dl 000511 aa 001025 3520 04 epp2 533,ic 001536 = 000160627000 000512 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 231 code = error_table_$vtoce_free; 000513 aa 6 00044 3701 20 epp4 pr6|36,* 000514 la 4 00012 2361 20 ldq pr4|10,* error_table_$vtoce_free 000515 aa 6 00101 7561 00 stq pr6|65 code STATEMENT 1 ON LINE 233 do stockx = 1 to vtoce_stock.n_in_stock; 000516 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000517 aa 7 00001 2351 00 lda pr7|1 vtoce_stock.n_in_stock 000520 aa 000066 7730 00 lrl 54 000521 aa 6 00126 7561 00 stq pr6|86 000522 aa 000001 2360 07 ldq 1,dl 000523 aa 6 00110 7561 00 stq pr6|72 stockx 000524 aa 6 00110 2361 00 ldq pr6|72 stockx 000525 aa 6 00126 1161 00 cmpq pr6|86 000526 aa 000014 6054 04 tpnz 12,ic 000542 STATEMENT 1 ON LINE 234 if vtoce_stock.stock (stockx) = vtocx then goto ALREADY_FREE; 000527 aa 000022 4020 07 mpy 18,dl 000530 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000531 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000532 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock 000533 aa 6 00056 00 0044 descb pr6|46,36 000534 aa 6 00056 2351 00 lda pr6|46 000535 aa 000066 7330 00 lrs 54 000536 aa 6 00112 1161 00 cmpq pr6|74 vtocx 000537 aa 000023 6000 04 tze 19,ic 000562 STATEMENT 1 ON LINE 236 end; 000540 aa 6 00110 0541 00 aos pr6|72 stockx 000541 aa 777763 7100 04 tra -13,ic 000524 STATEMENT 1 ON LINE 238 call SETUP_ABS_SEG; 000542 aa 001347 6700 04 tsp4 743,ic 002111 STATEMENT 1 ON LINE 240 call DEPOSIT_TO_MAP (vtocx, "0"b, deposited); 000543 aa 000000 2350 07 lda 0,dl 000544 aa 6 00361 7551 00 sta pr6|241 000545 aa 001431 3520 04 epp2 793,ic 002176 = 000006000000 000546 aa 000562 6700 04 tsp4 370,ic 001330 STATEMENT 1 ON LINE 241 if deposited then do; 000547 aa 6 00103 2351 00 lda pr6|67 deposited 000550 aa 400000 3150 03 cana 131072,du 000551 aa 000010 6000 04 tze 8,ic 000561 STATEMENT 1 ON LINE 243 pvte.n_free_vtoce = pvte.n_free_vtoce + 1; 000552 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 000553 aa 7 00005 2351 00 lda pr7|5 pvte.n_free_vtoce 000554 aa 000066 7330 00 lrs 54 000555 aa 000001 0760 07 adq 1,dl 000556 aa 000066 7370 00 lls 54 000557 aa 7 00005 5511 60 stba pr7|5,60 pvte.n_free_vtoce STATEMENT 1 ON LINE 244 code = 0; 000560 aa 6 00101 4501 00 stz pr6|65 code STATEMENT 1 ON LINE 245 end; STATEMENT 1 ON LINE 247 call RESET_ABS_SEG; 000561 aa 001360 6700 04 tsp4 752,ic 002141 STATEMENT 1 ON LINE 249 ALREADY_FREE: call UNLOCK; 000562 aa 001227 6700 04 tsp4 663,ic 002011 STATEMENT 1 ON LINE 253 Code = code; 000563 aa 6 00101 2361 00 ldq pr6|65 code 000564 aa 6 00032 3735 20 epp7 pr6|26,* 000565 aa 7 00006 7561 20 stq pr7|6,* Code STATEMENT 1 ON LINE 255 return; 000566 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO check_in_use STATEMENT 1 ON LINE 266 check_in_use: entry (Pvtep, Vtocx, Code); 000567 ta 000470000000 000570 da 000224300000 000571 aa 000600 6270 00 eax7 384 000572 aa 7 00034 3521 20 epp2 pr7|28,* 000573 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000574 aa 000006000000 000575 aa 000000000000 STATEMENT 1 ON LINE 269 pvtep = Pvtep; 000576 aa 6 00032 3735 20 epp7 pr6|26,* 000577 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 000600 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 000601 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 270 vtocx = Vtocx; 000602 aa 7 00004 2361 20 ldq pr7|4,* Vtocx 000603 aa 6 00112 7561 00 stq pr6|74 vtocx STATEMENT 1 ON LINE 272 call SETUP_LOCK; 000604 aa 6 00056 6211 00 eax1 pr6|46 000605 aa 000000 4310 07 fld 0,dl 000606 aa 000730 3520 04 epp2 472,ic 001536 = 000160627000 000607 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 273 code = error_table_$vtoce_free; 000610 aa 6 00044 3701 20 epp4 pr6|36,* 000611 la 4 00012 2361 20 ldq pr4|10,* error_table_$vtoce_free 000612 aa 6 00101 7561 00 stq pr6|65 code STATEMENT 1 ON LINE 275 do stockx = 1 to vtoce_stock.n_in_stock; 000613 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000614 aa 7 00001 2351 00 lda pr7|1 vtoce_stock.n_in_stock 000615 aa 000066 7730 00 lrl 54 000616 aa 6 00150 7561 00 stq pr6|104 000617 aa 000001 2360 07 ldq 1,dl 000620 aa 6 00110 7561 00 stq pr6|72 stockx 000621 aa 000000 0110 03 nop 0,du 000622 aa 6 00110 2361 00 ldq pr6|72 stockx 000623 aa 6 00150 1161 00 cmpq pr6|104 000624 aa 000014 6054 04 tpnz 12,ic 000640 STATEMENT 1 ON LINE 276 if vtoce_stock.stock (stockx) = vtocx then goto CHECK_IS_FREE; 000625 aa 000022 4020 07 mpy 18,dl 000626 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000627 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000630 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock 000631 aa 6 00056 00 0044 descb pr6|46,36 000632 aa 6 00056 2351 00 lda pr6|46 000633 aa 000066 7330 00 lrs 54 000634 aa 6 00112 1161 00 cmpq pr6|74 vtocx 000635 aa 000036 6000 04 tze 30,ic 000673 STATEMENT 1 ON LINE 278 end; 000636 aa 6 00110 0541 00 aos pr6|72 stockx 000637 aa 777763 7100 04 tra -13,ic 000622 STATEMENT 1 ON LINE 280 call SETUP_ABS_SEG; 000640 aa 001251 6700 04 tsp4 681,ic 002111 STATEMENT 1 ON LINE 282 wordx = divide (vtocx, 32, 17); 000641 aa 6 00112 2361 00 ldq pr6|74 vtocx 000642 aa 000040 5060 07 div 32,dl 000643 aa 6 00113 7561 00 stq pr6|75 wordx STATEMENT 1 ON LINE 283 bitx = mod (vtocx, 32) + 1; 000644 aa 6 00112 2361 00 ldq pr6|74 vtocx 000645 aa 001402 3520 04 epp2 770,ic 002247 = 000000000040 000646 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 000647 aa 000001 0760 07 adq 1,dl 000650 aa 6 00100 7561 00 stq pr6|64 bitx STATEMENT 1 ON LINE 284 if wordx < 0 | wordx >= vtoc_map.bit_map_n_words then do; 000651 aa 6 00113 2361 00 ldq pr6|75 wordx 000652 aa 000004 6040 04 tmi 4,ic 000656 000653 aa 6 00122 3735 20 epp7 pr6|82,* vtoc_mapp 000654 aa 7 00002 1161 00 cmpq pr7|2 vtoc_map.bit_map_n_words 000655 aa 000005 6040 04 tmi 5,ic 000662 STATEMENT 1 ON LINE 286 code = error_table_$invalid_vtocx; 000656 aa 6 00044 3701 20 epp4 pr6|36,* 000657 la 4 00010 2361 20 ldq pr4|8,* error_table_$invalid_vtocx 000660 aa 6 00101 7561 00 stq pr6|65 code STATEMENT 1 ON LINE 287 goto CHECK_RESET; 000661 aa 000011 7100 04 tra 9,ic 000672 STATEMENT 1 ON LINE 288 end; STATEMENT 1 ON LINE 289 bit_map_wordp = addr (vtoc_map.bit_map (wordx)); 000662 aa 7 00010 3715 06 epp5 pr7|8,ql vtoc_map.bit_map 000663 aa 6 00124 6515 00 spri5 pr6|84 bit_map_wordp STATEMENT 1 ON LINE 290 if substr (bit_map_word.bits, bitx, 1) = "1"b then goto CHECK_RESET; 000664 aa 6 00100 7271 00 lxl7 pr6|64 bitx 000665 aa 000 004 066 517 cmpb (pr,x7),(ic),fill(0) 000666 aa 5 00000 00 0001 descb pr5|0,1 bit_map_word.bits 000667 aa 001363 00 0001 descb 755,1 002250 = 400000000000 000670 aa 000002 6000 04 tze 2,ic 000672 STATEMENT 1 ON LINE 293 code = 0; 000671 aa 6 00101 4501 00 stz pr6|65 code STATEMENT 1 ON LINE 295 CHECK_RESET: call RESET_ABS_SEG; 000672 aa 001247 6700 04 tsp4 679,ic 002141 STATEMENT 1 ON LINE 298 CHECK_IS_FREE: call UNLOCK; 000673 aa 001116 6700 04 tsp4 590,ic 002011 STATEMENT 1 ON LINE 302 Code = code; 000674 aa 6 00101 2361 00 ldq pr6|65 code 000675 aa 6 00032 3735 20 epp7 pr6|26,* 000676 aa 7 00006 7561 20 stq pr7|6,* Code STATEMENT 1 ON LINE 304 return; 000677 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO drain_stock_range STATEMENT 1 ON LINE 315 drain_stock_range: entry (Pvtep, Low_vtocx, High_vtocx); 000700 at 000003000013 000701 tt 000014000014 000702 ta 000700000000 000703 da 000234300000 000704 aa 000600 6270 00 eax7 384 000705 aa 7 00034 3521 20 epp2 pr7|28,* 000706 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000707 aa 000006000000 000710 aa 000000000000 STATEMENT 1 ON LINE 318 pvtep = Pvtep; 000711 aa 6 00032 3735 20 epp7 pr6|26,* 000712 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 000713 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 000714 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 319 low_vtocx = Low_vtocx; 000715 aa 7 00004 2361 20 ldq pr7|4,* Low_vtocx 000716 aa 6 00106 7561 00 stq pr6|70 low_vtocx STATEMENT 1 ON LINE 320 high_vtocx = High_vtocx; 000717 aa 7 00006 2361 20 ldq pr7|6,* High_vtocx 000720 aa 6 00107 7561 00 stq pr6|71 high_vtocx STATEMENT 1 ON LINE 323 call SETUP_LOCK; 000721 aa 6 00056 6211 00 eax1 pr6|46 000722 aa 000000 4310 07 fld 0,dl 000723 aa 000613 3520 04 epp2 395,ic 001536 = 000160627000 000724 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 325 call SETUP_ABS_SEG; 000725 aa 001164 6700 04 tsp4 628,ic 002111 STATEMENT 1 ON LINE 327 do stockx = 1 to vtoce_stock.n_in_stock; 000726 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000727 aa 7 00001 2351 00 lda pr7|1 vtoce_stock.n_in_stock 000730 aa 000066 7730 00 lrl 54 000731 aa 6 00172 7561 00 stq pr6|122 000732 aa 000001 2360 07 ldq 1,dl 000733 aa 6 00110 7561 00 stq pr6|72 stockx 000734 aa 6 00110 2361 00 ldq pr6|72 stockx 000735 aa 6 00172 1161 00 cmpq pr6|122 000736 aa 000040 6054 04 tpnz 32,ic 000776 STATEMENT 1 ON LINE 328 if vtoce_stock.stock (stockx) ^= -1 then if vtoce_stock.stock (stockx) >= low_vtocx & vtoce_stock.stock (stockx) <= high_vtocx then do; 000737 aa 000022 4020 07 mpy 18,dl 000740 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 000741 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 000742 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock 000743 aa 6 00056 00 0044 descb pr6|46,36 000744 aa 6 00056 2351 00 lda pr6|46 000745 aa 6 00361 7561 00 stq pr6|241 000746 aa 000066 7330 00 lrs 54 000747 aa 001302 1160 04 cmpq 706,ic 002251 = 777777777777 000750 aa 000024 6000 04 tze 20,ic 000774 000751 aa 6 00106 1161 00 cmpq pr6|70 low_vtocx 000752 aa 000022 6040 04 tmi 18,ic 000774 000753 aa 6 00107 1161 00 cmpq pr6|71 high_vtocx 000754 aa 000020 6054 04 tpnz 16,ic 000774 STATEMENT 1 ON LINE 332 vtocx = vtoce_stock.stock (stockx); 000755 aa 6 00112 7561 00 stq pr6|74 vtocx STATEMENT 1 ON LINE 333 vtoce_stock.stock (stockx) = -1; 000756 aa 6 00361 2351 00 lda pr6|241 000757 aa 003 105 060 404 csl (ic),(pr,al),fill(0),bool(move) 000760 aa 001267 00 0022 descb 695,18 002246 = 777777000000 000761 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock STATEMENT 1 ON LINE 334 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock - 1; 000762 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 000763 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000764 aa 000001 1760 07 sbq 1,dl 000765 aa 7 00001 5521 14 stbq pr7|1,14 vtoce_stock.n_free_in_stock STATEMENT 1 ON LINE 335 call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 000766 aa 400000 2350 03 lda 131072,du 000767 aa 6 00361 7551 00 sta pr6|241 000770 aa 000000 2350 07 lda 0,dl 000771 aa 6 00360 7551 00 sta pr6|240 000772 aa 001174 3520 04 epp2 636,ic 002166 = 000006000000 000773 aa 000335 6700 04 tsp4 221,ic 001330 STATEMENT 1 ON LINE 336 end; STATEMENT 1 ON LINE 337 end; 000774 aa 6 00110 0541 00 aos pr6|72 stockx 000775 aa 777737 7100 04 tra -33,ic 000734 STATEMENT 1 ON LINE 339 call RESET_ABS_SEG; 000776 aa 001143 6700 04 tsp4 611,ic 002141 STATEMENT 1 ON LINE 341 call UNLOCK; 000777 aa 001012 6700 04 tsp4 522,ic 002011 STATEMENT 1 ON LINE 343 return; 001000 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO drain_stock STATEMENT 1 ON LINE 355 drain_stock: entry (Pvtep); 001001 at 000001000013 001002 ta 001001000000 001003 da 000242300000 001004 aa 000600 6270 00 eax7 384 001005 aa 7 00034 3521 20 epp2 pr7|28,* 001006 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001007 aa 000002000000 001010 aa 000000000000 STATEMENT 1 ON LINE 358 pvtep = Pvtep; 001011 aa 6 00032 3735 20 epp7 pr6|26,* 001012 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 001013 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 001014 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 360 call SETUP_LOCK; 001015 aa 6 00056 6211 00 eax1 pr6|46 001016 aa 000000 4310 07 fld 0,dl 001017 aa 000517 3520 04 epp2 335,ic 001536 = 000160627000 001020 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 361 vtoc_mapp = ptr (addr (volmap_abs_seg$), pvte.vtoc_map_offset); 001021 aa 6 00044 3701 20 epp4 pr6|36,* 001022 la 4 00022 3735 20 epp7 pr4|18,* volmap_abs_seg$ 001023 aa 6 00114 3715 20 epp5 pr6|76,* pvtep 001024 aa 5 00025 2351 00 lda pr5|21 pvte.vtoc_map_offset 001025 aa 000022 7350 00 als 18 001026 aa 7 00000 3521 00 epp2 pr7|0 001027 aa 000000 3120 01 eawp2 0,au 001030 aa 6 00122 2521 00 spri2 pr6|82 vtoc_mapp STATEMENT 1 ON LINE 363 vtoce_stock.target = 0; 001031 aa 000000 2350 07 lda 0,dl 001032 aa 6 00120 3535 20 epp3 pr6|80,* vtoce_stockp 001033 aa 3 00002 5511 60 stba pr3|2,60 vtoce_stock.target STATEMENT 1 ON LINE 364 do while (vtoce_stock.n_free_in_stock > 0); 001034 aa 6 00362 6535 00 spri7 pr6|242 001035 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 001036 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 001037 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001040 aa 000012 6044 04 tmoz 10,ic 001052 STATEMENT 1 ON LINE 365 vtocx = WITHDRAW_FROM_STOCK (); 001041 aa 001201 3520 04 epp2 641,ic 002242 = 000002000000 001042 aa 000174 6700 04 tsp4 124,ic 001236 STATEMENT 1 ON LINE 366 call DEPOSIT_TO_MAP (vtocx, "1"b, ("0"b)); 001043 aa 400000 2350 03 lda 131072,du 001044 aa 6 00360 7551 00 sta pr6|240 001045 aa 000000 2350 07 lda 0,dl 001046 aa 6 00361 7551 00 sta pr6|241 001047 aa 001137 3520 04 epp2 607,ic 002206 = 000006000000 001050 aa 000260 6700 04 tsp4 176,ic 001330 STATEMENT 1 ON LINE 367 end; 001051 aa 777763 7100 04 tra -13,ic 001034 STATEMENT 1 ON LINE 369 call UNLOCK; 001052 aa 000737 6700 04 tsp4 479,ic 002011 STATEMENT 1 ON LINE 371 return; 001053 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO force_unlock STATEMENT 1 ON LINE 378 force_unlock: entry (Pvtep); 001054 ta 001001000000 001055 da 000251300000 001056 aa 000600 6270 00 eax7 384 001057 aa 7 00034 3521 20 epp2 pr7|28,* 001060 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001061 aa 000002000000 001062 aa 000000000000 STATEMENT 1 ON LINE 381 pvtep = Pvtep; 001063 aa 6 00032 3735 20 epp7 pr6|26,* 001064 aa 7 00002 3715 20 epp5 pr7|2,* Pvtep 001065 aa 5 00000 3715 20 epp5 pr5|0,* Pvtep 001066 aa 6 00114 6515 00 spri5 pr6|76 pvtep STATEMENT 1 ON LINE 383 call UNLOCK; 001067 aa 000722 6700 04 tsp4 466,ic 002011 STATEMENT 1 ON LINE 385 return; 001070 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 685 end vtoce_stock_man$get_free_vtoce; BEGIN PROCEDURE DEPOSIT_TO_STOCK ENTRY TO DEPOSIT_TO_STOCK STATEMENT 1 ON LINE 390 DEPOSIT_TO_STOCK: proc (vtocx) returns (bit (1) aligned); 001071 aa 6 00214 6501 00 spri4 pr6|140 001072 aa 6 00216 2521 00 spri2 pr6|142 STATEMENT 1 ON LINE 399 stock_seg.meters.deposit_vstock_calls = stock_seg.meters.deposit_vstock_calls + 1; 001073 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 001074 aa 7 00044 2351 00 lda pr7|36 stock_seg.deposit_vstock_calls 001075 aa 000044 7330 00 lrs 36 001076 aa 000001 0330 07 adl 1,dl 001077 aa 7 00044 7561 00 stq pr7|36 stock_seg.deposit_vstock_calls STATEMENT 1 ON LINE 401 if vtoce_stock.n_free_in_stock >= vtoce_stock.n_in_stock then do; 001100 aa 6 00120 3715 20 epp5 pr6|80,* vtoce_stockp 001101 aa 5 00001 2351 00 lda pr5|1 vtoce_stock.n_in_stock 001102 aa 000066 7730 00 lrl 54 001103 aa 6 00364 7561 00 stq pr6|244 vtoce_stock.n_in_stock 001104 aa 5 00001 2361 00 ldq pr5|1 vtoce_stock.n_free_in_stock 001105 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001106 aa 6 00364 1161 00 cmpq pr6|244 vtoce_stock.n_in_stock 001107 aa 000007 6040 04 tmi 7,ic 001116 STATEMENT 1 ON LINE 403 stock_seg.meters.deposit_vstock_fails = stock_seg.meters.deposit_vstock_fails + 1; 001110 aa 7 00045 2351 00 lda pr7|37 stock_seg.deposit_vstock_fails 001111 aa 000044 7330 00 lrs 36 001112 aa 000001 0330 07 adl 1,dl 001113 aa 7 00045 7561 00 stq pr7|37 stock_seg.deposit_vstock_fails STATEMENT 1 ON LINE 404 return ("0"b); 001114 aa 2 00004 4501 20 stz pr2|4,* 001115 aa 6 00214 6101 00 rtcd pr6|140 STATEMENT 1 ON LINE 405 end; STATEMENT 1 ON LINE 408 found_empty = "0"b; 001116 aa 6 00222 4501 00 stz pr6|146 found_empty STATEMENT 1 ON LINE 409 do stockx = 1 to vtoce_stock.n_in_stock while (^found_empty); 001117 aa 6 00364 2361 00 ldq pr6|244 vtoce_stock.n_in_stock 001120 aa 6 00223 7561 00 stq pr6|147 001121 aa 000001 2360 07 ldq 1,dl 001122 aa 6 00110 7561 00 stq pr6|72 stockx 001123 aa 000000 0110 03 nop 0,du 001124 aa 6 00110 2361 00 ldq pr6|72 stockx 001125 aa 6 00223 1161 00 cmpq pr6|147 001126 aa 000035 6054 04 tpnz 29,ic 001163 001127 aa 6 00222 2351 00 lda pr6|146 found_empty 001130 aa 000033 6010 04 tnz 27,ic 001163 STATEMENT 1 ON LINE 410 if vtoce_stock.stock (stockx) = -1 then do; 001131 aa 000022 4020 07 mpy 18,dl 001132 aa 6 00364 7561 00 stq pr6|244 001133 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 001134 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 001135 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock 001136 aa 6 00056 00 0044 descb pr6|46,36 001137 aa 6 00056 2351 00 lda pr6|46 001140 aa 000066 7330 00 lrs 54 001141 aa 001110 1160 04 cmpq 584,ic 002251 = 777777777777 001142 aa 000017 6010 04 tnz 15,ic 001161 STATEMENT 1 ON LINE 412 found_empty = "1"b; 001143 aa 400000 2350 03 lda 131072,du 001144 aa 6 00222 7551 00 sta pr6|146 found_empty STATEMENT 1 ON LINE 413 vtoce_stock.stock (stockx) = vtocx; 001145 aa 6 00216 3715 20 epp5 pr6|142,* 001146 aa 5 00002 2361 20 ldq pr5|2,* vtocx 001147 aa 000066 7370 00 lls 54 001150 aa 6 00056 7551 00 sta pr6|46 001151 aa 6 00364 2351 00 lda pr6|244 001152 aa 003 105 060 500 csl (pr),(pr,al),fill(0),bool(move) 001153 aa 6 00056 00 0022 descb pr6|46,18 001154 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock STATEMENT 1 ON LINE 414 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock + 1; 001155 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 001156 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001157 aa 000001 0760 07 adq 1,dl 001160 aa 7 00001 5521 14 stbq pr7|1,14 vtoce_stock.n_free_in_stock STATEMENT 1 ON LINE 415 end; STATEMENT 1 ON LINE 416 end; 001161 aa 6 00110 0541 00 aos pr6|72 stockx 001162 aa 777742 7100 04 tra -30,ic 001124 STATEMENT 1 ON LINE 418 if ^found_empty then call syserr (CRASH, "vtoce_stock_man: VTOCE stock inconsistent on ^a_^a", pvte.devname, convert (p99, pvte.logical_area_number)); 001163 aa 6 00222 2351 00 lda pr6|146 found_empty 001164 aa 000046 6010 04 tnz 38,ic 001232 001165 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001166 aa 776655 00 0064 desc9a -595,52 000042 = 166164157143 001167 aa 6 00366 00 0064 desc9a pr6|246,52 001170 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 001171 aa 7 00004 2351 00 lda pr7|4 pvte.logical_area_number 001172 aa 000011 7350 00 als 9 001173 aa 000077 7330 00 lrs 63 001174 aa 6 00403 7561 00 stq pr6|259 pvte.logical_area_number 001175 aa 000 100 301 500 btd (pr),(pr) 001176 aa 6 00403 00 0004 desc9a pr6|259,4 pvte.logical_area_number 001177 aa 6 00364 01 0003 desc9ls pr6|244,3,0 001200 aa 6 00365 4501 00 stz pr6|245 001201 aa 100 004 024 500 mvne (pr),(ic),(pr) 001202 aa 6 00364 01 0003 desc9ls pr6|244,3,0 001203 aa 000764 00 0002 desc9a 500,2 002165 = 070322000000 001204 aa 6 00365 00 0002 desc9a pr6|245,2 001205 aa 776605 3520 04 epp2 -635,ic 000012 = 000000000001 001206 aa 6 00406 2521 00 spri2 pr6|262 001207 aa 6 00366 3521 00 epp2 pr6|246 001210 aa 6 00410 2521 00 spri2 pr6|264 001211 aa 7 00003 3521 00 epp2 pr7|3 pvte.devname 001212 aa 6 00412 2521 00 spri2 pr6|266 001213 aa 6 00365 3521 00 epp2 pr6|245 001214 aa 6 00414 2521 00 spri2 pr6|268 001215 aa 776577 3520 04 epp2 -641,ic 000014 = 404000000021 001216 aa 6 00416 2521 00 spri2 pr6|270 001217 aa 776567 3520 04 epp2 -649,ic 000006 = 524000000062 001220 aa 6 00420 2521 00 spri2 pr6|272 001221 aa 776564 3520 04 epp2 -652,ic 000005 = 524000000004 001222 aa 6 00422 2521 00 spri2 pr6|274 001223 aa 776561 3520 04 epp2 -655,ic 000004 = 524000000002 001224 aa 6 00424 2521 00 spri2 pr6|276 001225 aa 6 00404 6211 00 eax1 pr6|260 001226 aa 020000 4310 07 fld 8192,dl 001227 aa 6 00044 3701 20 epp4 pr6|36,* 001230 la 4 00036 3521 20 epp2 pr4|30,* syserr 001231 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 422 return ("1"b); 001232 aa 400000 2350 03 lda 131072,du 001233 aa 6 00216 3735 20 epp7 pr6|142,* 001234 aa 7 00004 7551 20 sta pr7|4,* 001235 aa 6 00214 6101 00 rtcd pr6|140 STATEMENT 1 ON LINE 425 end DEPOSIT_TO_STOCK; END PROCEDURE DEPOSIT_TO_STOCK BEGIN PROCEDURE WITHDRAW_FROM_STOCK ENTRY TO WITHDRAW_FROM_STOCK STATEMENT 1 ON LINE 430 WITHDRAW_FROM_STOCK: proc () returns (fixed bin); 001236 aa 6 00246 6501 00 spri4 pr6|166 001237 aa 6 00250 2521 00 spri2 pr6|168 STATEMENT 1 ON LINE 436 vtocx = -1; 001240 aa 000001 3360 07 lcq 1,dl 001241 aa 6 00255 7561 00 stq pr6|173 vtocx STATEMENT 1 ON LINE 438 stock_seg.meters.withdraw_vstock_calls = stock_seg.meters.withdraw_vstock_calls + 1; 001242 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 001243 aa 7 00046 2351 00 lda pr7|38 stock_seg.withdraw_vstock_calls 001244 aa 000044 7330 00 lrs 36 001245 aa 000001 0330 07 adl 1,dl 001246 aa 7 00046 7561 00 stq pr7|38 stock_seg.withdraw_vstock_calls STATEMENT 1 ON LINE 440 if vtoce_stock.n_free_in_stock > 0 then do stockx = 1 to vtoce_stock.n_in_stock while (vtocx = -1); 001247 aa 6 00120 3715 20 epp5 pr6|80,* vtoce_stockp 001250 aa 5 00001 2361 00 ldq pr5|1 vtoce_stock.n_free_in_stock 001251 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001252 aa 000042 6044 04 tmoz 34,ic 001314 001253 aa 5 00001 2351 00 lda pr5|1 vtoce_stock.n_in_stock 001254 aa 000066 7730 00 lrl 54 001255 aa 6 00256 7561 00 stq pr6|174 001256 aa 000001 2360 07 ldq 1,dl 001257 aa 6 00254 7561 00 stq pr6|172 stockx 001260 aa 6 00254 2361 00 ldq pr6|172 stockx 001261 aa 6 00256 1161 00 cmpq pr6|174 001262 aa 000032 6054 04 tpnz 26,ic 001314 001263 aa 6 00255 2361 00 ldq pr6|173 vtocx 001264 aa 000765 1160 04 cmpq 501,ic 002251 = 777777777777 001265 aa 000027 6010 04 tnz 23,ic 001314 STATEMENT 1 ON LINE 443 if vtoce_stock.stock (stockx) ^= -1 then do; 001266 aa 6 00254 2361 00 ldq pr6|172 stockx 001267 aa 000022 4020 07 mpy 18,dl 001270 aa 6 00426 7561 00 stq pr6|278 001271 aa 6 00120 3735 20 epp7 pr6|80,* vtoce_stockp 001272 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 001273 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock 001274 aa 6 00056 00 0044 descb pr6|46,36 001275 aa 6 00056 2351 00 lda pr6|46 001276 aa 000066 7330 00 lrs 54 001277 aa 000752 1160 04 cmpq 490,ic 002251 = 777777777777 001300 aa 000012 6000 04 tze 10,ic 001312 STATEMENT 1 ON LINE 444 vtocx = vtoce_stock.stock (stockx); 001301 aa 6 00255 7561 00 stq pr6|173 vtocx STATEMENT 1 ON LINE 445 vtoce_stock.stock (stockx) = -1; 001302 aa 6 00426 2351 00 lda pr6|278 001303 aa 003 105 060 404 csl (ic),(pr,al),fill(0),bool(move) 001304 aa 000743 00 0022 descb 483,18 002246 = 777777000000 001305 aa 7 00002 40 0022 descb pr7|2(18),18 vtoce_stock.stock STATEMENT 1 ON LINE 446 vtoce_stock.n_free_in_stock = vtoce_stock.n_free_in_stock - 1; 001306 aa 7 00001 2361 00 ldq pr7|1 vtoce_stock.n_free_in_stock 001307 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001310 aa 000001 1760 07 sbq 1,dl 001311 aa 7 00001 5521 14 stbq pr7|1,14 vtoce_stock.n_free_in_stock STATEMENT 1 ON LINE 447 end; STATEMENT 1 ON LINE 448 end; 001312 aa 6 00254 0541 00 aos pr6|172 stockx 001313 aa 777745 7100 04 tra -27,ic 001260 STATEMENT 1 ON LINE 450 if vtocx = -1 then stock_seg.meters.withdraw_vstock_fails = stock_seg.meters.withdraw_vstock_fails + 1; 001314 aa 6 00255 2361 00 ldq pr6|173 vtocx 001315 aa 000734 1160 04 cmpq 476,ic 002251 = 777777777777 001316 aa 000006 6010 04 tnz 6,ic 001324 001317 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 001320 aa 7 00047 2351 00 lda pr7|39 stock_seg.withdraw_vstock_fails 001321 aa 000044 7330 00 lrs 36 001322 aa 000001 0330 07 adl 1,dl 001323 aa 7 00047 7561 00 stq pr7|39 stock_seg.withdraw_vstock_fails STATEMENT 1 ON LINE 453 return (vtocx); 001324 aa 6 00255 2361 00 ldq pr6|173 vtocx 001325 aa 6 00250 3735 20 epp7 pr6|168,* 001326 aa 7 00002 7561 20 stq pr7|2,* 001327 aa 6 00246 6101 00 rtcd pr6|166 STATEMENT 1 ON LINE 455 end WITHDRAW_FROM_STOCK; END PROCEDURE WITHDRAW_FROM_STOCK BEGIN PROCEDURE DEPOSIT_TO_MAP ENTRY TO DEPOSIT_TO_MAP STATEMENT 1 ON LINE 459 DEPOSIT_TO_MAP: proc (vtocx, complain, deposited); 001330 aa 6 00300 6501 00 spri4 pr6|192 001331 aa 6 00302 2521 00 spri2 pr6|194 STATEMENT 1 ON LINE 469 deposited = "1"b; 001332 aa 400000 2350 03 lda 131072,du 001333 aa 2 00006 7551 20 sta pr2|6,* deposited STATEMENT 1 ON LINE 471 word_no = divide (vtocx, 32, 17); 001334 aa 2 00002 2361 20 ldq pr2|2,* vtocx 001335 aa 000040 5060 07 div 32,dl 001336 aa 6 00307 7561 00 stq pr6|199 word_no STATEMENT 1 ON LINE 472 bit_no = mod (vtocx, 32) + 1; 001337 aa 2 00002 2361 20 ldq pr2|2,* vtocx 001340 aa 000707 3520 04 epp2 455,ic 002247 = 000000000040 001341 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 001342 aa 000001 0760 07 adq 1,dl 001343 aa 6 00306 7561 00 stq pr6|198 bit_no STATEMENT 1 ON LINE 474 if word_no < 0 | word_no >= vtoc_map.bit_map_n_words then do; 001344 aa 6 00307 2361 00 ldq pr6|199 word_no 001345 aa 000004 6040 04 tmi 4,ic 001351 001346 aa 6 00122 3735 20 epp7 pr6|82,* vtoc_mapp 001347 aa 7 00002 1161 00 cmpq pr7|2 vtoc_map.bit_map_n_words 001350 aa 000060 6040 04 tmi 48,ic 001430 STATEMENT 1 ON LINE 476 if complain then call syserr (ANNOUNCE, "vtoce_stock_man: Attempt to deposit invalid vtocx ^o on ^a_^a", vtocx, pvte.devname, convert (p99, pvte.logical_area_number)); 001351 aa 6 00302 3735 20 epp7 pr6|194,* 001352 aa 7 00004 2351 20 lda pr7|4,* complain 001353 aa 400000 3150 03 cana 131072,du 001354 aa 000051 6000 04 tze 41,ic 001425 001355 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001356 aa 776556 00 0100 desc9a -658,64 000133 = 166164157143 001357 aa 6 00430 00 0100 desc9a pr6|280,64 001360 aa 6 00114 3715 20 epp5 pr6|76,* pvtep 001361 aa 5 00004 2351 00 lda pr5|4 pvte.logical_area_number 001362 aa 000011 7350 00 als 9 001363 aa 000077 7330 00 lrs 63 001364 aa 6 00451 7561 00 stq pr6|297 pvte.logical_area_number 001365 aa 000 100 301 500 btd (pr),(pr) 001366 aa 6 00451 00 0004 desc9a pr6|297,4 pvte.logical_area_number 001367 aa 6 00450 01 0003 desc9ls pr6|296,3,0 001370 aa 6 00427 4501 00 stz pr6|279 001371 aa 100 004 024 500 mvne (pr),(ic),(pr) 001372 aa 6 00450 01 0003 desc9ls pr6|296,3,0 001373 aa 000574 00 0002 desc9a 380,2 002165 = 070322000000 001374 aa 6 00427 00 0002 desc9a pr6|279,2 001375 aa 776412 3520 04 epp2 -758,ic 000007 = 000000000000 001376 aa 6 00454 2521 00 spri2 pr6|300 001377 aa 6 00430 3521 00 epp2 pr6|280 001400 aa 6 00456 2521 00 spri2 pr6|302 001401 aa 7 00002 3521 20 epp2 pr7|2,* vtocx 001402 aa 6 00460 2521 00 spri2 pr6|304 001403 aa 5 00003 3521 00 epp2 pr5|3 pvte.devname 001404 aa 6 00462 2521 00 spri2 pr6|306 001405 aa 6 00427 3521 00 epp2 pr6|279 001406 aa 6 00464 2521 00 spri2 pr6|308 001407 aa 776405 3520 04 epp2 -763,ic 000014 = 404000000021 001410 aa 6 00466 2521 00 spri2 pr6|310 001411 aa 6 00472 2521 00 spri2 pr6|314 001412 aa 776371 3520 04 epp2 -775,ic 000003 = 524000000075 001413 aa 6 00470 2521 00 spri2 pr6|312 001414 aa 776371 3520 04 epp2 -775,ic 000005 = 524000000004 001415 aa 6 00474 2521 00 spri2 pr6|316 001416 aa 776366 3520 04 epp2 -778,ic 000004 = 524000000002 001417 aa 6 00476 2521 00 spri2 pr6|318 001420 aa 6 00452 6211 00 eax1 pr6|298 001421 aa 024000 4310 07 fld 10240,dl 001422 aa 6 00044 3701 20 epp4 pr6|36,* 001423 la 4 00036 3521 20 epp2 pr4|30,* syserr 001424 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 479 deposited = "0"b; 001425 aa 6 00302 3735 20 epp7 pr6|194,* 001426 aa 7 00006 4501 20 stz pr7|6,* deposited STATEMENT 1 ON LINE 480 end; 001427 aa 000100 7100 04 tra 64,ic 001527 STATEMENT 1 ON LINE 481 else do; STATEMENT 1 ON LINE 482 bit_map_wordp = addr (vtoc_map.bit_map (word_no)); 001430 aa 7 00010 3715 06 epp5 pr7|8,ql vtoc_map.bit_map 001431 aa 6 00124 6515 00 spri5 pr6|84 bit_map_wordp STATEMENT 1 ON LINE 483 if substr (bit_map_word.bits, bit_no, 1) = "1"b then do; 001432 aa 6 00306 7271 00 lxl7 pr6|198 bit_no 001433 aa 000 004 066 517 cmpb (pr,x7),(ic),fill(0) 001434 aa 5 00000 00 0001 descb pr5|0,1 bit_map_word.bits 001435 aa 000615 00 0001 descb 397,1 002250 = 400000000000 001436 aa 000066 6010 04 tnz 54,ic 001524 STATEMENT 1 ON LINE 485 if complain then do; 001437 aa 6 00302 3535 20 epp3 pr6|194,* 001440 aa 3 00004 2351 20 lda pr3|4,* complain 001441 aa 400000 3150 03 cana 131072,du 001442 aa 000057 6000 04 tze 47,ic 001521 STATEMENT 1 ON LINE 486 call syserr (ANNOUNCE, "vtoce_stock_man: Attempt to deposit free vtocx ^o on ^a_^a", vtocx, pvte.devname, convert (p99, pvte.logical_area_number)); 001443 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001444 aa 776451 00 0074 desc9a -727,60 000114 = 166164157143 001445 aa 6 00430 00 0074 desc9a pr6|280,60 001446 aa 6 00114 3515 20 epp1 pr6|76,* pvtep 001447 aa 1 00004 2351 00 lda pr1|4 pvte.logical_area_number 001450 aa 000011 7350 00 als 9 001451 aa 000077 7330 00 lrs 63 001452 aa 6 00451 7561 00 stq pr6|297 pvte.logical_area_number 001453 aa 000 100 301 500 btd (pr),(pr) 001454 aa 6 00451 00 0004 desc9a pr6|297,4 pvte.logical_area_number 001455 aa 6 00450 01 0003 desc9ls pr6|296,3,0 001456 aa 6 00427 4501 00 stz pr6|279 001457 aa 100 004 024 500 mvne (pr),(ic),(pr) 001460 aa 6 00450 01 0003 desc9ls pr6|296,3,0 001461 aa 000506 00 0002 desc9a 326,2 002165 = 070322000000 001462 aa 6 00427 00 0002 desc9a pr6|279,2 001463 aa 776324 3520 04 epp2 -812,ic 000007 = 000000000000 001464 aa 6 00454 2521 00 spri2 pr6|300 001465 aa 6 00430 3521 00 epp2 pr6|280 001466 aa 6 00456 2521 00 spri2 pr6|302 001467 aa 3 00002 3521 20 epp2 pr3|2,* vtocx 001470 aa 6 00460 2521 00 spri2 pr6|304 001471 aa 1 00003 3521 00 epp2 pr1|3 pvte.devname 001472 aa 6 00462 2521 00 spri2 pr6|306 001473 aa 6 00427 3521 00 epp2 pr6|279 001474 aa 6 00464 2521 00 spri2 pr6|308 001475 aa 776317 3520 04 epp2 -817,ic 000014 = 404000000021 001476 aa 6 00466 2521 00 spri2 pr6|310 001477 aa 6 00472 2521 00 spri2 pr6|314 001500 aa 776302 3520 04 epp2 -830,ic 000002 = 524000000072 001501 aa 6 00470 2521 00 spri2 pr6|312 001502 aa 776303 3520 04 epp2 -829,ic 000005 = 524000000004 001503 aa 6 00474 2521 00 spri2 pr6|316 001504 aa 776300 3520 04 epp2 -832,ic 000004 = 524000000002 001505 aa 6 00476 2521 00 spri2 pr6|318 001506 aa 6 00452 6211 00 eax1 pr6|298 001507 aa 024000 4310 07 fld 10240,dl 001510 aa 6 00044 3701 20 epp4 pr6|36,* 001511 la 4 00036 3521 20 epp2 pr4|30,* syserr 001512 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 488 pvte.vol_trouble_count = pvte.vol_trouble_count + 1; 001513 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 001514 aa 7 00033 2351 00 lda pr7|27 pvte.vol_trouble_count 001515 aa 000066 7330 00 lrs 54 001516 aa 000001 0760 07 adq 1,dl 001517 aa 000066 7370 00 lls 54 001520 aa 7 00033 5511 60 stba pr7|27,60 pvte.vol_trouble_count STATEMENT 1 ON LINE 489 end; STATEMENT 1 ON LINE 490 deposited = "0"b; 001521 aa 6 00302 3735 20 epp7 pr6|194,* 001522 aa 7 00006 4501 20 stz pr7|6,* deposited STATEMENT 1 ON LINE 491 end; 001523 aa 000004 7100 04 tra 4,ic 001527 STATEMENT 1 ON LINE 492 else substr (bit_map_word.bits, bit_no, 1) = "1"b; 001524 aa 403 117 060 400 csl (),(pr,x7),fill(1),bool(move) 001525 aa 000000 00 0000 descb 0,0 001526 aa 5 00000 00 0001 descb pr5|0,1 bit_map_word.bits STATEMENT 1 ON LINE 493 end; STATEMENT 1 ON LINE 495 stock_seg.meters.deposit_vtoc_map = stock_seg.meters.deposit_vtoc_map + 1; 001527 aa 6 00116 3735 20 epp7 pr6|78,* stock_segp 001530 aa 7 00050 2351 00 lda pr7|40 stock_seg.deposit_vtoc_map 001531 aa 000044 7330 00 lrs 36 001532 aa 000001 0330 07 adl 1,dl 001533 aa 7 00050 7561 00 stq pr7|40 stock_seg.deposit_vtoc_map STATEMENT 1 ON LINE 497 end DEPOSIT_TO_MAP; 001534 aa 6 00300 6101 00 rtcd pr6|192 END PROCEDURE DEPOSIT_TO_MAP BEGIN PROCEDURE SETUP_LOCK ENTRY TO SETUP_LOCK STATEMENT 1 ON LINE 502 SETUP_LOCK: proc; 001535 da 000257200000 001536 aa 000160 6270 00 eax7 112 001537 aa 7 00034 3521 20 epp2 pr7|28,* 001540 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001541 aa 000000000000 001542 aa 000000000000 STATEMENT 1 ON LINE 508 on any_other goto OUT_OF_SYNC; 001543 aa 000011 7260 07 lxl6 9,dl 001544 aa 776256 3520 04 epp2 -850,ic 000022 = 141156171137 001545 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001546 aa 000004 7100 04 tra 4,ic 001552 001547 aa 000102000000 001550 aa 000012 7100 04 tra 10,ic 001562 BEGIN CONDITION any_other.1 ENTRY TO any_other.1 STATEMENT 1 ON LINE 508 on any_other goto OUT_OF_SYNC; 001551 da 000265200000 001552 aa 000100 6270 00 eax7 64 001553 aa 7 00034 3521 20 epp2 pr7|28,* 001554 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001555 aa 000000000000 001556 aa 000000000000 001557 aa 000014 3520 04 epp2 12,ic 001573 = 600106450100 001560 aa 000001 7270 07 lxl7 1,dl 001561 aa 0 00657 7101 00 tra pr0|431 tra_ext_1 END CONDITION any_other.1 STATEMENT 1 ON LINE 510 vtoce_stockp = pvte.vtoc_map_stock_ptr; 001562 aa 6 00040 3735 20 epp7 pr6|32,* 001563 aa 7 00114 3715 20 epp5 pr7|76,* pvtep 001564 aa 5 00031 7671 00 lprp7 pr5|25 pvte.vtoc_map_stock_ptr 001565 aa 6 00040 3535 20 epp3 pr6|32,* 001566 aa 3 00120 6535 00 spri7 pr3|80 vtoce_stockp STATEMENT 1 ON LINE 511 if vtoce_stockp = null () then do; 001567 aa 3 00120 2371 00 ldaq pr3|80 vtoce_stockp 001570 aa 776230 6770 04 eraq -872,ic 000020 = 077777000043 000001000000 001571 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001572 aa 000050 6010 04 tnz 40,ic 001642 STATEMENT 1 ON LINE 512 OUT_OF_SYNC: revert any_other; 001573 aa 6 00106 4501 00 stz pr6|70 STATEMENT 1 ON LINE 514 call syserr (CRASH, "vtoce_stock_man: PVTE and VTOCE stock out-of-synch on ^a_^a", pvte.devname, convert (p99, pvte.logical_area_number)); 001574 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001575 aa 776301 00 0074 desc9a -831,60 000075 = 166164157143 001576 aa 6 00110 00 0074 desc9a pr6|72,60 001577 aa 6 00040 3735 20 epp7 pr6|32,* 001600 aa 7 00114 3715 20 epp5 pr7|76,* pvtep 001601 aa 5 00004 2351 00 lda pr5|4 pvte.logical_area_number 001602 aa 000011 7350 00 als 9 001603 aa 000077 7330 00 lrs 63 001604 aa 6 00131 7561 00 stq pr6|89 pvte.logical_area_number 001605 aa 000 100 301 500 btd (pr),(pr) 001606 aa 6 00131 00 0004 desc9a pr6|89,4 pvte.logical_area_number 001607 aa 6 00130 01 0003 desc9ls pr6|88,3,0 001610 aa 6 00127 4501 00 stz pr6|87 001611 aa 100 004 024 500 mvne (pr),(ic),(pr) 001612 aa 6 00130 01 0003 desc9ls pr6|88,3,0 001613 aa 000354 00 0002 desc9a 236,2 002165 = 070322000000 001614 aa 6 00127 00 0002 desc9a pr6|87,2 001615 aa 776175 3520 04 epp2 -899,ic 000012 = 000000000001 001616 aa 6 00134 2521 00 spri2 pr6|92 001617 aa 6 00110 3521 00 epp2 pr6|72 001620 aa 6 00136 2521 00 spri2 pr6|94 001621 aa 5 00003 3521 00 epp2 pr5|3 pvte.devname 001622 aa 6 00140 2521 00 spri2 pr6|96 001623 aa 6 00127 3521 00 epp2 pr6|87 001624 aa 6 00142 2521 00 spri2 pr6|98 001625 aa 776167 3520 04 epp2 -905,ic 000014 = 404000000021 001626 aa 6 00144 2521 00 spri2 pr6|100 001627 aa 776152 3520 04 epp2 -918,ic 000001 = 524000000073 001630 aa 6 00146 2521 00 spri2 pr6|102 001631 aa 776154 3520 04 epp2 -916,ic 000005 = 524000000004 001632 aa 6 00150 2521 00 spri2 pr6|104 001633 aa 776151 3520 04 epp2 -919,ic 000004 = 524000000002 001634 aa 6 00152 2521 00 spri2 pr6|106 001635 aa 6 00132 6211 00 eax1 pr6|90 001636 aa 020000 4310 07 fld 8192,dl 001637 aa 6 00044 3701 20 epp4 pr6|36,* 001640 la 4 00036 3521 20 epp2 pr4|30,* syserr 001641 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 516 end; STATEMENT 1 ON LINE 518 if vtoce_stock.pvtep ^= pvtep then goto OUT_OF_SYNC; 001642 aa 6 00040 3735 20 epp7 pr6|32,* 001643 aa 7 00114 2371 00 ldaq pr7|76 pvtep 001644 aa 0 00560 7001 00 tsx0 pr0|368 unpk_to_pk 001645 aa 7 00120 1161 20 cmpq pr7|80,* vtoce_stock.pvtep 001646 aa 777725 6010 04 tnz -43,ic 001573 STATEMENT 1 ON LINE 520 revert any_other; 001647 aa 6 00106 4501 00 stz pr6|70 STATEMENT 1 ON LINE 522 if pvte.vtoc_map_lock = pds$processid then call syserr (CRASH, "vtoce_stock_man: MYLOCK of VTOC Map Lock for ^a_^a", pvte.devname, convert (p99, pvte.logical_area_number)); 001650 aa 7 00114 3715 20 epp5 pr7|76,* pvtep 001651 aa 5 00027 2351 00 lda pr5|23 pvte.vtoc_map_lock 001652 aa 6 00044 3701 20 epp4 pr6|36,* 001653 la 4 00014 1151 20 cmpa pr4|12,* pds$processid 001654 aa 000044 6010 04 tnz 36,ic 001720 001655 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001656 aa 776150 00 0064 desc9a -920,52 000025 = 166164157143 001657 aa 6 00110 00 0064 desc9a pr6|72,52 001660 aa 5 00004 2351 00 lda pr5|4 pvte.logical_area_number 001661 aa 000011 7350 00 als 9 001662 aa 000077 7330 00 lrs 63 001663 aa 6 00131 7561 00 stq pr6|89 pvte.logical_area_number 001664 aa 000 100 301 500 btd (pr),(pr) 001665 aa 6 00131 00 0004 desc9a pr6|89,4 pvte.logical_area_number 001666 aa 6 00130 01 0003 desc9ls pr6|88,3,0 001667 aa 6 00127 4501 00 stz pr6|87 001670 aa 100 004 024 500 mvne (pr),(ic),(pr) 001671 aa 6 00130 01 0003 desc9ls pr6|88,3,0 001672 aa 000275 00 0002 desc9a 189,2 002165 = 070322000000 001673 aa 6 00127 00 0002 desc9a pr6|87,2 001674 aa 776116 3520 04 epp2 -946,ic 000012 = 000000000001 001675 aa 6 00134 2521 00 spri2 pr6|92 001676 aa 6 00110 3521 00 epp2 pr6|72 001677 aa 6 00136 2521 00 spri2 pr6|94 001700 aa 5 00003 3521 00 epp2 pr5|3 pvte.devname 001701 aa 6 00140 2521 00 spri2 pr6|96 001702 aa 6 00127 3521 00 epp2 pr6|87 001703 aa 6 00142 2521 00 spri2 pr6|98 001704 aa 776110 3520 04 epp2 -952,ic 000014 = 404000000021 001705 aa 6 00144 2521 00 spri2 pr6|100 001706 aa 776100 3520 04 epp2 -960,ic 000006 = 524000000062 001707 aa 6 00146 2521 00 spri2 pr6|102 001710 aa 776075 3520 04 epp2 -963,ic 000005 = 524000000004 001711 aa 6 00150 2521 00 spri2 pr6|104 001712 aa 776072 3520 04 epp2 -966,ic 000004 = 524000000002 001713 aa 6 00152 2521 00 spri2 pr6|106 001714 aa 6 00132 6211 00 eax1 pr6|90 001715 aa 020000 4310 07 fld 8192,dl 001716 la 4 00036 3521 20 epp2 pr4|30,* syserr 001717 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 526 do while (^stac (addr (pvte.vtoc_map_lock), pds$processid)); 001720 aa 6 00040 3735 20 epp7 pr6|32,* 001721 aa 7 00114 3715 20 epp5 pr7|76,* pvtep 001722 aa 5 00027 3735 00 epp7 pr5|23 pvte.vtoc_map_lock 001723 aa 6 00154 6535 00 spri7 pr6|108 001724 aa 6 00044 3701 20 epp4 pr6|36,* 001725 la 4 00014 2351 20 lda pr4|12,* pds$processid 001726 aa 7 00000 3521 00 epp2 pr7|0 001727 aa 0 00663 7001 00 tsx0 pr0|435 stac_mac 001730 aa 000050 6010 04 tnz 40,ic 002000 STATEMENT 1 ON LINE 527 wait_event = substr (pvt$vtoc_map_lock_wait_constant, 1, 18) || rel (pvtep); 001731 la 4 00020 2351 20 lda pr4|16,* pvt$vtoc_map_lock_wait_constant 001732 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 001733 aa 6 00127 7551 00 sta pr6|87 pvt$vtoc_map_lock_wait_constant 001734 aa 6 00040 3715 20 epp5 pr6|32,* 001735 aa 5 00114 6351 20 eaa pr5|76,* pvtep 001736 aa 000022 7710 00 arl 18 001737 aa 6 00127 2751 00 ora pr6|87 pvt$vtoc_map_lock_wait_constant 001740 aa 6 00100 7551 00 sta pr6|64 wait_event STATEMENT 1 ON LINE 529 call pxss$addevent (wait_event); 001741 aa 6 00100 3521 00 epp2 pr6|64 wait_event 001742 aa 6 00112 2521 00 spri2 pr6|74 001743 aa 6 00110 6211 00 eax1 pr6|72 001744 aa 004000 4310 07 fld 2048,dl 001745 la 4 00024 3521 20 epp2 pr4|20,* pxss$addevent 001746 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 530 pvte.vtoc_map_lock_notify = "1"b; 001747 aa 000001 2350 07 lda 1,dl 001750 aa 6 00040 3735 20 epp7 pr6|32,* 001751 aa 7 00114 3715 20 epp5 pr7|76,* pvtep 001752 aa 5 00004 2551 00 orsa pr5|4 pvte.vtoc_map_lock_notify STATEMENT 1 ON LINE 531 if stac (addr (pvte.vtoc_map_lock), pds$processid) /* Watch for race */ then do; 001753 aa 5 00027 3535 00 epp3 pr5|23 pvte.vtoc_map_lock 001754 aa 6 00156 2535 00 spri3 pr6|110 001755 aa 6 00044 3701 20 epp4 pr6|36,* 001756 la 4 00014 2351 20 lda pr4|12,* pds$processid 001757 aa 3 00000 3521 00 epp2 pr3|0 001760 aa 0 00663 7001 00 tsx0 pr0|435 stac_mac 001761 aa 000012 6000 04 tze 10,ic 001773 STATEMENT 1 ON LINE 533 call pxss$delevent ((""b)); 001762 aa 000000 2350 07 lda 0,dl 001763 aa 6 00127 7551 00 sta pr6|87 001764 aa 6 00127 3521 00 epp2 pr6|87 001765 aa 6 00112 2521 00 spri2 pr6|74 001766 aa 6 00110 6211 00 eax1 pr6|72 001767 aa 004000 4310 07 fld 2048,dl 001770 la 4 00026 3521 20 epp2 pr4|22,* pxss$delevent 001771 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 534 goto LOCK_GOT; 001772 aa 000006 7100 04 tra 6,ic 002000 STATEMENT 1 ON LINE 535 end; STATEMENT 1 ON LINE 536 call pxss$wait; 001773 aa 6 00056 6211 00 eax1 pr6|46 001774 aa 000000 4310 07 fld 0,dl 001775 la 4 00032 3521 20 epp2 pr4|26,* pxss$wait 001776 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 537 end; 001777 aa 777721 7100 04 tra -47,ic 001720 STATEMENT 1 ON LINE 539 LOCK_GOT: pvt$n_vtoc_map_locks = pvt$n_vtoc_map_locks + 1; 002000 aa 6 00044 3701 20 epp4 pr6|36,* 002001 la 4 00016 2351 20 lda pr4|14,* pvt$n_vtoc_map_locks 002002 aa 000044 7330 00 lrs 36 002003 aa 000001 0330 07 adl 1,dl 002004 la 4 00016 7561 20 stq pr4|14,* pvt$n_vtoc_map_locks STATEMENT 1 ON LINE 541 stock_segp = addr (stock_seg$); 002005 la 4 00040 3735 20 epp7 pr4|32,* stock_seg$ 002006 aa 6 00040 3715 20 epp5 pr6|32,* 002007 aa 5 00116 6535 00 spri7 pr5|78 stock_segp STATEMENT 1 ON LINE 542 return; 002010 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 545 end SETUP_LOCK; END PROCEDURE SETUP_LOCK BEGIN PROCEDURE UNLOCK ENTRY TO UNLOCK STATEMENT 1 ON LINE 549 UNLOCK: proc; 002011 aa 6 00310 6501 00 spri4 pr6|200 STATEMENT 1 ON LINE 555 if ^stacq (pvte.vtoc_map_lock, ""b, pds$processid) then call syserr (CRASH, "vtoce_stock_man: STACQ fails for VTOC Map lock on ^a_^a", pvte.devname, convert (p99, pvte.logical_area_number)); 002012 aa 000000 4310 07 fld 0,dl 002013 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 002014 aa 7 00027 3521 00 epp2 pr7|23 pvte.vtoc_map_lock 002015 aa 6 00044 3701 20 epp4 pr6|36,* 002016 la 4 00014 2361 20 ldq pr4|12,* pds$processid 002017 aa 0 01434 7001 00 tsx0 pr0|796 stacq_mac 002020 aa 000044 6010 04 tnz 36,ic 002064 002021 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002022 aa 776036 00 0070 desc9a -994,56 000057 = 166164157143 002023 aa 6 00500 00 0070 desc9a pr6|320,56 002024 aa 7 00004 2351 00 lda pr7|4 pvte.logical_area_number 002025 aa 000011 7350 00 als 9 002026 aa 000077 7330 00 lrs 63 002027 aa 6 00520 7561 00 stq pr6|336 pvte.logical_area_number 002030 aa 000 100 301 500 btd (pr),(pr) 002031 aa 6 00520 00 0004 desc9a pr6|336,4 pvte.logical_area_number 002032 aa 6 00517 01 0003 desc9ls pr6|335,3,0 002033 aa 6 00516 4501 00 stz pr6|334 002034 aa 100 004 024 500 mvne (pr),(ic),(pr) 002035 aa 6 00517 01 0003 desc9ls pr6|335,3,0 002036 aa 000131 00 0002 desc9a 89,2 002165 = 070322000000 002037 aa 6 00516 00 0002 desc9a pr6|334,2 002040 aa 775752 3520 04 epp2 -1046,ic 000012 = 000000000001 002041 aa 6 00524 2521 00 spri2 pr6|340 002042 aa 6 00500 3521 00 epp2 pr6|320 002043 aa 6 00526 2521 00 spri2 pr6|342 002044 aa 7 00003 3521 00 epp2 pr7|3 pvte.devname 002045 aa 6 00530 2521 00 spri2 pr6|344 002046 aa 6 00516 3521 00 epp2 pr6|334 002047 aa 6 00532 2521 00 spri2 pr6|346 002050 aa 775744 3520 04 epp2 -1052,ic 000014 = 404000000021 002051 aa 6 00534 2521 00 spri2 pr6|348 002052 aa 775726 3520 04 epp2 -1066,ic 000000 = 524000000067 002053 aa 6 00536 2521 00 spri2 pr6|350 002054 aa 775731 3520 04 epp2 -1063,ic 000005 = 524000000004 002055 aa 6 00540 2521 00 spri2 pr6|352 002056 aa 775726 3520 04 epp2 -1066,ic 000004 = 524000000002 002057 aa 6 00542 2521 00 spri2 pr6|354 002060 aa 6 00522 6211 00 eax1 pr6|338 002061 aa 020000 4310 07 fld 8192,dl 002062 la 4 00036 3521 20 epp2 pr4|30,* syserr 002063 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 559 if pvte.vtoc_map_lock_notify then do; 002064 aa 6 00114 3735 20 epp7 pr6|76,* pvtep 002065 aa 7 00004 2351 00 lda pr7|4 pvte.vtoc_map_lock_notify 002066 aa 000001 3150 07 cana 1,dl 002067 aa 000021 6000 04 tze 17,ic 002110 STATEMENT 1 ON LINE 560 pvte.vtoc_map_lock_notify = "0"b; 002070 aa 000074 2350 04 lda 60,ic 002164 = 777777777776 002071 aa 7 00004 3551 00 ansa pr7|4 pvte.vtoc_map_lock_notify STATEMENT 1 ON LINE 561 wait_event = substr (pvt$vtoc_map_lock_wait_constant, 1, 18) || rel (pvtep); 002072 aa 6 00044 3701 20 epp4 pr6|36,* 002073 la 4 00020 2351 20 lda pr4|16,* pvt$vtoc_map_lock_wait_constant 002074 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 002075 aa 6 00516 7551 00 sta pr6|334 pvt$vtoc_map_lock_wait_constant 002076 aa 7 00000 6351 00 eaa pr7|0 pvtep 002077 aa 000022 7710 00 arl 18 002100 aa 6 00516 2751 00 ora pr6|334 pvt$vtoc_map_lock_wait_constant 002101 aa 6 00316 7551 00 sta pr6|206 wait_event STATEMENT 1 ON LINE 562 call pxss$notify (wait_event); 002102 aa 6 00316 3521 00 epp2 pr6|206 wait_event 002103 aa 6 00502 2521 00 spri2 pr6|322 002104 aa 6 00500 6211 00 eax1 pr6|320 002105 aa 004000 4310 07 fld 2048,dl 002106 la 4 00030 3521 20 epp2 pr4|24,* pxss$notify 002107 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 563 end; STATEMENT 1 ON LINE 565 end UNLOCK; 002110 aa 6 00310 6101 00 rtcd pr6|200 END PROCEDURE UNLOCK BEGIN PROCEDURE SETUP_ABS_SEG ENTRY TO SETUP_ABS_SEG STATEMENT 1 ON LINE 568 SETUP_ABS_SEG: proc; 002111 aa 6 00320 6501 00 spri4 pr6|208 STATEMENT 1 ON LINE 571 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (pvte.volmap_seg_sdw)); 002112 aa 6 00044 3701 20 epp4 pr6|36,* 002113 la 4 00022 3735 20 epp7 pr4|18,* volmap_abs_seg$ 002114 aa 6 00544 6535 00 spri7 pr6|356 002115 aa 6 00114 3715 20 epp5 pr6|76,* pvtep 002116 aa 5 00022 3715 00 epp5 pr5|18 pvte.volmap_seg_sdw 002117 aa 6 00546 6515 00 spri5 pr6|358 002120 aa 6 00544 3521 00 epp2 pr6|356 002121 aa 6 00552 2521 00 spri2 pr6|362 002122 aa 6 00546 3521 00 epp2 pr6|358 002123 aa 6 00554 2521 00 spri2 pr6|364 002124 aa 6 00550 6211 00 eax1 pr6|360 002125 aa 010000 4310 07 fld 4096,dl 002126 la 4 00034 3521 20 epp2 pr4|28,* pmut$swap_sdw 002127 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 572 vtoc_mapp = ptr (addr (volmap_abs_seg$), pvte.vtoc_map_offset); 002130 aa 6 00044 3701 20 epp4 pr6|36,* 002131 la 4 00022 3735 20 epp7 pr4|18,* volmap_abs_seg$ 002132 aa 6 00114 3715 20 epp5 pr6|76,* pvtep 002133 aa 5 00025 2351 00 lda pr5|21 pvte.vtoc_map_offset 002134 aa 000022 7350 00 als 18 002135 aa 7 00000 3521 00 epp2 pr7|0 002136 aa 000000 3120 01 eawp2 0,au 002137 aa 6 00122 2521 00 spri2 pr6|82 vtoc_mapp STATEMENT 1 ON LINE 576 end SETUP_ABS_SEG; 002140 aa 6 00320 6101 00 rtcd pr6|208 END PROCEDURE SETUP_ABS_SEG BEGIN PROCEDURE RESET_ABS_SEG ENTRY TO RESET_ABS_SEG STATEMENT 1 ON LINE 582 RESET_ABS_SEG: proc; 002141 aa 6 00326 6501 00 spri4 pr6|214 STATEMENT 1 ON LINE 588 tsdw = 0; 002142 aa 775654 2370 04 ldaq -1108,ic 000016 = 000000000000 000000000000 002143 aa 6 00334 7571 00 staq pr6|220 tsdw STATEMENT 1 ON LINE 589 call pmut$swap_sdw (addr (volmap_abs_seg$), addr (tsdw)); 002144 aa 6 00044 3701 20 epp4 pr6|36,* 002145 la 4 00022 3735 20 epp7 pr4|18,* volmap_abs_seg$ 002146 aa 6 00556 6535 00 spri7 pr6|366 002147 aa 6 00334 3715 00 epp5 pr6|220 tsdw 002150 aa 6 00560 6515 00 spri5 pr6|368 002151 aa 6 00556 3521 00 epp2 pr6|366 002152 aa 6 00564 2521 00 spri2 pr6|372 002153 aa 6 00560 3521 00 epp2 pr6|368 002154 aa 6 00566 2521 00 spri2 pr6|374 002155 aa 6 00562 6211 00 eax1 pr6|370 002156 aa 010000 4310 07 fld 4096,dl 002157 la 4 00034 3521 20 epp2 pr4|28,* pmut$swap_sdw 002160 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 590 vtoc_mapp = null (); 002161 aa 775637 2370 04 ldaq -1121,ic 000020 = 077777000043 000001000000 002162 aa 6 00122 7571 00 staq pr6|82 vtoc_mapp STATEMENT 1 ON LINE 593 end RESET_ABS_SEG; 002163 aa 6 00326 6101 00 rtcd pr6|214 END PROCEDURE RESET_ABS_SEG END PROCEDURE vtoce_stock_man$get_free_vtoce ----------------------------------------------------------- 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