COMPILATION LISTING OF SEGMENT vtoc_pathname Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/18/86 1412.6 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 vtoc_pathname: proc; 12 13 /* vtoc_pathname Bernard Greenberg 05/20/76 */ 14 15 dcl (com_err_, ioa_) entry options (variable); 16 dcl nfsw bit (1) init ("0"b); 17 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 18 dcl 1 local_vtoce like vtoce aligned; 19 dcl (vtocx, pvtx) fixed bin; 20 dcl phcs_$get_vtoce entry (fixed bin, fixed bin, ptr, fixed bin (35)); 21 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 22 dcl arg char (argl) based (argp); 23 dcl argl fixed bin, argp ptr; 24 dcl i fixed bin; 25 dcl q (1) ptr; 26 dcl cleanup condition; 27 dcl error_table_$pvid_not_found fixed bin (35) ext; 28 dcl pn char (168); 29 dcl vpn_cv_uid_path_$ent entry (ptr, char (*), bit (36), fixed bin (35)); 30 dcl mdc_$read_disk_table entry (ptr, fixed bin (35)); 31 dcl (get_temp_segments_, release_temp_segments_) entry (char (*), (*) ptr, fixed bin (35)); 32 dcl error_table_$badopt fixed bin (35) ext; 33 dcl code fixed bin (35); 34 dcl myname char (19) init ("vtoc_pathname"); 35 36 call cu_$arg_ptr (1, argp, argl, code); 37 if code ^= 0 then do; 38 usage: call com_err_ (code, myname, "Usage: vtoc_pathname pvtx/volname vtocx (octal)"); 39 return; 40 end; 41 42 pvtx = cv_oct_check_ (arg, code); 43 if code ^= 0 then do; 44 on cleanup call release_temp_segments_ (myname, q, (0)); 45 call get_temp_segments_ (myname, q, code); 46 if code ^= 0 then do; 47 call com_err_ (code, myname, "Getting temp disk_table seg"); 48 return; 49 end; 50 dtp = q (1); 51 call mdc_$read_disk_table (dtp, code); 52 if code ^= 0 then do; 53 call release_temp_segments_ (myname, q, (0)); 54 call com_err_ (code, myname, "Reading disk table."); 55 return; 56 end; 57 do pvtx = 1 to dt.n_entries; 58 dtep = addr (dt.array (pvtx)); 59 if dte.used & dte.storage_system & dte.pvname = arg then go to got_pvtx; 60 end; 61 call release_temp_segments_ (myname, q, (0)); 62 call com_err_ (error_table_$pvid_not_found, myname, arg); 63 return; 64 got_pvtx: call release_temp_segments_ (myname, q, (0)); 65 end; 66 67 call cu_$arg_ptr (2, argp, argl, code); 68 if code ^= 0 then go to usage; 69 vtocx = cv_oct_check_ (arg, code); 70 if code ^= 0 then do; 71 code = 0; 72 go to usage; 73 end; 74 75 call cu_$arg_ptr (3, argp, argl, code); 76 if code = 0 then do; 77 if arg = "-brief" | arg = "-bf" then nfsw = "1"b; 78 else do; 79 call com_err_ (error_table_$badopt, myname, arg); 80 return; 81 end; 82 end; 83 84 vtocep = addr (local_vtoce); 85 call phcs_$get_vtoce (pvtx, vtocx, vtocep, code); 86 if code ^= 0 then do; 87 call com_err_ (code, myname, "Getting vtoce ^o on pvtx ^o.", vtocx, pvtx); 88 return; 89 end; 90 91 92 if vtoce.uid = "0"b then do; 93 if nfsw then return; 94 call com_err_ (0, myname, "Vtocx ^o on pvtx ^o is free.", vtocx, pvtx); 95 return; 96 end; 97 98 pn = ""; 99 call vpn_cv_uid_path_$ent (addr (vtoce.uid_path), pn, vtoce.uid, code); 100 if code ^= 0 then 101 call com_err_ (code, myname, "Cannot completely convert uid path"); 102 call ioa_ ("Pvtx ^o vtocx ^o = ^a", pvtx, vtocx, pn); 103 return; 104 /* BEGIN INCLUDE FILE ...vtoce.incl.pl1 ... last modified September 1982 */ 1 2 /* Template for a VTOC entry. Length = 192 words. (3 * 64). */ 1 3 /* NOTE: vtoc_man clears pad fields before writing a vtoce. */ 1 4 1 5 dcl vtocep ptr; 1 6 1 7 dcl 1 vtoce based (vtocep) aligned, 1 8 1 9 1 10 (2 pad_free_vtoce_chain bit (36), /* Used to be pointer to next free VTOCE */ 1 11 1 12 2 uid bit (36), /* segment's uid - zero if vtoce is free */ 1 13 1 14 2 msl bit (9), /* maximum segment length in 1024 word units */ 1 15 2 csl bit (9), /* current segment length - in 1024 word units */ 1 16 2 records bit (9), /* number of records used by the seg in second storage */ 1 17 2 pad2 bit (9), 1 18 1 19 2 dtu bit (36), /* date and time segment was last used */ 1 20 1 21 2 dtm bit (36), /* date and time segment was last modified */ 1 22 1 23 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 1 24 2 deciduous bit (1), /* true if hc_sdw */ 1 25 2 nid bit (1), /* no incremental dump switch */ 1 26 2 dnzp bit (1), /* Dont null zero pages */ 1 27 2 gtpd bit (1), /* Global transparent paging device */ 1 28 2 per_process bit (1), /* Per process segment (deleted every bootload) */ 1 29 2 damaged bit (1), /* TRUE if contents damaged */ 1 30 2 fm_damaged bit (1), /* TRUE if filemap checksum bad */ 1 31 2 fm_checksum_valid bit (1), /* TRUE if the checksum has been computed */ 1 32 2 synchronized bit (1), /* TRUE if this is a data management synchronized segment */ 1 33 2 pad3 bit (8), 1 34 2 dirsw bit (1), /* directory switch */ 1 35 2 master_dir bit (1), /* master directory - a root for the logical volume */ 1 36 2 pad4 bit (16)) unaligned, /* not used */ 1 37 1 38 2 fm_checksum bit (36) aligned, /* Checksum of used portion of file map */ 1 39 1 40 (2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 1 41 1 42 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 1 43 1 44 2 received (0:1) fixed bin (18) unsigned, /* total amount of storage this dir has received */ 1 45 1 46 2 trp (0:1) fixed bin (71), /* time record product - (0) for non dir pages */ 1 47 1 48 2 trp_time (0:1) bit (36), /* time time_record_product was last calculated */ 1 49 1 50 1 51 1 52 1 53 1 54 2 fm (0:255) bit (18), /* file map - 256 entries - 18 bits per entry */ 1 55 1 56 2 pad6 (10) bit (36), /* not used */ 1 57 1 58 2 ncd bit (1), /* no complete dump switch */ 1 59 2 pad7 bit (17), 1 60 2 pad8 bit (18), 1 61 1 62 2 dtd bit (36), /* date-time-dumped */ 1 63 1 64 2 volid (3) bit (36), /* volume ids of last incremental, consolidated, and complete dumps */ 1 65 1 66 2 master_dir_uid bit (36), /* superior master directory uid */ 1 67 1 68 1 69 1 70 1 71 2 uid_path (0:15) bit (36), /* uid pathname of all parents starting after the root */ 1 72 1 73 2 primary_name char (32), /* primary name of the segment */ 1 74 1 75 2 time_created bit (36), /* time the segment was created */ 1 76 1 77 2 par_pvid bit (36), /* physical volume id of the parent */ 1 78 1 79 2 par_vtocx fixed bin (17), /* vtoc entry index of the parent */ 1 80 2 branch_rp bit (18)) unaligned, /* rel pointer of the branch of this segment */ 1 81 1 82 2 cn_salv_time bit (36), /* time branch - vtoce connection checked */ 1 83 1 84 2 access_class bit (72), /* access class in branch */ 1 85 2 perm_flags aligned, 1 86 3 per_bootload bit (1) unal, /* ON => deleted each bootload */ 1 87 3 pad9 bit (35) unal, 1 88 2 owner bit (36); /* pvid of this volume */ 1 89 1 90 dcl vtoce_parts (3) bit (36 * 64) aligned based (vtocep); 1 91 1 92 dcl 1 seg_vtoce based (vtocep) aligned, /* Overlay for vtoce of segments, which don't have quota */ 1 93 2 pad1 bit (7*36), 1 94 2 usage fixed bin (35), /* page fault count: overlays quota */ 1 95 2 pad2 bit (184*36); 1 96 1 97 /* END INCLUDE FILE vtoce.incl.pl1 */ 104 105 /* BEGIN INCLUDE FILE ... disk_table.incl.pl1 ... Created Oct 75 for NSS */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 2 6* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 2 7* Add support for subvolumes. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Modified July 1977 by T. Casey to add pdirs_ok switch in lve */ 2 12 /* Modified April 1981 by J. Bongiovanni to add shared_spindle_flip */ 2 13 /* Modified 831122 by E. A. Ranzenbach to add vacate_pdirs bit to lve. */ 2 14 2 15 /* The disk table lives in ring 1. Its entries parallel the PVT */ 2 16 2 17 dcl dtp ptr, 2 18 dtep ptr, 2 19 lvep ptr; 2 20 2 21 2 22 2 23 dcl 1 dt based (dtp) aligned, 2 24 2 25 2 n_entries fixed bin (17), /* number of disk table entries */ 2 26 2 max_n_entries fixed bin (17), /* max number of disk table entries */ 2 27 2 n_in_use fixed bin (17), /* number of disk table entries in use */ 2 28 2 rpvx fixed bin, /* index (pvtx, too) of the RPV */ 2 29 2 version fixed bin init (1), 2 30 2 n_lv_entries fixed bin, /* Number of LV entries */ 2 31 2 pad (2) bit (36), 2 32 2 array (0 refer (dt.max_n_entries)) like dte, 2 33 2 lv_array (0 refer (dt.max_n_entries)) like lve; 2 34 2 35 dcl 1 dte based (dtep) aligned, 2 36 2 drive_name char (8), /* device name */ 2 37 (2 device_type fixed bin (8), /* device type */ 2 38 2 used bit (1), /* TRUE if this entry is used for paging */ 2 39 2 known bit (1), /* TRUE if label has been read and checked */ 2 40 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 2 41 2 permanent bit (1), /* TRUE if cannot be demounted */ 2 42 2 deleted bit (1), /* TRUE if deleted by "deld" */ 2 43 2 rpv bit (1), /* TRUE if the root physical volume */ 2 44 2 demounted bit (1), /* TRUE if was here or was assumed here */ 2 45 2 need_salvage bit (1), /* TRUE if this vol was volsalv'd automatic */ 2 46 2 hc_accepted bit (1), /* TRUE if vol accepted by ring 0 init */ 2 47 2 shared_spindle_flip bit (1), /* used by ring-4 for shared spindle allocation */ 2 48 2 is_sub_vol bit (1), 2 49 2 pad bit (3), 2 50 2 lvx fixed bin (11), /* index in lv_array of lve */ 2 51 2 pre_accepted bit (1)) unaligned, /* TRUE if was used in previous bootload */ 2 52 2 sv_num fixed bin unal, /* this sv number */ 2 53 2 num_of_sv fixed bin unal, /* number of sv for this pv */ 2 54 2 sv_name char (2) aligned, 2 55 2 pvid bit (36), /* physical volume ID */ 2 56 2 pvname char (32); /* Physical volume name. */ 2 57 2 58 dcl 1 lve based (lvep) aligned, 2 59 2 lvid bit (36), /* logical volume ID */ 2 60 (2 used bit (1), /* TRUE if entry used */ 2 61 2 hv_mounted bit (1), /* TRUE if hvol is really OK */ 2 62 2 public bit (1), /* TRUE for public vol */ 2 63 2 mounting bit (1), /* TRUE if mhv is in progress */ 2 64 2 demounting bit (1), /* TRUE if dhv is in progress */ 2 65 2 good_candidate bit (1) unal, /* used for auto dhv */ 2 66 2 demounted_only bit (1) unal, /* lve here only to warm demounted pve's */ 2 67 2 pdirs_ok bit (1) unal, /* TRUE if process directory segments can be on this lv */ 2 68 2 prev_bootload bit (1) unal, /* TRUE if can auto-accept pvs */ 2 69 2 vacate_pdirs bit (1) unal, /* if TRUE we will demand move all perprocess segs */ 2 70 2 pad bit (26)) unal, 2 71 2 lvname char (32), /* Logical volume name */ 2 72 2 min_access_class bit (72), /* Security stuff */ 2 73 2 max_access_class bit (72); /* .. */ 2 74 2 75 /* END INCLUDE FILE ...disk_table.incl.pl1 */ 105 106 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/18/86 1234.9 vtoc_pathname.pl1 >spec>install>1098>vtoc_pathname.pl1 104 1 10/04/83 1105.1 vtoce.incl.pl1 >ldd>include>vtoce.incl.pl1 105 2 07/18/86 1218.4 disk_table.incl.pl1 >spec>install>1098>disk_table.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. arg based char unaligned dcl 22 set ref 42* 59 62* 69* 77 77 79* argl 000403 automatic fixed bin(17,0) dcl 23 set ref 36* 42 42 59 62 62 67* 69 69 75* 77 77 79 79 argp 000404 automatic pointer dcl 23 set ref 36* 42 59 62 67* 69 75* 77 77 79 array 10 based structure array level 2 dcl 2-23 set ref 58 cleanup 000410 stack reference condition dcl 26 ref 44 code 000470 automatic fixed bin(35,0) dcl 33 set ref 36* 37 38* 42* 43 45* 46 47* 51* 52 54* 67* 68 69* 70 71* 75* 76 85* 86 87* 99* 100 100* com_err_ 000010 constant entry external dcl 15 ref 38 47 54 62 79 87 94 100 cu_$arg_ptr 000020 constant entry external dcl 21 ref 36 67 75 cv_oct_check_ 000014 constant entry external dcl 17 ref 42 69 dt based structure level 1 dcl 2-23 dte based structure level 1 dcl 2-35 dtep 000502 automatic pointer dcl 2-17 set ref 58* 59 59 59 dtp 000500 automatic pointer dcl 2-17 set ref 50* 51* 57 58 error_table_$badopt 000034 external static fixed bin(35,0) dcl 32 set ref 79* error_table_$pvid_not_found 000022 external static fixed bin(35,0) dcl 27 set ref 62* get_temp_segments_ 000030 constant entry external dcl 31 ref 45 ioa_ 000012 constant entry external dcl 15 ref 102 local_vtoce 000101 automatic structure level 1 dcl 18 set ref 84 lve based structure level 1 dcl 2-58 mdc_$read_disk_table 000026 constant entry external dcl 30 ref 51 myname 000471 automatic char(19) initial unaligned dcl 34 set ref 34* 38* 44* 45* 47* 53* 54* 61* 62* 64* 79* 87* 94* 100* n_entries based fixed bin(17,0) level 2 dcl 2-23 ref 57 nfsw 000100 automatic bit(1) initial unaligned dcl 16 set ref 16* 77* 93 phcs_$get_vtoce 000016 constant entry external dcl 20 ref 85 pn 000416 automatic char(168) unaligned dcl 28 set ref 98* 99* 102* pvname 6 based char(32) level 2 dcl 2-35 ref 59 pvtx 000402 automatic fixed bin(17,0) dcl 19 set ref 42* 57* 58* 85* 87* 94* 102* q 000406 automatic pointer array dcl 25 set ref 44* 45* 50 53* 61* 64* release_temp_segments_ 000032 constant entry external dcl 31 ref 44 53 61 64 storage_system 2(11) based bit(1) level 2 packed unaligned dcl 2-35 ref 59 uid 1 based bit(36) level 2 packed unaligned dcl 1-7 set ref 92 99* uid_path 240 based bit(36) array level 2 packed unaligned dcl 1-7 set ref 99 99 used 2(09) based bit(1) level 2 packed unaligned dcl 2-35 ref 59 vpn_cv_uid_path_$ent 000024 constant entry external dcl 29 ref 99 vtoce based structure level 1 dcl 1-7 vtocep 000476 automatic pointer dcl 1-5 set ref 84* 85* 92 99 99 99 vtocx 000401 automatic fixed bin(17,0) dcl 19 set ref 69* 85* 87* 94* 102* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. i automatic fixed bin(17,0) dcl 24 lvep automatic pointer dcl 2-17 seg_vtoce based structure level 1 dcl 1-92 vtoce_parts based bit(2304) array dcl 1-90 NAMES DECLARED BY EXPLICIT CONTEXT. got_pvtx 000522 constant label dcl 64 ref 59 usage 000153 constant label dcl 38 ref 68 72 vtoc_pathname 000122 constant entry external dcl 11 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 58 84 99 99 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1306 1344 1127 1316 Length 1570 1127 36 207 156 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vtoc_pathname 386 external procedure is an external procedure. on unit on line 44 80 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME vtoc_pathname 000100 nfsw vtoc_pathname 000101 local_vtoce vtoc_pathname 000401 vtocx vtoc_pathname 000402 pvtx vtoc_pathname 000403 argl vtoc_pathname 000404 argp vtoc_pathname 000406 q vtoc_pathname 000416 pn vtoc_pathname 000470 code vtoc_pathname 000471 myname vtoc_pathname 000476 vtocep vtoc_pathname 000500 dtp vtoc_pathname 000502 dtep vtoc_pathname THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr cv_oct_check_ get_temp_segments_ ioa_ mdc_$read_disk_table phcs_$get_vtoce release_temp_segments_ vpn_cv_uid_path_$ent THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$pvid_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000121 16 000127 34 000130 36 000133 37 000151 38 000153 39 000177 42 000200 43 000224 44 000226 45 000265 46 000306 47 000310 48 000334 50 000335 51 000337 52 000350 53 000352 54 000374 55 000423 57 000424 58 000433 59 000437 60 000451 61 000453 62 000475 63 000521 64 000522 67 000544 68 000563 69 000565 70 000611 71 000613 72 000614 75 000615 76 000634 77 000636 79 000653 80 000677 84 000700 85 000702 86 000717 87 000721 88 000754 92 000755 93 000760 94 000762 95 001016 98 001017 99 001022 100 001051 102 001077 103 001126 ----------------------------------------------------------- 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