COMPILATION LISTING OF SEGMENT gtss_mcfc_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1352.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 gtss_mcfc_: proc; 10 11 /* Procedure to regulate a multiple number of callers 12* to a gcos file (mcfc). 13* 14* Author: Dave Ward 07/28/79 15* Change: Dave Ward 11/02/79 "delete" entry. 16* Change: Dave Ward 12/03/79 Inserted use of debug switch "mcfc/del". 17* Change: R. Barstad 11/03/82 Delete IDS2 concurrency control seg 18* if it exists 19**/ 20 21 /* Declaration of parmameters. */ 22 dcl access bit(6)parm /* See DD17, FILACT function 4. */; 23 dcl code fixed bin(35)parm; 24 dcl dirname char(*)parm; 25 dcl diskx fixed bin(24)parm; 26 dcl entname char(*)parm; 27 dcl mlid bit(36)aligned parm; 28 dcl statp ptr parm; 29 return; /* Non-used entry. */ 30 31 open: entry ( 32 dirname /* Multics directory of file. (input) */ 33 , entname /* Multics file entry name. (input). */ 34 , access /* GCOS access (runtime) mode requested (input). */ 35 , mlid /* Caller's multics lock id. (input). */ 36 , statp /* Pointer to callers's 2 word fms status value. (input). */ 37 , code); /* Return status code);. (output). 38* 0 => successful. 39* >0 => failure (expand). 40* */ 41 ENTRY = "gtss_mcfc_$open"; 42 if db_mcfc then 43 call com_err_ ( 44 0 45 , ENTRY 46 , """^a>^a"" mlid ^w" 47 , dirname 48 , entname 49 , mlid 50 ); 51 if get_uid (fuid) then return; 52 53 h = mod (fuid, hbound (mcfc.start_list, 1)+1); 54 55 if can_not_lock ("chain", h, mcfc.start_list (h).files.lock) then do; 56 busy: ; 57 fms_status.bit12 = "4004"b3; /* File busy. */ 58 59 conclude: ; 60 61 code = 1; /* This caller can not use the file. */ 62 if db_mcfc then 63 call com_err_ ( 64 0 65 , ENTRY 66 , """^a>^a"" can not be opened by ^w at this time." 67 , dirname 68 , entname 69 , mlid 70 ); 71 return; 72 end; 73 74 i = mcfc.start_list (h).files.first; 75 do while (i>0); 76 if unspec (fuid) = file_entry (i).unique_id then do; /* File is currently accessed. */ 77 if can_not_lock ("file", i, file_entry (i).file_lock) then do; 78 79 /* IMPOSSIBLE! All files in chain are locked but can not lock 80* particular file. 81**/ 82 call com_err_ ( 83 0 84 , ENTRY 85 , "ALL FILES LOCKED, BUT CAN NOT LOCK FILE (^i) ""^a>^a""." 86 , i 87 , dirname 88 , entname 89 ); 90 signal cond (gtss_fail); 91 end; 92 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 93 if cant_use (i, mlid, access) then do; 94 call unlock_entry ("file", i, file_entry (i).file_lock); 95 goto conclude; 96 end; 97 call record_caller (i, mlid, access); 98 code = 0; 99 call unlock_entry ("file", i, file_entry (i).file_lock); 100 return; 101 end; 102 103 i = file_entry (i).link; /* Link to next file name in hash chain. */ 104 end; 105 106 /* File not currently accessed by any callers, 107* obtain an entry. */ 108 call obtain_entry (h, u); 109 110 /* Record new file access. */ 111 fn = rtrim (dirname)||">"||entname; 112 113 if can_not_lock ("name", u, mcfc_names.names_lock) then do; 114 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 115 goto busy; 116 end; 117 allocate ns in (names) set (nsp); 118 call unlock_entry ("name", u, mcfc_names.names_lock); 119 120 nsp -> ns = fn; 121 file_entry (u).link = mcfc.start_list (h).files.first; 122 file_entry (u).nameo = offset (nsp, names); 123 file_entry (u).namel = length (fn); 124 file_entry (u).unique_id = unspec (fuid); 125 file_entry (u).number_callers = 0; /* This is 1st caller. */ 126 mcfc.start_list (h).files.first = u; 127 if can_not_lock ("file", u, file_entry (u).file_lock) then do; 128 129 /* IMPOSSIBLE: Chain is locked, this is a new file entry, 130* but it is locked? 131**/ 132 call com_err_ ( 133 0 134 , ENTRY 135 , "ALL FILES LOCKED, BUT CAN NOT LOCK FILE (^i) ""^a""." 136 , u 137 , fn 138 ); 139 signal cond (gtss_fail); 140 end; 141 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 142 call record_caller (u, mlid, access); 143 call unlock_entry ("file", u, file_entry (u).file_lock); 144 code = 0; 145 return; 146 147 close: entry ( 148 dirname /* Multics directory of file. (input) */ 149 , entname /* Multics file entry name. (input). */ 150 , mlid /* Caller's multics lock id. (input). */ 151 , statp 152 , code); /* Return status code);. (output). 153* 0 => successful. 154* >0 => failure (expand). 155* */ 156 ENTRY = "gtss_mcfc_$close"; 157 if db_mcfc then 158 call com_err_ ( 159 0 160 , ENTRY 161 , """^a>^a"" mlid ^w" 162 , dirname 163 , entname 164 , mlid 165 ); 166 if get_uid (fuid) then return; 167 h = mod (fuid, hbound (mcfc.start_list, 1)+1); 168 if can_not_lock ("chain", h, mcfc.start_list (h).files.lock) then goto busy; 169 i = mcfc.start_list (h).files.first; 170 li = -i; 171 do while (i>0); 172 if unspec (fuid) = file_entry (i).unique_id then do; /* File is currently accessed. */ 173 if can_not_lock ("file", i, file_entry (i).file_lock) then do; 174 175 /* IMPOSSIBLE! All files locked bu can not lock 176* particular file. 177**/ 178 call com_err_ ( 179 0 180 , ENTRY 181 , "ALL FILES LOCKED, BUT CAN NOT LOCK FILE (^i) ""^a>^a""." 182 , i 183 , dirname 184 , entname 185 ); 186 signal cond (gtss_fail); 187 end; 188 189 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 190 call remove_caller (i, mlid, h, li, code); 191 return; 192 end; 193 194 li = i; /* Remember previous i. */ 195 i = file_entry (i).link; /* Link to next file name in hash chain. */ 196 end; 197 198 /* Closing a file that is not open. */ 199 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 200 code = 1; /* file name not in mcfc data base. */ 201 fms_status.bit12 = "4100"b3; /* ?? */ 202 if db_mcfc then 203 call com_err_ ( 204 0 205 , ENTRY 206 , "Attempting to close (^w) ""^a>^a"" but it is not open." 207 , fuid 208 , dirname 209 , entname 210 ); 211 return; 212 213 delete: entry ( 214 diskx /* >0 => index to gtss_disk to file. */ 215 , dirname /* Multics directory of file. (input) */ 216 , entname /* Multics file entry name. (input). */ 217 , mlid /* Caller's multics lock id. (input). */ 218 , statp 219 , code); /* Return status code);. (output). 220* 0 => successful. 221* >0 => failure (expand). 222* */ 223 ENTRY = "gtss_mcfc_$delete"; 224 if db_mcfc then 225 call com_err_ ( 226 0 227 , ENTRY 228 , """^a>^a"" mlid ^w" 229 , dirname 230 , entname 231 , mlid 232 ); 233 if get_uid (fuid) then return; 234 h = mod (fuid, hbound (mcfc.start_list, 1)+1); 235 if can_not_lock ("chain", h, mcfc.start_list (h).files.lock) then goto busy; 236 i = mcfc.start_list (h).files.first; 237 li = -i; 238 do while (i>0); 239 if unspec (fuid) = file_entry (i).unique_id then do; /* File is currently accessed. */ 240 if can_not_lock ("file", i, file_entry (i).file_lock) then do; 241 242 /* IMPOSSIBLE! All files locked bu can not lock 243* particular file. 244**/ 245 call com_err_ ( 246 0 247 , ENTRY 248 , "ALL FILES LOCKED, BUT CAN NOT LOCK FILE (^i) ""^a>^a""." 249 , i 250 , dirname 251 , entname 252 ); 253 signal cond (gtss_fail); 254 end; 255 256 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 257 258 /* Deletion of file must be deferred. 259* Mark mcfc data base to provide for 260* deleting file at gtss_mcfc_$close, 261* file renamed (Multics) to make name 262* available for delete caller, while 263* other (concurrent) callers retain 264* reference to deleted file. 265**/ 266 call defer_delete (i, mlid, code); 267 return; 268 end; 269 270 li = i; /* Remember previous i. */ 271 i = file_entry (i).link; /* Link to next file name in hash chain. */ 272 end; 273 274 /* File not currently accessed by any callers, 275* delete the file immediately, 276* the whole chain is locked during the file 277* deletion process. 278**/ 279 call delete_file; 280 281 call unlock_entry ("chain", h, mcfc.start_list (h).files.lock); 282 return; 283 284 delete_file: proc; 285 286 /* Delete the file. */ 287 288 control_seg_ename = rtrim(entname)||".CONCURRENCY"; 289 call delete_$path(dirname, control_seg_ename, 290 "100100"b, "gtss", code /* irrelevant */); 291 code = 0; 292 call delete_$path ( 293 dirname 294 , entname 295 , "0"b /* (use next bit). */ 296 ||"1"b /* Query caller if file protected . */ 297 ||"0"b /* Deletion of directory not allowed. */ 298 ||"1"b /* Delete segment or msf. */ 299 ||"0"b /* (examine next switch). */ 300 ||"1"b /* Chase link and delete entry linked to. */ 301 , "gtss" /* Identifies who is questioning. */ 302 , code 303 ); 304 305 if db_mcfc then 306 call com_err_ (code, "mcfc/del", """^a>^a""", dirname, entname); 307 308 if code ^= 0 then do; 309 if code = error_table_$noentry then 310 fms_status.bit12 = "4005"b3; /* NON-EXISTENT. */ 311 else 312 fms_status.bit12 = gtss_filact_error_status_ (code); /* Unknown error. */ 313 if db_mcfc then 314 call com_err_ ( 315 code 316 , ENTRY 317 , "Can not delete ""^a>^a""." 318 , dirname 319 , entname 320 ); 321 end; 322 return; 323 end /* delete_file */; 324 325 obtain_entry: proc (h, u); 326 327 /* Obtain a file_entry from the "closest" 328* chain of available entries to entry h. 329* Set u to the index of the obtained entry. 330**/ 331 dcl h fixed bin(24) parm; 332 dcl u fixed bin(24) parm; 333 do i = h to hbound (mcfc.start_list, 1), 334 lbound (mcfc.start_list, 1) to (h-1); 335 if ^can_not_lock ("avail", i, mcfc.start_list (i).avail.lock) then do; 336 if mcfc.start_list (i).avail.first = 0 then do; 337 call unlock_entry ("avail", i, mcfc.start_list (i).avail.lock); 338 goto cont; 339 end; 340 u = mcfc.start_list (i).avail.first; 341 mcfc.start_list (i).avail.first = file_entry (u).link; 342 call unlock_entry ("avail", i, mcfc.start_list (i).avail.lock); 343 return; 344 end; 345 346 cont: ; 347 end; 348 349 /* Could not find ANY available entries. */ 350 call com_err_ ( 351 0 352 , ENTRY 353 , "NO AVAILABLE CHAIN TO OBTAIN FROM (from ^i for ^i)" 354 , h 355 , u 356 ); 357 signal cond (gtss_fail); 358 return; 359 dcl i fixed bin(24); 360 end /* obtain_entry */; 361 362 return_entry: proc (h, u); 363 364 /* Return file entry u to an available list. */ 365 dcl h fixed bin(24) parm; 366 dcl u fixed bin(24) parm; 367 do i = h to hbound (mcfc.start_list, 1), 368 lbound (mcfc.start_list, 1) to (h-1); 369 if ^can_not_lock ("avail", i, mcfc.start_list (i).avail.lock) then do; 370 if mcfc.start_list (i).avail.first = 0 then do; 371 call unlock_entry ("avail", i, mcfc.start_list (i).avail.lock); 372 goto cont; 373 end; 374 unspec (file_entry (u)) = "0"b; 375 file_entry (u).link = mcfc.start_list (i).avail.first; 376 mcfc.start_list (i).avail.first = u; 377 call unlock_entry ("avail", i, mcfc.start_list (i).avail.lock); 378 return; 379 end; 380 381 cont: ; 382 end; 383 384 /* Could not find ANY available entries. */ 385 call com_err_ ( 386 0 387 , ENTRY 388 , "NO AVAILABLE CHAIN TO RETURN TO (from ^i for ^i)" 389 , h 390 , u 391 ); 392 signal cond (gtss_fail); 393 return; 394 dcl i fixed bin(24); 395 end /* return_entry */; 396 397 get_uid: proc (fuid) returns (bit (1)); 398 399 /* Obtain the unique id of the file to be accessed. 400* Return "1"b if the unique id can NOT be obtained. 401**/ 402 dcl fuid fixed bin(35)parm; 403 404 call hcs_$status_long ( /* Obtain uniqued file id. */ 405 dirname 406 , entname 407 , 1 /* Chase links. */ 408 , addr (br) 409 , null () /* Return no name information. */ 410 , code 411 ); 412 413 if code ^= 0 then do; /* Can not access the file. */ 414 if code = error_table_$noentry then 415 fms_status.bit12 = "4005"b3; /* NON-EXISTENT. */ 416 else 417 fms_status.bit12 = "4100"b3; 418 return ("1"b); 419 end; 420 421 unspec (fuid) = br.uid; 422 return ("0"b); 423 end /* get_uid */; 424 425 remove_caller: proc ( 426 f /* Index to file_entry to file accessed by caller. */ 427 , i /* Name of caller (multics lock id). */ 428 , si /* Index to start list for file chain. */ 429 , li /* <0 => abs(li)=si. >0 => index of file 430* entry linked to this file entry. */ 431 , code /* Return code. */ 432 ); 433 434 /* Remove i as a caller for file. 435* If last caller remove the file. 436**/ 437 dcl f fixed bin(24)parm; 438 dcl i bit(36)aligned parm; 439 dcl si fixed bin(24) parm; 440 dcl li fixed bin(24) parm; 441 dcl code fixed bin(35)parm; 442 call get_caller_index (f, caller_ptr, k); 443 444 /* Search files caller list for "this" caller 445* (i.e., the one with same multics lock id). 446**/ 447 n = file_entry (f).number_callers; 448 do j = 1 to n; 449 if caller (k).lock_id (j) = i then do; /* Caller located. */ 450 n = n-1; /* Reduce number of callers for file by one. */ 451 file_entry (f).number_callers = n; /* Record reduced number. */ 452 if j< (n+1) then do; /* Compact the list of callers. */ 453 caller (k).lock_id (j) = caller (k).lock_id (n+1); 454 caller (k).gcos_access (j) = caller (k).gcos_access (n+1); 455 end; 456 if n<1 then do; 457 458 /* There are no more callers accessing this file, 459* remove the file entry. 460**/ 461 462 if file_entry (f).delete then call delete_file; 463 464 if can_not_lock ("name", f, mcfc_names.names_lock) then do; 465 call unlock_entry ("file", f, file_entry (f).file_lock); 466 goto busy; 467 end; 468 free ptr (file_entry (f).nameo, names) -> ns; 469 call unlock_entry ("name", f, mcfc_names.names_lock); 470 471 if can_not_lock ("chain", si, mcfc.start_list (si).files.lock) then do; 472 if db_mcfc then 473 call com_err_ ( 474 0 475 , ENTRY 476 , """^a>^a"" can not be opened by ^w at this time." 477 , dirname 478 , entname 479 , mlid 480 ); 481 /**CHANGE**/ 482 signal cond (gtss_fail); 483 end; 484 call unlock_entry ("file", f, file_entry (f).file_lock); 485 486 if (li>0) | (file_entry (f).link>0) then do; 487 488 /* There are more files on this chain, 489* just remove this (f) file entry. 490**/ 491 if li<1 then /* Entry f is 1st in chain. */ 492 mcfc.start_list (si).files.first = file_entry (f).link; 493 else /* Entry f not 1st, link around f. */ 494 file_entry (li).link = file_entry (f).link; 495 end; 496 else /* No more files in chain. */ 497 mcfc.start_list (si).files.first = 0; 498 499 call return_entry (si, f); 500 call unlock_entry ("chain", si, mcfc.start_list (si).files.lock); 501 end; 502 else 503 call unlock_entry ("file", f, file_entry (f).file_lock); 504 code = 0; 505 return; 506 end; 507 end; 508 509 /* Caller not in list of callers for file f? */ 510 code = 1; /* file name not in mcfc data base. */ 511 fms_status.bit12 = "4100"b3; /* ?? */ 512 if db_mcfc then 513 call com_err_ ( 514 0 515 , ENTRY 516 , "Attempting to close (^i ^w) ""^a>^a"" but not open by ^w." 517 , f 518 , file_entry (f).unique_id 519 , dirname 520 , entname 521 , i 522 ); 523 call unlock_entry ("file", f, file_entry (f).file_lock); 524 return; 525 dcl n fixed bin(24); 526 dcl k fixed bin(24); 527 dcl j fixed bin(24); 528 end /* remove_caller */; 529 530 defer_delete: proc ( 531 f /* Index to file_entry to file accessed by caller. */ 532 , i /* Name of caller (multics lock id). */ 533 , code /* Return code. */ 534 ); 535 536 /* Mark mcfc data base for deferred deletion. 537**/ 538 dcl f fixed bin(24)parm; 539 dcl i bit(36)aligned parm; 540 dcl code fixed bin(35)parm; 541 542 code = 0; 543 call get_caller_index (f, caller_ptr, k); 544 545 /* Examine if deleter is a caller. 546**/ 547 n = file_entry (f).number_callers; 548 do j = 1 to n; 549 end; 550 551 /* Deleter is NOT a caller, 552* i.e., not using the file. 553**/ 554 file_entry (f).delete = "1"b; 555 556 /* Rename the file to allow the deleter to 557* reuse the file name, but preserving the 558* file for other (concurrent) users. 559**/ 560 gtss_file_values.version = 1; 561 gtss_file_values.dname = dirname; 562 gtss_file_values.ename = entname; 563 gtss_file_values.new_ename = unique_chars_ (unique_bits_ ()); 564 gtss_file_values.change_name = "1"b; 565 unspec (gtss_file_values.set_switch) = "0"b; 566 call gtss_attributes_mgr_$set (addr (gtss_file_values), code); 567 dcl gtss_attributes_mgr_$set entry(ptr,fixed bin(35)); 568 if code = 0 then 569 if diskx>0 then /* Rename entry in gtss_disk data base. */ 570 gtss_disk (diskx).entry_name = gtss_file_values.new_ename; 571 572 call unlock_entry ("file", f, file_entry (f).file_lock); 573 return; 574 dcl j fixed bin(24); 575 dcl n fixed bin(24); 576 dcl k fixed bin(24); 577 end /* defer_delete */; 578 579 cant_use: proc (f, i, a)returns (bit (1)); 580 581 /* return "1"b if caller (multics lock id i) can NOT 582* use file (file_entry index f) with gcos access a. 583**/ 584 dcl f fixed bin(24) parm; 585 dcl i bit(36)aligned parm; 586 dcl a bit(6)parm; 587 call get_caller_index (f, caller_ptr, c); 588 retry: ; 589 do k = 1 to file_entry (f).number_callers; 590 if i ^= caller (c).lock_id (k) then 591 /* always allow caller to access his own files */ 592 if compare_access (a, (caller (c).gcos_access (k))) then do; 593 if nonexistent_process (caller (c).lock_id (k)) then do; 594 call restore_file (f); 595 goto retry; 596 end; 597 fms_status.bit12 = "4003"b3; /* Permissions denied. */ 598 return ("1"b); 599 end; 600 601 end; 602 return ("0"b); 603 dcl c fixed bin(24); 604 dcl k fixed bin(24); 605 end /* cant_use */; 606 607 nonexistent_process: proc (id)returns (bit (1)); 608 609 /* Return "1"b if lock id (id) does belong to 610* a process that no longer exists. 611**/ 612 dcl id bit(36)aligned parm; 613 lid = id; /* Move to local variable, assures input not altered. */ 614 call set_lock_$lock ( 615 lid 616 , 0 /* Wait 0 seconds to attempt lock. */ 617 , c 618 ); 619 if (c = 0) | (c = error_table_$invalid_lock_reset) then return ("1"b); 620 return ("0"b); 621 dcl c fixed bin(35); 622 dcl lid bit(36)aligned; 623 end /* nonexistent_process */; 624 625 compare_access: proc (ca, ea)returns (bit (1)); 626 627 dcl ca bit(6)parm; 628 dcl ea bit(6)parm ; 629 if calla.changing then return ("0"b); /* Caller access allowing file to change. */ 630 if exista.write then return ("1"b); /* Already a writer. (fail). */ 631 return ("0"b); 632 633 dcl 1 calla defined(ca), 634 2 ( 635 read 636 , write 637 , append 638 , execute 639 , test 640 , changing 641 ) bit(1)unal; 642 643 dcl 1 exista defined(ea), 644 2 ( 645 read 646 , write 647 , append 648 , execute 649 , test 650 , changing 651 ) bit(1)unal; 652 end /* comapre_access */; 653 654 record_caller: proc (f, i, a); 655 656 /* Record gcos caller (multics lock id i) as a caller 657* accessing file (index f into file_entry) with gcos 658* access a. 659**/ 660 dcl f fixed bin(24) parm; 661 dcl i bit(36)aligned parm; 662 dcl a bit(6)parm; 663 664 call get_caller_index (f, caller_ptr, k); 665 j = file_entry (f).number_callers+1; 666 if j>hbound (caller.lock_id, 2) then do; 667 if db_mcfc then 668 call com_err_ ( 669 0 670 , ENTRY 671 , "Over ^i callers for file ^i" 672 , hbound (caller.lock_id, 2) 673 , f 674 ); 675 file_entry (f).number_who_could_not_call = file_entry (f).number_who_could_not_call+1; 676 call unlock_entry ("file", f, file_entry (f).file_lock); 677 goto busy; 678 end; 679 file_entry (f).number_callers = j; 680 caller (k).lock_id (j) = i; 681 caller (k).gcos_access (j) = a; 682 683 return; 684 685 dcl u fixed bin (24); 686 dcl k fixed bin (24); 687 dcl j fixed bin (24); 688 end /* record_caller */; 689 1 1 /* BEGIN INCLUDE FILE gtss_mcfc_gci.incl.pl1 */ 1 2 /* 1 3* Created: (Wardd Multics) 11/09/79 1225.7 mst Fri 1 4**/ 1 5 get_caller_index: proc (f, cp, cx); 1 6 1 7 /* Map file_entry index (f) to set pointer 1 8* (cp) to appropiate caller segment and 1 9* set index (cx) to corresponding caller 1 10* array index. 1 11**/ 1 12 dcl f fixed bin(24) parm; 1 13 dcl cp ptr parm; 1 14 dcl cx fixed bin(24) parm; 1 15 j = divide (f-1, hbound (caller, 1)+1, 24); 1 16 cp = gtss_ext_$mcfc.callers_ptr (j); 1 17 cx = mod (f-1, hbound (caller, 1)+1); 1 18 return; 1 19 dcl j fixed bin(24); 1 20 end /* get_caller_index */; 1 21 /* END INCLUDE FILE gtss_mcfc_gci.incl.pl1 */ 690 691 692 restore_file: proc (f); 693 694 /* Remove all callers for file f whose 695* process no longer exist. 696**/ 697 dcl f fixed bin(24) parm; 698 sp = caller_ptr; 699 call get_caller_index (f, caller_ptr, k); 700 n = file_entry (f).number_callers; 701 j = 1; 702 do while (j <= n); 703 call set_lock_$lock ( 704 caller (k).lock_id (j) 705 , 0 /* Wait 0 seconds to attempt lock. */ 706 , c 707 ); 708 if (c = 0) | (c = error_table_$invalid_lock_reset) then do; 709 710 /* Remove this caller, his lock id was able to 711* be reset => his process is defunct. 712**/ 713 if j^a" 768 , en 769 , e 770 , addr (lw) 771 , dirname 772 , entname 773 ); 774 call set_lock_$lock ( 775 lw 776 , gtss_ext_$mcfc.wait_time 777 , c 778 ); 779 if c = 0 then return ("0"b); 780 781 if c = error_table_$invalid_lock_reset then do; 782 if en = "file" then call restore_file (e); 783 return ("0"b); 784 end; 785 786 /* Could not lock. */ 787 if c = error_table_$lock_wait_time_exceeded then do; 788 if db_mcfc then 789 call com_err_ (c, ENTRY, "(^a ^i)", en, e); 790 return ("1"b); 791 end; 792 if c = error_table_$locked_by_this_process then do; 793 call com_err_ (c, ENTRY, 794 "BUG? Will not proceed (^a ^i).", en, e); 795 signal cond (gtss_fail); 796 return ("1"b); 797 end; 798 call com_err_ (c, ENTRY, 799 "UNEXPECTED LOCK ERROR? (^1 ^i)", en, e); 800 signal cond (gtss_fail); 801 return ("1"b); 802 dcl c fixed bin(35); 803 end /* can_not_lock */; 804 805 unlock_entry: proc (en, e, lw); 806 807 /* Unlock word lw. In en named chain, entry e. 808**/ 809 dcl en char(*)parm; 810 dcl e fixed bin(24)parm; 811 dcl lw bit(36)aligned parm; 812 if db_mcfc then 813 call com_err_ ( 814 0 815 , ENTRY 816 , "^/UNLOCK ^5a ^4i ^p ^a>^a" 817 , en 818 , e 819 , addr (lw) 820 , dirname 821 , entname 822 ); 823 call set_lock_$unlock ( 824 lw 825 , c 826 ); 827 if c = 0 then return; 828 829 /* Could not unlock. */ 830 if (c = error_table_$lock_not_locked) | 831 (c = error_table_$locked_by_other_process) then 832 call com_err_ (c, ENTRY, 833 "BUG? Will not proceed (^a ^i).", en, e); 834 else 835 call com_err_ (c, ENTRY, 836 "UNEXPECTED LOCK ERROR? (^a ^i)", en, e); 837 signal cond (gtss_fail); 838 dcl c fixed bin(35); 839 end /* unlock_entry */; 840 841 /* Variables for gtss_mcfc_ 842* IDENTIFIER ATTRIBUTES */ 843 dcl addr builtin; 844 dcl control_seg_ename char(32); 845 dcl delete_$path entry(char(*),char(*),bit(6),char(*),fixed bin(35)); 846 dcl divide builtin; 847 dcl empty builtin; 848 dcl ENTRY char(17); 849 dcl error_table_$invalid_lock_reset fixed bin(35)ext; 850 dcl error_table_$locked_by_other_process fixed bin(35)ext; 851 dcl error_table_$locked_by_this_process fixed bin(35)ext; 852 dcl error_table_$lock_not_locked fixed bin(35)ext; 853 dcl error_table_$lock_wait_time_exceeded fixed bin(35)ext; 854 dcl error_table_$noentry fixed bin(35)ext; 855 dcl fn char(168)var; 856 dcl fni char(file_entry(i).namel) unal based(pointer(file_entry(i).nameo,names)); 857 dcl fuid fixed bin(35); 858 dcl gtss_fail condition ext; 859 dcl h fixed bin(24); 860 dcl hbound builtin; 861 dcl hcs_$status_long entry(char(*),char(*),fixed bin(1),ptr,ptr,fixed bin(35)); 862 dcl i fixed bin(24); 863 dcl lbound builtin; 864 dcl length builtin; 865 dcl li fixed bin(24); 866 dcl mod builtin; 867 dcl n fixed bin(24); 868 dcl ns char(length(fn))based; 869 dcl nsp ptr; 870 dcl null builtin; 871 dcl offset builtin; 872 dcl pointer builtin; 873 dcl ptr builtin; 874 dcl rtrim builtin; 875 dcl set_lock_$lock entry(bit(36)aligned,fixed bin,fixed bin(35)); 876 dcl set_lock_$unlock entry(bit(36)aligned,fixed bin(35)); 877 dcl u fixed bin(24); 878 dcl unique_bits_ entry returns(bit(70)); 879 dcl unique_chars_ entry(bit(*)) returns(char(15)); 880 dcl unspec builtin; 881 882 883 dcl 1 fms_status aligned based(statp) 884 , 2 bit12 bit(12)unal 885 , 2 bit60 bit(60)unal 886 ; 887 2 1 /* BEGIN INCLUDE FILE gtss_mcfc.incl.pl1 */ 2 2 /* 2 3* Created: (Wardd Multics) 08/01/79 1454.6 mst Wed 2 4**/ 2 5 /* Changed: Dave Ward, Mel Wilson 11/14/79 providing concurrency lock for names area 2 6**/ 2 7 2 8 /** Data structures used to regulate gcos 2 9* simulator "callers" of files (multiple caller file control - mcfc). 2 10* 2 11* Given: gcos file (D => Multics directory, E => entry, 2 12* U => Multics unique file id) 2 13* h=mod(U,size(start_list)) 2 14* start_list(h) => start of chain for list of files 2 15* (file_entry's) and a lock word to 2 16* regulate use of the chain, corresponding 2 17* values for list of available entries. 2 18**/ 2 19 2 20 dcl 1 mcfc aligned based(gtss_ext_$mcfc.files_ptr) 2 21 , 2 version fixed bin 2 22 2 23 , 2 start_list (0:1020) 2 24 , 3 files 2 25 , 4 lock bit(36) 2 26 , 4 first fixed bin(24) 2 27 , 3 avail like mcfc.start_list.files 2 28 2 29 , 2 file_entry (8000) 2 30 , 3 link fixed bin(24) 2 31 , 3 nameo offset(names) 2 32 , 3 namel fixed bin 2 33 , 3 unique_id bit(36) 2 34 , 3 file_lock bit(36) 2 35 , 3 number_callers fixed bin(24) 2 36 , 3 delete bit unal 2 37 , 3 fill bit (17) unal 2 38 , 3 number_who_could_not_call fixed bin (18) unsigned unal 2 39 ; 2 40 2 41 dcl caller_ptr ptr; 2 42 dcl 1 caller (0:1999)aligned based(caller_ptr) 2 43 , 2 lock_id (0:99)bit(36) 2 44 , 2 gcos_access (0:99)bit(6)unal 2 45 ; 2 46 2 47 dcl 1 mcfc_names aligned based (gtss_ext_$mcfc.names_ptr), 2 48 2 names_lock bit (36), 2 49 2 pad bit (36), 2 50 2 names area (261118); 2 51 2 52 /* END INCLUDE FILE gtss_mcfc.incl.pl1 */ 888 889 3 1 /* BEGIN INCLUDE FILE gtss_ext_.incl.pl1 */ 3 2 /* 3 3* Created: (Wardd Multics) 05/20/78 1307.6 mst Sat 3 4* Modified: Ward 1981 add suspended_process dcl 3 5* Modified: Ron Barstad 83-07-21 Fixed level number on mcfc to 3 3 6* Modified: Ron Barstad 83-07-25 Fixed derail range in statistics to 4js3 number 3 7**/ 3 8 dcl gtss_ext_$aem fixed bin static ext /* >0 Print "additional" error information. */; 3 9 dcl gtss_ext_$bad_drl_rtrn static ext label /* Default for drl_rtrn. */; 3 10 dcl gtss_ext_$db (72)bit(1)unal static ext; 3 11 dcl gtss_ext_$deferred_catalogs_ptr ptr ext; 3 12 dcl gtss_ext_$dispose_of_drl static ext label /* quit handlers for some derails use this label to abort */; 3 13 dcl gtss_ext_$drl_rtrn (4)static ext label /* where to return at subsystem end */; 3 14 dcl gtss_ext_$drm_path char(168)static ext /* gtss_expand_pathname_stores drm_path */; 3 15 dcl gtss_ext_$drun_jid char (5) static ext /* valid only for DRUN executing under absentee */; 3 16 dcl gtss_ext_$event_channel fixed bin (71) static ext /* used for DABT signals */; 3 17 dcl gtss_ext_$finished static ext label /* Return to gtss for normal conclusion. */; 3 18 dcl gtss_ext_$gdb_name char(8)ext /* Name H* module to debug. */; 3 19 dcl gtss_ext_$get_line entry(ptr,ptr,fixed bin(21),fixed bin(21),fixed bin(35))variable ext /* Build mode input procedure. */; 3 20 dcl gtss_ext_$gtss_slave_area_seg (4) ext static ptr /* pointer to gtss slave area segment */; 3 21 dcl gtss_ext_$hcs_work_area_ptr ptr ext static /* Temp seg for acl lists. */; 3 22 dcl gtss_ext_$homedir char (64) static ext /* user's home dir */; 3 23 dcl gtss_ext_$last_k_was_out bit (1)aligned ext static /* "1"b => last tty output was output. */; 3 24 dcl gtss_ext_$pdir char (168) varying ext static /* pathname of process directory */; 3 25 dcl gtss_ext_$popup_from_pi static ext label /* transfer to this label after pi simulates popup primitive */; 3 26 dcl gtss_ext_$process_type fixed bin (17) static ext; 3 27 dcl gtss_ext_$put_chars entry(ptr,ptr,fixed bin(24),fixed bin(35)) variable ext /* Terminal output procedure. */; 3 28 dcl gtss_ext_$restart_from_pi static ext label /* transfer to this label after pi restores machine conditions */; 3 29 dcl gtss_ext_$restart_seg_ptr ptr static ext /* points to DRUN restart file when exec under absentee */; 3 30 dcl gtss_ext_$sig_ptr ext static ptr /* saved ptr to signal_ */; 3 31 dcl gtss_ext_$stack_level_ fixed bin ext static; 3 32 dcl gtss_ext_$suspended_process bit(1) ext static; 3 33 dcl gtss_ext_$SYstarstar_file_no fixed bin (24) static ext; 3 34 dcl gtss_ext_$user_id char (26)var ext; 3 35 dcl gtss_ext_$work_area_ptr ptr ext; 3 36 3 37 dcl 1 gtss_ext_$CFP_bits aligned static external 3 38 , 3 no_input_yet bit (1) unaligned /* used in gtss_CFP_input_, gtss_read_starCFP_ */ 3 39 , 3 rtn_bits bit (4) unaligned /* used in gtss_CFP_input_, gtss_CFP_output_ */ 3 40 , 3 cpos_called bit (1) unaligned /* used in gtss_CFP_input_, gtss_drl_t_cfio_, gtss_abandon_CFP_ */ 3 41 , 3 cout_called bit (1) unaligned /* used in gtss_read_starCFP_, gtss_abandon_CFP_ */ 3 42 , 3 build_mode bit (1) unaligned /* used in gtss_build_, gtss_dsd_process_ */ 3 43 ; 3 44 3 45 dcl 1 gtss_ext_$com_reg aligned static ext, 3 46 3 tsdmx, 3 47 4 dst fixed bin (18) unsigned unaligned, 3 48 4 dit fixed bin (18) unsigned unaligned, 3 49 3 tsdpt fixed bin (36) unsigned unaligned, 3 50 3 tsddt fixed bin (36) unsigned unaligned, 3 51 3 tsdid bit (72) unaligned, 3 52 3 tsdsd bit (36) unaligned, 3 53 3 tsdst fixed bin (36) unsigned unaligned, 3 54 3 tsdjb fixed bin (35) unaligned, 3 55 3 tsdgt, 3 56 4 ust_loc fixed bin (18) unsigned unaligned, 3 57 4 gating_ctl fixed bin (18) unsigned unaligned, 3 58 3 tcdfr bit (36) unaligned; 3 59 3 60 dcl 1 gtss_ext_$flags aligned static ext 3 61 , 3 dispose_of_drl_on_pi bit (01) unal /* 1 => drl that should be aborted after quit-pi sequence */ 3 62 , 3 drl_in_progress bit (01) unal /* 1 => drl handler executing; 0 => gcos code executing */ 3 63 , 3 popup_from_pi bit (01) unal /* 1 => derail processor will simulate Gcos break instead of returning */ 3 64 , 3 unfinished_drl bit (01) unal /* 1 => subsystem is handling breaks and quit was raised during a drl */ 3 65 , 3 ss_time_limit_set bit (01) unal /* 1 => exec time limit set for subsystem */ 3 66 , 3 timer_ranout bit (01) unal /* 1 => user is executing timer runout code */ 3 67 , 3 gtss_com_err_sw bit (01) unal /* 1 => stop com_err_ string from going to terminal */ 3 68 , 3 available bit (65) unal 3 69 ; 3 70 3 71 3 72 dcl 1 gtss_ext_$statistics aligned static ext, /* Derail usage statistics */ 3 73 3 total_time (-10:71)fixed bin (71), 3 74 3 count (-10:71)fixed bin (17); 3 75 3 76 /* Declaration of Available File Table 3 77* */ 3 78 dcl 1 gtss_ext_$aft aligned ext, /* aft structure */ 3 79 3 80 3 start_list (0:102) fixed bin (24), /* >0 => 1st aft_entry row to start of next entry chain. */ 3 81 3 82 3 aft_entry (20), 3 83 4 altname char (8), /* altname name for attaching this file */ 3 84 4 next_entry fixed bin (24), /* Next aft_entry in hash chain. */ 3 85 4 previous_add fixed bin (24), /* Previously added entry. */ 3 86 4 next_add fixed bin (24), /* Entry added after this one. */ 3 87 4 used bit (1) unal, /* "1"b => aft_entry contains AFT value. */ 3 88 4 forced bit(1) unal, /* "1"b => gtss_verify_access_ forced access on this file. */ 3 89 3 90 3 free_space fixed bin (24), /* Index of start of free space list for aft entries. */ 3 91 3 first_added fixed bin (24), /* >0 => start of chain in add order. */ 3 92 3 last_added fixed bin (24) /* >0 => end of chain in added order. */; 3 93 3 94 dcl gtss_ext_$ppt ptr ext /* switch name for tapein drl */; 3 95 /** Data structure to provide access to installed 3 96* subsystems fast library load. 3 97* **/ 3 98 dcl 1 gtss_ext_$fast_lib aligned ext 3 99 , 3 fast_lib_fcb ptr /* Pointer to msf fcb. */ 3 100 , 3 fast_lib_ncp fixed bin (24) /* Number of components. */ 3 101 , 3 comp_ptr (0:9)ptr /* Pointer to component. */ 3 102 , 3 comp_wds (0:9)fixed bin (24) /* Component length (words). */ 3 103 ; 3 104 3 105 /* Pointers to segments to regulate multipler 3 106* callers to files. Same segments are used to regulate 3 107* all simulator callers. 3 108**/ 3 109 dcl 1 gtss_ext_$mcfc aligned ext, 3 110 3 multics_lock_id bit(36), 3 111 3 wait_time fixed bin, 3 112 3 files_ptr ptr, 3 113 3 names_ptr ptr, 3 114 3 callers_ptr (0:3)ptr 3 115 ; 3 116 3 117 /* END INCLUDE FILE gtss_ext_.incl.pl1 */ 890 891 4 1 /* BEGIN INCLUDE FILE gtss_db_names.incl.pl1 */ 4 2 /* 4 3* Created: (Wardd Multics) 03/29/79 1909.1 mst Thu 4 4**/ 4 5 4 6 /* To provide a new debugging switch: 4 7* 4 8* 1) Locate the comment "Insert next entry above this comment". 4 9* 4 10* 2) Place a new declaration for a db_ variable just 4 11* above this comment, in the same manner as the 4 12* current declaration just above the comment, using 4 13* the next integer gtss_ext_$db index. 4 14* 4 15* 3) Execute the gtss|db_names ted macro (this updates 4 16* the sorted name table). 4 17* 4 18* 4) Example use: 4 19* 4 20* if db_drl_grow then do; 4 21* . 4 22* . 4 23* . 4 24* debug i/o statements using com_err_ or ioa_ 4 25* . 4 26* . 4 27* . 4 28* end; 4 29* 4 30**/ 4 31 4 32 dcl ( 4 33 db_ bit(1) defined(gtss_ext_$db(01)) 4 34 ,db_CFP_input bit(1) defined(gtss_ext_$db(02)) 4 35 ,db_drl_addmem bit(1) defined(gtss_ext_$db(03)) 4 36 ,db_drl_defil bit(1) defined(gtss_ext_$db(04)) 4 37 ,db_drl_filact bit(1) defined(gtss_ext_$db(05)) 4 38 ,db_drl_filsp bit(1) defined(gtss_ext_$db(06)) 4 39 ,db_drl_grow bit(1) defined(gtss_ext_$db(07)) 4 40 ,db_drl_rew bit(1) defined(gtss_ext_$db(08)) 4 41 ,db_filact_funct02 bit(1) defined(gtss_ext_$db(09)) 4 42 ,db_filact_funct03 bit(1) defined(gtss_ext_$db(10)) 4 43 ,db_filact_funct04 bit(1) defined(gtss_ext_$db(11)) 4 44 ,db_filact_funct05 bit(1) defined(gtss_ext_$db(12)) 4 45 ,db_filact_funct10 bit(1) defined(gtss_ext_$db(13)) 4 46 ,db_filact_funct11 bit(1) defined(gtss_ext_$db(14)) 4 47 ,db_filact_funct14 bit(1) defined(gtss_ext_$db(15)) 4 48 ,db_filact_funct18 bit(1) defined(gtss_ext_$db(16)) 4 49 ,db_filact_funct19 bit(1) defined(gtss_ext_$db(17)) 4 50 ,db_filact_funct21 bit(1) defined(gtss_ext_$db(18)) 4 51 ,db_filact_funct22 bit(1) defined(gtss_ext_$db(19)) 4 52 ,db_interp_prim bit(1) defined(gtss_ext_$db(20)) 4 53 ,db_ios bit(1) defined(gtss_ext_$db(21)) 4 54 ,db_run_subsystem bit(1) defined(gtss_ext_$db(22)) 4 55 ,db_drl_t_cfio bit(1) defined(gtss_ext_$db(23)) 4 56 ,db_drl_switch bit(1) defined(gtss_ext_$db(24)) 4 57 ,db_drl_dio bit(1) defined(gtss_ext_$db(25)) 4 58 ,db_drl_retfil bit(1) defined(gtss_ext_$db(26)) 4 59 ,db_drl_msub bit(1) defined(gtss_ext_$db(27)) 4 60 ,db_drl_callss bit(1) defined(gtss_ext_$db(28)) 4 61 ,db_drl_rstswh bit(1) defined(gtss_ext_$db(29)) 4 62 ,db_drl_setswh bit(1) defined(gtss_ext_$db(30)) 4 63 ,db_mcfc bit(1) defined(gtss_ext_$db(31)) 4 64 ,db_dq bit(1) defined(gtss_ext_$db(32)) 4 65 ,db_abs bit(1) defined(gtss_ext_$db(33)) 4 66 ,db_attributes_mgr bit(1) defined(gtss_ext_$db(34)) 4 67 ,db_expand_pathname bit(1) defined(gtss_ext_$db(35)) 4 68 ,db_drl_part bit(1) defined(gtss_ext_$db(36)) 4 69 ,db_drl_morlnk bit(1) defined(gtss_ext_$db(37)) 4 70 ,db_drl_kin bit(1) defined(gtss_ext_$db(38)) 4 71 /* Insert next entry above this comment. */ 4 72 ); 4 73 4 74 /* Table of sorted names. */ 4 75 dcl 1 debug_bit_names (38) static int options(constant) 4 76 , 2 name char(18)var init( 4 77 "" ,"CFP_input" ,"abs" ,"attributes_mgr" ,"dq" ,"drl_addmem" 4 78 ,"drl_callss" ,"drl_defil" ,"drl_dio" ,"drl_filact" ,"drl_filsp" 4 79 ,"drl_grow" ,"drl_kin" ,"drl_morlnk" ,"drl_msub" ,"drl_part" 4 80 ,"drl_retfil" ,"drl_rew" ,"drl_rstswh" ,"drl_setswh" ,"drl_switch" 4 81 ,"drl_t_cfio" ,"expand_pathname" ,"filact_funct02" ,"filact_funct03" 4 82 ,"filact_funct04" ,"filact_funct05" ,"filact_funct10" ,"filact_funct11" 4 83 ,"filact_funct14" ,"filact_funct18" ,"filact_funct19" ,"filact_funct21" 4 84 ,"filact_funct22" ,"interp_prim" ,"ios" ,"mcfc" ,"run_subsystem" 4 85 ) 4 86 , 2 value fixed bin init( 4 87 01 ,02 ,33 ,34 ,32 ,03 ,28 ,04 ,25 ,05 ,06 ,07 ,38 ,37 ,27 ,36 ,26 ,08 4 88 ,29 ,30 ,24 ,23 ,35 ,09 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 4 89 ,31 ,22 4 90 ); 4 91 /* End of table. */ 4 92 /* END INCLUDE FILE gtss_db_names.incl.pl1 */ 892 893 894 dcl 1 br aligned like branch; 5 1 5 2 declare /* Information returned by hcs_$status_ and hcs_$status_long */ 5 3 5 4 5 5 1 branch aligned based (info_ptr), /* information about this particular branch */ 5 6 2 type bit (2) unal, /* "00"b = link, "01"b = segment, "10"b = directory */ 5 7 2 nnames bit (16) unal, /* number of names this entry has */ 5 8 2 names_relp bit (18) unal, /* pointer, relative to base of segment, to names */ 5 9 2 dtm bit (36) unal, /* date-time the segment was last modified */ 5 10 2 dtu bit (36) unal, /* date-time the segment was last used */ 5 11 2 mode bit (5) unal, /* the user's access modes to the entry */ 5 12 2 padding bit (13) unal, /* yawn */ 5 13 2 records_used bit (18) unal, /* number of blocks actually occupied by entry */ 5 14 5 15 /* limit of information returned by status_ */ 5 16 5 17 2 dtd bit (36) unal, /* date-time the segment was last dumped */ 5 18 2 dtbm bit (36) unal, /* date-time the branch for the entry was modified */ 5 19 2 account bit (36) unal, /* account to which storage is charged */ 5 20 2 current_length bit (12) unal, /* maximum length in blocks */ 5 21 2 bit_count bit (24) unal, /* length of entry in bits */ 5 22 2 device_id bit (4) unal, /* device on which segment currently resides */ 5 23 2 mdid bit (4) unal, /* device to which it is currently being moved */ 5 24 2 copy_switch bit (1) unal, /* segment copy switch */ 5 25 2 tpd bit (1) unal, /* transparent paging device switch */ 5 26 2 more_padding bit (8) unal, /* yawn, yawn */ 5 27 2 ring_brackets (0:2) bit (6) unal, /* ring brackets for entry */ 5 28 2 uid bit (36) unal, /* unique identifier */ 5 29 5 30 5 31 1 link aligned based (info_ptr), /* information about link entries */ 5 32 2 type bit (2) unal, /* as above */ 5 33 2 nnames bit (16) unal, /* number of names for this link */ 5 34 2 names_relp bit (18) unal, /* as above */ 5 35 2 dtbm bit (36) unal, /* date-time, entry for link was last modified */ 5 36 2 dtd bit (36) unal, /* date-time dumped */ 5 37 2 pathname_length bit (18) unal, /* length of link pathname */ 5 38 2 pathname_relp bit (18) unal, /* pointer, relative to based of segment, to name */ 5 39 5 40 entry_names (1) character (32) aligned based (pointer (area_pointer, branch.names_relp)), 5 41 /* array of names returned */ 5 42 pathname character (fixed (link.pathname_length)) aligned based (pointer (area_pointer, link.pathname_relp)), 5 43 /* pathname a link points to */ 5 44 5 45 area_pointer pointer, /* to area in which to allocate names */ 5 46 info_ptr pointer; /* to structure returned */ 5 47 5 48 895 896 6 1 /* BEGIN INCLUDE FILE gtss_file_values.incl.pl1 */ 6 2 /* 6 3* Created: (Wardd Multics) 09/01/78 1447.1 mst Fri 6 4**/ 6 5 6 6 /** The gtss_file_values structure provides parameters to the 6 7* gtss_attributes_mgr_ subroutine. 6 8* 6 9* The caller must provide space for this structure, fill in 6 10* the version with 1, the dname and ename with the file directory 6 11* and entry name, and for calls to gtss_attributes_mgr_$set, 6 12* fill in values to be reset and set the corresponding set_switch 6 13* to "1"b. 6 14* 6 15* If the (Multics) file located is a directory 6 16* a GCOS catalog is implied. 6 17* 6 18* If both ename and new_ename are set but no set_switch 6 19* is "1"b (and the set entry is called) this implies 6 20* that the existing attribute values are being renamed 6 21* to the new entry. 6 22* 6 23* Then: call gtss_attributes_mgr_$set(addr(gtss_file_values),code); 6 24* 6 25* Use of ename/new_ename combinations 6 26* for set entry. 6 27* 6 28* -|-----------|-----------|-|-----------------| 6 29* | ename |new_ename || meaning | 6 30* =|===========|===========|=|=================| 6 31* | blanks | blanks || illegal | 6 32* -|-----------|-----------|-|-----------------| 6 33* | blanks |not blanks|| initial | 6 34* | | || setting | 6 35* -|-----------|-----------|-|-----------------| 6 36* |not blanks| blanks || check enames's | 6 37* | | ||attribute values| 6 38* | | || and reset. | 6 39* -|-----------|-----------|-|-----------------| 6 40* |not blanks|not blanks|| delete ename's | 6 41* | | || values and put | 6 42* | | || on values for | 6 43* | | || new_ename's | 6 44* -|-----------|-----------|-|-----------------| 6 45***/ 6 46 dcl attr_name (0:7)char(4)static int options(constant)init( 6 47 /* 0 */ "mode" 6 48 , /* 1 */ "maxl" 6 49 , /* 2 */ "curl" 6 50 , /* 3 */ "busy" 6 51 , /* 4 */ "attr" 6 52 , /* 5 */ "null" 6 53 , /* 6 */ "noal" 6 54 , /* 7 */ "crdt" 6 55 ); 6 56 dcl 1 gtss_file_values aligned automatic 6 57 , 3 version fixed bin(17) /* Current version is 1. (OUT) */ 6 58 , 3 dname char(168)unal /* Directory name. (IN) */ 6 59 , 3 ename char(032)unal /* Entry name. (IN) */ 6 60 , 3 new_ename char(032)unal /* New entry name. (IN) */ 6 61 , 3 change_name bit(1) /* "1"b => Change segment name. (IN) */ 6 62 , 3 catalog bit(1) /* "1"b => File is a catalog (Multics directory). (OUT) */ 6 63 , 3 info_ptr ptr /* hcs_$status_long (4. entry_ptr) info structure address. (OUT) */ 6 64 , 3 set_switch /* "1"b => Set corresponding value. (IN) */ 6 65 , 4 mode_random bit(01)unal /* 0. Set the random/sequential(linked) field. */ 6 66 , 4 maxll bit(01)unal /* 1. Set max size value. */ 6 67 , 4 curll bit(01)unal /* 2. Set current size value. */ 6 68 , 4 busy bit(01)unal /* 3. Set file as busy. */ 6 69 , 4 attr bit(01)unal /* 4. Set user attributes value. */ 6 70 , 4 null_file bit(01)unal /* 5. Set null file value. */ 6 71 , 4 number_allocations bit(01)unal /* 6. Set or increment number of uses. */ 6 72 , 4 creation_date bit(01)unal /* 7. Set file creation date. */ 6 73 , 4 not_in_use bit(28)unal 6 74 /* The above set_ variables should be declared in an order 6 75* corresponding to the value in the attr_name array. */ 6 76 , 3 data_flags /* (OUT|IN) */ 6 77 , 4 mode_random bit(01)unal /* "1"b => random. */ 6 78 , 4 busy bit(01)unal /* "1"b => file is busy. */ 6 79 , 4 null_file bit(01)unal /* "1"b => file is null. */ 6 80 , 4 not_in_use2 bit(33)unal 6 81 , 3 data_fields /* (OUT|IN) */ 6 82 , 4 curll fixed bin(35) /* Current length in llinks (>=0). */ 6 83 , 4 maxll fixed bin(35) /* Maximum length in llinks (>=0). */ 6 84 , 4 number_allocations fixed bin(35) /* 0 => set | >0 => increment modulo 262144. */ 6 85 , 3 attributes /* (OUT|IN) */ 6 86 , 4 not_in_use3 bit(01)unal 6 87 , 4 attr bit(35)unal /* User specified file attribute value. */ 6 88 , 3 creation_date char(06) /* MMDDYY of creation. */ 6 89 ; 6 90 6 91 6 92 /* END INCLUDE FILE gtss_file_values.incl.pl1 */ 897 898 7 1 /* BEGIN INCLUDE FILE gtss_entry_dcls.incl.pl1 */ 7 2 /* 7 3* Created: (Wardd Multics) 06/30/78 1624.8 mst Fri 7 4* Modified: Ron Barstad 84-02-24 Fixed wrong and obsolete entries 7 5**/ 7 6 7 7 /** gtss external entry variables. **/ 7 8 dcl com_err_ entry() options(variable); 7 9 dcl gtss_CFP_abort_ entry options(variable); 7 10 dcl gtss_CFP_break_ entry options(variable); 7 11 dcl gtss_CFP_input_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 7 12 dcl gtss_CFP_output_ entry (ptr, ptr, fixed bin(21), fixed bin(35)); 7 13 dcl gtss_abandon_CFP_ entry options(variable); 7 14 dcl gtss_abort_dump_ entry (fixed bin(18)); 7 15 dcl gtss_abort_subsystem_ entry options (variable); 7 16 dcl gtss_abort_subsystem_$not_imp entry (ptr, fixed bin(24)); 7 17 dcl gtss_abs_login_banner_ entry() returns(char(*)); 7 18 dcl gtss_abs_logout_banner_ entry() returns(char(*)); 7 19 dcl gtss_abs_$abs_equiv entry options(variable); 7 20 dcl gtss_abs_$cpu_runout entry (ptr, char(4)); 7 21 dcl gtss_abs_$create_absin entry() returns(char(*)); 7 22 dcl gtss_abs_$dabt_check entry (ptr, char(4)); 7 23 dcl gtss_abs_$get_id entry (char(5)) returns(char(19)); 7 24 dcl gtss_abs_$get_drm entry() returns(char(*)); 7 25 dcl gtss_adjust_size_ entry (ptr); 7 26 dcl gtss_aft_$add entry (char(8), fixed bin(24), fixed bin(35)); 7 27 dcl gtss_aft_$delete entry (char(8), fixed bin(24), fixed bin(35)); 7 28 dcl gtss_aft_$find entry (char(8), fixed bin(24), fixed bin(35)); 7 29 dcl gtss_aft_$initialize entry (fixed bin(35)); 7 30 dcl gtss_ascii_bcd_ entry (ptr, fixed bin, ptr); 7 31 dcl gtss_attributes_mgr_$get entry (ptr, fixed bin(35)); 7 32 dcl gtss_attributes_mgr_$set entry (ptr, fixed bin(35)); 7 33 dcl gtss_bcd_ascii_ entry (ptr, fixed bin(24), ptr); 7 34 dcl gtss_bcd_ascii_$lc entry (ptr, fixed bin(24), ptr); 7 35 dcl gtss_break_vector_ entry (); 7 36 dcl gtss_break_vector_$drl_in_progress entry() returns(bit(1)); 7 37 dcl gtss_break_vector_$status entry() returns(bit(1)); 7 38 dcl gtss_build_ entry options(variable); 7 39 dcl gtss_com_err_ entry options(variable); 7 40 dcl gtss_derail_processor_ entry (ptr, char(*), ptr, ptr, bit(1) aligned) /* called at fault time instead of signal_ */; 7 41 dcl gtss_derail_processor_$set entry options(variable); 7 42 dcl gtss_dq_$catp entry (char (5), ptr, fixed bin (18) unsigned); 7 43 dcl gtss_dq_$create entry (bit(1)); 7 44 dcl gtss_dq_$dibp entry (char(5), ptr); 7 45 dcl gtss_dq_$entries_info entry (ptr, fixed bin (18) unsigned, fixed bin (18) unsigned); 7 46 dcl gtss_dq_$hdrp entry (ptr); 7 47 dcl gtss_dq_$mod_js entry (char(5), fixed bin (6) unsigned, bit (1)); 7 48 dcl gtss_dq_$open_exc entry (bit(1)); 7 49 dcl gtss_dq_$open_gen entry (bit(1)); 7 50 dcl gtss_drl_abort_ entry (ptr, fixed bin); 7 51 dcl gtss_drl_addmem_ entry (ptr, fixed bin); 7 52 dcl gtss_drl_callss_ entry (ptr, fixed bin); 7 53 dcl gtss_drl_corfil_ entry (ptr, fixed bin); 7 54 dcl gtss_drl_defil_ entry (ptr, fixed bin); 7 55 dcl gtss_drl_defil_$subr entry (ptr, ptr, ptr); 7 56 dcl gtss_drl_dio_ entry (ptr, fixed bin); 7 57 dcl gtss_drl_drlimt_ entry (ptr, fixed bin); 7 58 dcl gtss_drl_drlsav_ entry (ptr, fixed bin); 7 59 dcl gtss_drl_filact_ entry (ptr, fixed bin); 7 60 dcl gtss_drl_filsp_ entry (ptr, fixed bin); 7 61 dcl gtss_drl_grow_ entry (ptr, fixed bin); 7 62 dcl gtss_drl_gwake_ entry (ptr, fixed bin); 7 63 dcl gtss_drl_jsts_ entry (ptr, fixed bin); 7 64 dcl gtss_drl_kin_ entry (ptr, fixed bin); 7 65 dcl gtss_drl_kotnow_ entry (ptr, fixed bin); 7 66 dcl gtss_drl_kotnow_$gtss_drl_kout_ entry (ptr, fixed bin); 7 67 dcl gtss_drl_koutn_ entry (ptr, fixed bin); 7 68 dcl gtss_drl_morlnk_ entry (ptr, fixed bin); 7 69 dcl gtss_drl_msub_ entry (ptr, fixed bin); 7 70 dcl gtss_drl_objtim_ entry (ptr, fixed bin); 7 71 dcl gtss_drl_part_ entry (ptr, fixed bin); 7 72 dcl gtss_drl_pasaft_ entry (ptr, fixed bin); 7 73 dcl gtss_drl_pasdes_ entry (ptr, fixed bin); 7 74 dcl gtss_drl_pasust_ entry (ptr, fixed bin); 7 75 dcl gtss_drl_pdio_ entry (ptr, fixed bin); 7 76 dcl gtss_drl_prgdes_ entry (ptr, fixed bin); 7 77 dcl gtss_drl_pseudo_ entry (ptr, fixed bin); 7 78 dcl gtss_drl_relmem_ entry (ptr, fixed bin); 7 79 dcl gtss_drl_restor_ entry (ptr, fixed bin); 7 80 dcl gtss_drl_retfil_ entry (ptr, fixed bin); 7 81 dcl gtss_drl_return_ entry (ptr, fixed bin); 7 82 dcl gtss_drl_rew_ entry (ptr, fixed bin); 7 83 dcl gtss_drl_rstswh_ entry (ptr, fixed bin); 7 84 dcl gtss_drl_setlno_ entry (ptr, fixed bin); 7 85 dcl gtss_drl_setswh_ entry (ptr, fixed bin); 7 86 dcl gtss_drl_snumb_ entry (ptr, fixed bin); 7 87 dcl gtss_drl_spawn_ entry (ptr, fixed bin); 7 88 dcl gtss_drl_spawn_$gtss_drl_pasflr_ entry (ptr, fixed bin); 7 89 dcl gtss_drl_stoppt_ entry (ptr, fixed bin); 7 90 dcl gtss_drl_switch_ entry (ptr, fixed bin); 7 91 dcl gtss_drl_sysret_ entry (ptr, fixed bin); 7 92 dcl gtss_drl_t_cfio_ entry (ptr, fixed bin); 7 93 dcl gtss_drl_t_cmov_ entry (ptr, fixed bin); 7 94 dcl gtss_drl_t_err_ entry (ptr, fixed bin); 7 95 dcl gtss_drl_t_goto_ entry (ptr, fixed bin); 7 96 dcl gtss_drl_t_linl_ entry (ptr, fixed bin); 7 97 dcl gtss_drl_t_rscc_ entry (ptr, fixed bin); 7 98 dcl gtss_drl_tapein_ entry (ptr, fixed bin); 7 99 dcl gtss_drl_task_ entry (ptr, fixed bin); 7 100 dcl gtss_drl_termtp_ entry (ptr, fixed bin); 7 101 dcl gtss_drl_time_ entry (ptr, fixed bin); 7 102 dcl gtss_drun_ entry (bit(1)); 7 103 dcl gtss_dsd_lookup_ entry (char(8) var) returns(fixed bin(24)); 7 104 dcl gtss_dsd_process_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 7 105 dcl gtss_edit_dsd_ entry (ptr, fixed bin(21)) returns(fixed bin(24)); 7 106 dcl gtss_mcfc_empty entry (char(*) var); 7 107 dcl gtss_expand_pathname_ entry (ptr, char(*), char(*), fixed bin(35)); 7 108 dcl gtss_expand_pathname_$verify_umc entry (ptr, char(*), char(*), bit(18), fixed bin(35)); 7 109 dcl gtss_fault_processor_ entry options(variable); 7 110 dcl gtss_find_cond_frame_ entry (char(32) var) returns(ptr); 7 111 dcl gtss_fault_processor_$timer_runout entry (ptr, char(*)); 7 112 dcl gtss_filact_error_status_ entry (fixed bin(35))returns(bit(12)); 7 113 dcl gtss_filact_funct02_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 114 dcl gtss_filact_funct03_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 115 dcl gtss_filact_funct04_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 116 dcl gtss_filact_funct05_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 117 dcl gtss_filact_funct08_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 118 dcl gtss_filact_funct10_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 119 dcl gtss_filact_funct11_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 120 dcl gtss_filact_funct14_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 121 dcl gtss_filact_funct18_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 122 dcl gtss_filact_funct19_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 123 dcl gtss_filact_funct21_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 124 dcl gtss_filact_funct22_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 7 125 dcl gtss_mcfc_init_ entry (char(*) var); 7 126 dcl gtss_interp_prim_ entry options(variable); 7 127 dcl gtss_interp_prim_$callss entry (char(4), ptr); 7 128 dcl gtss_interp_prim_$sysret entry options(variable); 7 129 dcl gtss_interp_prim_$t_goto entry (char(4)); 7 130 dcl gtss_ios_change_size_ entry (fixed bin(24), fixed bin(24), bit(1), fixed bin(24), fixed bin(35)); 7 131 dcl gtss_ios_close_ entry (fixed bin(24), ptr, fixed bin(35)); 7 132 dcl gtss_ios_exchange_names_ entry (fixed bin(24), fixed bin(24), fixed bin(24), fixed bin(35)); 7 133 dcl gtss_ios_initialize_ entry options(variable); 7 134 dcl gtss_ios_io_ entry (fixed bin(24), ptr, ptr, fixed bin(24), fixed bin(24), fixed bin(35)); 7 135 dcl gtss_ios_open_ entry (fixed bin(24), char(168), char(32), bit(6), bit(1), ptr, ptr, fixed bin(35)); 7 136 dcl gtss_ios_position_ entry (fixed bin(24), fixed bin(24), fixed bin(24), bit(6), ptr); 7 137 dcl gtss_mcfc_$delete entry (fixed bin(24), char(*), char(*), bit(36) aligned, ptr, fixed bin(35)); 7 138 dcl gtss_mcfc_$open entry (char(*), char(*), bit(6), bit(36) aligned, ptr, fixed bin(35)); 7 139 dcl gtss_mcfc_$close entry (char(*), char(*), bit(36) aligned, ptr, fixed bin(35)); 7 140 dcl gtss_read_starCFP_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 7 141 dcl gtss_read_starCFP_$last_os entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 7 142 dcl gtss_run_subsystem_ entry (fixed bin(24)); 7 143 dcl gtss_run_subsystem_$finish entry options(variable); 7 144 dcl gtss_run_subsystem_$restor entry (fixed bin(24), ptr); 7 145 dcl gtss_run_subsystem_$restor_perm entry (fixed bin(24), ptr, fixed bin(18)); 7 146 dcl gtss_set_slave_ entry (fixed bin (24), ptr); 7 147 dcl gtss_set_slave_$load_bar entry (fixed bin (17)); 7 148 dcl gtss_update_safe_store_ entry (ptr); 7 149 dcl gtss_verify_access_ entry (char(*), char(*), fixed bin(24), bit(6), bit(12) aligned); 7 150 dcl gtss_verify_access_$check_forced_access entry (char(*), char(*), fixed bin(24)); 7 151 dcl gtss_write_starCFP_ entry (ptr, ptr, fixed bin(21), fixed bin(35)); 7 152 /* END INCLUDE FILE gtss_entry_dcls.incl.pl1 */ 899 900 8 1 /* BEGIN INCLUDE FILE gtss_dfd_ext_.incl.pl1 */ 8 2 /* 8 3* Created: (Wardd Multics) 06/09/78 1650.6 mst Fri 8 4**/ 8 5 8 6 dcl 1 gtss_dfd_ext_$disk_file_data (41) aligned ext, /* disk_file_data structure */ 8 7 8 8 3 gtss_disk, 8 9 4 dir_name char (168) unal, /* containing directory for file */ 8 10 4 entry_name char (32) unal, /* entry name for file */ 8 11 4 fcb_ptr ptr aligned, /* ptr to file control block */ 8 12 4 msf_array_ptr ptr, /* Pointer to an array of pointers for a msf. Each 8 13* component which has been accessed has a corresponding 8 14* initialized pointer. Currently 500 components 8 15* are supported. */ 8 16 4 single_segment_ptr ptr, /* Pointer to segment for single segment file */ 8 17 4 indicators aligned, /* one word of flags */ 8 18 8 19 5 msf bit (1) unaligned, /* 1=msf segment | 0= single segment */ 8 20 5 protected_file bit (1) unaligned, /* 1=file uses protections | 0= unprotected */ 8 21 5 fill bit (34) unal, 8 22 8 23 4 permissions aligned, 8 24 5 read bit (1) unaligned, /* 1=read permission */ 8 25 5 execute bit (1) unaligned, /* 1=execute permission */ 8 26 5 write bit (1) unaligned, /* 1=write permission */ 8 27 5 fill2 bit (33) unaligned, /* unused at this time */ 8 28 8 29 4 access_mode bit (6) aligned, /* contains the mode by which the file was accessed */ 8 30 4 component fixed bin, /* current component value (first component = 0) */ 8 31 4 offset fixed bin (24), /* current word offset in the component */ 8 32 4 file_position fixed bin (30), /* current file position in words */ 8 33 4 file_size fixed bin (30), /* size of file in words */ 8 34 4 no_components fixed bin (24), /* number of components for a msf */ 8 35 4 attributes_ptr ptr, /* Pointer to the attributes structure 8 36* for this file. (See gtss_file_attributes.incl.pl1) */ 8 37 8 38 4 pat_body, 8 39 8 40 5 word_0, 8 41 6 defective bit (1) unal, /* 1 = file has defective space */ 8 42 6 io_errors bit (1) unal, /* 1 = I/O errors encountered on file */ 8 43 6 reserved bit (2) unal, /* Reserved for GCOS */ 8 44 6 sct bit (12) unal, /* address of SCT for device on which 8 45* file begins or if cataloged, 8 46* for device with file catalog entry */ 8 47 6 reserved2 bit (2) unal, /* Reserved for GCOS */ 8 48 8 49 5 word_1, 8 50 6 io_time fixed bin (35), /* I/O time for this file */ 8 51 8 52 5 word_2, 8 53 6 protected bit (1) unal, /* 1 = file has protected allocation */ 8 54 6 hash_code bit (5) unal, /* hash code of user name under which 8 55* file is cataloged */ 8 56 6 not_cat bit (1) unal, /* 1 = file is not cataloged */ 8 57 6 last_desc bit (1) unal, /* 1 = last descriptor for file is not in memory */ 8 58 6 random bit (1) unal, /* 1 = access to file is random */ 8 59 6 perm bit (1) unal, /* 1 = file space is permanently assigned */ 8 60 6 first_desc bit (1) unal, /* 1 = first descriptor for file is not in memory */ 8 61 6 creator bit (1) unal, /* 1 = user is not creator of file */ 8 62 6 disposition bit (2) unal, /* Abort disposition code 8 63* 00 = Release 8 64* 01 = Dismount 8 65* 10 = Save 8 66* 11 = Continue */ 8 67 6 ids1 bit (1) unal, /* 1 = file is an I-D-S/I file */ 8 68 6 write_performed bit (1) unal, /* 1 = write was performed on file */ 8 69 6 unpermitted_access bit (1) unal, /* 1 = unpermitted access to file attempted or seek 8 70* attempted to part of file marked defective (only 8 71* for procted allocation) */ 8 72 6 purge bit (1) unal, /* 1 = file space to be purgedbefore deallocating file. */ 8 73 6 sector_number bit (18) unal, /* If cataloged file, sector number of file catalog 8 74* (on device with SCT referenced in word 0). If 8 75* cataloged file that is proctected (bit 0 ON in this 8 76* word), memory location of table in File Management 8 77* Supervisor Executive. If user temporary file, 8 78* largest size file has ever attained, in llinks. 8 79* If system value equals 777777 octal, it is system 8 80* file created by System Input. */ 8 81 8 82 5 word_3, 8 83 6 llink_size bit (14) unal, /* 0-13 ^= 0, Current total file size in llinks 8 84* 0-13 = 0, File size is greater than 16,383 llinks, 8 85* and if the file is cataloged, call to .MFS19,5 with 8 86* offset to PAT pointer in index 5 will cause bits 8 87* 14-35 of Q-register to be set to file size. (Unless 8 88* there is a Seek error on file catalog in which case 8 89* zero is returned. ) 8 90* */ 8 91 6 llink_position bit (22) unal, /* Relative llink position within the space descriptors 8 92* in memory. */ 8 93 8 94 5 word_4, 8 95 6 not_last_desc bit (1) unal, /* 1 = not last descriptor in memory */ 8 96 6 space_desc bit (1) unal, /* 0 = this is space descriptor */ 8 97 6 space_defective bit (1) unal, /* 1 = Space is defective */ 8 98 6 extent bit (15) unal, /* Number of llinks in this extent (area defined by this 8 99* descriptor) */ 8 100 6 origin bit (18) unal; /* device llinks number of origin of this extent */ 8 101 /* END INCLUDE FILE gtss_dfd_ext_.incl.pl1 */ 901 902 end /* gtss_mcfc_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1044.3 gtss_mcfc_.pl1 >spec>on>7105>gtss_mcfc_.pl1 690 1 09/09/83 1714.0 gtss_mcfc_gci.incl.pl1 >ldd>include>gtss_mcfc_gci.incl.pl1 888 2 09/09/83 1714.0 gtss_mcfc.incl.pl1 >ldd>include>gtss_mcfc.incl.pl1 890 3 09/09/83 1713.8 gtss_ext_.incl.pl1 >ldd>include>gtss_ext_.incl.pl1 892 4 09/09/83 1713.6 gtss_db_names.incl.pl1 >ldd>include>gtss_db_names.incl.pl1 895 5 04/29/76 1139.2 status_info.incl.pl1 >ldd>include>status_info.incl.pl1 897 6 09/09/83 1714.0 gtss_file_values.incl.pl1 >ldd>include>gtss_file_values.incl.pl1 899 7 12/10/84 1029.7 gtss_entry_dcls.incl.pl1 >spec>on>7105>gtss_entry_dcls.incl.pl1 901 8 09/09/83 1713.2 gtss_dfd_ext_.incl.pl1 >ldd>include>gtss_dfd_ext_.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. ENTRY 000110 automatic char(17) unaligned dcl 848 set ref 41* 42* 62* 82* 132* 156* 157* 178* 202* 223* 224* 245* 313* 350* 385* 472* 512* 667* 730* 763* 788* 793* 798* 812* 830* 834* a parameter bit(6) unaligned dcl 586 in procedure "cant_use" set ref 579 590* a parameter bit(6) unaligned dcl 662 in procedure "record_caller" ref 654 681 access parameter bit(6) unaligned dcl 22 set ref 31 93* 97* 142* addr builtin function dcl 843 ref 404 404 566 566 763 763 812 812 avail 3 based structure array level 3 dcl 2-20 bit12 based bit(12) level 2 packed unaligned dcl 883 set ref 57* 201* 309* 311* 414* 416* 511* 597* br 000212 automatic structure level 1 dcl 894 set ref 404 404 branch based structure level 1 dcl 5-2 c 000474 automatic fixed bin(24,0) dcl 603 in procedure "cant_use" set ref 587* 590 590 593 c 000604 automatic fixed bin(35,0) dcl 838 in procedure "unlock_entry" set ref 823* 827 830 830 830* 834* c 000506 automatic fixed bin(35,0) dcl 621 in procedure "nonexistent_process" set ref 614* 619 619 c 000566 automatic fixed bin(35,0) dcl 802 in procedure "can_not_lock" set ref 774* 779 781 787 788* 792 793* 798* c 000551 automatic fixed bin(35,0) dcl 752 in procedure "restore_file" set ref 703* 708 708 719 730* ca parameter bit(6) unaligned dcl 627 ref 625 629 629 calla defined structure level 1 packed unaligned dcl 633 caller based structure array level 1 dcl 2-42 set ref 1-15 1-17 caller_ptr 000210 automatic pointer dcl 2-41 set ref 442* 449 453 453 454 454 543* 587* 590 590 593 664* 666 667 667 680 681 1-15 1-17 698 699* 703 714 714 715 715 745* callers_ptr 6 000042 external static pointer array level 2 dcl 3-109 ref 1-16 change_name 73 000224 automatic bit(1) level 2 dcl 6-56 set ref 564* changing 0(05) defined bit(1) level 2 packed unaligned dcl 633 ref 629 code parameter fixed bin(35,0) dcl 441 in procedure "remove_caller" set ref 425 504* 510* code parameter fixed bin(35,0) dcl 23 in procedure "gtss_mcfc_" set ref 31 61* 98* 144* 147 190* 200* 213 266* 289* 291* 292* 305* 308 309 311* 313* 404* 413 414 code parameter fixed bin(35,0) dcl 540 in procedure "defer_delete" set ref 530 542* 566* 568 com_err_ 000044 constant entry external dcl 7-8 ref 42 62 82 132 157 178 202 224 245 305 313 350 385 472 512 667 730 763 788 793 798 812 830 834 control_seg_ename 000100 automatic char(32) unaligned dcl 844 set ref 288* 289* cp parameter pointer dcl 1-13 set ref 1-5 1-16* cx parameter fixed bin(24,0) dcl 1-14 set ref 1-5 1-17* db_mcfc defined bit(1) unaligned dcl 4-32 ref 42 62 157 202 224 305 313 472 512 667 763 788 812 delete 7773 based bit(1) array level 3 packed unaligned dcl 2-20 set ref 462 554* delete_$path 000010 constant entry external dcl 845 ref 289 292 dirname parameter char unaligned dcl 24 set ref 31 42* 62* 82* 111 147 157* 178* 202* 213 224* 245* 289* 292* 305* 313* 404* 472* 512* 561 763* 812* diskx parameter fixed bin(24,0) dcl 25 ref 213 568 568 divide builtin function dcl 846 ref 1-15 dname 1 000224 automatic char(168) level 2 packed unaligned dcl 6-56 set ref 561* e parameter fixed bin(24,0) dcl 761 in procedure "can_not_lock" set ref 755 763* 782* 788* 793* 798* e parameter fixed bin(24,0) dcl 810 in procedure "unlock_entry" set ref 805 812* 830* 834* ea parameter bit(6) unaligned dcl 628 ref 625 630 630 en parameter char unaligned dcl 760 in procedure "can_not_lock" set ref 755 763* 782 788* 793* 798* en parameter char unaligned dcl 809 in procedure "unlock_entry" set ref 805 812* 830* 834* ename 53 000224 automatic char(32) level 2 packed unaligned dcl 6-56 set ref 562* entname parameter char unaligned dcl 26 set ref 31 42* 62* 82* 111 147 157* 178* 202* 213 224* 245* 288 292* 305* 313* 404* 472* 512* 562 763* 812* entry_name 52 000050 external static char(32) array level 3 packed unaligned dcl 8-6 set ref 568* error_table_$invalid_lock_reset 000012 external static fixed bin(35,0) dcl 849 ref 619 708 781 error_table_$lock_not_locked 000020 external static fixed bin(35,0) dcl 852 ref 830 error_table_$lock_wait_time_exceeded 000022 external static fixed bin(35,0) dcl 853 ref 719 787 error_table_$locked_by_other_process 000014 external static fixed bin(35,0) dcl 850 ref 830 error_table_$locked_by_this_process 000016 external static fixed bin(35,0) dcl 851 ref 792 error_table_$noentry 000024 external static fixed bin(35,0) dcl 854 ref 309 414 exista defined structure level 1 packed unaligned dcl 643 f parameter fixed bin(24,0) dcl 660 in procedure "record_caller" set ref 654 664* 665 667* 675 675 676* 676 679 f parameter fixed bin(24,0) dcl 584 in procedure "cant_use" set ref 579 587* 589 594* f parameter fixed bin(24,0) dcl 538 in procedure "defer_delete" set ref 530 543* 547 554 572* 572 f parameter fixed bin(24,0) dcl 697 in procedure "restore_file" set ref 692 699* 700 730* 742 f parameter fixed bin(24,0) dcl 437 in procedure "remove_caller" set ref 425 442* 447 451 462 464* 465* 465 468 469* 484* 484 486 491 493 499* 502* 502 512* 512 523* 523 f parameter fixed bin(24,0) dcl 1-12 in procedure "get_caller_index" ref 1-5 1-15 1-17 file_entry 7765 based structure array level 2 dcl 2-20 set ref 374* file_lock 7771 based bit(36) array level 3 dcl 2-20 set ref 77* 94* 99* 127* 143* 173* 240* 465* 484* 502* 523* 572* 676* files 1 based structure array level 3 dcl 2-20 files_ptr 2 000042 external static pointer level 2 dcl 3-109 ref 53 55 74 76 77 92 94 99 103 114 121 121 122 123 124 125 126 127 141 143 167 168 169 172 173 189 195 199 234 235 236 239 240 256 271 281 333 333 335 336 337 340 341 341 342 367 367 369 370 371 374 375 375 376 377 447 451 462 465 468 471 484 486 491 491 493 493 496 500 502 512 523 547 554 572 589 665 675 675 676 679 700 742 first 4 based fixed bin(24,0) array level 4 in structure "mcfc" dcl 2-20 in procedure "gtss_mcfc_" set ref 336 340 341* 370 375 376* first 2 based fixed bin(24,0) array level 4 in structure "mcfc" dcl 2-20 in procedure "gtss_mcfc_" set ref 74 121 126* 169 236 491* 496* fms_status based structure level 1 dcl 883 fn 000115 automatic varying char(168) dcl 855 set ref 111* 117 117 120 120 123 132* 468 468 fuid 000170 automatic fixed bin(35,0) dcl 857 in procedure "gtss_mcfc_" set ref 51* 53 76 124 166* 167 172 202* 233* 234 239 fuid parameter fixed bin(35,0) dcl 402 in procedure "get_uid" set ref 397 421* gcos_access 144 based bit(6) array level 2 packed unaligned dcl 2-42 set ref 454* 454 590 681* 715* 715 gtss_attributes_mgr_$set 000052 constant entry external dcl 567 ref 566 gtss_dfd_ext_$disk_file_data 000050 external static structure array level 1 dcl 8-6 gtss_disk 000050 external static structure array level 2 dcl 8-6 gtss_ext_$db 000040 external static bit(1) array unaligned dcl 3-10 ref 42 42 62 62 157 157 202 202 224 224 305 305 313 313 472 472 512 512 667 667 763 763 788 788 812 812 gtss_ext_$mcfc 000042 external static structure level 1 dcl 3-109 gtss_fail 000172 stack reference condition dcl 858 ref 90 139 186 253 357 392 482 737 795 800 837 gtss_filact_error_status_ 000046 constant entry external dcl 7-112 ref 311 gtss_file_values 000224 automatic structure level 1 dcl 6-56 set ref 566 566 h 000200 automatic fixed bin(24,0) dcl 859 in procedure "gtss_mcfc_" set ref 53* 55* 55 74 92* 92 108* 114* 114 121 126 141* 141 167* 168* 168 169 189* 189 190* 199* 199 234* 235* 235 236 256* 256 281* 281 h parameter fixed bin(24,0) dcl 331 in procedure "obtain_entry" set ref 325 333 333 350* h parameter fixed bin(24,0) dcl 365 in procedure "return_entry" set ref 362 367 367 385* hbound builtin function dcl 860 ref 53 167 234 333 367 666 667 667 1-15 1-17 hcs_$status_long 000026 constant entry external dcl 861 ref 404 i 000201 automatic fixed bin(24,0) dcl 862 in procedure "gtss_mcfc_" set ref 74* 75 76 77* 77 82* 93* 94* 94 97* 99* 99 103* 103 169* 170 171 172 173* 173 178* 190* 194 195* 195 236* 237 238 239 240* 240 245* 266* 270 271* 271 i parameter bit(36) dcl 539 in procedure "defer_delete" ref 530 i parameter bit(36) dcl 438 in procedure "remove_caller" set ref 425 449 512* i parameter bit(36) dcl 585 in procedure "cant_use" ref 579 590 i 000366 automatic fixed bin(24,0) dcl 359 in procedure "obtain_entry" set ref 333* 335* 335 336 337* 337 340 341 342* 342* i parameter bit(36) dcl 661 in procedure "record_caller" ref 654 680 i 000410 automatic fixed bin(24,0) dcl 394 in procedure "return_entry" set ref 367* 369* 369 370 371* 371 375 376 377* 377* id parameter bit(36) dcl 612 ref 607 613 j 000442 automatic fixed bin(24,0) dcl 527 in procedure "remove_caller" set ref 448* 449 452 453 454* j 000525 automatic fixed bin(24,0) dcl 687 in procedure "record_caller" set ref 665* 666 679 680 681 j 000547 automatic fixed bin(24,0) dcl 750 in procedure "restore_file" set ref 701* 702 703 713 714 715 719* 719 730* j 000534 automatic fixed bin(24,0) dcl 1-19 in procedure "get_caller_index" set ref 1-15* 1-16 j 000462 automatic fixed bin(24,0) dcl 574 in procedure "defer_delete" set ref 548* k 000524 automatic fixed bin(24,0) dcl 686 in procedure "record_caller" set ref 664* 680 681 k 000475 automatic fixed bin(24,0) dcl 604 in procedure "cant_use" set ref 589* 590 590 593* k 000441 automatic fixed bin(24,0) dcl 526 in procedure "remove_caller" set ref 442* 449 453 453 454 454 k 000464 automatic fixed bin(24,0) dcl 576 in procedure "defer_delete" set ref 543* k 000546 automatic fixed bin(24,0) dcl 749 in procedure "restore_file" set ref 699* 703 714 714 715 715 lbound builtin function dcl 863 ref 333 367 length builtin function dcl 864 ref 117 117 120 123 468 468 li parameter fixed bin(24,0) dcl 440 in procedure "remove_caller" ref 425 486 491 493 li 000202 automatic fixed bin(24,0) dcl 865 in procedure "gtss_mcfc_" set ref 170* 190* 194* 237* 270* lid 000507 automatic bit(36) dcl 622 set ref 613* 614* link 7765 based fixed bin(24,0) array level 3 dcl 2-20 set ref 103 121* 195 271 341 375* 486 491 493* 493 lock 3 based bit(36) array level 4 in structure "mcfc" dcl 2-20 in procedure "gtss_mcfc_" set ref 335* 337* 342* 369* 371* 377* lock 1 based bit(36) array level 4 in structure "mcfc" dcl 2-20 in procedure "gtss_mcfc_" set ref 55* 92* 114* 141* 168* 189* 199* 235* 256* 281* 471* 500* lock_id based bit(36) array level 2 dcl 2-42 set ref 449 453* 453 590 593* 666 667 667 680* 703* 714* 714 lw parameter bit(36) dcl 762 in procedure "can_not_lock" set ref 755 763 763 774* lw parameter bit(36) dcl 811 in procedure "unlock_entry" set ref 805 812 812 823* mcfc based structure level 1 dcl 2-20 mcfc_names based structure level 1 dcl 2-47 mlid parameter bit(36) dcl 27 set ref 31 42* 62* 93* 97* 142* 147 157* 190* 213 224* 266* 472* mod builtin function dcl 866 ref 53 167 234 1-17 n 000440 automatic fixed bin(24,0) dcl 525 in procedure "remove_caller" set ref 447* 448 450* 450 451 452 453 454 456 n 000550 automatic fixed bin(24,0) dcl 751 in procedure "restore_file" set ref 700* 702 713 714 715 717* 717 742 n 000463 automatic fixed bin(24,0) dcl 575 in procedure "defer_delete" set ref 547* 548 namel 7767 based fixed bin(17,0) array level 3 dcl 2-20 set ref 123* nameo 7766 based offset array level 3 dcl 2-20 set ref 122* 468 names 2 based area(261118) level 2 dcl 2-47 ref 117 122 468 names_lock based bit(36) level 2 dcl 2-47 set ref 113* 118* 464* 469* names_ptr 4 000042 external static pointer level 2 dcl 3-109 ref 113 117 118 122 464 468 469 new_ename 63 000224 automatic char(32) level 2 packed unaligned dcl 6-56 set ref 563* 568 ns based char unaligned dcl 868 set ref 117 120* 468 nsp 000204 automatic pointer dcl 869 set ref 117* 120 122 null builtin function dcl 870 ref 404 404 number_callers 7772 based fixed bin(24,0) array level 3 dcl 2-20 set ref 125* 447 451* 547 589 665 679* 700 742* number_who_could_not_call 7773(18) based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 2-20 set ref 675* 675 offset builtin function dcl 871 ref 122 ptr builtin function dcl 873 ref 468 rtrim builtin function dcl 874 ref 111 288 set_lock_$lock 000030 constant entry external dcl 875 ref 614 703 774 set_lock_$unlock 000032 constant entry external dcl 876 ref 823 set_switch 100 000224 automatic structure level 2 dcl 6-56 set ref 565* si parameter fixed bin(24,0) dcl 439 set ref 425 471* 471 491 496 499* 500* 500 sp 000544 automatic pointer dcl 748 set ref 698* 745 start_list 1 based structure array level 2 dcl 2-20 set ref 53 167 234 333 333 367 367 statp parameter pointer dcl 28 ref 31 57 147 201 213 309 311 414 416 511 597 u parameter fixed bin(24,0) dcl 366 in procedure "return_entry" set ref 362 374 375 376 385* u parameter fixed bin(24,0) dcl 332 in procedure "obtain_entry" set ref 325 340* 341 350* u 000206 automatic fixed bin(24,0) dcl 877 in procedure "gtss_mcfc_" set ref 108* 113* 118* 121 122 123 124 125 126 127* 127 132* 142* 143* 143 uid 11 000212 automatic bit(36) level 2 packed unaligned dcl 894 set ref 421 unique_bits_ 000034 constant entry external dcl 878 ref 563 563 unique_chars_ 000036 constant entry external dcl 879 ref 563 unique_id 7770 based bit(36) array level 3 dcl 2-20 set ref 76 124* 172 239 512* unspec builtin function dcl 880 set ref 76 124 172 239 374* 421* 565* version 000224 automatic fixed bin(17,0) level 2 dcl 6-56 set ref 560* wait_time 1 000042 external static fixed bin(17,0) level 2 dcl 3-109 set ref 774* write 0(01) defined bit(1) level 2 packed unaligned dcl 643 ref 630 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. area_pointer automatic pointer dcl 5-2 attr_name internal static char(4) initial array unaligned dcl 6-46 db_ defined bit(1) unaligned dcl 4-32 db_CFP_input defined bit(1) unaligned dcl 4-32 db_abs defined bit(1) unaligned dcl 4-32 db_attributes_mgr defined bit(1) unaligned dcl 4-32 db_dq defined bit(1) unaligned dcl 4-32 db_drl_addmem defined bit(1) unaligned dcl 4-32 db_drl_callss defined bit(1) unaligned dcl 4-32 db_drl_defil defined bit(1) unaligned dcl 4-32 db_drl_dio defined bit(1) unaligned dcl 4-32 db_drl_filact defined bit(1) unaligned dcl 4-32 db_drl_filsp defined bit(1) unaligned dcl 4-32 db_drl_grow defined bit(1) unaligned dcl 4-32 db_drl_kin defined bit(1) unaligned dcl 4-32 db_drl_morlnk defined bit(1) unaligned dcl 4-32 db_drl_msub defined bit(1) unaligned dcl 4-32 db_drl_part defined bit(1) unaligned dcl 4-32 db_drl_retfil defined bit(1) unaligned dcl 4-32 db_drl_rew defined bit(1) unaligned dcl 4-32 db_drl_rstswh defined bit(1) unaligned dcl 4-32 db_drl_setswh defined bit(1) unaligned dcl 4-32 db_drl_switch defined bit(1) unaligned dcl 4-32 db_drl_t_cfio defined bit(1) unaligned dcl 4-32 db_expand_pathname defined bit(1) unaligned dcl 4-32 db_filact_funct02 defined bit(1) unaligned dcl 4-32 db_filact_funct03 defined bit(1) unaligned dcl 4-32 db_filact_funct04 defined bit(1) unaligned dcl 4-32 db_filact_funct05 defined bit(1) unaligned dcl 4-32 db_filact_funct10 defined bit(1) unaligned dcl 4-32 db_filact_funct11 defined bit(1) unaligned dcl 4-32 db_filact_funct14 defined bit(1) unaligned dcl 4-32 db_filact_funct18 defined bit(1) unaligned dcl 4-32 db_filact_funct19 defined bit(1) unaligned dcl 4-32 db_filact_funct21 defined bit(1) unaligned dcl 4-32 db_filact_funct22 defined bit(1) unaligned dcl 4-32 db_interp_prim defined bit(1) unaligned dcl 4-32 db_ios defined bit(1) unaligned dcl 4-32 db_run_subsystem defined bit(1) unaligned dcl 4-32 debug_bit_names internal static structure array level 1 unaligned dcl 4-75 empty builtin function dcl 847 entry_names based char(32) array dcl 5-2 fni based char unaligned dcl 856 gtss_CFP_abort_ 000000 constant entry external dcl 7-9 gtss_CFP_break_ 000000 constant entry external dcl 7-10 gtss_CFP_input_ 000000 constant entry external dcl 7-11 gtss_CFP_output_ 000000 constant entry external dcl 7-12 gtss_abandon_CFP_ 000000 constant entry external dcl 7-13 gtss_abort_dump_ 000000 constant entry external dcl 7-14 gtss_abort_subsystem_ 000000 constant entry external dcl 7-15 gtss_abort_subsystem_$not_imp 000000 constant entry external dcl 7-16 gtss_abs_$abs_equiv 000000 constant entry external dcl 7-19 gtss_abs_$cpu_runout 000000 constant entry external dcl 7-20 gtss_abs_$create_absin 000000 constant entry external dcl 7-21 gtss_abs_$dabt_check 000000 constant entry external dcl 7-22 gtss_abs_$get_drm 000000 constant entry external dcl 7-24 gtss_abs_$get_id 000000 constant entry external dcl 7-23 gtss_abs_login_banner_ 000000 constant entry external dcl 7-17 gtss_abs_logout_banner_ 000000 constant entry external dcl 7-18 gtss_adjust_size_ 000000 constant entry external dcl 7-25 gtss_aft_$add 000000 constant entry external dcl 7-26 gtss_aft_$delete 000000 constant entry external dcl 7-27 gtss_aft_$find 000000 constant entry external dcl 7-28 gtss_aft_$initialize 000000 constant entry external dcl 7-29 gtss_ascii_bcd_ 000000 constant entry external dcl 7-30 gtss_attributes_mgr_$get 000000 constant entry external dcl 7-31 gtss_attributes_mgr_$set 000000 constant entry external dcl 7-32 gtss_bcd_ascii_ 000000 constant entry external dcl 7-33 gtss_bcd_ascii_$lc 000000 constant entry external dcl 7-34 gtss_break_vector_ 000000 constant entry external dcl 7-35 gtss_break_vector_$drl_in_progress 000000 constant entry external dcl 7-36 gtss_break_vector_$status 000000 constant entry external dcl 7-37 gtss_build_ 000000 constant entry external dcl 7-38 gtss_com_err_ 000000 constant entry external dcl 7-39 gtss_derail_processor_ 000000 constant entry external dcl 7-40 gtss_derail_processor_$set 000000 constant entry external dcl 7-41 gtss_dq_$catp 000000 constant entry external dcl 7-42 gtss_dq_$create 000000 constant entry external dcl 7-43 gtss_dq_$dibp 000000 constant entry external dcl 7-44 gtss_dq_$entries_info 000000 constant entry external dcl 7-45 gtss_dq_$hdrp 000000 constant entry external dcl 7-46 gtss_dq_$mod_js 000000 constant entry external dcl 7-47 gtss_dq_$open_exc 000000 constant entry external dcl 7-48 gtss_dq_$open_gen 000000 constant entry external dcl 7-49 gtss_drl_abort_ 000000 constant entry external dcl 7-50 gtss_drl_addmem_ 000000 constant entry external dcl 7-51 gtss_drl_callss_ 000000 constant entry external dcl 7-52 gtss_drl_corfil_ 000000 constant entry external dcl 7-53 gtss_drl_defil_ 000000 constant entry external dcl 7-54 gtss_drl_defil_$subr 000000 constant entry external dcl 7-55 gtss_drl_dio_ 000000 constant entry external dcl 7-56 gtss_drl_drlimt_ 000000 constant entry external dcl 7-57 gtss_drl_drlsav_ 000000 constant entry external dcl 7-58 gtss_drl_filact_ 000000 constant entry external dcl 7-59 gtss_drl_filsp_ 000000 constant entry external dcl 7-60 gtss_drl_grow_ 000000 constant entry external dcl 7-61 gtss_drl_gwake_ 000000 constant entry external dcl 7-62 gtss_drl_jsts_ 000000 constant entry external dcl 7-63 gtss_drl_kin_ 000000 constant entry external dcl 7-64 gtss_drl_kotnow_ 000000 constant entry external dcl 7-65 gtss_drl_kotnow_$gtss_drl_kout_ 000000 constant entry external dcl 7-66 gtss_drl_koutn_ 000000 constant entry external dcl 7-67 gtss_drl_morlnk_ 000000 constant entry external dcl 7-68 gtss_drl_msub_ 000000 constant entry external dcl 7-69 gtss_drl_objtim_ 000000 constant entry external dcl 7-70 gtss_drl_part_ 000000 constant entry external dcl 7-71 gtss_drl_pasaft_ 000000 constant entry external dcl 7-72 gtss_drl_pasdes_ 000000 constant entry external dcl 7-73 gtss_drl_pasust_ 000000 constant entry external dcl 7-74 gtss_drl_pdio_ 000000 constant entry external dcl 7-75 gtss_drl_prgdes_ 000000 constant entry external dcl 7-76 gtss_drl_pseudo_ 000000 constant entry external dcl 7-77 gtss_drl_relmem_ 000000 constant entry external dcl 7-78 gtss_drl_restor_ 000000 constant entry external dcl 7-79 gtss_drl_retfil_ 000000 constant entry external dcl 7-80 gtss_drl_return_ 000000 constant entry external dcl 7-81 gtss_drl_rew_ 000000 constant entry external dcl 7-82 gtss_drl_rstswh_ 000000 constant entry external dcl 7-83 gtss_drl_setlno_ 000000 constant entry external dcl 7-84 gtss_drl_setswh_ 000000 constant entry external dcl 7-85 gtss_drl_snumb_ 000000 constant entry external dcl 7-86 gtss_drl_spawn_ 000000 constant entry external dcl 7-87 gtss_drl_spawn_$gtss_drl_pasflr_ 000000 constant entry external dcl 7-88 gtss_drl_stoppt_ 000000 constant entry external dcl 7-89 gtss_drl_switch_ 000000 constant entry external dcl 7-90 gtss_drl_sysret_ 000000 constant entry external dcl 7-91 gtss_drl_t_cfio_ 000000 constant entry external dcl 7-92 gtss_drl_t_cmov_ 000000 constant entry external dcl 7-93 gtss_drl_t_err_ 000000 constant entry external dcl 7-94 gtss_drl_t_goto_ 000000 constant entry external dcl 7-95 gtss_drl_t_linl_ 000000 constant entry external dcl 7-96 gtss_drl_t_rscc_ 000000 constant entry external dcl 7-97 gtss_drl_tapein_ 000000 constant entry external dcl 7-98 gtss_drl_task_ 000000 constant entry external dcl 7-99 gtss_drl_termtp_ 000000 constant entry external dcl 7-100 gtss_drl_time_ 000000 constant entry external dcl 7-101 gtss_drun_ 000000 constant entry external dcl 7-102 gtss_dsd_lookup_ 000000 constant entry external dcl 7-103 gtss_dsd_process_ 000000 constant entry external dcl 7-104 gtss_edit_dsd_ 000000 constant entry external dcl 7-105 gtss_expand_pathname_ 000000 constant entry external dcl 7-107 gtss_expand_pathname_$verify_umc 000000 constant entry external dcl 7-108 gtss_ext_$CFP_bits external static structure level 1 dcl 3-37 gtss_ext_$SYstarstar_file_no external static fixed bin(24,0) dcl 3-33 gtss_ext_$aem external static fixed bin(17,0) dcl 3-8 gtss_ext_$aft external static structure level 1 dcl 3-78 gtss_ext_$bad_drl_rtrn external static label variable dcl 3-9 gtss_ext_$com_reg external static structure level 1 dcl 3-45 gtss_ext_$deferred_catalogs_ptr external static pointer dcl 3-11 gtss_ext_$dispose_of_drl external static label variable dcl 3-12 gtss_ext_$drl_rtrn external static label variable array dcl 3-13 gtss_ext_$drm_path external static char(168) unaligned dcl 3-14 gtss_ext_$drun_jid external static char(5) unaligned dcl 3-15 gtss_ext_$event_channel external static fixed bin(71,0) dcl 3-16 gtss_ext_$fast_lib external static structure level 1 dcl 3-98 gtss_ext_$finished external static label variable dcl 3-17 gtss_ext_$flags external static structure level 1 dcl 3-60 gtss_ext_$gdb_name external static char(8) unaligned dcl 3-18 gtss_ext_$get_line external static entry variable dcl 3-19 gtss_ext_$gtss_slave_area_seg external static pointer array dcl 3-20 gtss_ext_$hcs_work_area_ptr external static pointer dcl 3-21 gtss_ext_$homedir external static char(64) unaligned dcl 3-22 gtss_ext_$last_k_was_out external static bit(1) dcl 3-23 gtss_ext_$pdir external static varying char(168) dcl 3-24 gtss_ext_$popup_from_pi external static label variable dcl 3-25 gtss_ext_$ppt external static pointer dcl 3-94 gtss_ext_$process_type external static fixed bin(17,0) dcl 3-26 gtss_ext_$put_chars external static entry variable dcl 3-27 gtss_ext_$restart_from_pi external static label variable dcl 3-28 gtss_ext_$restart_seg_ptr external static pointer dcl 3-29 gtss_ext_$sig_ptr external static pointer dcl 3-30 gtss_ext_$stack_level_ external static fixed bin(17,0) dcl 3-31 gtss_ext_$statistics external static structure level 1 dcl 3-72 gtss_ext_$suspended_process external static bit(1) unaligned dcl 3-32 gtss_ext_$user_id external static varying char(26) dcl 3-34 gtss_ext_$work_area_ptr external static pointer dcl 3-35 gtss_fault_processor_ 000000 constant entry external dcl 7-109 gtss_fault_processor_$timer_runout 000000 constant entry external dcl 7-111 gtss_filact_funct02_ 000000 constant entry external dcl 7-113 gtss_filact_funct03_ 000000 constant entry external dcl 7-114 gtss_filact_funct04_ 000000 constant entry external dcl 7-115 gtss_filact_funct05_ 000000 constant entry external dcl 7-116 gtss_filact_funct08_ 000000 constant entry external dcl 7-117 gtss_filact_funct10_ 000000 constant entry external dcl 7-118 gtss_filact_funct11_ 000000 constant entry external dcl 7-119 gtss_filact_funct14_ 000000 constant entry external dcl 7-120 gtss_filact_funct18_ 000000 constant entry external dcl 7-121 gtss_filact_funct19_ 000000 constant entry external dcl 7-122 gtss_filact_funct21_ 000000 constant entry external dcl 7-123 gtss_filact_funct22_ 000000 constant entry external dcl 7-124 gtss_find_cond_frame_ 000000 constant entry external dcl 7-110 gtss_interp_prim_ 000000 constant entry external dcl 7-126 gtss_interp_prim_$callss 000000 constant entry external dcl 7-127 gtss_interp_prim_$sysret 000000 constant entry external dcl 7-128 gtss_interp_prim_$t_goto 000000 constant entry external dcl 7-129 gtss_ios_change_size_ 000000 constant entry external dcl 7-130 gtss_ios_close_ 000000 constant entry external dcl 7-131 gtss_ios_exchange_names_ 000000 constant entry external dcl 7-132 gtss_ios_initialize_ 000000 constant entry external dcl 7-133 gtss_ios_io_ 000000 constant entry external dcl 7-134 gtss_ios_open_ 000000 constant entry external dcl 7-135 gtss_ios_position_ 000000 constant entry external dcl 7-136 gtss_mcfc_$close 000000 constant entry external dcl 7-139 gtss_mcfc_$delete 000000 constant entry external dcl 7-137 gtss_mcfc_$open 000000 constant entry external dcl 7-138 gtss_mcfc_empty 000000 constant entry external dcl 7-106 gtss_mcfc_init_ 000000 constant entry external dcl 7-125 gtss_read_starCFP_ 000000 constant entry external dcl 7-140 gtss_read_starCFP_$last_os 000000 constant entry external dcl 7-141 gtss_run_subsystem_ 000000 constant entry external dcl 7-142 gtss_run_subsystem_$finish 000000 constant entry external dcl 7-143 gtss_run_subsystem_$restor 000000 constant entry external dcl 7-144 gtss_run_subsystem_$restor_perm 000000 constant entry external dcl 7-145 gtss_set_slave_ 000000 constant entry external dcl 7-146 gtss_set_slave_$load_bar 000000 constant entry external dcl 7-147 gtss_update_safe_store_ 000000 constant entry external dcl 7-148 gtss_verify_access_ 000000 constant entry external dcl 7-149 gtss_verify_access_$check_forced_access 000000 constant entry external dcl 7-150 gtss_write_starCFP_ 000000 constant entry external dcl 7-151 info_ptr automatic pointer dcl 5-2 link based structure level 1 dcl 5-2 n automatic fixed bin(24,0) dcl 867 pathname based char dcl 5-2 pointer builtin function dcl 872 u automatic fixed bin(24,0) dcl 685 NAMES DECLARED BY EXPLICIT CONTEXT. busy 000522 constant label dcl 56 ref 115 168 235 466 677 can_not_lock 005516 constant entry internal dcl 755 ref 55 77 113 127 168 173 235 240 335 369 464 471 cant_use 004667 constant entry internal dcl 579 ref 93 close 001515 constant entry external dcl 147 compare_access 005071 constant entry internal dcl 625 ref 590 conclude 000527 constant label dcl 59 ref 95 cont 003417 constant label dcl 381 in procedure "return_entry" ref 372 cont 003170 constant label dcl 346 in procedure "obtain_entry" ref 338 defer_delete 004466 constant entry internal dcl 530 ref 266 delete 002167 constant entry external dcl 213 delete_file 002556 constant entry internal dcl 284 ref 279 462 get_caller_index 005277 constant entry internal dcl 1-5 ref 442 543 587 664 699 get_uid 003501 constant entry internal dcl 397 ref 51 166 233 gtss_mcfc_ 000340 constant entry external dcl 9 nonexistent_process 005030 constant entry internal dcl 607 ref 593 obtain_entry 003032 constant entry internal dcl 325 ref 108 open 000354 constant entry external dcl 31 record_caller 005124 constant entry internal dcl 654 ref 97 142 remove_caller 003601 constant entry internal dcl 425 ref 190 restore_file 005323 constant entry internal dcl 692 ref 594 782 retry 004703 constant label dcl 588 ref 595 return_entry 003253 constant entry internal dcl 362 ref 499 unlock_entry 006047 constant entry internal dcl 805 ref 92 94 99 114 118 141 143 189 199 256 281 337 342 371 377 465 469 484 500 502 523 572 676 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6566 6642 6305 6576 Length 7274 6305 54 415 261 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gtss_mcfc_ 1000 external procedure is an external procedure. delete_file internal procedure shares stack frame of external procedure gtss_mcfc_. obtain_entry internal procedure shares stack frame of external procedure gtss_mcfc_. return_entry internal procedure shares stack frame of external procedure gtss_mcfc_. get_uid internal procedure shares stack frame of external procedure gtss_mcfc_. remove_caller internal procedure shares stack frame of external procedure gtss_mcfc_. defer_delete internal procedure shares stack frame of external procedure gtss_mcfc_. cant_use internal procedure shares stack frame of external procedure gtss_mcfc_. nonexistent_process internal procedure shares stack frame of external procedure gtss_mcfc_. compare_access internal procedure shares stack frame of external procedure gtss_mcfc_. record_caller internal procedure shares stack frame of external procedure gtss_mcfc_. get_caller_index internal procedure shares stack frame of external procedure gtss_mcfc_. restore_file internal procedure shares stack frame of external procedure gtss_mcfc_. can_not_lock internal procedure shares stack frame of external procedure gtss_mcfc_. unlock_entry internal procedure shares stack frame of external procedure gtss_mcfc_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gtss_mcfc_ 000100 control_seg_ename gtss_mcfc_ 000110 ENTRY gtss_mcfc_ 000115 fn gtss_mcfc_ 000170 fuid gtss_mcfc_ 000200 h gtss_mcfc_ 000201 i gtss_mcfc_ 000202 li gtss_mcfc_ 000204 nsp gtss_mcfc_ 000206 u gtss_mcfc_ 000210 caller_ptr gtss_mcfc_ 000212 br gtss_mcfc_ 000224 gtss_file_values gtss_mcfc_ 000366 i obtain_entry 000410 i return_entry 000440 n remove_caller 000441 k remove_caller 000442 j remove_caller 000462 j defer_delete 000463 n defer_delete 000464 k defer_delete 000474 c cant_use 000475 k cant_use 000506 c nonexistent_process 000507 lid nonexistent_process 000524 k record_caller 000525 j record_caller 000534 j get_caller_index 000544 sp restore_file 000546 k restore_file 000547 j restore_file 000550 n restore_file 000551 c restore_file 000566 c can_not_lock 000604 c unlock_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return mod_fx1 signal shorten_stack ext_entry ext_entry_desc pointer_hard offset_hard alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ delete_$path gtss_attributes_mgr_$set gtss_filact_error_status_ hcs_$status_long set_lock_$lock set_lock_$unlock unique_bits_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_lock_reset error_table_$lock_not_locked error_table_$lock_wait_time_exceeded error_table_$locked_by_other_process error_table_$locked_by_this_process error_table_$noentry gtss_dfd_ext_$disk_file_data gtss_ext_$db gtss_ext_$mcfc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000337 29 000345 31 000346 41 000401 42 000404 51 000451 53 000456 55 000464 56 000522 57 000523 59 000527 61 000530 62 000532 71 000576 74 000577 75 000606 76 000610 77 000620 82 000651 90 000712 92 000715 93 000744 94 000764 95 001013 97 001014 98 001027 99 001030 100 001057 103 001060 104 001062 108 001063 111 001065 113 001145 114 001201 115 001230 117 001231 118 001243 120 001267 121 001275 122 001310 123 001315 124 001317 125 001321 126 001322 127 001324 132 001355 139 001412 141 001415 142 001444 143 001457 144 001506 145 001507 147 001510 156 001542 157 001545 166 001612 167 001617 168 001625 169 001663 170 001672 171 001674 172 001676 173 001706 178 001737 186 002000 189 002003 190 002032 191 002050 194 002051 195 002053 196 002056 199 002057 200 002106 201 002110 202 002114 211 002160 213 002161 223 002214 224 002217 233 002264 234 002271 235 002277 236 002335 237 002344 238 002346 239 002350 240 002360 245 002411 253 002452 256 002455 266 002504 267 002516 270 002517 271 002521 272 002524 279 002525 281 002526 282 002555 284 002556 288 002557 289 002613 291 002651 292 002652 305 002707 308 002747 309 002751 311 002761 313 002772 322 003031 325 003032 333 003034 335 003045 336 003103 337 003113 338 003136 340 003137 341 003141 342 003145 343 003167 346 003170 347 003171 350 003212 357 003247 358 003252 362 003253 367 003255 369 003265 370 003323 371 003333 372 003356 374 003357 375 003366 376 003372 377 003374 378 003416 381 003417 382 003420 385 003440 392 003475 393 003500 397 003501 404 003503 413 003545 414 003547 416 003557 418 003563 421 003571 422 003574 425 003601 442 003603 447 003615 448 003625 449 003633 450 003644 451 003646 452 003656 453 003661 454 003667 456 003707 462 003712 464 003720 465 003754 466 004004 468 004005 469 004025 471 004052 472 004111 482 004155 484 004160 486 004210 491 004224 493 004241 495 004251 496 004252 499 004255 500 004265 501 004315 502 004316 504 004342 505 004344 507 004345 510 004347 511 004352 512 004356 523 004435 524 004465 530 004466 542 004470 543 004471 547 004503 548 004513 549 004521 554 004523 560 004533 561 004535 562 004545 563 004555 564 004603 565 004605 566 004606 568 004622 572 004637 573 004666 579 004667 587 004671 588 004703 589 004704 590 004721 593 004760 594 004776 595 005005 597 005006 598 005012 601 005020 602 005022 607 005030 613 005032 614 005034 619 005050 620 005063 625 005071 629 005073 630 005105 631 005117 654 005124 664 005126 665 005140 666 005152 667 005154 675 005214 676 005231 677 005253 679 005254 680 005256 681 005263 683 005276 1 5 005277 1 15 005301 1 16 005310 1 17 005315 1 18 005322 692 005323 698 005325 699 005327 700 005341 701 005351 702 005353 703 005357 708 005400 713 005405 714 005410 715 005415 717 005434 718 005436 719 005437 730 005443 737 005476 739 005501 742 005502 745 005513 746 005515 755 005516 763 005527 774 005607 779 005624 781 005634 782 005637 783 005654 787 005662 788 005664 790 005723 792 005731 793 005733 795 005770 796 005773 798 006001 800 006036 801 006041 805 006047 812 006060 823 006140 827 006152 830 006155 834 006220 837 006255 839 006260 ----------------------------------------------------------- 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