COMPILATION LISTING OF SEGMENT init_lvt Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0940.3 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 init_lvt: proc (); 14 15 /****^ HISTORY COMMENTS: 16* 1) change(76-02-17,Bratt), approve(), audit(), install(): 17* Modified March 1982 by J. Bongiovanni to eliminate use of FSDCT 18* This module initializes the lvt and defines the RLV as containing 19* the RPV which is assumed to be already accepted. 20* END HISTORY COMMENTS */ 21 22 dcl 1 local_label like label aligned; 23 dcl 1 local_lvte like lvte aligned; 24 dcl code fixed bin (35); 25 dcl pvt$root_pvtx fixed bin external; 26 dcl pvt$root_lvid bit (36) aligned external; 27 dcl read_disk entry (fixed bin, fixed bin, ptr, fixed bin (35)); 28 dcl logical_volume_manager$add entry (ptr, fixed bin (35)); 29 dcl syserr entry options (variable); 30 31 /* initialize lvt */ 32 33 lvtp = addr (lvt$); 34 lvt.max_lvtex = 50; 35 lvt.high_water_lvtex = 0; 36 lvt.free_lvtep = null (); 37 lvt.ht (*) = null (); 38 39 /* get RLV together */ 40 41 call read_disk (pvt$root_pvtx, LABEL_ADDR, addr (local_label), code); 42 if code ^= 0 then call syserr (1, "init_lvt: unable to read RPV label, code = ^o", code); 43 local_lvte.lvid = pvt$root_lvid; 44 local_lvte.access_class.min = local_label.min_access_class; 45 local_lvte.access_class.max = local_label.max_access_class; 46 unspec (local_lvte.flags) = (36)"0"b; 47 local_lvte.flags.public = "1"b; 48 call logical_volume_manager$add (addr (local_lvte), code); 49 if code ^= 0 then call syserr (1, "init_lvt: unable to define RLV, code = ^o", code); 50 return; 51 52 /* */ 53 1 1 /* BEGIN INCLUDE FILE ... fs_vol_label.incl.pl1 .. last modified January 1982 for new volume map format */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-04-10,Fawcett), approve(86-04-10,MCR7383), 1 5* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 1 6* Add the subvolume info. 1 7* 2) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 1 8* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 1 9* Added inconsistent_dbm bit used to determine consistency of volume 1 10* dumper bit maps. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* This is the label at fixed location of each physical volume. Length 1 page */ 1 14 /* Note: fsout_vol clears pad fields before writing the label */ 1 15 1 16 dcl labelp ptr; 1 17 1 18 dcl 1 label based (labelp) aligned, 1 19 1 20 /* First comes data not used by Multics.. for compatibility with GCOS */ 1 21 1 22 2 gcos (5*64) fixed bin, 1 23 1 24 /* Now we have the Multics label */ 1 25 1 26 2 Multics char (32) init ("Multics Storage System Volume"), /* Identifier */ 1 27 2 version fixed bin, /* Version 1 */ 1 28 2 mfg_serial char (32), /* Manufacturer's serial number */ 1 29 2 pv_name char (32), /* Physical volume name. */ 1 30 2 lv_name char (32), /* Name of logical volume for pack */ 1 31 2 pvid bit (36), /* Unique ID of this pack */ 1 32 2 lvid bit (36), /* unique ID of its logical vol */ 1 33 2 root_pvid bit (36), /* unique ID of the pack containing the root. everybody must agree. */ 1 34 2 time_registered fixed bin (71), /* time imported to system */ 1 35 2 n_pv_in_lv fixed bin, /* # phys volumes in logical */ 1 36 2 vol_size fixed bin, /* total size of volume, in records */ 1 37 2 vtoc_size fixed bin, /* number of recs in fixed area + vtoc */ 1 38 2 not_used bit (1) unal, /* used to be multiple_class */ 1 39 2 private bit (1) unal, /* TRUE if was registered as private */ 1 40 2 inconsistent_dbm bit (1) unal, /* TRUE if ESD-less crash */ 1 41 2 flagpad bit (33) unal, 1 42 2 max_access_class bit (72), /* Maximum access class for stuff on volume */ 1 43 2 min_access_class bit (72), /* Minimum access class for stuff on volume */ 1 44 2 password bit (72), /* not yet used */ 1 45 2 number_of_sv fixed bin, /* if = 0 not a subvolume else the number of svs */ 1 46 2 this_sv fixed bin, /* what subvolume number it is */ 1 47 2 sub_vol_name char (1), /* what subvolume name (a b c d) it is */ 1 48 2 pad1 (13) fixed bin, 1 49 2 time_mounted fixed bin (71), /* time mounted */ 1 50 2 time_map_updated fixed bin (71), /* time vmap known good */ 1 51 1 52 /* The next two words overlay time_unmounted on pre-MR10 systems. This 1 53* forces a salvage if an MR10 pack is mounted on an earlier system. 1 54* */ 1 55 2 volmap_version fixed bin, /* version of volume map (currently 1) */ 1 56 2 pad6 fixed bin, 1 57 1 58 2 time_salvaged fixed bin (71), /* time salvaged */ 1 59 2 time_of_boot fixed bin (71), /* time of last bootload */ 1 60 2 time_unmounted fixed bin (71), /* time unmounted cleanly */ 1 61 2 last_pvtx fixed bin, /* pvtx in that PDMAP */ 1 62 2 pad1a (2) fixed bin, 1 63 2 err_hist_size fixed bin, /* size of pack error history */ 1 64 2 time_last_dmp (3) fixed bin (71), /* time last completed dump pass started */ 1 65 2 time_last_reloaded fixed bin (71), /* what it says */ 1 66 2 pad2 (40) fixed bin, 1 67 2 root, 1 68 3 here bit (1), /* TRUE if the root is on this pack */ 1 69 3 root_vtocx fixed bin (35), /* VTOC index of root, if it is here */ 1 70 3 shutdown_state fixed bin, /* Status of hierarchy */ 1 71 3 pad7 bit (1) aligned, 1 72 3 disk_table_vtocx fixed bin, /* VTOC index of disk table on RPV */ 1 73 3 disk_table_uid bit (36) aligned, /* UID of disk table */ 1 74 3 esd_state fixed bin, /* State of esd */ 1 75 2 volmap_record fixed bin, /* Begin record of volume map */ 1 76 2 size_of_volmap fixed bin, /* Number of records in volume map */ 1 77 2 vtoc_map_record fixed bin, /* Begin record of VTOC map */ 1 78 2 size_of_vtoc_map fixed bin, /* Number of records in VTOC map */ 1 79 2 volmap_unit_size fixed bin, /* Number of words per volume map section */ 1 80 2 vtoc_origin_record fixed bin, /* Begin record of VTOC */ 1 81 2 dumper_bit_map_record fixed bin, /* Begin record of dumper bit-map */ 1 82 2 vol_trouble_count fixed bin, /* Count of inconsistencies found since salvage */ 1 83 2 pad3 (52) fixed bin, 1 84 2 nparts fixed bin, /* Number of special partitions on pack */ 1 85 2 parts (47), 1 86 3 part char (4), /* Name of partition */ 1 87 3 frec fixed bin, /* First record */ 1 88 3 nrec fixed bin, /* Number of records */ 1 89 3 pad5 fixed bin, 1 90 2 pad4 (5*64) fixed bin; 1 91 1 92 dcl Multics_ID_String char (32) init ("Multics Storage System Volume") static; 1 93 1 94 /* END INCLUDE FILE fs_vol_label.incl.pl1 */ 54 55 56 /* */ 57 2 1 /* BEGIN INCLUDE FILE...disk_pack.incl.pl1 Last Modified January 1982 for new volume map */ 2 2 2 3 2 4 2 5 2 6 /****^ HISTORY COMMENTS: 2 7* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 2 8* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 2 9* Add vars PAGE_SIZE and VTOCE_SIZE, Also change the SECTORS_PER_VTOCE and 2 10* VTOCES_PER_RECORD form fixed bin constants to arrays of fixed bin 2 11* constants indexed by device type as defined in fs_dev_types.incl.pl1. 2 12* This was done for support of the 3380, and 3390 devices for 512_WORD_IO. 2 13* 2) change(86-10-21,Fawcett), approve(86-10-21,MCR7533), 2 14* audit(86-10-21,Farley), install(86-10-22,MR12.0-1193): 2 15* Change PAGE_SIZE and VTOCE_SIZE from automatic to static constants. 2 16* END HISTORY COMMENTS */ 2 17 2 18 2 19 /* 2 20* All disk packs have the standard layout described below: 2 21* 2 22* Record 0 : contains the label, as declared in fs_vol_label.incl.pl1. 2 23* Record 1 to 3 : contains the volume map, as declared in vol_map.incl.pl1 2 24* Record 4 to 5 : contains the dumper bit map, as declared in dumper_bit_map.incl.pl1 2 25* Record 6 : contains the vtoc map, as declared in vtoc_map.incl.pl1 2 26* Record 7 : formerly contained bad track list; no longer used. 2 27* Records 8 to n-1 : contain the array of vtoc entries; ( n is specified in the label) 2 28* each record contains 5 192-word vtoc entries. The last 64 words are unused. 2 29* Records n to N-1 : contain the pages of the Multics segments. ( N is specified in the label) 2 30* 2 31* Sundry partitions may exist within the region n to N-1, withdrawn or not as befits the meaning 2 32* of the particular partition. 2 33* 2 34* 2 35* 2 36* A conceptual declaration for a disk pack could be: 2 37* 2 38* dcl 1 disk_pack, 2 39* 2 label_record (0 : 0) bit(36 * 1024), 2 40* 2 volume_map_record (1 : 3) bit(36 * 1024), 2 41* 2 dumper_bit_map_record (4 : 5) bit(36 * 1024), 2 42* 2 vtoc_map_record (6 : 6) bit(36 * 1024), 2 43* 2 spare_record (7 : 7) bit(36 * 1024), 2 44* 2 vtoc_array_records (8 : n-1), 2 45* 3 vtoc_entry ( 5 ) bit(36 * 192), 2 46* 3 unused bit(36 * 64), 2 47* 2 Multics_pages_records (n : N-1) bit(36 * 1024); 2 48* 2 49* 2 50* 2 51* 2 52**/ 2 53 2 54 dcl (LABEL_ADDR init (0), /* Address of Volume Label */ 2 55 VOLMAP_ADDR init (1), /* Address of first Volume Map record */ 2 56 DUMPER_BIT_MAP_ADDR init (4), /* For initial release compaitiblity */ 2 57 VTOC_MAP_ADDR init (6), /* Address of first VTOC Map Record */ 2 58 VTOC_ORIGIN init (8), /* Address of first record of VTOC */ 2 59 DEFAULT_HCPART_SIZE init (1000), /* Size of Hardcore Partition */ 2 60 MAX_VTOCE_PER_PACK init (31774)) /* Limited by size of VTOC Map */ 2 61 fixed bin (17) int static options (constant); 2 62 2 63 /* SECTORS_PER_VTOCE & VTOCES_PER_RECORD are indexed via device type as */ 2 64 /* defined by fs_dev_types and extracted form the disk_table entry (dte) */ 2 65 /* or the physical volume table entry (pvte) device type. */ 2 66 2 67 dcl PAGE_SIZE fixed bin (17) init (1024) static options (constant); 2 68 dcl VTOCE_SIZE fixed bin (17) init (192) static options (constant); 2 69 2 70 dcl SECTORS_PER_VTOCE (9) fixed bin static options (constant) init 2 71 (0, 3, 3, 3, 3, 3, 3, 1, 1); 2 72 dcl VTOCES_PER_RECORD (9) fixed bin static options (constant) init 2 73 (0, 5, 5, 5, 5, 5, 5, 2, 2); 2 74 dcl SECTORS_PER_RECORD (9) fixed bin static options (constant) init 2 75 (0, 16, 16, 16, 16, 16, 16, 2, 2); 2 76 2 77 /* END INCLUDE FILE...disk_pack.incl.pl1 */ 58 59 60 /* */ 61 3 1 /* BEGIN INCLUDE FILE lvt.incl.pl1 -- Written Jan. 1976 by R. Bratt */ 3 2 /* 3 3* This include file defines the format of the hardcore L_ogical V_olume T_able (LVT). 3 4**/ 3 5 3 6 dcl lvt$ ext; 3 7 dcl lvtp ptr; 3 8 dcl lvtep ptr; 3 9 3 10 dcl 1 lvt aligned based (lvtp), 3 11 2 max_lvtex fixed bin (17), /* maximum number of LVs describable */ 3 12 2 high_water_lvtex fixed bin (17), /* highest LVT index assigned */ 3 13 2 free_lvtep ptr, /* pointer to first free lvte */ 3 14 2 pad1 (4) bit (36), 3 15 2 ht (0:63) ptr unal, /* lvid hash table */ 3 16 2 lvtes (1:1 refer (lvt.max_lvtex)) like lvte; /* LVT entries */ 3 17 3 18 dcl 1 lvte aligned based (lvtep), /* logical volume table entry */ 3 19 2 lvtep ptr unaligned, /* lvid hash thread */ 3 20 2 pvtex fixed bin (17), /* thread of mounted PVs */ 3 21 2 lvid bit (36), /* logical volume id */ 3 22 2 access_class aligned, /* access isolation mechanism stuff */ 3 23 3 min bit (72), /* minimum access class allowed on LV */ 3 24 3 max bit (72), /* maximum access class allowed on volume */ 3 25 2 flags unaligned, /* flags */ 3 26 3 public bit (1), /* => anyone can connect to this LV */ 3 27 3 read_only bit (1), /* => no writes on this LV */ 3 28 3 pad bit (16), 3 29 3 cycle_pvtx fixed bin (17); /* pvtx for next per_process seg */ 3 30 3 31 /* END INCLUDE FILE lvt.incl.pl1 */ 62 63 64 65 /* BEGIN MESSAGE DOCUMENTATION 66* 67*Message: 68*init_lvt: unable to read RPV label, code = WWWW 69* 70*S: $crash 71* 72*T: $init 73* 74*M: The RPV label, 75*which was successfully read a few seconds ago, 76*cannot be read. 77* 78*A: $recover 79*$boot_tape 80* 81* 82*Message: 83*init_lvt: unable to define RLV, code = WWWW 84* 85*S: $crash 86* 87*T: $init 88* 89*M: $err 90* 91*A: $recover 92*$boot_tape 93* 94* 95*END MESSAGE DOCUMENTATION */ 96 97 end init_lvt; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0826.9 init_lvt.pl1 >spec>install>1112>init_lvt.pl1 54 1 07/21/88 2036.0 fs_vol_label.incl.pl1 >ldd>include>fs_vol_label.incl.pl1 58 2 10/22/86 1450.1 disk_pack.incl.pl1 >ldd>include>disk_pack.incl.pl1 62 3 11/30/76 1555.4 lvt.incl.pl1 >ldd>include>lvt.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. LABEL_ADDR 000004 constant fixed bin(17,0) initial dcl 2-54 set ref 41* Multics 500 000100 automatic char(32) initial level 2 dcl 22 set ref 22* access_class 3 002100 automatic structure level 2 dcl 23 code 002110 automatic fixed bin(35,0) dcl 24 set ref 41* 42 42* 48* 49 49* flags 7 002100 automatic structure level 2 packed packed unaligned dcl 23 set ref 46* free_lvtep 2 based pointer level 2 dcl 3-10 set ref 36* high_water_lvtex 1 based fixed bin(17,0) level 2 dcl 3-10 set ref 35* ht 10 based pointer array level 2 packed packed unaligned dcl 3-10 set ref 37* label based structure level 1 dcl 1-18 local_label 000100 automatic structure level 1 dcl 22 set ref 41 41 local_lvte 002100 automatic structure level 1 dcl 23 set ref 48 48 logical_volume_manager$add 000016 constant entry external dcl 28 ref 48 lvid 2 002100 automatic bit(36) level 2 dcl 23 set ref 43* lvt based structure level 1 dcl 3-10 lvt$ 000022 external static fixed bin(17,0) dcl 3-6 set ref 33 lvte based structure level 1 dcl 3-18 lvtp 002112 automatic pointer dcl 3-7 set ref 33* 34 35 36 37 max 5 002100 automatic bit(72) level 3 dcl 23 set ref 45* max_access_class 552 000100 automatic bit(72) level 2 dcl 22 set ref 45 max_lvtex based fixed bin(17,0) level 2 dcl 3-10 set ref 34* min 3 002100 automatic bit(72) level 3 dcl 23 set ref 44* min_access_class 554 000100 automatic bit(72) level 2 dcl 22 set ref 44 public 7 002100 automatic bit(1) level 3 packed packed unaligned dcl 23 set ref 47* pvt$root_lvid 000012 external static bit(36) dcl 26 ref 43 pvt$root_pvtx 000010 external static fixed bin(17,0) dcl 25 set ref 41* read_disk 000014 constant entry external dcl 27 ref 41 syserr 000020 constant entry external dcl 29 ref 42 49 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DEFAULT_HCPART_SIZE internal static fixed bin(17,0) initial dcl 2-54 DUMPER_BIT_MAP_ADDR internal static fixed bin(17,0) initial dcl 2-54 MAX_VTOCE_PER_PACK internal static fixed bin(17,0) initial dcl 2-54 Multics_ID_String internal static char(32) initial packed unaligned dcl 1-92 PAGE_SIZE internal static fixed bin(17,0) initial dcl 2-67 SECTORS_PER_RECORD internal static fixed bin(17,0) initial array dcl 2-74 SECTORS_PER_VTOCE internal static fixed bin(17,0) initial array dcl 2-70 VOLMAP_ADDR internal static fixed bin(17,0) initial dcl 2-54 VTOCES_PER_RECORD internal static fixed bin(17,0) initial array dcl 2-72 VTOCE_SIZE internal static fixed bin(17,0) initial dcl 2-68 VTOC_MAP_ADDR internal static fixed bin(17,0) initial dcl 2-54 VTOC_ORIGIN internal static fixed bin(17,0) initial dcl 2-54 labelp automatic pointer dcl 1-16 lvtep automatic pointer dcl 3-8 NAME DECLARED BY EXPLICIT CONTEXT. init_lvt 000050 constant entry external dcl 13 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 33 41 41 48 48 null builtin function ref 36 37 unspec builtin function ref 46 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 324 350 231 334 Length 562 231 24 176 72 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME init_lvt 1140 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME init_lvt 000100 local_label init_lvt 002100 local_lvte init_lvt 002110 code init_lvt 002112 lvtp init_lvt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. logical_volume_manager$add read_disk syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. lvt$ pvt$root_lvid pvt$root_pvtx LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000047 22 000055 33 000060 34 000062 35 000064 36 000065 37 000067 41 000102 42 000121 43 000151 44 000154 45 000157 46 000162 47 000163 48 000165 49 000177 50 000227 ----------------------------------------------------------- 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